@mediusinc/mng-commons 0.2.16 → 0.2.17
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/esm2020/lib/api/models/filter-param.model.mjs +1 -1
- package/esm2020/lib/api/models/query-param.model.mjs +1 -1
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +9 -10
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +5 -7
- package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +7 -6
- package/esm2020/lib/components/layout/topbar.component.mjs +1 -3
- package/esm2020/lib/components/tableview/table/table.component.mjs +7 -9
- package/esm2020/lib/descriptors/editor.descriptor.mjs +8 -2
- package/esm2020/lib/router/models/router.model.mjs +1 -1
- package/esm2020/lib/router/route-builder.mjs +75 -11
- package/esm2020/lib/services/configuration.service.mjs +3 -3
- package/fesm2015/mediusinc-mng-commons.mjs +114 -38
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +107 -42
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/models/filter-param.model.d.ts +1 -1
- package/lib/api/models/query-param.model.d.ts +1 -1
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +3 -2
- package/lib/components/form/dropdown/dropdown.component.d.ts +4 -4
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +1 -0
- package/lib/components/layout/topbar.component.d.ts +2 -3
- package/lib/descriptors/editor.descriptor.d.ts +3 -1
- package/lib/router/models/router.model.d.ts +2 -2
- package/lib/router/route-builder.d.ts +18 -4
- package/package.json +1 -1
|
@@ -6,12 +6,30 @@ export class RoutesBuilder {
|
|
|
6
6
|
constructor(layoutRoute) {
|
|
7
7
|
this.routes = [];
|
|
8
8
|
this.layoutRoute = layoutRoute?.withRoot(this);
|
|
9
|
+
this.currentRoute = layoutRoute;
|
|
9
10
|
}
|
|
10
11
|
static create() {
|
|
11
12
|
return new RoutesBuilder();
|
|
12
13
|
}
|
|
13
|
-
static createWithLayout(layoutComponent = MngMainLayoutComponent) {
|
|
14
|
-
const
|
|
14
|
+
static createWithLayout(layoutComponent = MngMainLayoutComponent, topbarComponent, breadcrumbComponent, menuComponent, footerComponent) {
|
|
15
|
+
const layoutRoute = RouteBuilder.create('', layoutComponent);
|
|
16
|
+
if (topbarComponent || breadcrumbComponent || menuComponent || footerComponent) {
|
|
17
|
+
const dataBuilder = RouteDataBuilder.create();
|
|
18
|
+
if (topbarComponent) {
|
|
19
|
+
dataBuilder.withTopbarComponent(topbarComponent);
|
|
20
|
+
}
|
|
21
|
+
if (breadcrumbComponent) {
|
|
22
|
+
dataBuilder.withBreadcrumbComponent(breadcrumbComponent);
|
|
23
|
+
}
|
|
24
|
+
if (menuComponent) {
|
|
25
|
+
dataBuilder.withMenuComponent(menuComponent);
|
|
26
|
+
}
|
|
27
|
+
if (footerComponent) {
|
|
28
|
+
dataBuilder.withFooterComponent(footerComponent);
|
|
29
|
+
}
|
|
30
|
+
layoutRoute.withDataBuilder(dataBuilder);
|
|
31
|
+
}
|
|
32
|
+
const routesBuilder = new RoutesBuilder(layoutRoute);
|
|
15
33
|
return routesBuilder;
|
|
16
34
|
}
|
|
17
35
|
addAngularRoute(route) {
|
|
@@ -101,15 +119,9 @@ export class RouteBuilder {
|
|
|
101
119
|
static createFromRoute(route) {
|
|
102
120
|
return new RouteBuilder(route);
|
|
103
121
|
}
|
|
104
|
-
static createTableviewRoutes(path, descriptor,
|
|
122
|
+
static createTableviewRoutes(path, descriptor, dataProvider, actions, hasDetails = true, hasEdit = true, hasAdd = true) {
|
|
105
123
|
const tableviewRoute = RouteBuilder.createFromRoute({
|
|
106
|
-
data:
|
|
107
|
-
tableviewData: {
|
|
108
|
-
descriptor: descriptor,
|
|
109
|
-
dataProvider: tableviewDataProvider,
|
|
110
|
-
actions: actions
|
|
111
|
-
}
|
|
112
|
-
},
|
|
124
|
+
data: RouteDataBuilder.create().withTableview(descriptor, dataProvider, actions).build(),
|
|
113
125
|
path: path,
|
|
114
126
|
component: MngTableviewRouteComponent
|
|
115
127
|
});
|
|
@@ -190,6 +202,10 @@ export class RouteBuilder {
|
|
|
190
202
|
this.route.data = data;
|
|
191
203
|
return this;
|
|
192
204
|
}
|
|
205
|
+
withDataBuilder(dataBuilder) {
|
|
206
|
+
this.route.data = dataBuilder.build();
|
|
207
|
+
return this;
|
|
208
|
+
}
|
|
193
209
|
withMngMenuItem(menuItem) {
|
|
194
210
|
this.menuItem = menuItem;
|
|
195
211
|
return this;
|
|
@@ -359,4 +375,52 @@ export class RouteBuilder {
|
|
|
359
375
|
return guards;
|
|
360
376
|
}
|
|
361
377
|
}
|
|
362
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcm91dGVyL3JvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFJbkUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFdBQTBCO1FBSHRDLFdBQU0sR0FBd0IsRUFBRSxDQUFDO1FBSXJDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU07UUFDaEIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLHNCQUFzQjtRQUNuRSxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO1FBQzdGLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsU0FB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LElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsaUZBQWlGO1lBQ2pGLDJHQUEyRztZQUMzRyxnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDekMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDbEI7WUFDTCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TG9hZENoaWxkcmVuLCBSb3V0ZSwgUm91dGVzfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge01uZ0FjdGlvblJvdXRlQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbic7XG5pbXBvcnQge01uZ01haW5MYXlvdXRDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvbGF5b3V0JztcbmltcG9ydCB7TW5nVGFibGV2aWV3Um91dGVDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvdGFibGV2aWV3JztcbmltcG9ydCB7SVRhYmxldmlld0RhdGFQcm92aWRlcn0gZnJvbSAnLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBUYWJsZXZpZXdEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge01uZ01lbnVJdGVtfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtSb3V0ZVV0aWx9IGZyb20gJy4uL3V0aWxzL3JvdXRlLnV0aWwnO1xuaW1wb3J0IHtCcmVhZGNydW1iVHlwZSwgTW5nUm91dGVyRGF0YX0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY2xhc3MgUm91dGVzQnVpbGRlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsYXlvdXRSb3V0ZT86IFJvdXRlQnVpbGRlcjtcbiAgICBwcml2YXRlIHJvdXRlczogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuICAgIHByaXZhdGUgY3VycmVudFJvdXRlPzogUm91dGVCdWlsZGVyO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihsYXlvdXRSb3V0ZT86IFJvdXRlQnVpbGRlcikge1xuICAgICAgICB0aGlzLmxheW91dFJvdXRlID0gbGF5b3V0Um91dGU/LndpdGhSb290KHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKCk6IFJvdXRlc0J1aWxkZXIge1xuICAgICAgICByZXR1cm4gbmV3IFJvdXRlc0J1aWxkZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVdpdGhMYXlvdXQobGF5b3V0Q29tcG9uZW50ID0gTW5nTWFpbkxheW91dENvbXBvbmVudCk6IFJvdXRlc0J1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZXNCdWlsZGVyID0gbmV3IFJvdXRlc0J1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZSgnJywgbGF5b3V0Q29tcG9uZW50KSk7XG4gICAgICAgIHJldHVybiByb3V0ZXNCdWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRBbmd1bGFyUm91dGUocm91dGU6IFJvdXRlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihSb3V0ZUJ1aWxkZXIuY3JlYXRlRnJvbVJvdXRlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZVJlZGlyZWN0KHBhdGgsIHJlZGlyZWN0VG8sIHBhdGhNYXRjaCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRMYXp5Um91dGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTG9hZD86IEFycmF5PGFueT4pOiB0aGlzIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDaGlsZHJlbjogbG9hZENoaWxkcmVufTtcbiAgICAgICAgaWYgKGNhbkxvYWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcm91dGUuY2FuTG9hZCA9IGNhbkxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUocm91dGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBjb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzPFQsIFM+KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4sXG4gICAgICAgIHRhYmxldmlld0RhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPixcbiAgICAgICAgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+LFxuICAgICAgICBoYXNEZXRhaWxzID0gdHJ1ZSxcbiAgICAgICAgaGFzRWRpdCA9IHRydWUsXG4gICAgICAgIGhhc0FkZCA9IHRydWVcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXMocGF0aCwgZGVzY3JpcHRvciwgdGFibGV2aWV3RGF0YVByb3ZpZGVyLCBhY3Rpb25zLCBoYXNEZXRhaWxzLCBoYXNFZGl0LCBoYXNBZGQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzRnJvbUNvbXBvbmVudChwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+LCBoYXNEZXRhaWxzID0gdHJ1ZSwgaGFzRWRpdCA9IHRydWUsIGhhc0FkZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXNGcm9tQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCwgaGFzRGV0YWlscywgaGFzRWRpdCwgaGFzQWRkKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlQnVpbGRlcihyb3V0ZUJ1aWxkZXI6IFJvdXRlQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IHJvdXRlQnVpbGRlci53aXRoUm9vdCh0aGlzKTtcbiAgICAgICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Sb3V0ZSgpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJvdXRlcyB3ZXJlIGFkZGVkIScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSb3V0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRSb3V0ZXMoKTogUm91dGVzIHtcbiAgICAgICAgbGV0IGFuZ3VsYXJSb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGVzLnB1c2gocm91dGUuYnVpbGRSb3V0ZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFJvdXRlKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRBbmd1bGFyUm91dGUgPSB0aGlzLmxheW91dFJvdXRlLmJ1aWxkUm91dGUoKTtcbiAgICAgICAgICAgIGlmIChhbmd1bGFyUm91dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsYXlvdXRBbmd1bGFyUm91dGUuY2hpbGRyZW4gPSBhbmd1bGFyUm91dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5ndWxhclJvdXRlcyA9IFtsYXlvdXRBbmd1bGFyUm91dGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFuZ3VsYXJSb3V0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkTWVudSgpOiBBcnJheTxNbmdNZW51SXRlbT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbXM6IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBtZW51SXRlbXMucHVzaCguLi5yb3V0ZS5idWlsZE1lbnUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcy5mbGF0KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm91dGVCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBSb3V0ZTtcbiAgICBwcml2YXRlIHJvdXRlUGF0aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByaXZhdGUgcm9vdD86IFJvdXRlc0J1aWxkZXI7XG4gICAgcHJpdmF0ZSBwYXJlbnQ/OiBSb3V0ZUJ1aWxkZXI7XG4gICAgcHJpdmF0ZSBjaGlsZHJlbjogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuICAgIHByaXZhdGUgbWVudUl0ZW0/OiBNbmdNZW51SXRlbTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBicmVhZGNydW1iPzogQnJlYWRjcnVtYlR5cGU7XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGU/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHJvdXRlOiBSb3V0ZSkge1xuICAgICAgICBpZiAoIXJvdXRlLmRhdGEpIHtcbiAgICAgICAgICAgIHJvdXRlLmRhdGEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgICAgICAgcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnBhdGggJiYgdGhpcy5yb3V0ZS5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVQYXRoID0gW3RoaXMucm91dGUucGF0aF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICByZWRpcmVjdFRvOiByZWRpcmVjdFRvLFxuICAgICAgICAgICAgcGF0aE1hdGNoOiBwYXRoTWF0Y2hcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tUm91dGUocm91dGU6IFJvdXRlKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlVGFibGV2aWV3Um91dGVzPFQsIFM+KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4sXG4gICAgICAgIHRhYmxldmlld0RhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPixcbiAgICAgICAgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+LFxuICAgICAgICBoYXNEZXRhaWxzID0gdHJ1ZSxcbiAgICAgICAgaGFzRWRpdCA9IHRydWUsXG4gICAgICAgIGhhc0FkZCA9IHRydWVcbiAgICApOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCB0YWJsZXZpZXdSb3V0ZSA9IFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUoe1xuICAgICAgICAgICAgZGF0YTogPE1uZ1JvdXRlckRhdGE+e1xuICAgICAgICAgICAgICAgIHRhYmxldmlld0RhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogZGVzY3JpcHRvcixcbiAgICAgICAgICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0YWJsZXZpZXdEYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IGFjdGlvbnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGNvbXBvbmVudDogTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnRcbiAgICAgICAgfSk7XG4gICAgICAgIFJvdXRlQnVpbGRlci5hZGRBY3Rpb25zU3Vicm91dGVzVG9UYWJsZXZpZXdQYXJlbnQodGFibGV2aWV3Um91dGUsIGhhc0RldGFpbHMsIGhhc0VkaXQsIGhhc0FkZCk7XG4gICAgICAgIHJldHVybiB0YWJsZXZpZXdSb3V0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZVRhYmxldmlld1JvdXRlc0Zyb21Db21wb25lbnQocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55PiwgaGFzRGV0YWlscyA9IHRydWUsIGhhc0VkaXQgPSB0cnVlLCBoYXNBZGQgPSB0cnVlKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgYWN0aW9uQ3J1ZFJvdXRlID0gUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBjb21wb25lbnQpO1xuICAgICAgICBSb3V0ZUJ1aWxkZXIuYWRkQWN0aW9uc1N1YnJvdXRlc1RvVGFibGV2aWV3UGFyZW50KGFjdGlvbkNydWRSb3V0ZSwgaGFzRGV0YWlscywgaGFzRWRpdCwgaGFzQWRkKTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbkNydWRSb3V0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBhZGRBY3Rpb25zU3Vicm91dGVzVG9UYWJsZXZpZXdQYXJlbnQocGFyZW50Um91dGU6IFJvdXRlQnVpbGRlciwgaGFzRGV0YWlsczogYm9vbGVhbiwgaGFzRWRpdDogYm9vbGVhbiwgaGFzQWRkOiBib29sZWFuKSB7XG4gICAgICAgIHBhcmVudFJvdXRlLmFkZENoaWxkKCcnLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG5cbiAgICAgICAgaWYgKGhhc0FkZCkge1xuICAgICAgICAgICAgcGFyZW50Um91dGUuYWRkQ2hpbGQoJ2FkZCcsIE1uZ0FjdGlvblJvdXRlQ29tcG9uZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzRGV0YWlscykge1xuICAgICAgICAgICAgcGFyZW50Um91dGUuYWRkQ2hpbGQoJzppdGVtSWQnLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0VkaXQpIHtcbiAgICAgICAgICAgIHBhcmVudFJvdXRlLmFkZENoaWxkKCc6aXRlbUlkL2VkaXQnLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3aXRoUm9vdChyb3V0ZXNCdWlsZGVyOiBSb3V0ZXNCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvdXRlc0J1aWxkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhQYXJlbnQocGFyZW50OiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucm91dGVQYXRoID0gUm91dGVVdGlsLnJlbW92ZUVtcHR5UGF0aFNlZ21lbnRzKFsuLi50aGlzLnBhcmVudC5yb3V0ZVBhdGgsIHRoaXMucm91dGUucGF0aCA/PyAnJ10pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmJyZWFkY3J1bWIgPSBicmVhZGNydW1iO1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGEhWydicmVhZGNydW1iJ10gPSBicmVhZGNydW1iO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoUGFnZVRpdGxlKHBhZ2VUaXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlID0gcGFnZVRpdGxlO1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGEhWydwYWdlVGl0bGUnXSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFJlZGlyZWN0VG8ocmVkaXJlY3RUbzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGUucmVkaXJlY3RUbyA9IHJlZGlyZWN0VG87XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhQYXRoTWF0Y2gocGF0aE1hdGNoOiAnZnVsbCcgfCAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLnBhdGhNYXRjaCA9IHBhdGhNYXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy53aXRoUGFnZVRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy53aXRoQnJlYWRjcnVtYih0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhDYW5BY3RpdmF0ZShkaVRva2VuOiBhbnkpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZS5wdXNoKGRpVG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoQ2FuRGVhY3RpdmF0ZShkaVRva2VuOiBhbnkpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZS5wdXNoKGRpVG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoUmVzb2x2ZXIoZGlUb2tlbjogYW55LCBuYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLnJlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUucmVzb2x2ZSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucmVzb2x2ZVtuYW1lXSA9IGRpVG9rZW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhEYXRhKGRhdGE6IGFueSk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGEgPSBkYXRhO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoTW5nTWVudUl0ZW0obWVudUl0ZW06IE1uZ01lbnVJdGVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSBtZW51SXRlbTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPik6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtID0gdGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluayk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhNZW51SXRlbUNoaWxkKGxhYmVsOiBzdHJpbmcsIGljb24/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbi5wdXNoKHRoaXMuY3JlYXRlTWVudUl0ZW0oaWNvbiwgbGFiZWwsIHJvdXRlckxpbmspKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1lbnVJdGVtQ2hpbGRyZW4ocm91dGVzQnVpbGRlcjogUm91dGVzQnVpbGRlcik6IHRoaXMge1xuICAgICAgICBjb25zdCBtZW51ID0gcm91dGVzQnVpbGRlci5idWlsZE1lbnUoKTtcbiAgICAgICAgdGhpcy5hZGp1c3RNZW51Um91dGVyTGlua3NGcm9tQnVpbGRlcihtZW51KTtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2goLi4ubWVudSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDaGlsZChwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHBhdGgsIGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuYWRkQ2hpbGRCdWlsZGVyKGNoaWxkUm91dGVCdWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkUm91dGVCdWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyOiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgcm91dGVCdWlsZGVyLndpdGhQYXJlbnQodGhpcyk7XG4gICAgICAgIGlmICh0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUm9vdCh0aGlzLnJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzPFQsIFM+KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4sXG4gICAgICAgIHRhYmxldmlld0RhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPixcbiAgICAgICAgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+LFxuICAgICAgICBoYXNEZXRhaWxzID0gdHJ1ZSxcbiAgICAgICAgaGFzRWRpdCA9IHRydWUsXG4gICAgICAgIGhhc0FkZCA9IHRydWVcbiAgICApOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlVGFibGV2aWV3Um91dGVzKHBhdGgsIGRlc2NyaXB0b3IsIHRhYmxldmlld0RhdGFQcm92aWRlciwgYWN0aW9ucywgaGFzRGV0YWlscywgaGFzRWRpdCwgaGFzQWRkKTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlQnVpbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzRnJvbUNvbXBvbmVudChwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+LCBoYXNEZXRhaWxzID0gdHJ1ZSwgaGFzRWRpdCA9IHRydWUsIGhhc0FkZCA9IHRydWUpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlVGFibGV2aWV3Um91dGVzRnJvbUNvbXBvbmVudChwYXRoLCBjb21wb25lbnQsIGhhc0RldGFpbHMsIGhhc0VkaXQsIGhhc0FkZCk7XG4gICAgICAgIHRoaXMuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIHJldHVybiByb3V0ZUJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUGFyZW50KCk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyZW50IHdhcyBub3QgcHJvdmlkZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1Jvb3QoKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIGlmICghdGhpcy5yb290KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jvb3Qgd2FzIG5vdCBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yb290O1xuICAgIH1cblxuICAgIHB1YmxpYyBmaW5pc2goKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUm9vdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBidWlsZFJvdXRlKCk6IFJvdXRlIHtcbiAgICAgICAgY29uc3QgYW5ndWxhclJvdXRlOiBSb3V0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucm91dGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoKHRoaXMucm91dGUuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwKSA+IDAgfHwgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyByb3V0ZSBoYXMgY2hpbGRyZW5cbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMucm91dGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbi5wdXNoKC4uLnRoaXMucm91dGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZFJvdXRlIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goY2hpbGRSb3V0ZS5idWlsZFJvdXRlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGVDaGlsZCkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5Mb2FkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuTG9hZCA9IFsuLi50aGlzLnJvdXRlLmNhbkxvYWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5EZWFjdGl2YXRlID0gWy4uLnRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLnJlc29sdmUgPSB7Li4udGhpcy5yb3V0ZS5yZXNvbHZlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbmd1bGFyUm91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkTWVudSgpOiBBcnJheTxNbmdNZW51SXRlbT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbUJ1aWxkOiBNbmdNZW51SXRlbSB8IG51bGwgPSB0aGlzLm1lbnVJdGVtID8gey4uLnRoaXMubWVudUl0ZW19IDogbnVsbDtcbiAgICAgICAgY29uc3Qgcm91dGVDaGlsZHJlbk1lbnVJdGVtczogQXJyYXk8TW5nTWVudUl0ZW0+ID0gdGhpcy5jaGlsZHJlbi5mbGF0TWFwKGNoaWxkID0+IGNoaWxkLmJ1aWxkTWVudSgpKTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbjogQXJyYXk8TW5nTWVudUl0ZW0+ID0gW107XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDogQXJyYXk8TW5nTWVudUl0ZW0+ID0gW107XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtQnVpbGQ/Lml0ZW1zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUJ1aWxkLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgbWVudUl0ZW1DaGlsZCBvZiB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsTWVudUl0ZW1DaGlsZDogTW5nTWVudUl0ZW0gPSB7Li4ubWVudUl0ZW1DaGlsZH07XG4gICAgICAgICAgICBpZiAoIWZpbmFsTWVudUl0ZW1DaGlsZC5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSB0aGlzLnJvdXRlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSBbZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMoZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmspO1xuICAgICAgICAgICAgbWVudUl0ZW1DaGlsZHJlbi5wdXNoKGZpbmFsTWVudUl0ZW1DaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUNoaWxkcmVuLCAuLi5yb3V0ZUNoaWxkcmVuTWVudUl0ZW1zKTtcblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUJ1aWxkLmxhYmVsID0gbWVudUl0ZW1CdWlsZC5sYWJlbCA/PyB0aGlzLnBhZ2VUaXRsZTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBbbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgfVxuICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBSb3V0ZVV0aWwucmVtb3ZlRW1wdHlQYXRoU2VnbWVudHMobWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID8/IHRoaXMucm91dGVQYXRoKTtcbiAgICAgICAgaWYgKG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLml0ZW1zID0gbWVudUl0ZW1DaGlsZHJlbkJ1aWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFtZW51SXRlbUJ1aWxkLmd1YXJkcykge1xuICAgICAgICAgICAgY29uc3QgZ3VhcmRzID0gdGhpcy5maW5kTWVudUl0ZW1HdWFyZHMoKTtcbiAgICAgICAgICAgIGlmIChndWFyZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuZ3VhcmRzID0gZ3VhcmRzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFttZW51SXRlbUJ1aWxkXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPikge1xuICAgICAgICBjb25zdCBtZW51SXRlbTogTW5nTWVudUl0ZW0gPSB7fTtcbiAgICAgICAgaWYgKGljb24pIHtcbiAgICAgICAgICAgIG1lbnVJdGVtLmljb24gPSBpY29uO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgbWVudUl0ZW0ubGFiZWwgPSBsYWJlbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm91dGVyTGluaykge1xuICAgICAgICAgICAgbWVudUl0ZW0ucm91dGVyTGluayA9IHJvdXRlckxpbms7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRqdXN0TWVudVJvdXRlckxpbmtzRnJvbUJ1aWxkZXIobWVudUl0ZW1zOiBBcnJheTxNbmdNZW51SXRlbT4pIHtcbiAgICAgICAgZm9yIChjb25zdCBtZW51SXRlbSBvZiBtZW51SXRlbXMpIHtcbiAgICAgICAgICAgIGlmIChtZW51SXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgbWVudUl0ZW0ucm91dGVyTGluayA9IFJvdXRlVXRpbC5hcHBlbmRQYXRoVG9CYXNlUGF0aCh0aGlzLnJvdXRlUGF0aCwgdHlwZW9mIG1lbnVJdGVtLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnID8gW21lbnVJdGVtLnJvdXRlckxpbmtdIDogbWVudUl0ZW0ucm91dGVyTGluayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShtZW51SXRlbS5pdGVtcykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdE1lbnVSb3V0ZXJMaW5rc0Zyb21CdWlsZGVyKG1lbnVJdGVtLml0ZW1zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZmluZE1lbnVJdGVtR3VhcmRzKCk6IEFycmF5PGFueT4ge1xuICAgICAgICBjb25zdCBndWFyZHM6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZ3VhcmRzLnB1c2goLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFyZW50IGd1YXJkcyB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZWNpc2lvbiB0byBoaWRlIG1lbnUgaXRlbSFcbiAgICAgICAgICAgIC8vIFNvbWUgcGFyZW50IHJvdXRlcyBtaWdodCBoYXZlIGd1YXJkcywgYnV0IG5vIG1lbnUgaXRlbXMsIHNvIHRoaXMgZ3VhcmRzIG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50IGhlcmUsXG4gICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzIG5vIHBhcmVudCBtZW51IGl0ZW0gdG8gaGlkZS5cbiAgICAgICAgICAgIHRoaXMucGFyZW50LmZpbmRNZW51SXRlbUd1YXJkcygpLmZvckVhY2goZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGd1YXJkcy5pbmRleE9mKGcpIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBndWFyZHMucHVzaChnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ3VhcmRzO1xuICAgIH1cbn1cbiJdfQ==
|
|
378
|
+
export class RouteDataBuilder {
|
|
379
|
+
constructor(init) {
|
|
380
|
+
this.data = init ?? {};
|
|
381
|
+
if (!this.data.breadcrumb) {
|
|
382
|
+
this.data.breadcrumb = null;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
static create(data) {
|
|
386
|
+
return new RouteDataBuilder(data);
|
|
387
|
+
}
|
|
388
|
+
withBreadcrumb(breadcrumb) {
|
|
389
|
+
this.data.breadcrumb = breadcrumb;
|
|
390
|
+
return this;
|
|
391
|
+
}
|
|
392
|
+
withPageTitle(pageTitle) {
|
|
393
|
+
this.data.pageTitle = pageTitle;
|
|
394
|
+
return this;
|
|
395
|
+
}
|
|
396
|
+
withTableview(descriptor, dataProvider, actions) {
|
|
397
|
+
this.data.tableview = {
|
|
398
|
+
descriptor: descriptor,
|
|
399
|
+
dataProvider: dataProvider
|
|
400
|
+
};
|
|
401
|
+
if (actions) {
|
|
402
|
+
this.data.tableview.actions = actions;
|
|
403
|
+
}
|
|
404
|
+
return this;
|
|
405
|
+
}
|
|
406
|
+
withTopbarComponent(component) {
|
|
407
|
+
this.data.topbarComponent = component;
|
|
408
|
+
return this;
|
|
409
|
+
}
|
|
410
|
+
withBreadcrumbComponent(component) {
|
|
411
|
+
this.data.breadcrumbComponent = component;
|
|
412
|
+
return this;
|
|
413
|
+
}
|
|
414
|
+
withMenuComponent(component) {
|
|
415
|
+
this.data.menuComponent = component;
|
|
416
|
+
return this;
|
|
417
|
+
}
|
|
418
|
+
withFooterComponent(component) {
|
|
419
|
+
this.data.footerComponent = component;
|
|
420
|
+
return this;
|
|
421
|
+
}
|
|
422
|
+
build() {
|
|
423
|
+
return this.data;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcm91dGVyL3JvdXRlLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFJbkUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxhQUFhO0lBS3RCLFlBQW9CLFdBQTBCO1FBSHRDLFdBQU0sR0FBd0IsRUFBRSxDQUFDO1FBSXJDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU07UUFDaEIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQzFCLGVBQWUsR0FBRyxzQkFBc0IsRUFDeEMsZUFBMkIsRUFDM0IsbUJBQStCLEVBQy9CLGFBQXlCLEVBQ3pCLGVBQTJCO1FBRTNCLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdELElBQUksZUFBZSxJQUFJLG1CQUFtQixJQUFJLGFBQWEsSUFBSSxlQUFlLEVBQUU7WUFDNUUsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUMsSUFBSSxlQUFlLEVBQUU7Z0JBQ2pCLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNwRDtZQUNELElBQUksbUJBQW1CLEVB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QyxTQUFvQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQW9CO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFvQjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLFNBQW9CO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRhLCBMb2FkQ2hpbGRyZW4sIFJvdXRlLCBSb3V0ZXN9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7TW5nQWN0aW9uUm91dGVDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvYWN0aW9uJztcbmltcG9ydCB7TW5nTWFpbkxheW91dENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9sYXlvdXQnO1xuaW1wb3J0IHtNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZXZpZXcnO1xuaW1wb3J0IHtJVGFibGV2aWV3RGF0YVByb3ZpZGVyfSBmcm9tICcuLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIFRhYmxldmlld0Rlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7TW5nTWVudUl0ZW19IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1JvdXRlVXRpbH0gZnJvbSAnLi4vdXRpbHMvcm91dGUudXRpbCc7XG5pbXBvcnQge0JyZWFkY3J1bWJUeXBlLCBNbmdSb3V0ZXJEYXRhfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXNCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyO1xuICAgIHByaXZhdGUgcm91dGVzOiBBcnJheTxSb3V0ZUJ1aWxkZXI+ID0gW107XG4gICAgcHJpdmF0ZSBjdXJyZW50Um91dGU/OiBSb3V0ZUJ1aWxkZXI7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKGxheW91dFJvdXRlPzogUm91dGVCdWlsZGVyKSB7XG4gICAgICAgIHRoaXMubGF5b3V0Um91dGUgPSBsYXlvdXRSb3V0ZT8ud2l0aFJvb3QodGhpcyk7XG4gICAgICAgIHRoaXMuY3VycmVudFJvdXRlID0gbGF5b3V0Um91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoKTogUm91dGVzQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVzQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlV2l0aExheW91dChcbiAgICAgICAgbGF5b3V0Q29tcG9uZW50ID0gTW5nTWFpbkxheW91dENvbXBvbmVudCxcbiAgICAgICAgdG9wYmFyQ29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBicmVhZGNydW1iQ29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBtZW51Q29tcG9uZW50PzogVHlwZTxhbnk+LFxuICAgICAgICBmb290ZXJDb21wb25lbnQ/OiBUeXBlPGFueT5cbiAgICApOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgY29uc3QgbGF5b3V0Um91dGUgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKCcnLCBsYXlvdXRDb21wb25lbnQpO1xuICAgICAgICBpZiAodG9wYmFyQ29tcG9uZW50IHx8IGJyZWFkY3J1bWJDb21wb25lbnQgfHwgbWVudUNvbXBvbmVudCB8fCBmb290ZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFCdWlsZGVyID0gUm91dGVEYXRhQnVpbGRlci5jcmVhdGUoKTtcbiAgICAgICAgICAgIGlmICh0b3BiYXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBkYXRhQnVpbGRlci53aXRoVG9wYmFyQ29tcG9uZW50KHRvcGJhckNvbXBvbmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnJlYWRjcnVtYkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGRhdGFCdWlsZGVyLndpdGhCcmVhZGNydW1iQ29tcG9uZW50KGJyZWFkY3J1bWJDb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1lbnVDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBkYXRhQnVpbGRlci53aXRoTWVudUNvbXBvbmVudChtZW51Q29tcG9uZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb290ZXJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBkYXRhQnVpbGRlci53aXRoRm9vdGVyQ29tcG9uZW50KGZvb3RlckNvbXBvbmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXlvdXRSb3V0ZS53aXRoRGF0YUJ1aWxkZXIoZGF0YUJ1aWxkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvdXRlc0J1aWxkZXIgPSBuZXcgUm91dGVzQnVpbGRlcihsYXlvdXRSb3V0ZSk7XG4gICAgICAgIHJldHVybiByb3V0ZXNCdWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRBbmd1bGFyUm91dGUocm91dGU6IFJvdXRlKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFJvdXRlQnVpbGRlcihSb3V0ZUJ1aWxkZXIuY3JlYXRlRnJvbVJvdXRlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZVJlZGlyZWN0KHBhdGgsIHJlZGlyZWN0VG8sIHBhdGhNYXRjaCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRMYXp5Um91dGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTG9hZD86IEFycmF5PGFueT4pOiB0aGlzIHtcbiAgICAgICAgY29uc3Qgcm91dGU6IFJvdXRlID0ge3BhdGg6IHBhdGgsIGxvYWRDaGlsZHJlbjogbG9hZENoaWxkcmVufTtcbiAgICAgICAgaWYgKGNhbkxvYWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcm91dGUuY2FuTG9hZCA9IGNhbkxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUocm91dGUpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUm91dGUocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRSb3V0ZUJ1aWxkZXIoUm91dGVCdWlsZGVyLmNyZWF0ZShwYXRoLCBjb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzPFQsIFM+KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4sXG4gICAgICAgIHRhYmxldmlld0RhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPixcbiAgICAgICAgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+LFxuICAgICAgICBoYXNEZXRhaWxzID0gdHJ1ZSxcbiAgICAgICAgaGFzRWRpdCA9IHRydWUsXG4gICAgICAgIGhhc0FkZCA9IHRydWVcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXMocGF0aCwgZGVzY3JpcHRvciwgdGFibGV2aWV3RGF0YVByb3ZpZGVyLCBhY3Rpb25zLCBoYXNEZXRhaWxzLCBoYXNFZGl0LCBoYXNBZGQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkVGFibGV2aWV3Um91dGVzRnJvbUNvbXBvbmVudChwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+LCBoYXNEZXRhaWxzID0gdHJ1ZSwgaGFzRWRpdCA9IHRydWUsIGhhc0FkZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkUm91dGVCdWlsZGVyKFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXNGcm9tQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCwgaGFzRGV0YWlscywgaGFzRWRpdCwgaGFzQWRkKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFJvdXRlQnVpbGRlcihyb3V0ZUJ1aWxkZXI6IFJvdXRlQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLmN1cnJlbnRSb3V0ZSA9IHJvdXRlQnVpbGRlci53aXRoUm9vdCh0aGlzKTtcbiAgICAgICAgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9Sb3V0ZSgpOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJvdXRlcyB3ZXJlIGFkZGVkIScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSb3V0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRSb3V0ZXMoKTogUm91dGVzIHtcbiAgICAgICAgbGV0IGFuZ3VsYXJSb3V0ZXM6IFJvdXRlcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGVzLnB1c2gocm91dGUuYnVpbGRSb3V0ZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxheW91dFJvdXRlKSB7XG4gICAgICAgICAgICBjb25zdCBsYXlvdXRBbmd1bGFyUm91dGUgPSB0aGlzLmxheW91dFJvdXRlLmJ1aWxkUm91dGUoKTtcbiAgICAgICAgICAgIGlmIChhbmd1bGFyUm91dGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBsYXlvdXRBbmd1bGFyUm91dGUuY2hpbGRyZW4gPSBhbmd1bGFyUm91dGVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYW5ndWxhclJvdXRlcyA9IFtsYXlvdXRBbmd1bGFyUm91dGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFuZ3VsYXJSb3V0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkTWVudSgpOiBBcnJheTxNbmdNZW51SXRlbT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbXM6IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgICAgICBtZW51SXRlbXMucHVzaCguLi5yb3V0ZS5idWlsZE1lbnUoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcy5mbGF0KCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm91dGVCdWlsZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBSb3V0ZTtcbiAgICBwcml2YXRlIHJvdXRlUGF0aDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByaXZhdGUgcm9vdD86IFJvdXRlc0J1aWxkZXI7XG4gICAgcHJpdmF0ZSBwYXJlbnQ/OiBSb3V0ZUJ1aWxkZXI7XG4gICAgcHJpdmF0ZSBjaGlsZHJlbjogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuICAgIHByaXZhdGUgbWVudUl0ZW0/OiBNbmdNZW51SXRlbTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PE1uZ01lbnVJdGVtPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBicmVhZGNydW1iPzogQnJlYWRjcnVtYlR5cGU7XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGU/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGNvbnN0cnVjdG9yKHJvdXRlOiBSb3V0ZSkge1xuICAgICAgICBpZiAoIXJvdXRlLmRhdGEpIHtcbiAgICAgICAgICAgIHJvdXRlLmRhdGEgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuICAgICAgICAgICAgcm91dGUuZGF0YVsnYnJlYWRjcnVtYiddID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnBhdGggJiYgdGhpcy5yb3V0ZS5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVQYXRoID0gW3RoaXMucm91dGUucGF0aF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlUmVkaXJlY3QocGF0aDogc3RyaW5nLCByZWRpcmVjdFRvOiBzdHJpbmcsIHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcgPSAncHJlZml4Jyk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICByZWRpcmVjdFRvOiByZWRpcmVjdFRvLFxuICAgICAgICAgICAgcGF0aE1hdGNoOiBwYXRoTWF0Y2hcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tUm91dGUocm91dGU6IFJvdXRlKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlVGFibGV2aWV3Um91dGVzPFQsIFM+KFxuICAgICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICAgIGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8VD4sXG4gICAgICAgIGRhdGFQcm92aWRlcjogSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPixcbiAgICAgICAgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8VD4+LFxuICAgICAgICBoYXNEZXRhaWxzID0gdHJ1ZSxcbiAgICAgICAgaGFzRWRpdCA9IHRydWUsXG4gICAgICAgIGhhc0FkZCA9IHRydWVcbiAgICApOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCB0YWJsZXZpZXdSb3V0ZSA9IFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUoe1xuICAgICAgICAgICAgZGF0YTogUm91dGVEYXRhQnVpbGRlci5jcmVhdGUoKS53aXRoVGFibGV2aWV3KGRlc2NyaXB0b3IsIGRhdGFQcm92aWRlciwgYWN0aW9ucykuYnVpbGQoKSxcbiAgICAgICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgICAgICBjb21wb25lbnQ6IE1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50XG4gICAgICAgIH0pO1xuICAgICAgICBSb3V0ZUJ1aWxkZXIuYWRkQWN0aW9uc1N1YnJvdXRlc1RvVGFibGV2aWV3UGFyZW50KHRhYmxldmlld1JvdXRlLCBoYXNEZXRhaWxzLCBoYXNFZGl0LCBoYXNBZGQpO1xuICAgICAgICByZXR1cm4gdGFibGV2aWV3Um91dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVUYWJsZXZpZXdSb3V0ZXNGcm9tQ29tcG9uZW50KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4sIGhhc0RldGFpbHMgPSB0cnVlLCBoYXNFZGl0ID0gdHJ1ZSwgaGFzQWRkID0gdHJ1ZSk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkNydWRSb3V0ZSA9IFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgY29tcG9uZW50KTtcbiAgICAgICAgUm91dGVCdWlsZGVyLmFkZEFjdGlvbnNTdWJyb3V0ZXNUb1RhYmxldmlld1BhcmVudChhY3Rpb25DcnVkUm91dGUsIGhhc0RldGFpbHMsIGhhc0VkaXQsIGhhc0FkZCk7XG4gICAgICAgIHJldHVybiBhY3Rpb25DcnVkUm91dGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWRkQWN0aW9uc1N1YnJvdXRlc1RvVGFibGV2aWV3UGFyZW50KHBhcmVudFJvdXRlOiBSb3V0ZUJ1aWxkZXIsIGhhc0RldGFpbHM6IGJvb2xlYW4sIGhhc0VkaXQ6IGJvb2xlYW4sIGhhc0FkZDogYm9vbGVhbikge1xuICAgICAgICBwYXJlbnRSb3V0ZS5hZGRDaGlsZCgnJywgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuXG4gICAgICAgIGlmIChoYXNBZGQpIHtcbiAgICAgICAgICAgIHBhcmVudFJvdXRlLmFkZENoaWxkKCdhZGQnLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0RldGFpbHMpIHtcbiAgICAgICAgICAgIHBhcmVudFJvdXRlLmFkZENoaWxkKCc6aXRlbUlkJywgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXNFZGl0KSB7XG4gICAgICAgICAgICBwYXJlbnRSb3V0ZS5hZGRDaGlsZCgnOml0ZW1JZC9lZGl0JywgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2l0aFJvb3Qocm91dGVzQnVpbGRlcjogUm91dGVzQnVpbGRlcik6IHRoaXMge1xuICAgICAgICB0aGlzLnJvb3QgPSByb3V0ZXNCdWlsZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoUGFyZW50KHBhcmVudDogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IFJvdXRlVXRpbC5yZW1vdmVFbXB0eVBhdGhTZWdtZW50cyhbLi4udGhpcy5wYXJlbnQucm91dGVQYXRoLCB0aGlzLnJvdXRlLnBhdGggPz8gJyddKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aEJyZWFkY3J1bWIoYnJlYWRjcnVtYjogQnJlYWRjcnVtYlR5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhIVsnYnJlYWRjcnVtYiddID0gYnJlYWRjcnVtYjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFBhZ2VUaXRsZShwYWdlVGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhIVsncGFnZVRpdGxlJ10gPSBwYWdlVGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhSZWRpcmVjdFRvKHJlZGlyZWN0VG86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoUGF0aE1hdGNoKHBhdGhNYXRjaDogJ2Z1bGwnIHwgJ3ByZWZpeCcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXRoTWF0Y2ggPSBwYXRoTWF0Y2g7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMud2l0aFBhZ2VUaXRsZSh0aXRsZSk7XG4gICAgICAgIHRoaXMud2l0aEJyZWFkY3J1bWIodGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoQ2FuQWN0aXZhdGUoZGlUb2tlbjogYW55KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuQWN0aXZhdGUucHVzaChkaVRva2VuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aENhbkRlYWN0aXZhdGUoZGlUb2tlbjogYW55KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUucHVzaChkaVRva2VuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFJlc29sdmVyKGRpVG9rZW46IGFueSwgbmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5yZXNvbHZlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLnJlc29sdmUgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLnJlc29sdmVbbmFtZV0gPSBkaVRva2VuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoRGF0YShkYXRhOiBhbnkpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5kYXRhID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aERhdGFCdWlsZGVyKGRhdGFCdWlsZGVyOiBSb3V0ZURhdGFCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGUuZGF0YSA9IGRhdGFCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhNbmdNZW51SXRlbShtZW51SXRlbTogTW5nTWVudUl0ZW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbSA9IG1lbnVJdGVtO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoTWVudUl0ZW0oaWNvbj86IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSB0aGlzLmNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aE1lbnVJdGVtQ2hpbGQobGFiZWw6IHN0cmluZywgaWNvbj86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2godGhpcy5jcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluaykpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoTWVudUl0ZW1DaGlsZHJlbihyb3V0ZXNCdWlsZGVyOiBSb3V0ZXNCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IG1lbnUgPSByb3V0ZXNCdWlsZGVyLmJ1aWxkTWVudSgpO1xuICAgICAgICB0aGlzLmFkanVzdE1lbnVSb3V0ZXJMaW5rc0Zyb21CdWlsZGVyKG1lbnUpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaCguLi5tZW51KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgICAgICBjb25zdCBjaGlsZFJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUocGF0aCwgY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIoY2hpbGRSb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gY2hpbGRSb3V0ZUJ1aWxkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXI6IFJvdXRlQnVpbGRlcik6IHRoaXMge1xuICAgICAgICByb3V0ZUJ1aWxkZXIud2l0aFBhcmVudCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhSb290KHRoaXMucm9vdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRUYWJsZXZpZXdSb3V0ZXM8VCwgUz4oXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxUPixcbiAgICAgICAgdGFibGV2aWV3RGF0YVByb3ZpZGVyOiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+LFxuICAgICAgICBhY3Rpb25zPzogQXJyYXk8QWN0aW9uRGVzY3JpcHRvcjxUPj4sXG4gICAgICAgIGhhc0RldGFpbHMgPSB0cnVlLFxuICAgICAgICBoYXNFZGl0ID0gdHJ1ZSxcbiAgICAgICAgaGFzQWRkID0gdHJ1ZVxuICAgICk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXMocGF0aCwgZGVzY3JpcHRvciwgdGFibGV2aWV3RGF0YVByb3ZpZGVyLCBhY3Rpb25zLCBoYXNEZXRhaWxzLCBoYXNFZGl0LCBoYXNBZGQpO1xuICAgICAgICB0aGlzLmFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gcm91dGVCdWlsZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRUYWJsZXZpZXdSb3V0ZXNGcm9tQ29tcG9uZW50KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4sIGhhc0RldGFpbHMgPSB0cnVlLCBoYXNFZGl0ID0gdHJ1ZSwgaGFzQWRkID0gdHJ1ZSk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGVUYWJsZXZpZXdSb3V0ZXNGcm9tQ29tcG9uZW50KHBhdGgsIGNvbXBvbmVudCwgaGFzRGV0YWlscywgaGFzRWRpdCwgaGFzQWRkKTtcbiAgICAgICAgdGhpcy5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlQnVpbGRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9QYXJlbnQoKTogUm91dGVCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgd2FzIG5vdCBwcm92aWRlZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUm9vdCgpOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvb3QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUm9vdCB3YXMgbm90IHByb3ZpZGVkLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbmlzaCgpOiBSb3V0ZXNCdWlsZGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Sb290KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkUm91dGUoKTogUm91dGUge1xuICAgICAgICBjb25zdCBhbmd1bGFyUm91dGU6IFJvdXRlID0ge1xuICAgICAgICAgICAgLi4udGhpcy5yb3V0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICgodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDApID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHJvdXRlIGhhcyBjaGlsZHJlblxuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goLi4udGhpcy5yb3V0ZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaChjaGlsZFJvdXRlLmJ1aWxkUm91dGUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5BY3RpdmF0ZSA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGVDaGlsZCA9IFsuLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlQ2hpbGRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkxvYWQpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5Mb2FkID0gWy4uLnRoaXMucm91dGUuY2FuTG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5yZXNvbHZlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUucmVzb2x2ZSA9IHsuLi50aGlzLnJvdXRlLnJlc29sdmV9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFuZ3VsYXJSb3V0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRNZW51KCk6IEFycmF5PE1uZ01lbnVJdGVtPiB7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQnVpbGQ6IE1uZ01lbnVJdGVtIHwgbnVsbCA9IHRoaXMubWVudUl0ZW0gPyB7Li4udGhpcy5tZW51SXRlbX0gOiBudWxsO1xuICAgICAgICBjb25zdCByb3V0ZUNoaWxkcmVuTWVudUl0ZW1zOiBBcnJheTxNbmdNZW51SXRlbT4gPSB0aGlzLmNoaWxkcmVuLmZsYXRNYXAoY2hpbGQgPT4gY2hpbGQuYnVpbGRNZW51KCkpO1xuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuOiBBcnJheTxNbmdNZW51SXRlbT4gPSBbXTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkOiBBcnJheTxNbmdNZW51SXRlbT4gPSBbXTtcblxuICAgICAgICBpZiAobWVudUl0ZW1CdWlsZD8uaXRlbXMpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5wdXNoKC4uLm1lbnVJdGVtQnVpbGQuaXRlbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBtZW51SXRlbUNoaWxkIG9mIHRoaXMubWVudUl0ZW1DaGlsZHJlbikge1xuICAgICAgICAgICAgY29uc3QgZmluYWxNZW51SXRlbUNoaWxkOiBNbmdNZW51SXRlbSA9IHsuLi5tZW51SXRlbUNoaWxkfTtcbiAgICAgICAgICAgIGlmICghZmluYWxNZW51SXRlbUNoaWxkLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluayA9IHRoaXMucm91dGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluayA9IFtmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGlua107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluayA9IFJvdXRlVXRpbC5yZW1vdmVFbXB0eVBhdGhTZWdtZW50cyhmaW5hbE1lbnVJdGVtQ2hpbGQucm91dGVyTGluayk7XG4gICAgICAgICAgICBtZW51SXRlbUNoaWxkcmVuLnB1c2goZmluYWxNZW51SXRlbUNoaWxkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5wdXNoKC4uLm1lbnVJdGVtQ2hpbGRyZW4sIC4uLnJvdXRlQ2hpbGRyZW5NZW51SXRlbXMpO1xuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lbnVJdGVtQnVpbGQubGFiZWwgPSBtZW51SXRlbUJ1aWxkLmxhYmVsID8/IHRoaXMucGFnZVRpdGxlO1xuICAgICAgICBpZiAodHlwZW9mIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9IFttZW51SXRlbUJ1aWxkLnJvdXRlckxpbmtdO1xuICAgICAgICB9XG4gICAgICAgIG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA9IFJvdXRlVXRpbC5yZW1vdmVFbXB0eVBhdGhTZWdtZW50cyhtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPz8gdGhpcy5yb3V0ZVBhdGgpO1xuICAgICAgICBpZiAobWVudUl0ZW1DaGlsZHJlbkJ1aWxkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuaXRlbXMgPSBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQuZ3VhcmRzKSB7XG4gICAgICAgICAgICBjb25zdCBndWFyZHMgPSB0aGlzLmZpbmRNZW51SXRlbUd1YXJkcygpO1xuICAgICAgICAgICAgaWYgKGd1YXJkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5ndWFyZHMgPSBndWFyZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW21lbnVJdGVtQnVpbGRdO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTWVudUl0ZW0oaWNvbj86IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KSB7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtOiBNbmdNZW51SXRlbSA9IHt9O1xuICAgICAgICBpZiAoaWNvbikge1xuICAgICAgICAgICAgbWVudUl0ZW0uaWNvbiA9IGljb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxhYmVsKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5sYWJlbCA9IGxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBtZW51SXRlbS5yb3V0ZXJMaW5rID0gcm91dGVyTGluaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVudUl0ZW07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGp1c3RNZW51Um91dGVyTGlua3NGcm9tQnVpbGRlcihtZW51SXRlbXM6IEFycmF5PE1uZ01lbnVJdGVtPikge1xuICAgICAgICBmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgaWYgKG1lbnVJdGVtLnJvdXRlckxpbmspIHtcbiAgICAgICAgICAgICAgICBtZW51SXRlbS5yb3V0ZXJMaW5rID0gUm91dGVVdGlsLmFwcGVuZFBhdGhUb0Jhc2VQYXRoKHRoaXMucm91dGVQYXRoLCB0eXBlb2YgbWVudUl0ZW0ucm91dGVyTGluayA9PT0gJ3N0cmluZycgPyBbbWVudUl0ZW0ucm91dGVyTGlua10gOiBtZW51SXRlbS5yb3V0ZXJMaW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG1lbnVJdGVtLml0ZW1zKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0TWVudVJvdXRlckxpbmtzRnJvbUJ1aWxkZXIobWVudUl0ZW0uaXRlbXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kTWVudUl0ZW1HdWFyZHMoKTogQXJyYXk8YW55PiB7XG4gICAgICAgIGNvbnN0IGd1YXJkczogQXJyYXk8YW55PiA9IFtdO1xuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBndWFyZHMucHVzaCguLi50aGlzLnJvdXRlLmNhbkFjdGl2YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGZvciBwYXJlbnQgZ3VhcmRzIHRoYXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRlY2lzaW9uIHRvIGhpZGUgbWVudSBpdGVtIVxuICAgICAgICAgICAgLy8gU29tZSBwYXJlbnQgcm91dGVzIG1pZ2h0IGhhdmUgZ3VhcmRzLCBidXQgbm8gbWVudSBpdGVtcywgc28gdGhpcyBndWFyZHMgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgaGVyZSxcbiAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgbm8gcGFyZW50IG1lbnUgaXRlbSB0byBoaWRlLlxuICAgICAgICAgICAgdGhpcy5wYXJlbnQuZmluZE1lbnVJdGVtR3VhcmRzKCkuZm9yRWFjaChnID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZ3VhcmRzLmluZGV4T2YoZykgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGd1YXJkcy5wdXNoKGcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBndWFyZHM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm91dGVEYXRhQnVpbGRlciB7XG4gICAgcHJpdmF0ZSBkYXRhOiBNbmdSb3V0ZXJEYXRhO1xuXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGEpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gaW5pdCA/PyB7fTtcbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgdGhpcy5kYXRhLmJyZWFkY3J1bWIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZGF0YT86IERhdGEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSb3V0ZURhdGFCdWlsZGVyKGRhdGEpO1xuICAgIH1cblxuICAgIHdpdGhCcmVhZGNydW1iKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aFBhZ2VUaXRsZShwYWdlVGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmRhdGEucGFnZVRpdGxlID0gcGFnZVRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoVGFibGV2aWV3KGRlc2NyaXB0b3I6IFRhYmxldmlld0Rlc2NyaXB0b3I8YW55PiwgZGF0YVByb3ZpZGVyOiBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPGFueSwgYW55PiwgYWN0aW9ucz86IEFycmF5PEFjdGlvbkRlc2NyaXB0b3I8YW55Pj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5kYXRhLnRhYmxldmlldyA9IHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3I6IGRlc2NyaXB0b3IsXG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IGRhdGFQcm92aWRlclxuICAgICAgICB9O1xuICAgICAgICBpZiAoYWN0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5kYXRhLnRhYmxldmlldy5hY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoVG9wYmFyQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGF0YS50b3BiYXJDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHdpdGhCcmVhZGNydW1iQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuZGF0YS5icmVhZGNydW1iQ29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB3aXRoTWVudUNvbXBvbmVudChjb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLmRhdGEubWVudUNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgd2l0aEZvb3RlckNvbXBvbmVudChjb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLmRhdGEuZm9vdGVyQ29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBidWlsZCgpOiBNbmdSb3V0ZXJEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { catchError,
|
|
1
|
+
import { catchError, map } from 'rxjs/operators';
|
|
2
2
|
export class MngConfigurationService {
|
|
3
3
|
constructor(http) {
|
|
4
4
|
this.http = http;
|
|
@@ -41,7 +41,7 @@ export class MngConfigurationService {
|
|
|
41
41
|
const pathSegments = url.split('/');
|
|
42
42
|
pathSegments[pathSegments.length - 1] = 'env.json';
|
|
43
43
|
return this.http.get(pathSegments.join('/'));
|
|
44
|
-
}),
|
|
44
|
+
}), map(res => {
|
|
45
45
|
this.jsonEnvironments.push(res);
|
|
46
46
|
this.mergeConfigs();
|
|
47
47
|
return true;
|
|
@@ -74,4 +74,4 @@ export class MngConfigurationService {
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
MngConfigurationService._instance = null;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXVCO0lBc0JoQyxZQUE0QixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSnBDLHFCQUFnQixHQUFlLEVBQUUsQ0FBQztRQUVsQyxrQkFBYSxHQUFHLEVBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUMsQ0FBQztJQUVOLENBQUM7SUFuQnpDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBc0I7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsdUJBQXVCLENBQUMsU0FBUyxHQUFHLElBQUksdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0U7UUFDRCxPQUFPLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRztRQUNiLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1NBQy9FO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQVNEOzs7T0FHRztJQUNJLG9CQUFvQixDQUFDLFdBQWdCO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsTUFBYyxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCO1FBQzlFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7WUFDMUUsR0FBRyxHQUFHLHVDQUF1QyxDQUFDO1NBQ2pEO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBRXBELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMvQixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEdBQUcsNEJBQTRCLENBQUMsQ0FBQztZQUUvRixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxDQUFDLEdBQVc7UUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWTtRQUNoQixJQUFJLE1BQU0sR0FBRyxFQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7UUFDMUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO1lBQzlCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNwQyxNQUFNLEdBQUcsRUFBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBQyxDQUFDO2FBQy9CO1NBQ0o7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUNoQyxDQUFDOztBQXZGYyxpQ0FBUyxHQUFtQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBNbmdDb25maWd1cmF0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBNbmdDb25maWd1cmF0aW9uU2VydmljZSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBpbml0KGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpOiBNbmdDb25maWd1cmF0aW9uU2VydmljZSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIE1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLl9pbnN0YW5jZSA9IG5ldyBNbmdDb25maWd1cmF0aW9uU2VydmljZShodHRwQ2xpZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTW5nQ29uZmlndXJhdGlvblNlcnZpY2UuZ2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQoKTogTW5nQ29uZmlndXJhdGlvblNlcnZpY2Uge1xuICAgICAgICBpZiAoIU1uZ0NvbmZpZ3VyYXRpb25TZXJ2aWNlLl9pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25maWd1cmF0aW9uIHNlcnZpY2UgaW5zdGFuY2Ugbm90IHNldC4gQ2FsbCBpbml0IGZpcnN0LicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNbmdDb25maWd1cmF0aW9uU2VydmljZS5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9qZWN0RW52aXJvbm1lbnQ/OiBhbnk7XG4gICAgcHJpdmF0ZSBqc29uRW52aXJvbm1lbnRzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgICBwcml2YXRlIGNvbmZpZ3VyYXRpb24gPSB7Li4udGhpcy5wcm9qZWN0RW52aXJvbm1lbnR9O1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgcHJvamVjdCBlbnZpcm9ubWVudCBzb3VyY2UuXG4gICAgICogQHBhcmFtIGVudmlyb25lbW50IEVudmlyb25tZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbnZpcm9ubWVudFNvdXJjZShlbnZpcm9ubWVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvamVjdEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMubWVyZ2VDb25maWdzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBuZXcgY29uZmlnIHNvdXJjZSBmcm9tIEpTT04gZmlsZS5cbiAgICAgKiBAcGFyYW0gdXJsIFVybCB0byBKU09OIGZpbGUuXG4gICAgICovXG4gICAgcHVibGljIGFkZEpzb25Tb3VyY2UodXJsOiBzdHJpbmcgPSB0aGlzLnByb2plY3RFbnZpcm9ubWVudC5jb25maWd1cmF0aW9uSnNvblNvdXJjZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAoIXVybCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdObyBwYXRoIHRvIGNvbmZpZ3VyYXRpb24gZmlsZSBzcGVjaWZpZWQuIFNldHRpbmcgZGVmYXVsdC4nKTtcbiAgICAgICAgICAgIHVybCA9ICdhc3NldHMvY29uZmlnL2Vudnt7ZW52aXJvbm1lbnR9fS5qc29uJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVudk5hbWUgPSB0aGlzLnByb2plY3RFbnZpcm9ubWVudC5uYW1lIHx8ICh0aGlzLnByb2plY3RFbnZpcm9ubWVudC5wcm9kdWN0aW9uID8gJ3Byb2QnIDogJ2RldicpO1xuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgne3tlbnZpcm9ubWVudH19JywgJy4nICsgZW52TmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdFcnJvciBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZmlsZTonICsgZXJyLm1lc3NhZ2UgKyAnLiBGYWxsaW5nIGJhY2sgdG8gZW52Lmpzb24nKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IHVybC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgIHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMV0gPSAnZW52Lmpzb24nO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4ocGF0aFNlZ21lbnRzLmpvaW4oJy8nKSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuanNvbkVudmlyb25tZW50cy5wdXNoKHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXJnZUNvbmZpZ3MoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY29uZmlndXJhdGlvbiB2YWx1ZSBmb3Iga2V5LlxuICAgICAqIEBwYXJhbSBrZXkgQ29uZmlndXJhdGlvbiBrZXkuXG4gICAgICovXG4gICAgcHVibGljIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25ba2V5XSA/IHRoaXMuY29uZmlndXJhdGlvbltrZXldIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXJnZXMgY29uZmlndXJhdGlvbiBmcm9tIG11bHRpcGxlIHNvdXJjZXMgd2l0aFxuICAgICAqL1xuICAgIHByaXZhdGUgbWVyZ2VDb25maWdzKCkge1xuICAgICAgICBsZXQgY29uZmlnID0gey4uLnRoaXMucHJvamVjdEVudmlyb25tZW50fTtcbiAgICAgICAgaWYgKHRoaXMuanNvbkVudmlyb25tZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgamUgb2YgdGhpcy5qc29uRW52aXJvbm1lbnRzKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnID0gey4uLmNvbmZpZywgLi4uamV9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZztcbiAgICB9XG59XG4iXX0=
|