@dignite-ng/expand.cms 0.0.8 → 0.0.10
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/esm2022/lib/cms-routing.module.mjs +6 -2
- package/esm2022/lib/cms.module.mjs +14 -3
- package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +62 -24
- package/esm2022/lib/components/admin/entries/create.component.mjs +34 -26
- package/esm2022/lib/components/admin/entries/edit.component.mjs +13 -15
- package/esm2022/lib/components/admin/entries/entries.component.mjs +62 -37
- package/esm2022/lib/components/admin/fields/create-field.component.mjs +12 -9
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +12 -9
- package/esm2022/lib/components/admin/fields/fields.component.mjs +16 -12
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +3 -3
- package/esm2022/lib/components/admin/sections/sections.component.mjs +3 -3
- package/esm2022/lib/components/admin/sites/sites.component.mjs +3 -3
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +3 -2
- package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +3 -2
- package/esm2022/lib/constants/styles.mjs +8 -1
- package/esm2022/lib/proxy/admin/entries/entry-admin.service.mjs +10 -3
- package/esm2022/lib/proxy/admin/entries/models.mjs +1 -1
- package/esm2022/lib/services/cms-api.service.mjs +14 -5
- package/esm2022/lib/services/simple-reuse-strategy.mjs +44 -0
- package/fesm2022/dignite-ng-expand.cms.mjs +278 -123
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/cms.module.d.ts +3 -1
- package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +13 -6
- package/lib/components/admin/entries/create.component.d.ts +9 -9
- package/lib/components/admin/entries/edit.component.d.ts +5 -7
- package/lib/components/admin/entries/entries.component.d.ts +10 -6
- package/lib/components/admin/fields/create-field.component.d.ts +3 -1
- package/lib/components/admin/fields/edit-field.component.d.ts +3 -1
- package/lib/components/admin/fields/fields.component.d.ts +3 -1
- package/lib/constants/styles.d.ts +1 -1
- package/lib/proxy/admin/entries/entry-admin.service.d.ts +2 -2
- package/lib/proxy/admin/entries/models.d.ts +5 -0
- package/lib/services/cms-api.service.d.ts +6 -2
- package/lib/services/simple-reuse-strategy.d.ts +11 -0
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import { RouterModule } from '@angular/router';
|
|
2
|
+
import { RouterModule, } from '@angular/router';
|
|
3
3
|
import { CreateComponent, CreateFieldComponent, CreateOrEditComponent, EditComponent, EditFieldComponent, EntriesComponent, FieldsComponent, SectionsComponent, SitesComponent, } from './components';
|
|
4
4
|
import { AuthGuard, PermissionGuard, } from '@abp/ng.core';
|
|
5
5
|
import { CmsExtensionsResolver } from './toolbar';
|
|
@@ -18,6 +18,7 @@ const routes = [
|
|
|
18
18
|
{
|
|
19
19
|
path: '',
|
|
20
20
|
component: EntriesComponent,
|
|
21
|
+
data: { keep: true }
|
|
21
22
|
},
|
|
22
23
|
{
|
|
23
24
|
path: 'create',
|
|
@@ -38,6 +39,7 @@ const routes = [
|
|
|
38
39
|
{
|
|
39
40
|
path: '',
|
|
40
41
|
component: FieldsComponent,
|
|
42
|
+
data: { keep: true }
|
|
41
43
|
},
|
|
42
44
|
{
|
|
43
45
|
path: 'create',
|
|
@@ -52,12 +54,14 @@ const routes = [
|
|
|
52
54
|
{
|
|
53
55
|
path: 'sites',
|
|
54
56
|
component: SitesComponent,
|
|
57
|
+
data: { keep: true }
|
|
55
58
|
},
|
|
56
59
|
{
|
|
57
60
|
path: 'sections',
|
|
58
61
|
children: [
|
|
59
62
|
{
|
|
60
63
|
path: '',
|
|
64
|
+
data: { keep: true },
|
|
61
65
|
component: SectionsComponent,
|
|
62
66
|
},
|
|
63
67
|
{
|
|
@@ -93,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
93
97
|
exports: [RouterModule],
|
|
94
98
|
}]
|
|
95
99
|
}] });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY21zLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFVLFlBQVksR0FBNkUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsSSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQUd4RCxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxPQUFPO1FBQ2IsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztRQUN6QyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUM7UUFDN0MsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBRWYsUUFBUSxFQUFFO29CQUNSO3dCQUNFLElBQUksRUFBRSxFQUFFO3dCQUNSLFNBQVMsRUFBRSxnQkFBZ0I7d0JBQzNCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7cUJBQ3JCO29CQUNEO3dCQUNFLElBQUksRUFBRSxRQUFRO3dCQUNkLFNBQVMsRUFBRSxlQUFlO3FCQUMzQjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsZ0JBQWdCO3dCQUN0QixTQUFTLEVBQUUsYUFBYTtxQkFDekI7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLElBQUksRUFBRSxFQUFFO2dCQUNSLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsUUFBUTt3QkFDZCxRQUFRLEVBQUU7NEJBQ1I7Z0NBQ0UsSUFBSSxFQUFFLEVBQUU7Z0NBQ1IsU0FBUyxFQUFFLGVBQWU7Z0NBQzFCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7NkJBQ3JCOzRCQUNEO2dDQUNFLElBQUksRUFBRSxRQUFRO2dDQUNkLFNBQVMsRUFBRSxvQkFBb0I7NkJBQ2hDOzRCQUNEO2dDQUNFLElBQUksRUFBRSxVQUFVO2dDQUNoQixTQUFTLEVBQUUsa0JBQWtCOzZCQUM5Qjt5QkFDRjtxQkFDRjtvQkFDRDt3QkFDRSxJQUFJLEVBQUUsT0FBTzt3QkFDYixTQUFTLEVBQUUsY0FBYzt3QkFDekIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtxQkFDckI7b0JBQ0Q7d0JBQ0UsSUFBSSxFQUFFLFVBQVU7d0JBQ2hCLFFBQVEsRUFBRTs0QkFDUjtnQ0FDRSxJQUFJLEVBQUUsRUFBRTtnQ0FDUixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dDQUNwQixTQUFTLEVBQUUsaUJBQWlCOzZCQUM3Qjs0QkFDRDtnQ0FDRSxJQUFJLEVBQUUseUJBQXlCO2dDQUMvQixRQUFRLEVBQUU7b0NBQ1I7d0NBQ0UsSUFBSSxFQUFFLFFBQVE7d0NBQ2QsU0FBUyxFQUFFLHFCQUFxQjtxQ0FDakM7b0NBQ0Q7d0NBQ0UsSUFBSSxFQUFFLG9CQUFvQjt3Q0FDMUIsU0FBUyxFQUFFLHFCQUFxQjtxQ0FDakM7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBR0YsTUFJYSxnQkFBZ0I7d0dBQWhCLGdCQUFnQjt5R0FBaEIsZ0JBQWdCLHdDQUZqQixZQUFZO3lHQUVYLGdCQUFnQixZQUhqQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOztTQUVYLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQUo1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ01vZHVsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlcywgUm91dGVyTW9kdWxlLCBDYW5BY3RpdmF0ZSwgUmVzb2x2ZSwgQ2FuRGVhY3RpdmF0ZUZuLCBDYW5EZWFjdGl2YXRlLCBSb3V0ZVJldXNlU3RyYXRlZ3ksIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHtcclxuICBDcmVhdGVDb21wb25lbnQsXHJcbiAgQ3JlYXRlRmllbGRDb21wb25lbnQsXHJcbiAgQ3JlYXRlT3JFZGl0Q29tcG9uZW50LFxyXG4gIEVkaXRDb21wb25lbnQsXHJcbiAgRWRpdEZpZWxkQ29tcG9uZW50LFxyXG4gIEVudHJpZXNDb21wb25lbnQsXHJcbiAgRmllbGRzQ29tcG9uZW50LFxyXG4gIFNlY3Rpb25zQ29tcG9uZW50LFxyXG4gIFNpdGVzQ29tcG9uZW50LFxyXG59IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7XHJcbiAgQXV0aEd1YXJkLFxyXG4gIFBlcm1pc3Npb25HdWFyZCxcclxufSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQgeyBDbXNFeHRlbnNpb25zUmVzb2x2ZXIgfSBmcm9tICcuL3Rvb2xiYXInO1xyXG5pbXBvcnQgeyBhcHBlbnRTdHlsZSB9IGZyb20gJy4vc2VydmljZXMvYXBwZW50LWNvbnRlbnQnO1xyXG5cclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHtcclxuICAgIHBhdGg6ICdhZG1pbicsXHJcbiAgICBjYW5BY3RpdmF0ZTogW0F1dGhHdWFyZCwgUGVybWlzc2lvbkd1YXJkXSxcclxuICAgIHJlc29sdmU6IFtDbXNFeHRlbnNpb25zUmVzb2x2ZXIsIGFwcGVudFN0eWxlXSxcclxuICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiAnZW50cmllcycsXHJcblxyXG4gICAgICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBhdGg6ICcnLFxyXG4gICAgICAgICAgICBjb21wb25lbnQ6IEVudHJpZXNDb21wb25lbnQsXHJcbiAgICAgICAgICAgIGRhdGE6IHsga2VlcDogdHJ1ZSB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwYXRoOiAnY3JlYXRlJyxcclxuICAgICAgICAgICAgY29tcG9uZW50OiBDcmVhdGVDb21wb25lbnQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwYXRoOiAnOmVudHJpZUlkL2VkaXQnLFxyXG4gICAgICAgICAgICBjb21wb25lbnQ6IEVkaXRDb21wb25lbnQsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICBjaGlsZHJlbjogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBwYXRoOiAnZmllbGRzJyxcclxuICAgICAgICAgICAgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRmllbGRzQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgZGF0YTogeyBrZWVwOiB0cnVlIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhdGg6ICdjcmVhdGUnLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBDcmVhdGVGaWVsZENvbXBvbmVudCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHBhdGg6ICc6aWQvZWRpdCcsXHJcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6IEVkaXRGaWVsZENvbXBvbmVudCxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcGF0aDogJ3NpdGVzJyxcclxuICAgICAgICAgICAgY29tcG9uZW50OiBTaXRlc0NvbXBvbmVudCxcclxuICAgICAgICAgICAgZGF0YTogeyBrZWVwOiB0cnVlIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHBhdGg6ICdzZWN0aW9ucycsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgcGF0aDogJycsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7IGtlZXA6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogU2VjdGlvbnNDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnOnNlY3Rpb25zSWQvZW50cnktdHlwZXMnLFxyXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6ICdjcmVhdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogQ3JlYXRlT3JFZGl0Q29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogJzplbnRyeVR5cGVzSWQvZWRpdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBDcmVhdGVPckVkaXRDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbl07XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21zUm91dGluZ01vZHVsZSB7XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -14,6 +14,10 @@ import { CommercialUiConfigModule } from '@volo/abp.commercial.ng.ui/config';
|
|
|
14
14
|
import { CMS_TOOLBAR_ACTION_CONTRIBUTORS } from './toolbar';
|
|
15
15
|
import { NzSelectModule } from 'ng-zorro-antd/select';
|
|
16
16
|
import { DynamicFormModule } from '@dignite-ng/expand.dynamic-form';
|
|
17
|
+
import { NzTableModule } from 'ng-zorro-antd/table';
|
|
18
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
19
|
+
import { RouteReuseStrategy } from '@angular/router';
|
|
20
|
+
import { SimpleReuseStrategy } from './services/simple-reuse-strategy';
|
|
17
21
|
import * as i0 from "@angular/core";
|
|
18
22
|
import * as i1 from "@dignite-ng/expand.dynamic-form";
|
|
19
23
|
class CmsModule {
|
|
@@ -61,7 +65,8 @@ class CmsModule {
|
|
|
61
65
|
DragDropModule,
|
|
62
66
|
PageModule,
|
|
63
67
|
CommercialUiConfigModule,
|
|
64
|
-
NzSelectModule, i1.DynamicFormModule
|
|
68
|
+
NzSelectModule, i1.DynamicFormModule, NzTableModule,
|
|
69
|
+
ScrollingModule], exports: [TableConfigComponent,
|
|
65
70
|
TableControlComponent,
|
|
66
71
|
MatrixConfigComponent,
|
|
67
72
|
MatrixControlComponent,
|
|
@@ -69,6 +74,7 @@ class CmsModule {
|
|
|
69
74
|
EntryControlComponent] });
|
|
70
75
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CmsModule, providers: [
|
|
71
76
|
{ provide: NgbDateAdapter, useClass: DateAdapter },
|
|
77
|
+
{ provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }
|
|
72
78
|
], imports: [CoreModule,
|
|
73
79
|
ThemeSharedModule,
|
|
74
80
|
CmsRoutingModule,
|
|
@@ -84,7 +90,9 @@ class CmsModule {
|
|
|
84
90
|
NzSelectModule,
|
|
85
91
|
DynamicFormModule.forRoot({
|
|
86
92
|
cmsFieldControlGroup: FieldControlGroup
|
|
87
|
-
})
|
|
93
|
+
}),
|
|
94
|
+
NzTableModule,
|
|
95
|
+
ScrollingModule] });
|
|
88
96
|
}
|
|
89
97
|
export { CmsModule };
|
|
90
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CmsModule, decorators: [{
|
|
@@ -127,6 +135,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
127
135
|
DynamicFormModule.forRoot({
|
|
128
136
|
cmsFieldControlGroup: FieldControlGroup
|
|
129
137
|
}),
|
|
138
|
+
NzTableModule,
|
|
139
|
+
ScrollingModule
|
|
130
140
|
],
|
|
131
141
|
exports: [
|
|
132
142
|
TableConfigComponent,
|
|
@@ -138,7 +148,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
138
148
|
],
|
|
139
149
|
providers: [
|
|
140
150
|
{ provide: NgbDateAdapter, useClass: DateAdapter },
|
|
151
|
+
{ provide: RouteReuseStrategy, useClass: SimpleReuseStrategy }
|
|
141
152
|
],
|
|
142
153
|
}]
|
|
143
154
|
}] });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY21zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2Ntcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLDBCQUEwQixFQUMxQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixjQUFjLEdBRWYsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNsQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osa0JBQWtCLEdBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUs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QXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7NEJBQ3hCLG9CQUFvQixFQUFFLGlCQUFpQjt5QkFDeEMsQ0FBQzt3QkFDRixhQUFhO3dCQUNiLGVBQWU7cUJBQ2hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7d0JBQ2xELEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRTtxQkFDL0Q7aUJBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTmdNb2R1bGVGYWN0b3J5LCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVNb2R1bGUsIExhenlNb2R1bGVGYWN0b3J5IH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgVGhlbWVTaGFyZWRNb2R1bGUgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IENtc1JvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2Ntcy1yb3V0aW5nLm1vZHVsZSc7XHJcbmltcG9ydCB7XHJcbiAgQ3JlYXRlQ29tcG9uZW50LFxyXG4gIENyZWF0ZUZpZWxkQ29tcG9uZW50LFxyXG4gIENyZWF0ZU9yRWRpdENvbXBvbmVudCxcclxuICBDcmVhdGVPckVkaXRFbnRyaWVzQ29tcG9uZW50LFxyXG4gIENyZWF0ZU9yRWRpdEZpZWxkQ29tcG9uZW50LFxyXG4gIEVkaXRDb21wb25lbnQsXHJcbiAgRWRpdEZpZWxkQ29tcG9uZW50LFxyXG4gIEVudHJpZXNDb21wb25lbnQsXHJcbiAgRmllbGRHcm91cENvbXBvbmVudCxcclxuICBGaWVsZHNDb21wb25lbnQsXHJcbiAgU2VjdGlvbnNDb21wb25lbnQsXHJcbiAgU2l0ZXNDb21wb25lbnQsXHJcblxyXG59IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7XHJcbiAgTWF0cml4Q29uZmlnQ29tcG9uZW50LFxyXG4gIE1hdHJpeENvbnRyb2xDb21wb25lbnQsXHJcbiAgVGFibGVDb25maWdDb21wb25lbnQsXHJcbiAgVGFibGVDb250cm9sQ29tcG9uZW50LFxyXG4gIEVudHJ5Q29uZmlnQ29tcG9uZW50LFxyXG4gIEVudHJ5Q29udHJvbENvbXBvbmVudCxcclxuICBGaWVsZENvbnRyb2xHcm91cFxyXG59IGZyb20gXCIuL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtXCI7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgTmdiRGF0ZUFkYXB0ZXIsXHJcbiAgTmdiRHJvcGRvd25Nb2R1bGUsXHJcbiAgTmdiTmF2TW9kdWxlLFxyXG4gIE5nYkFjY29yZGlvbk1vZHVsZSxcclxufSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUgfSBmcm9tICdAbmd4LXZhbGlkYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBQYWdlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL3BhZ2UnO1xyXG5pbXBvcnQgeyBDb21tZXJjaWFsVWlDb25maWdNb2R1bGUgfSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aS9jb25maWcnO1xyXG5pbXBvcnQgeyBDTVNfVE9PTEJBUl9BQ1RJT05fQ09OVFJJQlVUT1JTIH0gZnJvbSAnLi90b29sYmFyJztcclxuaW1wb3J0IHsgTnpTZWxlY3RNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3NlbGVjdCc7XHJcbmltcG9ydCB7IER5bmFtaWNGb3JtTW9kdWxlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmR5bmFtaWMtZm9ybSc7XHJcblxyXG5pbXBvcnQgeyBOelRhYmxlTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC90YWJsZSc7XHJcbmltcG9ydCB7U2Nyb2xsaW5nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgUm91dGVSZXVzZVN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU2ltcGxlUmV1c2VTdHJhdGVneSB9IGZyb20gJy4vc2VydmljZXMvc2ltcGxlLXJldXNlLXN0cmF0ZWd5JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBFbnRyaWVzQ29tcG9uZW50LFxyXG4gICAgRmllbGRzQ29tcG9uZW50LFxyXG4gICAgU2l0ZXNDb21wb25lbnQsXHJcbiAgICBTZWN0aW9uc0NvbXBvbmVudCxcclxuICAgIEZpZWxkR3JvdXBDb21wb25lbnQsXHJcbiAgICBDcmVhdGVGaWVsZENvbXBvbmVudCxcclxuICAgIEVkaXRGaWVsZENvbXBvbmVudCxcclxuICAgIENyZWF0ZU9yRWRpdEZpZWxkQ29tcG9uZW50LFxyXG4gICAgQ3JlYXRlT3JFZGl0Q29tcG9uZW50LFxyXG4gICAgQ3JlYXRlQ29tcG9uZW50LFxyXG4gICAgRWRpdENvbXBvbmVudCxcclxuICAgIENyZWF0ZU9yRWRpdEVudHJpZXNDb21wb25lbnQsXHJcbiAgICBUYWJsZUNvbmZpZ0NvbXBvbmVudCxcclxuICAgIFRhYmxlQ29udHJvbENvbXBvbmVudCxcclxuICAgIE1hdHJpeENvbmZpZ0NvbXBvbmVudCxcclxuICAgIE1hdHJpeENvbnRyb2xDb21wb25lbnQsXHJcbiAgICBFbnRyeUNvbmZpZ0NvbXBvbmVudCxcclxuICAgIEVudHJ5Q29udHJvbENvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvcmVNb2R1bGUsXHJcbiAgICBUaGVtZVNoYXJlZE1vZHVsZSxcclxuICAgIENtc1JvdXRpbmdNb2R1bGUsXHJcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5neFZhbGlkYXRlQ29yZU1vZHVsZSxcclxuICAgIE5nYk5hdk1vZHVsZSxcclxuICAgIE5nYkFjY29yZGlvbk1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgUGFnZU1vZHVsZSxcclxuICAgIENvbW1lcmNpYWxVaUNvbmZpZ01vZHVsZSxcclxuICAgIE56U2VsZWN0TW9kdWxlLFxyXG4gICAgRHluYW1pY0Zvcm1Nb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgIGNtc0ZpZWxkQ29udHJvbEdyb3VwOiBGaWVsZENvbnRyb2xHcm91cFxyXG4gICAgfSksXHJcbiAgICBOelRhYmxlTW9kdWxlLFxyXG4gICAgU2Nyb2xsaW5nTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBUYWJsZUNvbmZpZ0NvbXBvbmVudCxcclxuICAgIFRhYmxlQ29udHJvbENvbXBvbmVudCxcclxuICAgIE1hdHJpeENvbmZpZ0NvbXBvbmVudCxcclxuICAgIE1hdHJpeENvbnRyb2xDb21wb25lbnQsXHJcbiAgICBFbnRyeUNvbmZpZ0NvbXBvbmVudCxcclxuICAgIEVudHJ5Q29udHJvbENvbXBvbmVudCxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH0sXHJcbiAgICB7IHByb3ZpZGU6IFJvdXRlUmV1c2VTdHJhdGVneSwgdXNlQ2xhc3M6IFNpbXBsZVJldXNlU3RyYXRlZ3kgfVxyXG4gIF0sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ21zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yQ2hpbGQob3B0aW9uczogYW55ID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPENtc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IENtc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJvdmlkZTogQ01TX1RPT0xCQVJfQUNUSU9OX0NPTlRSSUJVVE9SUyxcclxuICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zLnRvb2xiYXJBY3Rpb25Db250cmlidXRvcnMsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHN0YXRpYyBmb3JMYXp5KG9wdGlvbnM6IGFueSA9IHt9KTogTmdNb2R1bGVGYWN0b3J5PENtc01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBMYXp5TW9kdWxlRmFjdG9yeShDbXNNb2R1bGUuZm9yQ2hpbGQob3B0aW9ucykpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import { FormControl, Validators } from '@angular/forms';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
7
|
-
import * as i4 from "
|
|
8
|
-
import * as i5 from "
|
|
9
|
-
import * as i6 from "
|
|
10
|
-
import * as i7 from "../../../
|
|
11
|
-
import * as i8 from "
|
|
4
|
+
import * as i1 from "@abp/ng.theme.shared";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@abp/ng.core";
|
|
7
|
+
import * as i4 from "../../../proxy/admin/sections";
|
|
8
|
+
import * as i5 from "../../../proxy/admin/entries";
|
|
9
|
+
import * as i6 from "@angular/router";
|
|
10
|
+
import * as i7 from "../../../services";
|
|
11
|
+
import * as i8 from "@angular/forms";
|
|
12
12
|
import * as i9 from "@ngx-validate/core";
|
|
13
13
|
import * as i10 from "@ng-bootstrap/ng-bootstrap";
|
|
14
14
|
import * as i11 from "@dignite-ng/expand.dynamic-form";
|
|
15
15
|
class CreateOrEditEntriesComponent {
|
|
16
|
-
fb;
|
|
17
16
|
toaster;
|
|
18
17
|
_location;
|
|
19
|
-
route;
|
|
20
18
|
configState;
|
|
21
19
|
_SectionAdminService;
|
|
22
20
|
_EntryAdminService;
|
|
@@ -24,11 +22,9 @@ class CreateOrEditEntriesComponent {
|
|
|
24
22
|
_LocalizationService;
|
|
25
23
|
router;
|
|
26
24
|
_CmsApiService;
|
|
27
|
-
constructor(
|
|
28
|
-
this.fb = fb;
|
|
25
|
+
constructor(toaster, _location, configState, _SectionAdminService, _EntryAdminService, datePipe, _LocalizationService, router, _CmsApiService) {
|
|
29
26
|
this.toaster = toaster;
|
|
30
27
|
this._location = _location;
|
|
31
|
-
this.route = route;
|
|
32
28
|
this.configState = configState;
|
|
33
29
|
this._SectionAdminService = _SectionAdminService;
|
|
34
30
|
this._EntryAdminService = _EntryAdminService;
|
|
@@ -55,6 +51,8 @@ class CreateOrEditEntriesComponent {
|
|
|
55
51
|
entryTypesList = [];
|
|
56
52
|
/**版本列表 */
|
|
57
53
|
AllVersionsList = [];
|
|
54
|
+
/**是否是编辑 */
|
|
55
|
+
isEdit = false;
|
|
58
56
|
/**来自父组件的传值 */
|
|
59
57
|
FromParentQueryParams = '';
|
|
60
58
|
set ParentQueryParams(v) {
|
|
@@ -80,6 +78,14 @@ class CreateOrEditEntriesComponent {
|
|
|
80
78
|
get sluginput() {
|
|
81
79
|
return this._entity.get('slug');
|
|
82
80
|
}
|
|
81
|
+
/**语言表单实体 */
|
|
82
|
+
get cultureinput() {
|
|
83
|
+
return this._entity.get('culture');
|
|
84
|
+
}
|
|
85
|
+
/**语言表单实体影子 */
|
|
86
|
+
get culture_shadowInput() {
|
|
87
|
+
return this._entity.get('culture_shadow');
|
|
88
|
+
}
|
|
83
89
|
/**extraProperties配置表单实体 */
|
|
84
90
|
get extraProperties() {
|
|
85
91
|
return this._entity.get('extraProperties');
|
|
@@ -94,6 +100,11 @@ class CreateOrEditEntriesComponent {
|
|
|
94
100
|
asyncValidators: this.repetitionAsyncValidator(),
|
|
95
101
|
updateOn: 'blur'
|
|
96
102
|
}));
|
|
103
|
+
this._entity.setControl('culture_shadow', new FormControl('', {
|
|
104
|
+
validators: [Validators.required],
|
|
105
|
+
asyncValidators: this.cultureAsyncValidator_test(),
|
|
106
|
+
}));
|
|
107
|
+
this._entity.get('culture').disable();
|
|
97
108
|
if (queryParams.RevisionEntryId && this.entrySelect) {
|
|
98
109
|
this.RevisionEntryId = queryParams.RevisionEntryId;
|
|
99
110
|
this.setEntryconfig(this.entrySelect);
|
|
@@ -107,6 +118,30 @@ class CreateOrEditEntriesComponent {
|
|
|
107
118
|
await this.getAllVersionsList();
|
|
108
119
|
}
|
|
109
120
|
}
|
|
121
|
+
/**定义自定义异步验证 */
|
|
122
|
+
cultureAsyncValidator_test() {
|
|
123
|
+
return (ctrl) => {
|
|
124
|
+
return new Promise(resolve => {
|
|
125
|
+
let subculture = this._entity?.get('culture').value;
|
|
126
|
+
if (subculture == this.entrySelect?.culture) {
|
|
127
|
+
resolve(null);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
this._EntryAdminService.cultureExistWithSingleSection({
|
|
131
|
+
culture: subculture,
|
|
132
|
+
sectionId: this.sectionId,
|
|
133
|
+
entryTypeId: this.entryTypeId
|
|
134
|
+
}).subscribe(res => {
|
|
135
|
+
if (res) {
|
|
136
|
+
resolve({ repetition: this._LocalizationService.instant(`Cms::EntriesAlreadyExistEntryType`, this.entryTypesItem.displayName, this.languagesList.find(el => el.cultureName == subculture).displayName) });
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
resolve(null);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
}
|
|
110
145
|
/**
|
|
111
146
|
* 设置条目详情
|
|
112
147
|
* @param {object} source - 数据源对象
|
|
@@ -116,6 +151,7 @@ class CreateOrEditEntriesComponent {
|
|
|
116
151
|
this.cultureName = source.culture || source.cultureName;
|
|
117
152
|
this.sectionId = source.sectionId;
|
|
118
153
|
}
|
|
154
|
+
time = 0;
|
|
119
155
|
/**定义自定义异步验证 */
|
|
120
156
|
repetitionAsyncValidator() {
|
|
121
157
|
return (ctrl) => {
|
|
@@ -150,15 +186,14 @@ class CreateOrEditEntriesComponent {
|
|
|
150
186
|
this.entryTypesItem = entryTypesItem;
|
|
151
187
|
this.entryTypesList = res.entryTypes.filter(el => el.id == this.entryTypeId);
|
|
152
188
|
this._entity.patchValue({
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
initialVersionId: this.entrySelect?.initialVersionId || '',
|
|
156
|
-
parentId: this.entrySelect?.parentId || '',
|
|
157
|
-
versionNotes: this.entrySelect?.versionNotes || '',
|
|
189
|
+
...this.entrySelect,
|
|
190
|
+
initialVersionId: this.entrySelect?.initialVersionId || this.RevisionEntryId || '',
|
|
158
191
|
culture: this.cultureName,
|
|
192
|
+
culture_shadow: this.cultureName,
|
|
159
193
|
entryTypeId: this.entryTypeId,
|
|
160
194
|
publishTime: this.datePipe.transform(new Date(), 'yyyy-MM-dd HH:mm:ss'),
|
|
161
195
|
});
|
|
196
|
+
console.log('获取版块详情');
|
|
162
197
|
resolve(true);
|
|
163
198
|
});
|
|
164
199
|
});
|
|
@@ -174,7 +209,8 @@ class CreateOrEditEntriesComponent {
|
|
|
174
209
|
}
|
|
175
210
|
/**标题转化别名 */
|
|
176
211
|
setTitleToSlugBlur(event) {
|
|
177
|
-
let val = event.target.value
|
|
212
|
+
let val = event.target.value;
|
|
213
|
+
// let val = event.target.value.replace(/\s+/g, "")
|
|
178
214
|
let slug = this._entity.get('slug');
|
|
179
215
|
let pinyinstr = '';
|
|
180
216
|
if (slug.value)
|
|
@@ -210,18 +246,20 @@ class CreateOrEditEntriesComponent {
|
|
|
210
246
|
this.getAllVersionsList();
|
|
211
247
|
});
|
|
212
248
|
}
|
|
213
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateOrEditEntriesComponent, deps: [{ token: i1.
|
|
214
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: { ParentQueryParams: "ParentQueryParams", entity: "entity", parentEntrySelect: "parentEntrySelect" }, ngImport: i0, template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" (blur)=\"setTitleToSlugBlur($event)\"\n formControlName=\"title\">\n </div>\n <ng-container *ngFor=\"let item of entryTypesItem?.fieldTabs\">\n <ng-container *ngFor=\"let el of item.fields\">\n <ng-container *ngIf=\"el&&_entity\">\n <df-dynamic [entity]=\"_entity\" [fields]=\"el\"\n [selected]=\"entrySelect ? entrySelect.extraProperties[el.field.name] : ''\"\n [parentFiledName]=\"'extraProperties'\"></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-4 \">\n <div class=\"card mb-0 p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"slug\">{{'Cms::Slug' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\" required>\n <div class=\"text-danger invalid-feedback\" *ngIf=\"sluginput.errors?.repetition\">\n {{sluginput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"culture\">{{'AbpUi::Languages' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"culture\" disabled>\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"parentId\">\n <option value=\"\"></option>\n <ng-container *ngFor=\"let item of entryTypesList;let i =index\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\n </div>\n <div class=\"mb-2\" *ngIf=\"entrySelect\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::Version' | abpLocalization}}</label>\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let item of AllVersionsList\">\n <li class=\"list-group-item flex-between\">\n <div>\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd HH:m:s'):('Cms::InitialVersion' | abpLocalization)}}\n <span class=\"badge text-bg-success ms-1\"\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\n <span class=\"badge text-bg-primary ms-1\"\n *ngIf=\"item.id === RevisionEntryId\">{{'Cms::Editing' | abpLocalization}}</span>\n </div>\n <div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\n (click)=\"ActivatedVersion(item.id)\">\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n routerLink=\"/cms/admin/entries/create\"\n [queryParams]=\"{RevisionEntryId:item.id}\">\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\n *ngIf=\"item.id !== RevisionEntryId\">\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::IsActive' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"delectVersion(item.id)\"\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== RevisionEntryId\">\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' | abpLocalization}}\n </button>\n </div>\n </div>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}::ng-deep .create-or-edit-entry-page .flex-between{display:flex;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i11.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "parentFiledName", "fields"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i5.LocalizationPipe, name: "abpLocalization" }] });
|
|
249
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateOrEditEntriesComponent, deps: [{ token: i1.ToasterService }, { token: i2.Location }, { token: i3.ConfigStateService }, { token: i4.SectionAdminService }, { token: i5.EntryAdminService }, { token: i2.DatePipe }, { token: i3.LocalizationService }, { token: i6.Router }, { token: i7.CmsApiService }], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateOrEditEntriesComponent, selector: "cms-create-or-edit-entries", inputs: { isEdit: "isEdit", ParentQueryParams: "ParentQueryParams", entity: "entity", parentEntrySelect: "parentEntrySelect" }, ngImport: i0, template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" (blur)=\"setTitleToSlugBlur($event)\"\n formControlName=\"title\">\n </div>\n <ng-container *ngFor=\"let item of entryTypesItem?.fieldTabs\">\n <ng-container *ngFor=\"let el of item.fields\">\n <ng-container *ngIf=\"el&&_entity\">\n <df-dynamic [entity]=\"_entity\" [fields]=\"el\"\n [selected]=\"entrySelect ? entrySelect.extraProperties[el.field.name] : ''\"\n [parentFiledName]=\"'extraProperties'\" ></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-4 \">\n <div class=\"card mb-0 p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"slug\">{{'Cms::Slug' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\" >\n <div class=\"text-danger invalid-feedback\" *ngIf=\"sluginput.errors?.repetition\">\n {{sluginput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"culture\">{{'AbpUi::Languages' | abpLocalization}}</label>\n <select class=\"form-select\" [disabled]=\"false\" formControlName=\"culture\" >\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\n </ng-container>\n </select>\n <input type=\"text\" formControlName=\"culture_shadow\" style=\"position: absolute;z-index: -1;opacity: 0;\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"culture_shadowInput.errors?.repetition\">\n {{culture_shadowInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"parentId\">\n <option value=\"\"></option>\n <ng-container *ngFor=\"let item of entryTypesList;let i =index\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\n </div>\n <!-- RevisionEntryId -->\n <div class=\"mb-2\" *ngIf=\"isEdit\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::Version' | abpLocalization}}</label>\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let item of AllVersionsList\">\n <li class=\"list-group-item flex-between\">\n <div>\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd HH:m:s'):('Cms::InitialVersion' | abpLocalization)}}\n <span class=\"badge text-bg-success ms-1\"\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\n <span class=\"badge text-bg-primary ms-1\"\n *ngIf=\"item.id === RevisionEntryId\">{{'Cms::Editing' | abpLocalization}}</span>\n </div>\n <div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\n (click)=\"ActivatedVersion(item.id)\">\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n routerLink=\"/cms/admin/entries/create\"\n [queryParams]=\"{RevisionEntryId:item.id}\">\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\n *ngIf=\"item.id !== RevisionEntryId\">\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"delectVersion(item.id)\"\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== RevisionEntryId\">\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' | abpLocalization}}\n </button>\n </div>\n </div>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}::ng-deep .create-or-edit-entry-page .flex-between{display:flex;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "directive", type: i10.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i10.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i10.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i10.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { kind: "component", type: i11.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "entity", "parentFiledName", "fields"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: i3.LocalizationPipe, name: "abpLocalization" }] });
|
|
215
251
|
}
|
|
216
252
|
export { CreateOrEditEntriesComponent };
|
|
217
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateOrEditEntriesComponent, decorators: [{
|
|
218
254
|
type: Component,
|
|
219
|
-
args: [{ selector: 'cms-create-or-edit-entries', template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\"
|
|
220
|
-
}], ctorParameters: function () { return [{ type: i1.
|
|
255
|
+
args: [{ selector: 'cms-create-or-edit-entries', template: "<div class=\"create-or-edit-entry-page\" [formGroup]=\"_entity\">\n <div class=\"container \">\n <div class=\"row\">\n <div class=\"col-md-8 \">\n <div class=\"card p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"title\">{{'Cms::Title' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" (blur)=\"setTitleToSlugBlur($event)\"\n formControlName=\"title\">\n </div>\n <ng-container *ngFor=\"let item of entryTypesItem?.fieldTabs\">\n <ng-container *ngFor=\"let el of item.fields\">\n <ng-container *ngIf=\"el&&_entity\">\n <df-dynamic [entity]=\"_entity\" [fields]=\"el\"\n [selected]=\"entrySelect ? entrySelect.extraProperties[el.field.name] : ''\"\n [parentFiledName]=\"'extraProperties'\" ></df-dynamic>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"col-md-4 \">\n <div class=\"card mb-0 p-2\">\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"slug\">{{'Cms::Slug' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"slug\" >\n <div class=\"text-danger invalid-feedback\" *ngIf=\"sluginput.errors?.repetition\">\n {{sluginput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"culture\">{{'AbpUi::Languages' | abpLocalization}}</label>\n <select class=\"form-select\" [disabled]=\"false\" formControlName=\"culture\" >\n <ng-container *ngFor=\"let item of languagesList;let i =index\">\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\n </ng-container>\n </select>\n <input type=\"text\" formControlName=\"culture_shadow\" style=\"position: absolute;z-index: -1;opacity: 0;\">\n <div class=\"text-danger invalid-feedback\" *ngIf=\"culture_shadowInput.errors?.repetition\">\n {{culture_shadowInput.errors?.repetition}}\n </div>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"parentId\">{{'Cms::ParentEntry' | abpLocalization}}</label>\n <select class=\"form-select\" formControlName=\"parentId\">\n <option value=\"\"></option>\n <ng-container *ngFor=\"let item of entryTypesList;let i =index\">\n <option [value]=\"item.id\">{{item.displayName}}</option>\n </ng-container>\n </select>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::PublishTime' | abpLocalization}}</label>\n <input type=\"datetime-local\" class=\"form-control\" step=\"1\" formControlName=\"publishTime\">\n </div>\n <!-- RevisionEntryId -->\n <div class=\"mb-2\" *ngIf=\"isEdit\">\n <label class=\"form-label\" for=\"publishTime\">{{'Cms::Version' | abpLocalization}}</label>\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let item of AllVersionsList\">\n <li class=\"list-group-item flex-between\">\n <div>\n {{item.initialVersionId?(item.creationTime| date: 'YYYY/MM/dd HH:m:s'):('Cms::InitialVersion' | abpLocalization)}}\n <span class=\"badge text-bg-success ms-1\"\n *ngIf=\"item.isActivatedVersion\">{{'Cms::IsActive' | abpLocalization}}</span>\n <span class=\"badge text-bg-primary ms-1\"\n *ngIf=\"item.id === RevisionEntryId\">{{'Cms::Editing' | abpLocalization}}</span>\n </div>\n <div>\n <div ngbDropdown class=\"d-inline-block\">\n <button type=\"button\" class=\"btn btn-link-primary p-2 \"\n style=\"line-height: 0;\" id=\"dropdownBasic1\" ngbDropdownToggle>\n </button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\n <button ngbDropdownItem type=\"button\" *ngIf=\"!item.isActivatedVersion\"\n (click)=\"ActivatedVersion(item.id)\">\n <i class=\"fas fa-check me-1\"></i>{{'Cms::IsActive' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n routerLink=\"/cms/admin/entries/create\"\n [queryParams]=\"{RevisionEntryId:item.id}\">\n <i class=\"fas fa-plus me-1\"></i>{{'Cms::NewVersion' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\" (click.stop)=\"toEditUrl(item.id)\"\n *ngIf=\"item.id !== RevisionEntryId\">\n <i class=\"fas fa-edit me-1\"></i>{{'AbpUi::Edit' | abpLocalization}}\n </button>\n <button ngbDropdownItem type=\"button\"\n (click.stop)=\"delectVersion(item.id)\"\n *ngIf=\"item.initialVersionId&&!item.isActivatedVersion&&item.id !== RevisionEntryId\">\n <i class=\"fas fa-trash me-1\"></i>{{'AbpUi::Delete' | abpLocalization}}\n </button>\n </div>\n </div>\n </div>\n </li>\n </ng-container>\n </ul>\n </div>\n <div class=\"mb-2\">\n <label class=\"form-label\" for=\"versionNotes\">{{'Cms::RevisionNotes' | abpLocalization}}</label>\n <textarea class=\"form-control\" formControlName=\"versionNotes\" rows=\"3\"></textarea>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["::ng-deep .create-or-edit-entry-page .dignite_page{height:calc(100vh - 125px);overflow:auto;background:transparent}::ng-deep .create-or-edit-entry-page .form-control,::ng-deep .create-or-edit-entry-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit}::ng-deep .create-or-edit-entry-page .flex-between{display:flex;align-items:center;justify-content:space-between}\n"] }]
|
|
256
|
+
}], ctorParameters: function () { return [{ type: i1.ToasterService }, { type: i2.Location }, { type: i3.ConfigStateService }, { type: i4.SectionAdminService }, { type: i5.EntryAdminService }, { type: i2.DatePipe }, { type: i3.LocalizationService }, { type: i6.Router }, { type: i7.CmsApiService }]; }, propDecorators: { isEdit: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], ParentQueryParams: [{
|
|
221
259
|
type: Input
|
|
222
260
|
}], entity: [{
|
|
223
261
|
type: Input
|
|
224
262
|
}], parentEntrySelect: [{
|
|
225
263
|
type: Input
|
|
226
264
|
}] } });
|
|
227
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFnQyxXQUFXLEVBQStCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXBILE1BS2EsNEJBQTRCO0lBRTdCO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFYVixZQUNVLEVBQWUsRUFDZixPQUF1QixFQUN4QixTQUFtQixFQUNsQixLQUFxQixFQUNyQixXQUErQixFQUMvQixvQkFBeUMsRUFDekMsa0JBQXFDLEVBQ3JDLFFBQWtCLEVBQ2xCLG9CQUF5QyxFQUN6QyxNQUFjLEVBQ2QsY0FBNkI7UUFWN0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FB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bk9Bc0dNOztTRHRGTyw0QkFBNEI7NEZBQTVCLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSw0QkFBNEI7Z1lBMkMzQixpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBVUssTUFBTTtzQkFEaEIsS0FBSztnQkFTSyxpQkFBaUI7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgU2VjdGlvbkFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL3NlY3Rpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDbXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1lbnRyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdEVudHJpZXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcbiAgICBwdWJsaWMgX2xvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZTogU2VjdGlvbkFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZTogRW50cnlBZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2UsXG4gICkgeyB9XG5cblxuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyA9ICcnXG4gIC8qKuadoeebrmlkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgPSAnJ1xuXG4gIC8qKuaWsOW7uueJiOacrOeahOeJiOacrGlk77yM5ZCM5p2h55uuaWQgKi9cbiAgUmV2aXNpb25FbnRyeUlkOiBhbnkgPSAnJ1xuICAvKirpgInmi6nnmoTmnaHnm67pobkgKi9cbiAgZW50cnlUeXBlc0l0ZW06IGFueSA9ICcnXG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nID0gJydcbiAgLyoq54mI5Z2X6K+m5oOFICovXG4gIFNlY3Rpb25TZWxlY3Q6IGFueSA9ICcnXG4gIC8qKuivreiogOWIl+ihqCAqL1xuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdXG4gIC8qKuadoeebruexu+Wei+WIl+ihqC3nlKjkuo7pgInmi6nkuIrnuqfmnaHnm64gKi9cbiAgZW50cnlUeXBlc0xpc3Q6IGFueVtdID0gW11cbiAgLyoq54mI5pys5YiX6KGoICovXG4gIEFsbFZlcnNpb25zTGlzdDogYW55W10gPSBbXVxuXG4gIC8qKuadpeiHqueItue7hOS7tueahOS8oOWAvCAqL1xuICBGcm9tUGFyZW50UXVlcnlQYXJhbXM6IGFueSA9ICcnXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgUGFyZW50UXVlcnlQYXJhbXModjogYW55KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zID0gdjtcbiAgICB9XG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9lbnRpdHkgPSB2O1xuICAgIH1cbiAgfVxuICAvKirmjIflrpppZOeahOadoeebruS/oeaBryAqL1xuICBlbnRyeVNlbGVjdDogYW55ID0gJydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYXJlbnRFbnRyeVNlbGVjdCh2OiBhbnkpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5lbnRyeVNlbGVjdCA9IHY7XG4gICAgfVxuICB9XG5cbiAgLyoq5Yir5ZCN6KGo5Y2V5a6e5L2TICovXG4gIGdldCBzbHVnaW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eS5nZXQoJ3NsdWcnKVxuICB9XG4gIFxuICAvKipleHRyYVByb3BlcnRpZXPphY3nva7ooajljZXlrp7kvZMgKi9cbiAgZ2V0IGV4dHJhUHJvcGVydGllcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZW50aXR5LmdldCgnZXh0cmFQcm9wZXJ0aWVzJykgYXMgRm9ybUdyb3VwXG4gIH1cbiAgYXN5bmMgbmdBZnRlckNvbnRlbnRJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vQ2FsbGVkIGFmdGVyIG5nT25Jbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIG9yIGRpcmVjdGl2ZSdzIGNvbnRlbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCcgdG8gdGhlIGNsYXNzLlxuICAgIGxldCBxdWVyeVBhcmFtcyA9IHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zXG4gICAgaWYgKHRoaXMuX2VudGl0eSAmJiB0aGlzLkZyb21QYXJlbnRRdWVyeVBhcmFtcykge1xuICAgICAgdGhpcy5fZW50aXR5LnNldENvbnRyb2woJ3NsdWcnLCBuZXcgRm9ybUNvbnRyb2woJycsIHtcbiAgICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLnJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpLFxuICAgICAgICB1cGRhdGVPbjogJ2JsdXInXG4gICAgICB9KSlcbiAgICAgIGlmIChxdWVyeVBhcmFtcy5SZXZpc2lvbkVudHJ5SWQgJiYgdGhpcy5lbnRyeVNlbGVjdCkge1xuICAgICAgICB0aGlzLlJldmlzaW9uRW50cnlJZCA9IHF1ZXJ5UGFyYW1zLlJldmlzaW9uRW50cnlJZFxuICAgICAgICB0aGlzLnNldEVudHJ5Y29uZmlnKHRoaXMuZW50cnlTZWxlY3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRFbnRyeWNvbmZpZyhxdWVyeVBhcmFtcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWN0aW9uSWQpIGF3YWl0IHRoaXMuZ2V0U2VjdGlvblNlbGVjdCgpO1xuICAgICAgaWYgKHRoaXMuUmV2aXNpb25FbnRyeUlkKSBhd2FpdCB0aGlzLmdldEFsbFZlcnNpb25zTGlzdCgpXG4gICAgfVxuICB9XG5cblxuICAvKiogIFxuICog6K6+572u5p2h55uu6K+m5oOFICBcbiAqIEBwYXJhbSB7b2JqZWN0fSBzb3VyY2UgLSDmlbDmja7mupDlr7nosaEgIFxuICovXG4gIHNldEVudHJ5Y29uZmlnKHNvdXJjZTphbnkpIHtcbiAgICB0aGlzLmVudHJ5VHlwZUlkID0gc291cmNlLmVudHJ5VHlwZUlkO1xuICAgIHRoaXMuY3VsdHVyZU5hbWUgPSBzb3VyY2UuY3VsdHVyZSB8fCBzb3VyY2UuY3VsdHVyZU5hbWU7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBzb3VyY2Uuc2VjdGlvbklkO1xuICB9XG5cbiAgLyoq5a6a5LmJ6Ieq5a6a5LmJ5byC5q2l6aqM6K+BICovXG4gIHJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gKGN0cmw6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgc3Vic2x1ZyA9IHRoaXMuX2VudGl0eT8uZ2V0KCdzbHVnJykudmFsdWVcbiAgICAgICAgaWYgKHN1YnNsdWcgPT0gdGhpcy5lbnRyeVNlbGVjdD8uc2x1Zykge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2Uuc2x1Z0V4aXN0cyh7XG4gICAgICAgICAgY3VsdHVyZTogdGhpcy5jdWx0dXJlTmFtZSxcbiAgICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuc2VjdGlvbklkLFxuICAgICAgICAgIHNsdWc6IHN1YnNsdWdcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQ21zOjpFbnRyeVNsdWd7MH1BbHJlYWR5RXhpc3RgLCBjdHJsLnZhbHVlKSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cblxuXG4gIC8qKuiOt+WPlueJiOWdl+ivpuaDhSAqL1xuICBnZXRTZWN0aW9uU2VsZWN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5nZXQodGhpcy5zZWN0aW9uSWQpLnN1YnNjcmliZShhc3luYyAocmVzKSA9PiB7XG4gICAgICAgIGxldCBsYW5ndWFnZXMgPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5sYW5ndWFnZXMnKVxuICAgICAgICB0aGlzLmxhbmd1YWdlc0xpc3QgPSBsYW5ndWFnZXMuZmlsdGVyKGVsID0+IHJlcz8uc2l0ZT8ubGFuZ3VhZ2VzLnNvbWUoZWxyID0+IGVsci5jdWx0dXJlTmFtZSA9PSBlbC5jdWx0dXJlTmFtZSkpXG4gICAgICAgIGxldCBlbnRyeVR5cGVzSXRlbSA9IHJlcy5lbnRyeVR5cGVzLmZpbmQoZWwgPT4gZWwuaWQgPT0gdGhpcy5lbnRyeVR5cGVJZClcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVzSXRlbSA9IGVudHJ5VHlwZXNJdGVtXG4gICAgICAgIHRoaXMuZW50cnlUeXBlc0xpc3QgPSByZXMuZW50cnlUeXBlcy5maWx0ZXIoZWwgPT4gZWwuaWQgPT0gdGhpcy5lbnRyeVR5cGVJZClcbiAgICAgICAgdGhpcy5fZW50aXR5LnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHRpdGxlOiB0aGlzLmVudHJ5U2VsZWN0Py50aXRsZSB8fCAnJyxcbiAgICAgICAgICBzbHVnOiB0aGlzLmVudHJ5U2VsZWN0Py5zbHVnIHx8ICcnLFxuICAgICAgICAgIGluaXRpYWxWZXJzaW9uSWQ6IHRoaXMuZW50cnlTZWxlY3Q/LmluaXRpYWxWZXJzaW9uSWQgfHwgJycsXG4gICAgICAgICAgcGFyZW50SWQ6IHRoaXMuZW50cnlTZWxlY3Q/LnBhcmVudElkIHx8ICcnLFxuICAgICAgICAgIHZlcnNpb25Ob3RlczogdGhpcy5lbnRyeVNlbGVjdD8udmVyc2lvbk5vdGVzIHx8ICcnLFxuICAgICAgICAgIGN1bHR1cmU6IHRoaXMuY3VsdHVyZU5hbWUsXG4gICAgICAgICAgZW50cnlUeXBlSWQ6IHRoaXMuZW50cnlUeXBlSWQsXG4gICAgICAgICAgcHVibGlzaFRpbWU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKG5ldyBEYXRlKCksICd5eXl5LU1NLWRkIEhIOm1tOnNzJyksXG4gICAgICAgIH0pXG4gICAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKuiOt+WPluadoeebrueJiOacrOWIl+ihqCAqL1xuICBnZXRBbGxWZXJzaW9uc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXRBbGxWZXJzaW9ucyh0aGlzLlJldmlzaW9uRW50cnlJZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuQWxsVmVyc2lvbnNMaXN0ID0gcmVzLml0ZW1zXG4gICAgICAgIHJlc29sdmUocmVzKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoq5qCH6aKY6L2s5YyW5Yir5ZCNICovXG4gIHNldFRpdGxlVG9TbHVnQmx1cihldmVudCkge1xuICAgIGxldCB2YWwgPSBldmVudC50YXJnZXQudmFsdWUucmVwbGFjZSgvXFxzKy9nLCBcIlwiKVxuICAgIGxldCBzbHVnID0gdGhpcy5fZW50aXR5LmdldCgnc2x1ZycpXG4gICAgbGV0IHBpbnlpbnN0ciA9ICcnXG4gICAgaWYgKHNsdWcudmFsdWUpIHJldHVyblxuICAgIHBpbnlpbnN0ciA9IHRoaXMuX0Ntc0FwaVNlcnZpY2UuY2hpbmVzZVRvUGlueWluKHZhbClcbiAgICB0aGlzLl9lbnRpdHkucGF0Y2hWYWx1ZSh7XG4gICAgICBzbHVnOiBwaW55aW5zdHIgfHwgdmFsXG4gICAgfSlcbiAgfVxuICAvKirkvb/nlKhVbmljb2Rl57yW56CB6IyD5Zu05Yik5pat5piv5ZCm5piv5Lit5paH5a2X56ymICovXG4gIGlzQ2hpbmVzZShzdHIpIHtcbiAgICByZXR1cm4gL15bXFx1NGUwMC1cXHU5ZmE1XSskLy50ZXN0KHN0cik7XG4gIH1cblxuICAvKirmv4DmtLsgKi9cbiAgQWN0aXZhdGVkVmVyc2lvbihWZXJzaW9uSWQpIHtcbiAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5hY3RpdmF0ZShWZXJzaW9uSWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLkFsbFZlcnNpb25zTGlzdC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuaXNBY3RpdmF0ZWRWZXJzaW9uID0gZWwuaWQgPT09IFZlcnNpb25JZFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH0pXG4gIH1cbiAgLy/nvJbovpHniYjmnKxcbiAgdG9FZGl0VXJsKGlkKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnJywgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jbXMvYWRtaW4vZW50cmllcy8ke2lkfS9lZGl0YF0pO1xuICAgIH0pO1xuICB9XG4gIC8qKuWIoOmZpOeJiOacrCAqL1xuICBkZWxlY3RWZXJzaW9uKHZpZCkge1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmRlbGV0ZSh2aWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZGApKTtcbiAgICAgIHRoaXMuZ2V0QWxsVmVyc2lvbnNMaXN0KClcbiAgICB9KVxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcmVhdGUtb3ItZWRpdC1lbnRyeS1wYWdlXCIgW2Zvcm1Hcm91cF09XCJfZW50aXR5XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04IFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkICBwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ0aXRsZVwiPnt7J0Ntczo6VGl0bGUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAoYmx1cik9XCJzZXRUaXRsZVRvU2x1Z0JsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZW50cnlUeXBlc0l0ZW0/LmZpZWxkVGFic1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZWwgb2YgaXRlbS5maWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWwmJl9lbnRpdHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRmLWR5bmFtaWMgW2VudGl0eV09XCJfZW50aXR5XCIgW2ZpZWxkc109XCJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiZW50cnlTZWxlY3QgPyBlbnRyeVNlbGVjdC5leHRyYVByb3BlcnRpZXNbZWwuZmllbGQubmFtZV0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyZW50RmlsZWROYW1lXT1cIidleHRyYVByb3BlcnRpZXMnXCI+PC9kZi1keW5hbWljPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgbWItMCBwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJzbHVnXCI+e3snQ21zOjpTbHVnJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwic2x1Z1wiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyIGludmFsaWQtZmVlZGJhY2tcIiAqbmdJZj1cInNsdWdpbnB1dC5lcnJvcnM/LnJlcGV0aXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3NsdWdpbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImN1bHR1cmVcIj57eydBYnBVaTo6TGFuZ3VhZ2VzJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImN1bHR1cmVcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhbmd1YWdlc0xpc3Q7bGV0IGkgPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW0uY3VsdHVyZU5hbWVcIj57e2l0ZW0uZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmVudElkXCI+e3snQ21zOjpQYXJlbnRFbnRyeScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJlbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZXNMaXN0O2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwdWJsaXNoVGltZVwiPnt7J0Ntczo6UHVibGlzaFRpbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgc3RlcD1cIjFcIiBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaXNoVGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cImVudHJ5U2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicHVibGlzaFRpbWVcIj57eydDbXM6OlZlcnNpb24nIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgQWxsVmVyc2lvbnNMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBmbGV4LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtLmluaXRpYWxWZXJzaW9uSWQ/KGl0ZW0uY3JlYXRpb25UaW1lfCBkYXRlOiAnWVlZWS9NTS9kZCBISDptOnMnKTooJ0Ntczo6SW5pdGlhbFZlcnNpb24nIHwgYWJwTG9jYWxpemF0aW9uKX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSB0ZXh0LWJnLXN1Y2Nlc3MgbXMtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc0FjdGl2YXRlZFZlcnNpb25cIj57eydDbXM6OklzQWN0aXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgdGV4dC1iZy1wcmltYXJ5IG1zLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWQgPT09IFJldmlzaW9uRW50cnlJZFwiPnt7J0Ntczo6RWRpdGluZycgfCBhYnBMb2NhbGl6YXRpb259fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpbmstcHJpbWFyeSBwLTIgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibGluZS1oZWlnaHQ6IDA7XCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIiFpdGVtLmlzQWN0aXZhdGVkVmVyc2lvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIkFjdGl2YXRlZFZlcnNpb24oaXRlbS5pZClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGVjayBtZS0xXCI+PC9pPnt7J0Ntczo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluaz1cIi9jbXMvYWRtaW4vZW50cmllcy9jcmVhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJ7UmV2aXNpb25FbnRyeUlkOml0ZW0uaWR9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPnt7J0Ntczo6TmV3VmVyc2lvbicgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwidG9FZGl0VXJsKGl0ZW0uaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWQgIT09IFJldmlzaW9uRW50cnlJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVkaXQgbWUtMVwiPjwvaT57eydBYnBVaTo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiZGVsZWN0VmVyc2lvbihpdGVtLmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmluaXRpYWxWZXJzaW9uSWQmJiFpdGVtLmlzQWN0aXZhdGVkVmVyc2lvbiYmaXRlbS5pZCAhPT0gUmV2aXNpb25FbnRyeUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdHJhc2ggbWUtMVwiPjwvaT57eydBYnBVaTo6RGVsZXRlJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInZlcnNpb25Ob3Rlc1wiPnt7J0Ntczo6UmV2aXNpb25Ob3RlcycgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJ2ZXJzaW9uTm90ZXNcIiByb3dzPVwiM1wiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFnQyxXQUFXLEVBQStCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXBILE1BS2EsNEJBQTRCO0lBRTdCO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVRWLFlBQ1UsT0FBdUIsRUFDeEIsU0FBbUIsRUFDbEIsV0FBK0IsRUFDL0Isb0JBQXlDLEVBQ3pDLGtCQUFxQyxFQUNyQyxRQUFrQixFQUNsQixvQkFBeUMsRUFDekMsTUFBYyxFQUNkLGNBQTZCO1FBUjdCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBcUI7UUFDekMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG1CQUFjLEdBQWQsY0FBYyxDQUFlO0lBQ25DLENBQUM7SUFHTCxRQUFRO0lBQ1IsV0FB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WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUM7WUFDdEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO3dHQWxQVSw0QkFBNEI7NEZBQTVCLDRCQUE0QixrTUNoQnpDLDRnUEEyR007O1NEM0ZPLDRCQUE0Qjs0RkFBNUIsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDRCQUE0Qjt5VUF1QzdCLE1BQU07c0JBQWQsS0FBSztnQkFLSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBVUssTUFBTTtzQkFEaEIsS0FBSztnQkFTSyxpQkFBaUI7c0JBRDNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25maWdTdGF0ZVNlcnZpY2UsIExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgU2VjdGlvbkFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL3NlY3Rpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDbXNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1lbnRyaWVzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW9yLWVkaXQtZW50cmllcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdEVudHJpZXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBUb2FzdGVyU2VydmljZSxcbiAgICBwdWJsaWMgX2xvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIGNvbmZpZ1N0YXRlOiBDb25maWdTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfU2VjdGlvbkFkbWluU2VydmljZTogU2VjdGlvbkFkbWluU2VydmljZSxcbiAgICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZTogRW50cnlBZG1pblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgX0Ntc0FwaVNlcnZpY2U6IENtc0FwaVNlcnZpY2UsXG4gICkgeyB9XG5cblxuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyA9ICcnXG4gIC8qKuadoeebrmlkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgPSAnJ1xuXG4gIC8qKuaWsOW7uueJiOacrOeahOeJiOacrGlk77yM5ZCM5p2h55uuaWQgKi9cbiAgUmV2aXNpb25FbnRyeUlkOiBhbnkgPSAnJ1xuICAvKirpgInmi6nnmoTmnaHnm67pobkgKi9cbiAgZW50cnlUeXBlc0l0ZW06IGFueSA9ICcnXG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nID0gJydcbiAgLyoq54mI5Z2X6K+m5oOFICovXG4gIFNlY3Rpb25TZWxlY3Q6IGFueSA9ICcnXG4gIC8qKuivreiogOWIl+ihqCAqL1xuICBsYW5ndWFnZXNMaXN0OiBhbnlbXSA9IFtdXG4gIC8qKuadoeebruexu+Wei+WIl+ihqC3nlKjkuo7pgInmi6nkuIrnuqfmnaHnm64gKi9cbiAgZW50cnlUeXBlc0xpc3Q6IGFueVtdID0gW11cbiAgLyoq54mI5pys5YiX6KGoICovXG4gIEFsbFZlcnNpb25zTGlzdDogYW55W10gPSBbXVxuXG4gIC8qKuaYr+WQpuaYr+e8lui+kSAqL1xuICBASW5wdXQoKSBpc0VkaXQgPSBmYWxzZVxuXG4gIC8qKuadpeiHqueItue7hOS7tueahOS8oOWAvCAqL1xuICBGcm9tUGFyZW50UXVlcnlQYXJhbXM6IGFueSA9ICcnXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgUGFyZW50UXVlcnlQYXJhbXModjogYW55KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zID0gdjtcbiAgICB9XG4gIH1cblxuICAvKirooajljZXlrp7kvZMgKi9cbiAgX2VudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5KHY6IGFueSkge1xuICAgIGlmICh2KSB7XG4gICAgICB0aGlzLl9lbnRpdHkgPSB2O1xuICAgIH1cbiAgfVxuICAvKirmjIflrpppZOeahOadoeebruS/oeaBryAqL1xuICBlbnRyeVNlbGVjdDogYW55ID0gJydcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYXJlbnRFbnRyeVNlbGVjdCh2OiBhbnkpIHtcbiAgICBpZiAodikge1xuICAgICAgdGhpcy5lbnRyeVNlbGVjdCA9IHY7XG4gICAgfVxuICB9XG5cbiAgLyoq5Yir5ZCN6KGo5Y2V5a6e5L2TICovXG4gIGdldCBzbHVnaW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eS5nZXQoJ3NsdWcnKVxuICB9XG4gIC8qKuivreiogOihqOWNleWunuS9kyAqL1xuICBnZXQgY3VsdHVyZWlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkuZ2V0KCdjdWx0dXJlJylcbiAgfVxuICAvKiror63oqIDooajljZXlrp7kvZPlvbHlrZAgKi9cbiAgZ2V0IGN1bHR1cmVfc2hhZG93SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VudGl0eS5nZXQoJ2N1bHR1cmVfc2hhZG93JylcbiAgfVxuXG4gIC8qKmV4dHJhUHJvcGVydGllc+mFjee9ruihqOWNleWunuS9kyAqL1xuICBnZXQgZXh0cmFQcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9lbnRpdHkuZ2V0KCdleHRyYVByb3BlcnRpZXMnKSBhcyBGb3JtR3JvdXBcbiAgfVxuICBhc3luYyBuZ0FmdGVyQ29udGVudEluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy9DYWxsZWQgYWZ0ZXIgbmdPbkluaXQgd2hlbiB0aGUgY29tcG9uZW50J3Mgb3IgZGlyZWN0aXZlJ3MgY29udGVudCBoYXMgYmVlbiBpbml0aWFsaXplZC5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0JyB0byB0aGUgY2xhc3MuXG4gICAgbGV0IHF1ZXJ5UGFyYW1zID0gdGhpcy5Gcm9tUGFyZW50UXVlcnlQYXJhbXNcbiAgICBpZiAodGhpcy5fZW50aXR5ICYmIHRoaXMuRnJvbVBhcmVudFF1ZXJ5UGFyYW1zKSB7XG4gICAgICB0aGlzLl9lbnRpdHkuc2V0Q29udHJvbCgnc2x1ZycsIG5ldyBGb3JtQ29udHJvbCgnJywge1xuICAgICAgICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMucmVwZXRpdGlvbkFzeW5jVmFsaWRhdG9yKCksXG4gICAgICAgIHVwZGF0ZU9uOiAnYmx1cidcbiAgICAgIH0pKVxuICAgICAgdGhpcy5fZW50aXR5LnNldENvbnRyb2woJ2N1bHR1cmVfc2hhZG93JywgbmV3IEZvcm1Db250cm9sKCcnLCB7XG4gICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLmN1bHR1cmVBc3luY1ZhbGlkYXRvcl90ZXN0KCksXG4gICAgICB9KSlcbiAgICAgIHRoaXMuX2VudGl0eS5nZXQoJ2N1bHR1cmUnKS5kaXNhYmxlKCk7XG4gICAgICBpZiAocXVlcnlQYXJhbXMuUmV2aXNpb25FbnRyeUlkICYmIHRoaXMuZW50cnlTZWxlY3QpIHtcbiAgICAgICAgdGhpcy5SZXZpc2lvbkVudHJ5SWQgPSBxdWVyeVBhcmFtcy5SZXZpc2lvbkVudHJ5SWRcbiAgICAgICAgdGhpcy5zZXRFbnRyeWNvbmZpZyh0aGlzLmVudHJ5U2VsZWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0RW50cnljb25maWcocXVlcnlQYXJhbXMpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2VjdGlvbklkKSBhd2FpdCB0aGlzLmdldFNlY3Rpb25TZWxlY3QoKTtcbiAgICAgIGlmICh0aGlzLlJldmlzaW9uRW50cnlJZCkgYXdhaXQgdGhpcy5nZXRBbGxWZXJzaW9uc0xpc3QoKVxuICAgIH1cbiAgfVxuXG5cbiAgLyoq5a6a5LmJ6Ieq5a6a5LmJ5byC5q2l6aqM6K+BICovXG4gIGN1bHR1cmVBc3luY1ZhbGlkYXRvcl90ZXN0KCkge1xuICAgIHJldHVybiAoY3RybDogQWJzdHJhY3RDb250cm9sKTogUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAgIGxldCBzdWJjdWx0dXJlID0gdGhpcy5fZW50aXR5Py5nZXQoJ2N1bHR1cmUnKS52YWx1ZVxuICAgICAgICBpZiAoc3ViY3VsdHVyZSA9PSB0aGlzLmVudHJ5U2VsZWN0Py5jdWx0dXJlKSB7XG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5jdWx0dXJlRXhpc3RXaXRoU2luZ2xlU2VjdGlvbih7XG4gICAgICAgICAgY3VsdHVyZTogc3ViY3VsdHVyZSxcbiAgICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuc2VjdGlvbklkLFxuICAgICAgICAgIGVudHJ5VHlwZUlkOiB0aGlzLmVudHJ5VHlwZUlkXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHJlc29sdmUoeyByZXBldGl0aW9uOiB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYENtczo6RW50cmllc0FscmVhZHlFeGlzdEVudHJ5VHlwZWAsIHRoaXMuZW50cnlUeXBlc0l0ZW0uZGlzcGxheU5hbWUsIHRoaXMubGFuZ3VhZ2VzTGlzdC5maW5kKGVsID0+IGVsLmN1bHR1cmVOYW1lID09IHN1YmN1bHR1cmUpLmRpc3BsYXlOYW1lKSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cblxuICAvKiogIFxuICog6K6+572u5p2h55uu6K+m5oOFICBcbiAqIEBwYXJhbSB7b2JqZWN0fSBzb3VyY2UgLSDmlbDmja7mupDlr7nosaEgIFxuICovXG4gIHNldEVudHJ5Y29uZmlnKHNvdXJjZTogYW55KSB7XG4gICAgdGhpcy5lbnRyeVR5cGVJZCA9IHNvdXJjZS5lbnRyeVR5cGVJZDtcbiAgICB0aGlzLmN1bHR1cmVOYW1lID0gc291cmNlLmN1bHR1cmUgfHwgc291cmNlLmN1bHR1cmVOYW1lO1xuICAgIHRoaXMuc2VjdGlvbklkID0gc291cmNlLnNlY3Rpb25JZDtcbiAgfVxuICB0aW1lOiBudW1iZXIgPSAwXG5cbiAgLyoq5a6a5LmJ6Ieq5a6a5LmJ5byC5q2l6aqM6K+BICovXG4gIHJlcGV0aXRpb25Bc3luY1ZhbGlkYXRvcigpIHtcbiAgICByZXR1cm4gKGN0cmw6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+IHwgT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4gPT4ge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICBsZXQgc3Vic2x1ZyA9IHRoaXMuX2VudGl0eT8uZ2V0KCdzbHVnJykudmFsdWVcbiAgICAgICAgaWYgKHN1YnNsdWcgPT0gdGhpcy5lbnRyeVNlbGVjdD8uc2x1Zykge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2Uuc2x1Z0V4aXN0cyh7XG4gICAgICAgICAgY3VsdHVyZTogdGhpcy5jdWx0dXJlTmFtZSxcbiAgICAgICAgICBzZWN0aW9uSWQ6IHRoaXMuc2VjdGlvbklkLFxuICAgICAgICAgIHNsdWc6IHN1YnNsdWdcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHJlcGV0aXRpb246IHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQ21zOjpFbnRyeVNsdWd7MH1BbHJlYWR5RXhpc3RgLCBjdHJsLnZhbHVlKSB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cblxuXG4gIC8qKuiOt+WPlueJiOWdl+ivpuaDhSAqL1xuICBnZXRTZWN0aW9uU2VsZWN0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fU2VjdGlvbkFkbWluU2VydmljZS5nZXQodGhpcy5zZWN0aW9uSWQpLnN1YnNjcmliZShhc3luYyAocmVzKSA9PiB7XG4gICAgICAgIGxldCBsYW5ndWFnZXMgPSB0aGlzLmNvbmZpZ1N0YXRlLmdldERlZXAoJ2xvY2FsaXphdGlvbi5sYW5ndWFnZXMnKVxuICAgICAgICB0aGlzLmxhbmd1YWdlc0xpc3QgPSBsYW5ndWFnZXMuZmlsdGVyKGVsID0+IHJlcz8uc2l0ZT8ubGFuZ3VhZ2VzLnNvbWUoZWxyID0+IGVsci5jdWx0dXJlTmFtZSA9PSBlbC5jdWx0dXJlTmFtZSkpXG4gICAgICAgIGxldCBlbnRyeVR5cGVzSXRlbSA9IHJlcy5lbnRyeVR5cGVzLmZpbmQoZWwgPT4gZWwuaWQgPT0gdGhpcy5lbnRyeVR5cGVJZClcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVzSXRlbSA9IGVudHJ5VHlwZXNJdGVtXG4gICAgICAgIHRoaXMuZW50cnlUeXBlc0xpc3QgPSByZXMuZW50cnlUeXBlcy5maWx0ZXIoZWwgPT4gZWwuaWQgPT0gdGhpcy5lbnRyeVR5cGVJZClcbiAgICAgICAgdGhpcy5fZW50aXR5LnBhdGNoVmFsdWUoe1xuICAgICAgICAgIC4uLnRoaXMuZW50cnlTZWxlY3QsXG4gICAgICAgICAgaW5pdGlhbFZlcnNpb25JZDogdGhpcy5lbnRyeVNlbGVjdD8uaW5pdGlhbFZlcnNpb25JZCB8fCB0aGlzLlJldmlzaW9uRW50cnlJZCB8fCAnJyxcbiAgICAgICAgICBjdWx0dXJlOiB0aGlzLmN1bHR1cmVOYW1lLFxuICAgICAgICAgIGN1bHR1cmVfc2hhZG93OiB0aGlzLmN1bHR1cmVOYW1lLFxuICAgICAgICAgIGVudHJ5VHlwZUlkOiB0aGlzLmVudHJ5VHlwZUlkLFxuICAgICAgICAgIHB1Ymxpc2hUaW1lOiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZCBISDptbTpzcycpLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZygn6I635Y+W54mI5Z2X6K+m5oOFJyk7XG5cbiAgICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgLyoq6I635Y+W5p2h55uu54mI5pys5YiX6KGoICovXG4gIGdldEFsbFZlcnNpb25zTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcblxuICAgICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZ2V0QWxsVmVyc2lvbnModGhpcy5SZXZpc2lvbkVudHJ5SWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLkFsbFZlcnNpb25zTGlzdCA9IHJlcy5pdGVtc1xuICAgICAgICByZXNvbHZlKHJlcylcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKuagh+mimOi9rOWMluWIq+WQjSAqL1xuICBzZXRUaXRsZVRvU2x1Z0JsdXIoZXZlbnQpIHtcbiAgICBsZXQgdmFsID0gZXZlbnQudGFyZ2V0LnZhbHVlXG4gICAgLy8gbGV0IHZhbCA9IGV2ZW50LnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpXG4gICAgbGV0IHNsdWcgPSB0aGlzLl9lbnRpdHkuZ2V0KCdzbHVnJylcbiAgICBsZXQgcGlueWluc3RyID0gJydcbiAgICBpZiAoc2x1Zy52YWx1ZSkgcmV0dXJuXG4gICAgcGlueWluc3RyID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsKVxuICAgIHRoaXMuX2VudGl0eS5wYXRjaFZhbHVlKHtcbiAgICAgIHNsdWc6IHBpbnlpbnN0ciB8fCB2YWxcbiAgICB9KVxuICB9XG4gIC8qKuS9v+eUqFVuaWNvZGXnvJbnoIHojIPlm7TliKTmlq3mmK/lkKbmmK/kuK3mloflrZfnrKYgKi9cbiAgaXNDaGluZXNlKHN0cikge1xuICAgIHJldHVybiAvXltcXHU0ZTAwLVxcdTlmYTVdKyQvLnRlc3Qoc3RyKTtcbiAgfVxuXG4gIC8qKua/gOa0uyAqL1xuICBBY3RpdmF0ZWRWZXJzaW9uKFZlcnNpb25JZCkge1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmFjdGl2YXRlKFZlcnNpb25JZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIHRoaXMuQWxsVmVyc2lvbnNMaXN0LmZvckVhY2goZWwgPT4ge1xuICAgICAgICBlbC5pc0FjdGl2YXRlZFZlcnNpb24gPSBlbC5pZCA9PT0gVmVyc2lvbklkXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfSlcbiAgfVxuICAvL+e8lui+keeJiOacrFxuICB0b0VkaXRVcmwoaWQpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcnLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL2Ntcy9hZG1pbi9lbnRyaWVzLyR7aWR9L2VkaXRgXSk7XG4gICAgfSk7XG4gIH1cbiAgLyoq5Yig6Zmk54mI5pysICovXG4gIGRlbGVjdFZlcnNpb24odmlkKSB7XG4gICAgdGhpcy5fRW50cnlBZG1pblNlcnZpY2UuZGVsZXRlKHZpZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTdWNjZXNzZnVsbHlEZWxldGVkYCkpO1xuICAgICAgdGhpcy5nZXRBbGxWZXJzaW9uc0xpc3QoKVxuICAgIH0pXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNyZWF0ZS1vci1lZGl0LWVudHJ5LXBhZ2VcIiBbZm9ybUdyb3VwXT1cIl9lbnRpdHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyIFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTggXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInRpdGxlXCI+e3snQ21zOjpUaXRsZScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiICAgKGJsdXIpPVwic2V0VGl0bGVUb1NsdWdCbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZXNJdGVtPy5maWVsZFRhYnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVsIG9mIGl0ZW0uZmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVsJiZfZW50aXR5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZi1keW5hbWljIFtlbnRpdHldPVwiX2VudGl0eVwiIFtmaWVsZHNdPVwiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cImVudHJ5U2VsZWN0ID8gZW50cnlTZWxlY3QuZXh0cmFQcm9wZXJ0aWVzW2VsLmZpZWxkLm5hbWVdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcmVudEZpbGVkTmFtZV09XCInZXh0cmFQcm9wZXJ0aWVzJ1wiID48L2RmLWR5bmFtaWM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBtYi0wIHAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInNsdWdcIj57eydDbXM6OlNsdWcnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAgZm9ybUNvbnRyb2xOYW1lPVwic2x1Z1wiICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYW5nZXIgaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic2x1Z2lucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2x1Z2lucHV0LmVycm9ycz8ucmVwZXRpdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY3VsdHVyZVwiPnt7J0FicFVpOjpMYW5ndWFnZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgICBbZGlzYWJsZWRdPVwiZmFsc2VcIiBmb3JtQ29udHJvbE5hbWU9XCJjdWx0dXJlXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGFuZ3VhZ2VzTGlzdDtsZXQgaSA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jdWx0dXJlTmFtZVwiPnt7aXRlbS5kaXNwbGF5TmFtZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImN1bHR1cmVfc2hhZG93XCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogLTE7b3BhY2l0eTogMDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlciBpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJjdWx0dXJlX3NoYWRvd0lucHV0LmVycm9ycz8ucmVwZXRpdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y3VsdHVyZV9zaGFkb3dJbnB1dC5lcnJvcnM/LnJlcGV0aXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmVudElkXCI+e3snQ21zOjpQYXJlbnRFbnRyeScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXJlbnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGVudHJ5VHlwZXNMaXN0O2xldCBpID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+e3tpdGVtLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwdWJsaXNoVGltZVwiPnt7J0Ntczo6UHVibGlzaFRpbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRldGltZS1sb2NhbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgc3RlcD1cIjFcIiBmb3JtQ29udHJvbE5hbWU9XCJwdWJsaXNoVGltZVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBSZXZpc2lvbkVudHJ5SWQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJpc0VkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwdWJsaXNoVGltZVwiPnt7J0Ntczo6VmVyc2lvbicgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBBbGxWZXJzaW9uc0xpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGZsZXgtYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uaW5pdGlhbFZlcnNpb25JZD8oaXRlbS5jcmVhdGlvblRpbWV8IGRhdGU6ICdZWVlZL01NL2RkIEhIOm06cycpOignQ21zOjpJbml0aWFsVmVyc2lvbicgfCBhYnBMb2NhbGl6YXRpb24pfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIHRleHQtYmctc3VjY2VzcyBtcy0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmlzQWN0aXZhdGVkVmVyc2lvblwiPnt7J0Ntczo6SXNBY3RpdmUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSB0ZXh0LWJnLXByaW1hcnkgbXMtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pZCA9PT0gUmV2aXNpb25FbnRyeUlkXCI+e3snQ21zOjpFZGl0aW5nJyB8IGFicExvY2FsaXphdGlvbn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkLWlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluay1wcmltYXJ5IHAtMiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJsaW5lLWhlaWdodDogMDtcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCIgbmdiRHJvcGRvd25Ub2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIWl0ZW0uaXNBY3RpdmF0ZWRWZXJzaW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiQWN0aXZhdGVkVmVyc2lvbihpdGVtLmlkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrIG1lLTFcIj48L2k+e3snQ21zOjpJc0FjdGl2ZScgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwiL2Ntcy9hZG1pbi9lbnRyaWVzL2NyZWF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cIntSZXZpc2lvbkVudHJ5SWQ6aXRlbS5pZH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+e3snQ21zOjpOZXdWZXJzaW9uJyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJ0b0VkaXRVcmwoaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pZCAhPT0gUmV2aXNpb25FbnRyeUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWRpdCBtZS0xXCI+PC9pPnt7J0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cImRlbGVjdFZlcnNpb24oaXRlbS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pbml0aWFsVmVyc2lvbklkJiYhaXRlbS5pc0FjdGl2YXRlZFZlcnNpb24mJml0ZW0uaWQgIT09IFJldmlzaW9uRW50cnlJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoIG1lLTFcIj48L2k+e3snQWJwVWk6OkRlbGV0ZScgfCBhYnBMb2NhbGl6YXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ2ZXJzaW9uTm90ZXNcIj57eydDbXM6OlJldmlzaW9uTm90ZXMnIHwgYWJwTG9jYWxpemF0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwidmVyc2lvbk5vdGVzXCIgcm93cz1cIjNcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|