client-core-services 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/clientCore.module.mjs +94 -0
- package/esm2020/lib/services/api/api.service.mjs +7 -7
- package/esm2020/lib/services/api/auth/auth.service.mjs +5 -5
- package/esm2020/lib/services/data-share/data-share.service.mjs +29 -8
- package/esm2020/lib/services/env/env.service.mjs +6 -1
- package/esm2020/lib/services/env/serverHostList.mjs +2 -52
- package/esm2020/lib/services/form/form-creation/form-creation.service.mjs +7 -7
- package/esm2020/lib/services/storage/storage.service.mjs +1 -203
- package/esm2020/public-api.mjs +2 -2
- package/fesm2015/client-core-services.mjs +53 -283
- package/fesm2015/client-core-services.mjs.map +1 -1
- package/fesm2020/client-core-services.mjs +53 -283
- package/fesm2020/client-core-services.mjs.map +1 -1
- package/lib/{my-lib.module.d.ts → clientCore.module.d.ts} +2 -3
- package/lib/services/data-share/data-share.service.d.ts +17 -4
- package/lib/services/env/env.service.d.ts +3 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2020/lib/my-lib.module.mjs +0 -98
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
//import { MyLibComponent } from './my-lib.component';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
5
|
+
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
+
import { MatCardModule } from '@angular/material/card';
|
|
8
|
+
import { MatInputModule } from '@angular/material/input';
|
|
9
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
10
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
11
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
export class ClientCoreModule {
|
|
14
|
+
static forRoot(environment) {
|
|
15
|
+
return {
|
|
16
|
+
ngModule: ClientCoreModule,
|
|
17
|
+
providers: [
|
|
18
|
+
{
|
|
19
|
+
provide: 'env',
|
|
20
|
+
useValue: environment
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ClientCoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClientCoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
27
|
+
ClientCoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: ClientCoreModule, imports: [CommonModule,
|
|
28
|
+
HttpClientModule,
|
|
29
|
+
FormsModule,
|
|
30
|
+
MatButtonModule,
|
|
31
|
+
MatCardModule,
|
|
32
|
+
MatFormFieldModule,
|
|
33
|
+
MatInputModule,
|
|
34
|
+
BrowserAnimationsModule,
|
|
35
|
+
MatSnackBarModule], exports: [
|
|
36
|
+
// MyLibComponent
|
|
37
|
+
CommonModule,
|
|
38
|
+
HttpClientModule,
|
|
39
|
+
FormsModule,
|
|
40
|
+
MatButtonModule,
|
|
41
|
+
MatCardModule,
|
|
42
|
+
MatFormFieldModule,
|
|
43
|
+
MatInputModule,
|
|
44
|
+
BrowserAnimationsModule,
|
|
45
|
+
MatSnackBarModule] });
|
|
46
|
+
ClientCoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClientCoreModule, imports: [CommonModule,
|
|
47
|
+
HttpClientModule,
|
|
48
|
+
FormsModule,
|
|
49
|
+
MatButtonModule,
|
|
50
|
+
MatCardModule,
|
|
51
|
+
MatFormFieldModule,
|
|
52
|
+
MatInputModule,
|
|
53
|
+
BrowserAnimationsModule,
|
|
54
|
+
MatSnackBarModule,
|
|
55
|
+
// MyLibComponent
|
|
56
|
+
CommonModule,
|
|
57
|
+
HttpClientModule,
|
|
58
|
+
FormsModule,
|
|
59
|
+
MatButtonModule,
|
|
60
|
+
MatCardModule,
|
|
61
|
+
MatFormFieldModule,
|
|
62
|
+
MatInputModule,
|
|
63
|
+
BrowserAnimationsModule,
|
|
64
|
+
MatSnackBarModule] });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ClientCoreModule, decorators: [{
|
|
66
|
+
type: NgModule,
|
|
67
|
+
args: [{
|
|
68
|
+
declarations: [],
|
|
69
|
+
imports: [
|
|
70
|
+
CommonModule,
|
|
71
|
+
HttpClientModule,
|
|
72
|
+
FormsModule,
|
|
73
|
+
MatButtonModule,
|
|
74
|
+
MatCardModule,
|
|
75
|
+
MatFormFieldModule,
|
|
76
|
+
MatInputModule,
|
|
77
|
+
BrowserAnimationsModule,
|
|
78
|
+
MatSnackBarModule
|
|
79
|
+
],
|
|
80
|
+
exports: [
|
|
81
|
+
// MyLibComponent
|
|
82
|
+
CommonModule,
|
|
83
|
+
HttpClientModule,
|
|
84
|
+
FormsModule,
|
|
85
|
+
MatButtonModule,
|
|
86
|
+
MatCardModule,
|
|
87
|
+
MatFormFieldModule,
|
|
88
|
+
MatInputModule,
|
|
89
|
+
BrowserAnimationsModule,
|
|
90
|
+
MatSnackBarModule
|
|
91
|
+
]
|
|
92
|
+
}]
|
|
93
|
+
}] });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50Q29yZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtY29yZS9zcmMvbGliL2NsaWVudENvcmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNEQUFzRDtBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQWdDaEUsTUFBTSxPQUFPLGdCQUFnQjtJQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLFdBQWdCO1FBQ2hDLE9BQU87WUFDSCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsS0FBSztvQkFDZCxRQUFRLEVBQUUsV0FBVztpQkFDeEI7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOzs4R0FYUSxnQkFBZ0I7K0dBQWhCLGdCQUFnQixZQXZCekIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsZUFBZTtRQUNmLGFBQWE7UUFDYixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFHbkIsa0JBQWtCO1FBQ2xCLFlBQVk7UUFDVixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLGVBQWU7UUFDZixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsaUJBQWlCOytHQUdSLGdCQUFnQixZQXZCekIsWUFBWTtRQUNaLGdCQUFnQjtRQUNoQixXQUFXO1FBQ1gsZUFBZTtRQUNmLGFBQWE7UUFDYixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixpQkFBaUI7UUFHbkIsa0JBQWtCO1FBQ2xCLFlBQVk7UUFDVixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLGVBQWU7UUFDZixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsaUJBQWlCOzRGQUdSLGdCQUFnQjtrQkEzQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDVCxrQkFBa0I7d0JBQ2xCLFlBQVk7d0JBQ1YsZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy9pbXBvcnQgeyBNeUxpYkNvbXBvbmVudCB9IGZyb20gJy4vbXktbGliLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nTW9kdWxlLE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQge01hdENhcmRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xyXG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7TWF0Rm9ybUZpZWxkTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcblxyXG5pbXBvcnQgeyBFbnZTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lbnYvZW52LnNlcnZpY2UnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRDYXJkTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcclxuICAgIE1hdFNuYWNrQmFyTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgLy8gIE15TGliQ29tcG9uZW50XHJcbiAgQ29tbW9uTW9kdWxlLFxyXG4gICAgSHR0cENsaWVudE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0Q2FyZE1vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXHJcbiAgICBNYXRTbmFja0Jhck1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENsaWVudENvcmVNb2R1bGUge1xyXG4gIHB1YmxpYyBzdGF0aWMgZm9yUm9vdChlbnZpcm9ubWVudDogYW55KTogTW9kdWxlV2l0aFByb3ZpZGVyczxDbGllbnRDb3JlTW9kdWxlPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgbmdNb2R1bGU6IENsaWVudENvcmVNb2R1bGUsXHJcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6ICdlbnYnLCAvLyB5b3UgY2FuIGFsc28gdXNlIEluamVjdGlvblRva2VuXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlVmFsdWU6IGVudmlyb25tZW50XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG4gICAgfVxyXG4gfVxyXG4gXHJcbiJdfQ==
|
|
@@ -19,16 +19,16 @@ export class ApiService {
|
|
|
19
19
|
this.serverReq = false;
|
|
20
20
|
}
|
|
21
21
|
getStatiData(payloads) {
|
|
22
|
-
this.dataShareService.
|
|
22
|
+
this.dataShareService.setReqResponse(true);
|
|
23
23
|
let reqLength = payloads.length;
|
|
24
24
|
let responceCount = 0;
|
|
25
25
|
from(payloads)
|
|
26
|
-
.pipe(mergeMap((payload) => this.staticDataCall([payload])))
|
|
26
|
+
.pipe(mergeMap((payload) => this.staticDataCall([payload]), 5))
|
|
27
27
|
.subscribe((res) => {
|
|
28
28
|
this.setStaticData(res['success']);
|
|
29
29
|
responceCount = responceCount + 1;
|
|
30
30
|
if (responceCount == reqLength) {
|
|
31
|
-
this.dataShareService.
|
|
31
|
+
this.dataShareService.setReqResponse(false);
|
|
32
32
|
}
|
|
33
33
|
}, (error) => {
|
|
34
34
|
console.log(error);
|
|
@@ -82,7 +82,7 @@ export class ApiService {
|
|
|
82
82
|
}
|
|
83
83
|
getGridCountData(payloads) {
|
|
84
84
|
from(payloads)
|
|
85
|
-
.pipe(mergeMap((payload) => this.gridCountDataCall([payload])))
|
|
85
|
+
.pipe(mergeMap((payload) => this.gridCountDataCall([payload]), 5))
|
|
86
86
|
.subscribe((res) => {
|
|
87
87
|
this.setGridCountData(res['success']);
|
|
88
88
|
}, (error) => {
|
|
@@ -191,7 +191,7 @@ export class ApiService {
|
|
|
191
191
|
deleteGridRow(payload) {
|
|
192
192
|
let api = this.envService.getApi('DELETE_GRID_ROW');
|
|
193
193
|
this.http.post(api + '/' + payload.curTemp, payload).subscribe((response) => {
|
|
194
|
-
this.dataShareService.
|
|
194
|
+
this.dataShareService.setDeleteGridRowResponse(response);
|
|
195
195
|
});
|
|
196
196
|
}
|
|
197
197
|
SaveFormData(payload) {
|
|
@@ -294,7 +294,7 @@ export class ApiService {
|
|
|
294
294
|
GetDashletData(payloads) {
|
|
295
295
|
//this.dataShareService.setDashletData({});
|
|
296
296
|
from(payloads)
|
|
297
|
-
.pipe(mergeMap((payload) => this.dashletDataCall(payload)))
|
|
297
|
+
.pipe(mergeMap((payload) => this.dashletDataCall(payload), 5))
|
|
298
298
|
.subscribe((res) => {
|
|
299
299
|
this.SetDashletData(res);
|
|
300
300
|
}, (error) => {
|
|
@@ -608,4 +608,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
608
608
|
providedIn: 'root'
|
|
609
609
|
}]
|
|
610
610
|
}], ctorParameters: function () { return [{ type: i1.DataShareService }, { type: i2.HttpClient }, { type: i3.EnvService }, { type: i4.ModelService }, { type: i5.StorageService }, { type: i6.CoreFunctionService }]; } });
|
|
611
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FwaS9hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBdUIsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLElBQUksRUFBa0IsTUFBTSxNQUFNLENBQUMsQ0FBQSxhQUFhOzs7Ozs7OztBQVN6RCxNQUFNLE9BQU8sVUFBVTtJQUd2QixZQUNVLGdCQUFrQyxFQUNsQyxJQUFlLEVBQ2YsVUFBc0IsRUFDdEIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsbUJBQXVDO1FBTHZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNmLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBb0I7UUFSL0MsY0FBUyxHQUFXLEtBQUssQ0FBQztJQVN2QixDQUFDO0lBRU4sWUFBWSxDQUFDLFFBQVk7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ2IsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBQyxFQUFFLENBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ2hDO2FBQ0EsU0FBUyxDQUNS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cG9ydCB7IENvcmVGdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uL2NvbW1vbi11dGlscy9jb3JlLWZ1bmN0aW9uL2NvcmUtZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCwgc3dpdGNoTWFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZnJvbSwgb2YsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJzsvL2Zyb21Qcm9taXNlXHJcbmltcG9ydCB7IERhdGFTaGFyZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhLXNoYXJlL2RhdGEtc2hhcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudlNlcnZpY2UgfSBmcm9tICcuLi9lbnYvZW52LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RlbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RlbC9tb2RlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcclxuICBzZXJ2ZXJSZXE6Ym9vbGVhbiA9IGZhbHNlO1xyXG5cclxuY29uc3RydWN0b3IoXHJcbiAgcHJpdmF0ZSBkYXRhU2hhcmVTZXJ2aWNlOiBEYXRhU2hhcmVTZXJ2aWNlLFxyXG4gIHByaXZhdGUgaHR0cDpIdHRwQ2xpZW50LFxyXG4gIHByaXZhdGUgZW52U2VydmljZTogRW52U2VydmljZSxcclxuICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kZWxTZXJ2aWNlLFxyXG4gIHByaXZhdGUgc3Ryb2FnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIHByaXZhdGUgY29yZUZ1bmN0aW9uU2VydmljZTpDb3JlRnVuY3Rpb25TZXJ2aWNlXHJcbiApIHsgfVxyXG5cclxuZ2V0U3RhdGlEYXRhKHBheWxvYWRzOmFueSl7XHJcbiAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFJlcVJlc3BvbmNlKHRydWUpO1xyXG4gIGxldCByZXFMZW5ndGggPSBwYXlsb2Fkcy5sZW5ndGg7XHJcbiAgbGV0IHJlc3BvbmNlQ291bnQgPSAwO1xyXG4gIGZyb20ocGF5bG9hZHMpXHJcbiAgLnBpcGUoXHJcbiAgICBtZXJnZU1hcCgocGF5bG9hZCk9PlxyXG4gICAgICB0aGlzLnN0YXRpY0RhdGFDYWxsKFtwYXlsb2FkXSkpXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzOmFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGljRGF0YShyZXNbJ3N1Y2Nlc3MnXSlcclxuICAgICAgICByZXNwb25jZUNvdW50ID0gcmVzcG9uY2VDb3VudCArIDE7XHJcbiAgICAgICAgaWYocmVzcG9uY2VDb3VudCA9PSByZXFMZW5ndGgpe1xyXG4gICAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFJlcVJlc3BvbmNlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcik9PntcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuc3RhdGljRGF0YUNhbGwocGF5bG9hZDpvYmplY3Qpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfU1RBVElDX0RBVEEnKTtcclxuICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkKVxyXG59XHJcbnNldFN0YXRpY0RhdGEoZGF0YTphbnkpe1xyXG4gIGNvbnN0IHN0YXRpY0RhdGE6YW55ID0gdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLmdldFN0YXRpRGF0YSgpO1xyXG4gIGNvbnN0IGN1cnJlbnREYXRhOmFueSA9IHt9O1xyXG4gIGlmKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKXtcclxuICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDphbnkpID0+IHtcclxuICAgICAgaWYoZWxlbWVudC5hZGtleXMpe1xyXG4gICAgICAgICAgaWYoZWxlbWVudC5hZGtleXMudG90YWxSb3dzICYmIGVsZW1lbnQuYWRrZXlzLnRvdGFsUm93cyAhPSAnJyl7XHJcbiAgICAgICAgICAgICAgc3RhdGljRGF0YVtlbGVtZW50LmZpZWxkXSA9IFtdO1xyXG4gICAgICAgICAgICAgIGN1cnJlbnREYXRhW2VsZW1lbnQuZmllbGRdID0gW107XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGVsZW1lbnQuYWRrZXlzLnRvdGFsUm93czsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgICAgICBzdGF0aWNEYXRhW2VsZW1lbnQuZmllbGRdLnB1c2goZWxlbWVudC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgY3VycmVudERhdGFbZWxlbWVudC5maWVsZF0ucHVzaChlbGVtZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKGVsZW1lbnQuYWRrZXlzLmluZGV4ICYmIGVsZW1lbnQuYWRrZXlzLmluZGV4ICE9ICcnKXtcclxuICAgICAgICAgICAgICBpZihzdGF0aWNEYXRhW2VsZW1lbnQuZmllbGRdICYmIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5hZGtleXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF1baW5kZXhdID0gZWxlbWVudC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICBjdXJyZW50RGF0YVtlbGVtZW50LmZpZWxkXVtpbmRleF0gPSBlbGVtZW50LmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0gPSBlbGVtZW50LmRhdGE7XHJcbiAgICAgICAgICBjdXJyZW50RGF0YVtlbGVtZW50LmZpZWxkXSA9IGVsZW1lbnQuZGF0YTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlmKGRhdGEgJiYgZGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXSAhPSBudWxsICYmIGRhdGFbJ3N0YXRpY0RhdGFNZXNzZ2FlJ10gIT0gJycpe1xyXG4gICAgc3RhdGljRGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXSA9IGRhdGFbJ3N0YXRpY0RhdGFNZXNzZ2FlJ107XHJcbiAgICBjdXJyZW50RGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXSA9IGRhdGFbJ3N0YXRpY0RhdGFNZXNzZ2FlJ107XHJcbiAgfVxyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVN0YXRpY0RhdGEoc3RhdGljRGF0YSxjdXJyZW50RGF0YSk7XHJcbn1cclxuXHJcblJlc2V0U3RhdGljRGF0YShrZXlOYW1lOmFueSl7XHJcbiAgbGV0IHN0YXRpY0RhdGE6YW55ID0gdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLmdldFN0YXRpRGF0YSgpO1xyXG4gIHN0YXRpY0RhdGFba2V5TmFtZS5maWVsZF0gPSBudWxsO1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVN0YXRpY0RhdGEoc3RhdGljRGF0YSx7fSk7XHJcbn1cclxuXHJcbnJlc2V0U3RhdGljQWxsRGF0YSgpe1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVN0YXRpY0RhdGEoe30se30pXHJcbn1cclxuXHJcbmdldEdyaWRDb3VudERhdGEocGF5bG9hZHM6c3RyaW5nKXtcclxuICBmcm9tKHBheWxvYWRzKVxyXG4gIC5waXBlKFxyXG4gICAgbWVyZ2VNYXAoKHBheWxvYWQpPT5cclxuICAgICAgdGhpcy5ncmlkQ291bnREYXRhQ2FsbChbcGF5bG9hZF0pKVxyXG4gICAgKVxyXG4gICAgLnN1YnNjcmliZShcclxuICAgICAgKHJlczphbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNldEdyaWRDb3VudERhdGEocmVzWydzdWNjZXNzJ10pXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcik9PntcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuZ2V0VGFiQ291bnREYXRhKHBheWxvYWRzOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DT1VOVF9EQVRBJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2Fkcykuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNldEdyaWRDb3VudERhdGEocmVzcERhdGFbJ3N1Y2Nlc3MnXSlcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5cclxuZ3JpZENvdW50RGF0YUNhbGwocGF5bG9hZDpvYmplY3Qpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfQ09VTlRfREFUQScpO1xyXG4gIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpXHJcbn1cclxuXHJcbnNldEdyaWRDb3VudERhdGEoZGF0YTphbnkpe1xyXG4gIGNvbnN0IGxvY2FsR3JpZENvdW50OmFueSA9IHRoaXMuc3Ryb2FnZVNlcnZpY2UuR2V0VGFiQ291bnRzKCk7XHJcbiAgY29uc3QgZ3JpZENvdW50RGF0YTphbnkgPSB0aGlzLmRhdGFTaGFyZVNlcnZpY2UuZ2V0R3JpZENvdW50RGF0YSgpO1xyXG4gIGNvbnN0IGNvdW50OmFueSA9IHt9O1xyXG4gIGNvbnN0IGRhdGFDb3VudDphbnkgPSB7fTtcclxuICBpZihkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OmFueSkgPT4ge1xyXG4gICAgICBncmlkQ291bnREYXRhW2VsZW1lbnQuZmllbGRdID0gZWxlbWVudC5kYXRhX3NpemU7XHJcbiAgICAgIGNvdW50W2VsZW1lbnQuZmllbGRdID0gZWxlbWVudC5kYXRhX3NpemU7XHJcbiAgICAgIGxvY2FsR3JpZENvdW50W2VsZW1lbnQuZmllbGRdID0gZWxlbWVudC5kYXRhX3NpemU7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZGF0YUNvdW50WydncmlkQ291bnREYXRhJ10gPSBncmlkQ291bnREYXRhO1xyXG4gIGRhdGFDb3VudFsnY291bnQnXSA9IGNvdW50O1xyXG4gIHRoaXMuc3Ryb2FnZVNlcnZpY2UuU2V0VGFiQ291bnRzKGxvY2FsR3JpZENvdW50KVxyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZUdyaWRDb3VudERhdGEoZGF0YUNvdW50KTtcclxufVxyXG5yZXNldEdyaWRDb3VudEFsbERhdGEoKXtcclxuICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVHcmlkQ291bnREYXRhKHsgY291bnQ6IHt9LCBncmlkQ291bnREYXRhOiB7fX0pXHJcbn1cclxuZ2V0R3JpZERhdGEocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5wYXRoLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZUdyaWREYXRhKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblxyXG5yZXNldEdyaWREYXRhKCl7XHJcbiAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlR3JpZERhdGEoW10pXHJcbn1cclxuZ2V0RGFzaGxldE1zdGVyKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVEYXNobGV0TWFzdGVyKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbmdldE1vbmdvRGFzaGxldE1zdGVyKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVNb25nb0NoYXJ0KHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbmdldE1vbmdvRGFzaGJvcmQocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5wYXRoLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZU1vbmdvRGFzaGJvcmQocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcbkdldFRlbXBNZW51KHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlTWVudURhdGEocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxucmVzZXRNZW51RGF0YSgpe1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZU1lbnVEYXRhKFtdKVxyXG59XHJcbkdldFRlbXBEYXRhKHBheWxvYWQ6YW55KXtcclxuICBsZXQgbW9kdWxlTmFtZSA9IHBheWxvYWRbJ21vZHVsZSddO1xyXG4gIGxldCBuYW1lID0gdGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLmdldFRlbXBOYW1lRnJvbVBheWxvYWQocGF5bG9hZCk7XHJcbiAgbGV0IHRlbXBsYXRlID0gdGhpcy5zdHJvYWdlU2VydmljZS5nZXRUZW1wbGF0ZShuYW1lLG1vZHVsZU5hbWUpO1xyXG4gIGlmKHRlbXBsYXRlKXtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVRlbXBEYXRhKFt0ZW1wbGF0ZV0pO1xyXG4gIH1lbHNle1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DVVNUT01fVEVNUExBVEUnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVRlbXBEYXRhKHJlc3BEYXRhKTtcclxuICAgICAgICAgIGxldCBwcmVwYXJlZFRlbXBMaXN0ID0gdGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLnByZXBhcmVUZW1wbGF0ZShyZXNwRGF0YSxtb2R1bGVOYW1lKTtcclxuICAgICAgICAgIHRoaXMuc3Ryb2FnZVNlcnZpY2Uuc3RvcmVBbGxUZW1wbGF0ZShwcmVwYXJlZFRlbXBMaXN0KVxyXG4gICAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIClcclxuICB9XHJcbn1cclxucmVzZXRUZW1wRGF0YSgpe1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVRlbXBEYXRhKFtdKVxyXG59XHJcbmRlbGV0ZUdyaWRSb3cocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdERUxFVEVfR1JJRF9ST1cnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkrICcvJyArIHBheWxvYWQuY3VyVGVtcCxwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldERlbGV0ZUdyaWRSb3dSZXNwb25jZShyZXNwb25zZSk7XHJcbiAgICB9XHJcbiAgKVxyXG59XHJcblxyXG5TYXZlRm9ybURhdGEocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdTQVZFX0ZPUk1fREFUQScpO1xyXG4gIHRoaXMuc2F2ZUNhbGwoYXBpKyAnLycgKyBwYXlsb2FkLmN1clRlbXAscGF5bG9hZClcclxufVxyXG5TZW5kRW1haWwocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdTRU5EX0VNQUlMJyk7XHJcbiAgdGhpcy5zYXZlQ2FsbChhcGkrICcvJyArIHBheWxvYWQuY3VyVGVtcCxwYXlsb2FkKVxyXG59XHJcbkR5bmFtaWNBcGlDYWxsKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEJhc2VVcmwoKTtcclxuICBsZXQgbGlzdCA9IHBheWxvYWQucGF0aC5zcGxpdChcIi9cIik7XHJcbiAgbGV0IGNhbGxOYW1lID0gbGlzdFtsaXN0Lmxlbmd0aC0xXTtcclxuICBzd2l0Y2goY2FsbE5hbWUpe1xyXG4gICAgY2FzZSBcImdzZFwiOlxyXG4gICAgICB0aGlzLmdldFN0YXRpRGF0YShwYXlsb2FkLmRhdGEpO1xyXG4gICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICB0aGlzLnNhdmVDYWxsKGFwaStwYXlsb2FkLnBhdGgscGF5bG9hZClcclxuICB9XHJcblxyXG59XHJcbnNhdmVDYWxsKGFwaTpzdHJpbmcscGF5bG9hZDphbnkpe1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0U2F2ZVJlc3BvbmNlKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblJlc2V0U2F2ZVJlc3BvbmNlKCl7XHJcbiAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFNhdmVSZXNwb25jZSgnJylcclxufVxyXG5HZXRGaWx0ZXJHcmlkRGF0YShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlR3JpZERhdGEocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuR2V0VHlwZWFoZWFkRGF0YShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9TVEFUSUNfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhOmFueSkgPT4ge1xyXG4gICAgICBsZXQgY3VycmVudHN0YXRpY0RhdGE6YW55PVtdO1xyXG4gICAgICBsZXQgcmVzdWx0ID1bXTtcclxuICAgICAgY3VycmVudHN0YXRpY0RhdGE9cmVzcERhdGFbJ3N1Y2Nlc3MnXTtcclxuICAgICAgaWYoY3VycmVudHN0YXRpY0RhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICByZXN1bHQgPSBjdXJyZW50c3RhdGljRGF0YVswXS5kYXRhXHJcbiAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFR5cGVBaGVhZERhdGEocmVzdWx0KVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbmNsZWFyVHlwZWFoZWFkRGF0YSgpe1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRUeXBlQWhlYWREYXRhKFtdKVxyXG59XHJcbkdldEZvcm0ocGF5bG9hZDphbnkpe1xyXG4gIGxldCBlbmRQb2ludCA9ICcnO1xyXG4gIGlmKHRoaXMuZW52U2VydmljZS5nZXRSZXF1ZXN0VHlwZSgpID09ICdQVUJMSUMnKXtcclxuICAgIGVuZFBvaW50ID0gJ0dFVF9GT1JNX1BVQkxJQyc7XHJcbiAgfWVsc2V7XHJcbiAgICBlbmRQb2ludCA9ICdHRVRfRk9STSc7XHJcbiAgfVxyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKGVuZFBvaW50KTtcclxuICBpZihwYXlsb2FkLl9pZCAmJiBwYXlsb2FkLl9pZCAhPSB1bmRlZmluZWQgJiYgcGF5bG9hZC5faWQgIT0gbnVsbCAmJnBheWxvYWQuX2lkICE9ICcnKXtcclxuICAgICAgYXBpID0gYXBpICsgJy8nICsgcGF5bG9hZC5faWQ7XHJcbiAgfVxyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgIGxldCBkaW5hbWljRm9ybTtcclxuICAgICAgaWYocmVzcERhdGEgJiYgcmVzcERhdGFbJ3N1Y2Nlc3MnXSAhPSBudWxsKXtcclxuICAgICAgICAgIGNvbnN0IG9iamVjdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcERhdGFbJ3N1Y2Nlc3MnXSkpO1xyXG4gICAgICAgICAgb2JqZWN0Wyd2aWV3X21vZGUnXSA9IFwiaW5saW5lRm9ybVZpZXdcIjtcclxuICAgICAgICAgIGRpbmFtaWNGb3JtID0ge1xyXG4gICAgICAgICAgICAgIERJTkFNSUNfRk9STSA6IG9iamVjdFxyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEZvcm0oZGluYW1pY0Zvcm0pXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcbkdldE5lc3RlZEZvcm0ocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfQ1VTVE9NX1RFTVBMQVRFJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldE5lc3RlZEZvcm0ocmVzcERhdGFbMF0pO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblxyXG5HZXRIb3N0TmFtZShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhOmFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRIb3N0RGF0YShyZXNwRGF0YVsnZGF0YSddKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbkdldERhc2hsZXREYXRhKHBheWxvYWRzOmFueSl7XHJcbiAgLy90aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RGFzaGxldERhdGEoe30pO1xyXG4gIGZyb20ocGF5bG9hZHMpXHJcbiAgLnBpcGUoXHJcbiAgICBtZXJnZU1hcCgocGF5bG9hZCk9PlxyXG4gICAgICB0aGlzLmRhc2hsZXREYXRhQ2FsbChwYXlsb2FkKSlcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLlNldERhc2hsZXREYXRhKHJlcylcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKT0+e1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5kYXNobGV0RGF0YUNhbGwocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfREFTSExFVF9EQVRBJyk7XHJcbiAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEpO1xyXG59XHJcblNldERhc2hsZXREYXRhKHJlc3BEYXRhOmFueSl7XHJcbiAgbGV0IGN1cnJlbnRTdGF0aWNEYXRhPVtdO1xyXG4gIGxldCBnZXREYXNobGV0RGF0YSA9IHRoaXMuZGF0YVNoYXJlU2VydmljZS5nZXREYXNobGV0RGF0YSgpO1xyXG4gIGNvbnN0IGRhc2hsZXREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShnZXREYXNobGV0RGF0YSkpO1xyXG4gIGN1cnJlbnRTdGF0aWNEYXRhLnB1c2gocmVzcERhdGEpO1xyXG4gIGlmKGN1cnJlbnRTdGF0aWNEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICBjdXJyZW50U3RhdGljRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgaWYoZWxlbWVudCAmJiBlbGVtZW50LmZpZWxkICE9IHVuZGVmaW5lZCAmJiBlbGVtZW50LmZpZWxkICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgIGRhc2hsZXREYXRhW2VsZW1lbnQuZmllbGRdID0gZWxlbWVudC5kYXRhXHJcbiAgICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICB9XHJcbiAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldERhc2hsZXREYXRhKGRhc2hsZXREYXRhKTtcclxufVxyXG5cclxuR2V0RXhwb3J0RXhjbExpbmsocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdFWFBPUlRfR1JJRF9EQVRBJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkLmRhdGEsIHBheWxvYWQucmVzcG9uY2UpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRFeHBvcnRFeGNlbExpbmsocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuY2xvc2UoJ2Rvd25sb2FkLXByb2dyZXNzLW1vZGFsJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbkdldEV4cG9ydENWU0xpbmsocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdDU1ZfRVhQT1JUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZC5kYXRhLCBwYXlsb2FkLnJlc3BvbmNlKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RXhwb3J0Q1ZTTGluayhyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZSgnZG93bmxvYWQtcHJvZ3Jlc3MtbW9kYWwnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcbnJlc2V0R2V0RXhwb3J0RXhjbExpbmsoKXtcclxuICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RXhwb3J0RXhjZWxMaW5rKCcnKTtcclxufVxyXG5HZXRQcm9kdWN0TGlzdChwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9QQVJBTUVURVJfTElTVCcpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFByb2R1Y3RMaXN0KHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbkdldFByZXZpZXdIdG1sKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX1BSRVZJRVdfSFRNTCcpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YTphbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0UHJldmlld0h0bWwocmVzcERhdGFbJ3N1Y2Nlc3MnXSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxucmVzZXRQcmV2aWV3SHRtbCgpe1xyXG4gIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRQcmV2aWV3SHRtbCgnJyk7XHJcbn1cclxuVXBkYXRlUHJvZHVjdEJyYW5jaChwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ1NBVkVfUEFSQU1FVEVSX0xJU1QnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0VXBkYXRlUHJvZHVjdEJyYW5jaChyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuR2V0Sm9iU2NoZWR1bGVzKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRKb2JTY2hlZHVsZURhdGEocmVzcERhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbkdldFBkZkRhdGEocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfUERGJyk7XHJcbiAgdGhpcy5odHRwLnBvc3Q8SHR0cFJlc3BvbnNlPGFueT4+KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEsIHsgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzICdqc29uJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyBhcyAnYm9keScgfSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbjphbnkgPSByZXNwRGF0YS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG4gICAgICAgIHZhciBmaWxlbmFtZSA9IFwiXCI7XHJcbiAgICAgICAgbGV0IG1hdGNoZXMgPSAvZmlsZW5hbWU9XCIoLio/KVwiL2cuZXhlYyhjb250ZW50RGlzcG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChtYXRjaGVzICE9IG51bGwgJiYgbWF0Y2hlc1sxXSkge1xyXG4gICAgICAgICAgICBmaWxlbmFtZSA9IG1hdGNoZXNbMV0ucmVwbGFjZSgvWydcIl0vZywgJycpO1xyXG4gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyhmaWxlbmFtZS5pbmRleE9mKFwiPVwiKSArIDEsIGZpbGVuYW1lLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldERvd25sb2FkUGRmRGF0YSh7IGRhdGE6IHJlc3BEYXRhLmJvZHksIGZpbGVuYW1lOiBmaWxlbmFtZSB9KTtcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5SZXNldFBkZkRhdGEoKXtcclxuICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RG93bmxvYWRQZGZEYXRhKCcnKTtcclxufVxyXG5HZXRGaWxlRGF0YShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9GSUxFJyk7XHJcbiAgdGhpcy5odHRwLnBvc3Q8SHR0cFJlc3BvbnNlPGFueT4+KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEsIHsgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzICdqc29uJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyBhcyAnYm9keScgfSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbjphbnkgPSByZXNwRGF0YS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG4gICAgICAgIHZhciBmaWxlbmFtZSA9IFwiXCI7XHJcbiAgICAgICAgbGV0IG1hdGNoZXMgPSAvZmlsZW5hbWU9XCIoLio/KVwiL2cuZXhlYyhjb250ZW50RGlzcG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChtYXRjaGVzICE9IG51bGwgJiYgbWF0Y2hlc1sxXSkge1xyXG4gICAgICAgICAgICBmaWxlbmFtZSA9IG1hdGNoZXNbMV0ucmVwbGFjZSgvWydcIl0vZywgJycpO1xyXG4gICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyhmaWxlbmFtZS5pbmRleE9mKFwiPVwiKSArIDEsIGZpbGVuYW1lLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEZpbGVEYXRhKHsgZGF0YTogcmVzcERhdGEuYm9keSwgZmlsZW5hbWU6IGZpbGVuYW1lIH0pO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblByaW50VGVtcGxhdGUocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfRklMRScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0PEh0dHBSZXNwb25zZTxhbnk+PihhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyBhcyAnanNvbicsIG9ic2VydmU6ICdyZXNwb25zZScgYXMgJ2JvZHknIH0pLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHZhciBjb250ZW50RGlzcG9zaXRpb246YW55ID0gcmVzcERhdGEuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKTtcclxuICAgICAgICB2YXIgZmlsZW5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGxldCBtYXRjaGVzID0gL2ZpbGVuYW1lPVwiKC4qPylcIi9nLmV4ZWMoY29udGVudERpc3Bvc2l0aW9uKTtcclxuICAgICAgICBpZiAobWF0Y2hlcyAhPSBudWxsICYmIG1hdGNoZXNbMV0pIHtcclxuICAgICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaGVzWzFdLnJlcGxhY2UoL1snXCJdL2csICcnKTtcclxuICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoZmlsZW5hbWUuaW5kZXhPZihcIj1cIikgKyAxLCBmaWxlbmFtZS5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRQcmludFRlbXBsYXRlKHsgZGF0YTogcmVzcERhdGEuYm9keSwgZmlsZW5hbWU6IGZpbGVuYW1lIH0pO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblJlc2V0RmlsZURhdGEoKXtcclxuICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RmlsZURhdGEoJycpO1xyXG59XHJcbkRvd25sb2FkRmlsZShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0RPV05MT0FEX1BERicpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEZpbGVEb3dubG9hZFVybChyZXNwRGF0YVsnc3VjY2VzcyddKTtcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5SZXNldERvd25sb2FkVXJsKCl7XHJcbiAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEZpbGVEb3dubG9hZFVybCgnJyk7XHJcbn1cclxuRmlsZVVwbG9hZChwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9QREYnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhLCBwYXlsb2FkLnJlc3BvbmNlKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuR2V0Q2hhcnREYXRhKHBheWxvYWQ6b2JqZWN0KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NIQVJUX0RBVEEnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRDaGFydERhdGEocmVzcERhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbkdldFFyKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX1FSX0NPREUnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyBwYXlsb2FkWydudW1iZXInXSwgcGF5bG9hZCx7cmVzcG9uc2VUeXBlOiAnYmxvYid9ICkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRGaWxlRGF0YSh7IGRhdGE6IHJlc3BEYXRhLCBmaWxlbmFtZTogXCJxci1cIitwYXlsb2FkWydmcm9tJ10rXCItXCIrKHBheWxvYWRbJ3RvJ10tMSkgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcbmdldEF1ZGl0VmVyc2lvbkxpc3QocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdBVURJVF9WRVJTSU9OX0xJU1QnKTtcclxuICB0aGlzLmh0dHAuZ2V0KGFwaSArXCIvXCIrIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0QXVkaXRWZXJzaW9uTGlzdChyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcbmdldEF1ZGl0SGlzdG9yeShwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0FVRElUX0hJU1RPUlknKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgK1wiL1wiKyBwYXlsb2FkWydwYXRoJ10sIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRBdWRpdEhpc3RvcnlEYXRhKHJlc3BEYXRhKTtcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5cclxuZ2V0QXBsaWNhdGlvbnNUaGVtZVNldHRpbmcocGF5bG9hZDpvYmplY3QpIHtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgIGlmKEpTT04uc3RyaW5naWZ5KHJlc3BEYXRhKSAhPSBcInt9XCIpe1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRUaGVtZVNldHRpbmcocmVzcERhdGEpXHJcbiAgICAgIH1cclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5nZXRBcGxpY2F0aW9uc1NldHRpbmcocGF5bG9hZDpvYmplY3QpIHtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgIGlmKEpTT04uc3RyaW5naWZ5KHJlc3BEYXRhKSAhPSBcInt9XCIpe1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRBcHBsaWNhdGlvblNldHRpbmcocmVzcERhdGEpXHJcbiAgICAgIH1cclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5maWVsZERpbmFtaWNBcGkoYXBpOmFueSxwYXlsb2FkOm9iamVjdCl7XHJcbiAgY29uc3QgaG9zdCA9IHRoaXMuZW52U2VydmljZS5nZXRCYXNlVXJsKCk7XHJcbiAgdGhpcy5odHRwLnBvc3QoaG9zdCthcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RmllbGREaW5hbWljQXBpUmVzcG9uY2UocmVzcERhdGEpXHJcbiAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblxyXG5nZXROZXh0Rm9ybURhdGEocGF5bG9hZDphbnkpIHtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgaWYoSlNPTi5zdHJpbmdpZnkocmVzcERhdGEpICE9IFwie31cIil7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldE5leHRGb3JtRGF0YShyZXNwRGF0YSlcclxuICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcblxyXG5cclxuZ2l0VmVyc2lvbihwYXlsb2FkOnN0cmluZykge1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHSVRfVkVSU0lPTicpO1xyXG4gIHRoaXMuaHR0cC5nZXQ8YW55PihhcGkpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0R2l0VmVyc2lvbihyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcblxyXG5nZXRSZXBvcnRMb2FkR3JpZERhdGEocGF5bG9hZDphbnkpe1xyXG4gIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5wYXRoLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRSZXBvcnRMb2FkR3JpZERhdGEocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuXHJcblxyXG5nZXRGYXZvdXJpdGVEYXRhKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzcERhdGEgJiYgcmVzcERhdGFbJ2RhdGEnXSAmJiByZXNwRGF0YVsnZGF0YSddLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgY29uc3QgdXNlclByZWZlcmVuY2UgPSByZXNwRGF0YVsnZGF0YSddWzBdO1xyXG4gICAgICAgICAgdGhpcy5zdHJvYWdlU2VydmljZS5zZXRVc2VyUHJlZmVyZW5jZSh1c2VyUHJlZmVyZW5jZSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0VXNlclByZWZlcmVuY2UodXNlclByZWZlcmVuY2UpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFVzZXJQcmVmZXJlbmNlKHJlc3BEYXRhWydkYXRhJ10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5cclxuZ2V0VXNlck5vdGlmaWNhdGlvbihwYXlsb2FkOmFueSl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlVXNlck5vdGlmaWNhdGlvbihyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5cclxuZ2V0VXNlck5vdGlmaWNhdGlvblNldHRpbmcoKXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX05PVElGSUNBVElPTl9TRVRUSU5HJyk7XHJcbiAgdGhpcy5odHRwLnBvc3QoYXBpLHt9KS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVVc2VyTm90aWZpY2F0aW9uU2V0dGluZyhyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gIClcclxufVxyXG5yZXNldFVzZXJOb3RpZmljYXRpb24oKXtcclxuICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVVc2VyTm90aWZpY2F0aW9uKFtdKVxyXG59XHJcblxyXG5nZXREb3dubG9hZE1hbnVhbChwYXlsb2FkOm9iamVjdCl7XHJcbiAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0RPV05MT0FEX01BTlVBTCcpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSxwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHVybD0gcmVzcERhdGEuZmlsZVVybDtcclxuICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlUHVibGljVXJsRnJvbVMzKHVybCk7XHJcbiAgICAgIH0sXHJcbiAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICApXHJcbn1cclxuZ2V0R3JpZFJ1bm5pbmdEYXRhKHBheWxvYWQ6YW55KXtcclxuICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVHcmlkUnVubmluZ0RhdGEocmVzcERhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgKVxyXG59XHJcbiAgLy8gRm9yIGFwcFxyXG4gIGdldERhdGFieUNvbGxlY3Rpb25OYW1lKHBheWxvYWQ6YW55KXtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5jb2xsZWN0aW9uRGF0YShyZXNwRGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBHZXRDaGlsZEdyaWQocGF5bG9hZDphbnkpe1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DVVNUT01fVEVNUExBVEUnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGE6YW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0Q2hpbGRHcmlkKHJlc3BEYXRhWzBdKTtcclxuICAgICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIC8vRW5kIEZvciBhcHAgZnVuY3Rpb25zXHJcblxyXG5cclxufVxyXG4iXX0=
|
|
611
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2VzL2FwaS9hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBdUIsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0UsT0FBTyxFQUFFLElBQUksRUFBa0IsTUFBTSxNQUFNLENBQUMsQ0FBQSxhQUFhOzs7Ozs7OztBQVN6RCxNQUFNLE9BQU8sVUFBVTtJQUdyQixZQUNVLGdCQUFrQyxFQUNsQyxJQUFnQixFQUNoQixVQUFzQixFQUN0QixZQUEwQixFQUMxQixjQUE4QixFQUM5QixtQkFBd0M7UUFMeEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFSbEQsY0FBUyxHQUFZLEtBQUssQ0FBQztJQVN2QixDQUFDO0lBRUwsWUFBWSxDQUFDLFFBQWE7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDO2FBQ1gsSUFBSSxDQUNILFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FDUixDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUNsQyxhQUFhLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztZQUNsQyxJQUFJLGFBQWEsSUFBSSxTQUFTLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDN0M7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDTCxDQUFDO0lBQ0QsY0FBYyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLElBQVM7UUFDckIsTUFBTSxVQUFVLEdBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELE1BQU0sV0FBVyxHQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7Z0JBQzVCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtvQkFDbEIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUU7d0JBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUMvQixXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDaEMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFOzRCQUM3RCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQzdDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDL0M7cUJBQ0Y7b0JBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUU7d0JBQ3RELElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQ3JFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDOzRCQUNuQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7NEJBQ2hELFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzt5QkFDbEQ7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUN6QyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7aUJBQzNDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEYsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDNUQsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDOUQ7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQVk7UUFDMUIsSUFBSSxVQUFVLEdBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLFFBQWdCO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDWCxJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDeEM7YUFDQSxTQUFTLENBQ1IsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUN2QyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDTCxDQUFDO0lBQ0QsZUFBZSxDQUFDLFFBQWE7UUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUNyQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUM1QyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZTtRQUMvQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFTO1FBQ3hCLE1BQU0sY0FBYyxHQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0QsTUFBTSxhQUFhLEdBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDcEUsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sU0FBUyxHQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtnQkFDNUIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO2dCQUNqRCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztZQUNwRCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsU0FBUyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUMzQyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFZO1FBQ3RCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUNELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxPQUFZO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsT0FBWTtRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNwRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUNwQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFZO1FBQ3RCLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNMLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFDeEQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQ0YsQ0FBQTtTQUNGO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBWTtRQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQzVELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQVk7UUFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBQ0QsU0FBUyxDQUFDLE9BQVk7UUFDcEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUNELGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckMsUUFBUSxRQUFRLEVBQUU7WUFDaEIsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1I7Z0JBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtTQUM3QztJQUVILENBQUM7SUFDRCxRQUFRLENBQUMsR0FBVyxFQUFFLE9BQVk7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQ3pDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2pELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxPQUFZO1FBQzVCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUMvQyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsT0FBWTtRQUMzQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxpQkFBaUIsR0FBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4QyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7YUFDbkM7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFZO1FBQ2xCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLElBQUksUUFBUSxFQUFFO1lBQ2hELFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztTQUM5QjthQUFNO1lBQ0wsUUFBUSxHQUFHLFVBQVUsQ0FBQztTQUN2QjtRQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUN2RixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQ3pDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxXQUFXLENBQUM7WUFDaEIsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9ELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDdkMsV0FBVyxHQUFHO29CQUNaLFlBQVksRUFBRSxNQUFNO2lCQUNyQixDQUFBO2FBQ0Y7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzVDLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsT0FBWTtRQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQzlELENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNyRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsY0FBYyxDQUFDLFFBQWE7UUFDMUIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDWCxJQUFJLENBQ0gsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FDcEM7YUFDQSxTQUFTLENBQ1IsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDMUIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUNELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxjQUFjLENBQUMsUUFBYTtRQUMxQixJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNoQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO29CQUNsRSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7aUJBQzFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FFSjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQVk7UUFDNUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUMzRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3BELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGdCQUFnQixDQUFDLE9BQVk7UUFDM0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUMzRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2xELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDaEQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGNBQWMsQ0FBQyxPQUFZO1FBQ3pCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQzdELENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsbUJBQW1CLENBQUMsT0FBWTtRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM3RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxlQUFlLENBQUMsT0FBWTtRQUMxQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDN0QsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQVk7UUFDckIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQXVCLEVBQUUsT0FBTyxFQUFFLFVBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDMUosQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksa0JBQWtCLEdBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMxRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDMUU7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN4RixDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQVk7UUFDdEIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQXVCLEVBQUUsT0FBTyxFQUFFLFVBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FDMUosQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksa0JBQWtCLEdBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUMxRSxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDMUU7WUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFvQixHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxhQUF1QixFQUFFLE9BQU8sRUFBRSxVQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQzFKLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLGtCQUFrQixHQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDMUUsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLElBQUksT0FBTyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzNELElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pDLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2FBQzFFO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDdEYsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFDRCxZQUFZLENBQUMsT0FBWTtRQUN2QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVSxDQUFDLE9BQVk7UUFDckIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FDL0UsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxPQUFlO1FBQzFCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFZO1FBQ2hCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUNsRixDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2SCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBWTtRQUM5QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUMxQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsT0FBWTtRQUMxQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUNqRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxPQUFlO1FBQ3hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDaEQ7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsT0FBZTtRQUNuQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQ3BDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDdEQ7UUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUNGLENBQUE7SUFDSCxDQUFDO0lBQ0QsZUFBZSxDQUFDLEdBQVEsRUFBRSxPQUFlO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQzNDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDNUQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUNoRDtRQUNILENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFHRCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQy9CLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxPQUFZO1FBQ2hDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFHRCxnQkFBZ0IsQ0FBQyxPQUFZO1FBQzNCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2hCLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQzNEO1FBQ0gsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQVk7UUFDOUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQzlELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQy9CLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELGlCQUFpQixDQUFDLE9BQWU7UUFDL0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUNwQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUM5RCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7SUFDRCxVQUFVO0lBQ1YsdUJBQXVCLENBQUMsT0FBWTtRQUNsQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FDRixDQUFBO0lBQ0gsQ0FBQztJQUNELFlBQVksQ0FBQyxPQUFZO1FBQ3ZCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQ0YsQ0FBQTtJQUNILENBQUM7O3dHQXR2QlUsVUFBVTs0R0FBVixVQUFVLGNBRlQsTUFBTTs0RkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcmVGdW5jdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uL2NvbW1vbi11dGlscy9jb3JlLWZ1bmN0aW9uL2NvcmUtZnVuY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBtYXAsIHRhcCwgc3dpdGNoTWFwLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgZnJvbSwgb2YsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJzsvL2Zyb21Qcm9taXNlXHJcbmltcG9ydCB7IERhdGFTaGFyZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhLXNoYXJlL2RhdGEtc2hhcmUuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudlNlcnZpY2UgfSBmcm9tICcuLi9lbnYvZW52LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb2RlbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RlbC9tb2RlbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcclxuICBzZXJ2ZXJSZXE6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFTaGFyZVNlcnZpY2U6IERhdGFTaGFyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGVudlNlcnZpY2U6IEVudlNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kZWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHJvYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvcmVGdW5jdGlvblNlcnZpY2U6IENvcmVGdW5jdGlvblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBnZXRTdGF0aURhdGEocGF5bG9hZHM6IGFueSkge1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFJlcVJlc3BvbnNlKHRydWUpO1xyXG4gICAgbGV0IHJlcUxlbmd0aCA9IHBheWxvYWRzLmxlbmd0aDtcclxuICAgIGxldCByZXNwb25jZUNvdW50ID0gMDtcclxuICAgIGZyb20ocGF5bG9hZHMpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1lcmdlTWFwKChwYXlsb2FkKSA9PlxyXG4gICAgICAgICAgdGhpcy5zdGF0aWNEYXRhQ2FsbChbcGF5bG9hZF0pLCA1KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRpY0RhdGEocmVzWydzdWNjZXNzJ10pXHJcbiAgICAgICAgICByZXNwb25jZUNvdW50ID0gcmVzcG9uY2VDb3VudCArIDE7XHJcbiAgICAgICAgICBpZiAocmVzcG9uY2VDb3VudCA9PSByZXFMZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFJlcVJlc3BvbnNlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gIH1cclxuICBzdGF0aWNEYXRhQ2FsbChwYXlsb2FkOiBvYmplY3QpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfU1RBVElDX0RBVEEnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpXHJcbiAgfVxyXG4gIHNldFN0YXRpY0RhdGEoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBzdGF0aWNEYXRhOiBhbnkgPSB0aGlzLmRhdGFTaGFyZVNlcnZpY2UuZ2V0U3RhdGlEYXRhKCk7XHJcbiAgICBjb25zdCBjdXJyZW50RGF0YTogYW55ID0ge307XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5hZGtleXMpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmFka2V5cy50b3RhbFJvd3MgJiYgZWxlbWVudC5hZGtleXMudG90YWxSb3dzICE9ICcnKSB7XHJcbiAgICAgICAgICAgIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0gPSBbXTtcclxuICAgICAgICAgICAgY3VycmVudERhdGFbZWxlbWVudC5maWVsZF0gPSBbXTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGVsZW1lbnQuYWRrZXlzLnRvdGFsUm93czsgaW5kZXgrKykge1xyXG4gICAgICAgICAgICAgIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0ucHVzaChlbGVtZW50LmRhdGEpO1xyXG4gICAgICAgICAgICAgIGN1cnJlbnREYXRhW2VsZW1lbnQuZmllbGRdLnB1c2goZWxlbWVudC5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuYWRrZXlzLmluZGV4ICYmIGVsZW1lbnQuYWRrZXlzLmluZGV4ICE9ICcnKSB7XHJcbiAgICAgICAgICAgIGlmIChzdGF0aWNEYXRhW2VsZW1lbnQuZmllbGRdICYmIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZWxlbWVudC5hZGtleXMuaW5kZXg7XHJcbiAgICAgICAgICAgICAgc3RhdGljRGF0YVtlbGVtZW50LmZpZWxkXVtpbmRleF0gPSBlbGVtZW50LmRhdGE7XHJcbiAgICAgICAgICAgICAgY3VycmVudERhdGFbZWxlbWVudC5maWVsZF1baW5kZXhdID0gZWxlbWVudC5kYXRhO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0YXRpY0RhdGFbZWxlbWVudC5maWVsZF0gPSBlbGVtZW50LmRhdGE7XHJcbiAgICAgICAgICBjdXJyZW50RGF0YVtlbGVtZW50LmZpZWxkXSA9IGVsZW1lbnQuZGF0YTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKGRhdGEgJiYgZGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXSAhPSBudWxsICYmIGRhdGFbJ3N0YXRpY0RhdGFNZXNzZ2FlJ10gIT0gJycpIHtcclxuICAgICAgc3RhdGljRGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXSA9IGRhdGFbJ3N0YXRpY0RhdGFNZXNzZ2FlJ107XHJcbiAgICAgIGN1cnJlbnREYXRhWydzdGF0aWNEYXRhTWVzc2dhZSddID0gZGF0YVsnc3RhdGljRGF0YU1lc3NnYWUnXTtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVN0YXRpY0RhdGEoc3RhdGljRGF0YSwgY3VycmVudERhdGEpO1xyXG4gIH1cclxuXHJcbiAgUmVzZXRTdGF0aWNEYXRhKGtleU5hbWU6IGFueSkge1xyXG4gICAgbGV0IHN0YXRpY0RhdGE6IGFueSA9IHRoaXMuZGF0YVNoYXJlU2VydmljZS5nZXRTdGF0aURhdGEoKTtcclxuICAgIHN0YXRpY0RhdGFba2V5TmFtZS5maWVsZF0gPSBudWxsO1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlU3RhdGljRGF0YShzdGF0aWNEYXRhLCB7fSk7XHJcbiAgfVxyXG5cclxuICByZXNldFN0YXRpY0FsbERhdGEoKSB7XHJcbiAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVTdGF0aWNEYXRhKHt9LCB7fSlcclxuICB9XHJcblxyXG4gIGdldEdyaWRDb3VudERhdGEocGF5bG9hZHM6IHN0cmluZykge1xyXG4gICAgZnJvbShwYXlsb2FkcylcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWVyZ2VNYXAoKHBheWxvYWQpID0+XHJcbiAgICAgICAgICB0aGlzLmdyaWRDb3VudERhdGFDYWxsKFtwYXlsb2FkXSksIDUpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0R3JpZENvdW50RGF0YShyZXNbJ3N1Y2Nlc3MnXSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gIH1cclxuICBnZXRUYWJDb3VudERhdGEocGF5bG9hZHM6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DT1VOVF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWRzKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRHcmlkQ291bnREYXRhKHJlc3BEYXRhWydzdWNjZXNzJ10pXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ3JpZENvdW50RGF0YUNhbGwocGF5bG9hZDogb2JqZWN0KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NPVU5UX0RBVEEnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpXHJcbiAgfVxyXG5cclxuICBzZXRHcmlkQ291bnREYXRhKGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgbG9jYWxHcmlkQ291bnQ6IGFueSA9IHRoaXMuc3Ryb2FnZVNlcnZpY2UuR2V0VGFiQ291bnRzKCk7XHJcbiAgICBjb25zdCBncmlkQ291bnREYXRhOiBhbnkgPSB0aGlzLmRhdGFTaGFyZVNlcnZpY2UuZ2V0R3JpZENvdW50RGF0YSgpO1xyXG4gICAgY29uc3QgY291bnQ6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgZGF0YUNvdW50OiBhbnkgPSB7fTtcclxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBncmlkQ291bnREYXRhW2VsZW1lbnQuZmllbGRdID0gZWxlbWVudC5kYXRhX3NpemU7XHJcbiAgICAgICAgY291bnRbZWxlbWVudC5maWVsZF0gPSBlbGVtZW50LmRhdGFfc2l6ZTtcclxuICAgICAgICBsb2NhbEdyaWRDb3VudFtlbGVtZW50LmZpZWxkXSA9IGVsZW1lbnQuZGF0YV9zaXplO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGRhdGFDb3VudFsnZ3JpZENvdW50RGF0YSddID0gZ3JpZENvdW50RGF0YTtcclxuICAgIGRhdGFDb3VudFsnY291bnQnXSA9IGNvdW50O1xyXG4gICAgdGhpcy5zdHJvYWdlU2VydmljZS5TZXRUYWJDb3VudHMobG9jYWxHcmlkQ291bnQpXHJcbiAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVHcmlkQ291bnREYXRhKGRhdGFDb3VudCk7XHJcbiAgfVxyXG4gIHJlc2V0R3JpZENvdW50QWxsRGF0YSgpIHtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZUdyaWRDb3VudERhdGEoeyBjb3VudDoge30sIGdyaWRDb3VudERhdGE6IHt9IH0pXHJcbiAgfVxyXG4gIGdldEdyaWREYXRhKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZUdyaWREYXRhKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHJlc2V0R3JpZERhdGEoKSB7XHJcbiAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVHcmlkRGF0YShbXSlcclxuICB9XHJcbiAgZ2V0RGFzaGxldE1zdGVyKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZURhc2hsZXRNYXN0ZXIocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRNb25nb0Rhc2hsZXRNc3RlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVNb25nb0NoYXJ0KHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgZ2V0TW9uZ29EYXNoYm9yZChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVNb25nb0Rhc2hib3JkKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIEdldFRlbXBNZW51KHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DVVNUT01fVEVNUExBVEUnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVNZW51RGF0YShyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIHJlc2V0TWVudURhdGEoKSB7XHJcbiAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVNZW51RGF0YShbXSlcclxuICB9XHJcbiAgR2V0VGVtcERhdGEocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgbW9kdWxlTmFtZSA9IHBheWxvYWRbJ21vZHVsZSddO1xyXG4gICAgbGV0IG5hbWUgPSB0aGlzLmNvcmVGdW5jdGlvblNlcnZpY2UuZ2V0VGVtcE5hbWVGcm9tUGF5bG9hZChwYXlsb2FkKTtcclxuICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMuc3Ryb2FnZVNlcnZpY2UuZ2V0VGVtcGxhdGUobmFtZSwgbW9kdWxlTmFtZSk7XHJcbiAgICBpZiAodGVtcGxhdGUpIHtcclxuICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlVGVtcERhdGEoW3RlbXBsYXRlXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gICAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVRlbXBEYXRhKHJlc3BEYXRhKTtcclxuICAgICAgICAgIGxldCBwcmVwYXJlZFRlbXBMaXN0ID0gdGhpcy5jb3JlRnVuY3Rpb25TZXJ2aWNlLnByZXBhcmVUZW1wbGF0ZShyZXNwRGF0YSwgbW9kdWxlTmFtZSk7XHJcbiAgICAgICAgICB0aGlzLnN0cm9hZ2VTZXJ2aWNlLnN0b3JlQWxsVGVtcGxhdGUocHJlcGFyZWRUZW1wTGlzdClcclxuICAgICAgICB9LFxyXG4gICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuICByZXNldFRlbXBEYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlVGVtcERhdGEoW10pXHJcbiAgfVxyXG4gIGRlbGV0ZUdyaWRSb3cocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnREVMRVRFX0dSSURfUk9XJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLmN1clRlbXAsIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldERlbGV0ZUdyaWRSb3dSZXNwb25zZShyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIFNhdmVGb3JtRGF0YShwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdTQVZFX0ZPUk1fREFUQScpO1xyXG4gICAgdGhpcy5zYXZlQ2FsbChhcGkgKyAnLycgKyBwYXlsb2FkLmN1clRlbXAsIHBheWxvYWQpXHJcbiAgfVxyXG4gIFNlbmRFbWFpbChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdTRU5EX0VNQUlMJyk7XHJcbiAgICB0aGlzLnNhdmVDYWxsKGFwaSArICcvJyArIHBheWxvYWQuY3VyVGVtcCwgcGF5bG9hZClcclxuICB9XHJcbiAgRHluYW1pY0FwaUNhbGwocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEJhc2VVcmwoKTtcclxuICAgIGxldCBsaXN0ID0gcGF5bG9hZC5wYXRoLnNwbGl0KFwiL1wiKTtcclxuICAgIGxldCBjYWxsTmFtZSA9IGxpc3RbbGlzdC5sZW5ndGggLSAxXTtcclxuICAgIHN3aXRjaCAoY2FsbE5hbWUpIHtcclxuICAgICAgY2FzZSBcImdzZFwiOlxyXG4gICAgICAgIHRoaXMuZ2V0U3RhdGlEYXRhKHBheWxvYWQuZGF0YSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5zYXZlQ2FsbChhcGkgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBzYXZlQ2FsbChhcGk6IHN0cmluZywgcGF5bG9hZDogYW55KSB7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0U2F2ZVJlc3BvbmNlKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgUmVzZXRTYXZlUmVzcG9uY2UoKSB7XHJcbiAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0U2F2ZVJlc3BvbmNlKCcnKVxyXG4gIH1cclxuICBHZXRGaWx0ZXJHcmlkRGF0YShwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVHcmlkRGF0YShyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIEdldFR5cGVhaGVhZERhdGEocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX1NUQVRJQ19EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgY3VycmVudHN0YXRpY0RhdGE6IGFueSA9IFtdO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcclxuICAgICAgICBjdXJyZW50c3RhdGljRGF0YSA9IHJlc3BEYXRhWydzdWNjZXNzJ107XHJcbiAgICAgICAgaWYgKGN1cnJlbnRzdGF0aWNEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRzdGF0aWNEYXRhWzBdLmRhdGFcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFR5cGVBaGVhZERhdGEocmVzdWx0KVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgY2xlYXJUeXBlYWhlYWREYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFR5cGVBaGVhZERhdGEoW10pXHJcbiAgfVxyXG4gIEdldEZvcm0ocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgZW5kUG9pbnQgPSAnJztcclxuICAgIGlmICh0aGlzLmVudlNlcnZpY2UuZ2V0UmVxdWVzdFR5cGUoKSA9PSAnUFVCTElDJykge1xyXG4gICAgICBlbmRQb2ludCA9ICdHRVRfRk9STV9QVUJMSUMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZW5kUG9pbnQgPSAnR0VUX0ZPUk0nO1xyXG4gICAgfVxyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoZW5kUG9pbnQpO1xyXG4gICAgaWYgKHBheWxvYWQuX2lkICYmIHBheWxvYWQuX2lkICE9IHVuZGVmaW5lZCAmJiBwYXlsb2FkLl9pZCAhPSBudWxsICYmIHBheWxvYWQuX2lkICE9ICcnKSB7XHJcbiAgICAgIGFwaSA9IGFwaSArICcvJyArIHBheWxvYWQuX2lkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZGluYW1pY0Zvcm07XHJcbiAgICAgICAgaWYgKHJlc3BEYXRhICYmIHJlc3BEYXRhWydzdWNjZXNzJ10gIT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3Qgb2JqZWN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwRGF0YVsnc3VjY2VzcyddKSk7XHJcbiAgICAgICAgICBvYmplY3RbJ3ZpZXdfbW9kZSddID0gXCJpbmxpbmVGb3JtVmlld1wiO1xyXG4gICAgICAgICAgZGluYW1pY0Zvcm0gPSB7XHJcbiAgICAgICAgICAgIERJTkFNSUNfRk9STTogb2JqZWN0XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRGb3JtKGRpbmFtaWNGb3JtKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIEdldE5lc3RlZEZvcm0ocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldE5lc3RlZEZvcm0ocmVzcERhdGFbMF0pO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIEdldEhvc3ROYW1lKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEhvc3REYXRhKHJlc3BEYXRhWydkYXRhJ10pXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBHZXREYXNobGV0RGF0YShwYXlsb2FkczogYW55KSB7XHJcbiAgICAvL3RoaXMuZGF0YVNoYXJlU2VydmljZS5zZXREYXNobGV0RGF0YSh7fSk7XHJcbiAgICBmcm9tKHBheWxvYWRzKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtZXJnZU1hcCgocGF5bG9hZCkgPT5cclxuICAgICAgICAgIHRoaXMuZGFzaGxldERhdGFDYWxsKHBheWxvYWQpLCA1KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5TZXREYXNobGV0RGF0YShyZXMpXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICB9XHJcbiAgZGFzaGxldERhdGFDYWxsKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9EQVNITEVUX0RBVEEnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhKTtcclxuICB9XHJcbiAgU2V0RGFzaGxldERhdGEocmVzcERhdGE6IGFueSkge1xyXG4gICAgbGV0IGN1cnJlbnRTdGF0aWNEYXRhID0gW107XHJcbiAgICBsZXQgZ2V0RGFzaGxldERhdGEgPSB0aGlzLmRhdGFTaGFyZVNlcnZpY2UuZ2V0RGFzaGxldERhdGEoKTtcclxuICAgIGNvbnN0IGRhc2hsZXREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShnZXREYXNobGV0RGF0YSkpO1xyXG4gICAgY3VycmVudFN0YXRpY0RhdGEucHVzaChyZXNwRGF0YSk7XHJcbiAgICBpZiAoY3VycmVudFN0YXRpY0RhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBjdXJyZW50U3RhdGljRGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZmllbGQgIT0gdW5kZWZpbmVkICYmIGVsZW1lbnQuZmllbGQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZGFzaGxldERhdGFbZWxlbWVudC5maWVsZF0gPSBlbGVtZW50LmRhdGFcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXREYXNobGV0RGF0YShkYXNobGV0RGF0YSk7XHJcbiAgfVxyXG5cclxuICBHZXRFeHBvcnRFeGNsTGluayhwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdFWFBPUlRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQuZGF0YSwgcGF5bG9hZC5yZXNwb25jZSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RXhwb3J0RXhjZWxMaW5rKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5jbG9zZSgnZG93bmxvYWQtcHJvZ3Jlc3MtbW9kYWwnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgR2V0RXhwb3J0Q1ZTTGluayhwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdDU1ZfRVhQT1JUX0dSSURfREFUQScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkLmRhdGEsIHBheWxvYWQucmVzcG9uY2UpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEV4cG9ydENWU0xpbmsocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmNsb3NlKCdkb3dubG9hZC1wcm9ncmVzcy1tb2RhbCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmVzZXRHZXRFeHBvcnRFeGNsTGluaygpIHtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRFeHBvcnRFeGNlbExpbmsoJycpO1xyXG4gIH1cclxuICBHZXRQcm9kdWN0TGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfUEFSQU1FVEVSX0xJU1QnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0UHJvZHVjdExpc3QocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBHZXRQcmV2aWV3SHRtbChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfUFJFVklFV19IVE1MJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFByZXZpZXdIdG1sKHJlc3BEYXRhWydzdWNjZXNzJ10pO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgcmVzZXRQcmV2aWV3SHRtbCgpIHtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRQcmV2aWV3SHRtbCgnJyk7XHJcbiAgfVxyXG4gIFVwZGF0ZVByb2R1Y3RCcmFuY2gocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnU0FWRV9QQVJBTUVURVJfTElTVCcpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5faWQsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0VXBkYXRlUHJvZHVjdEJyYW5jaChyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBHZXRKb2JTY2hlZHVsZXMocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5faWQsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0Sm9iU2NoZWR1bGVEYXRhKHJlc3BEYXRhKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIEdldFBkZkRhdGEocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX1BERicpO1xyXG4gICAgdGhpcy5odHRwLnBvc3Q8SHR0cFJlc3BvbnNlPGFueT4+KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEsIHsgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzICdqc29uJywgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyBhcyAnYm9keScgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB2YXIgY29udGVudERpc3Bvc2l0aW9uOiBhbnkgPSByZXNwRGF0YS5oZWFkZXJzLmdldCgnQ29udGVudC1EaXNwb3NpdGlvbicpO1xyXG4gICAgICAgIHZhciBmaWxlbmFtZSA9IFwiXCI7XHJcbiAgICAgICAgbGV0IG1hdGNoZXMgPSAvZmlsZW5hbWU9XCIoLio/KVwiL2cuZXhlYyhjb250ZW50RGlzcG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChtYXRjaGVzICE9IG51bGwgJiYgbWF0Y2hlc1sxXSkge1xyXG4gICAgICAgICAgZmlsZW5hbWUgPSBtYXRjaGVzWzFdLnJlcGxhY2UoL1snXCJdL2csICcnKTtcclxuICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmluZGV4T2YoXCI9XCIpICsgMSwgZmlsZW5hbWUubGVuZ3RoKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RG93bmxvYWRQZGZEYXRhKHsgZGF0YTogcmVzcERhdGEuYm9keSwgZmlsZW5hbWU6IGZpbGVuYW1lIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgUmVzZXRQZGZEYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldERvd25sb2FkUGRmRGF0YSgnJyk7XHJcbiAgfVxyXG4gIEdldEZpbGVEYXRhKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9GSUxFJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdDxIdHRwUmVzcG9uc2U8YW55Pj4oYXBpICsgJy8nICsgcGF5bG9hZC5faWQsIHBheWxvYWQuZGF0YSwgeyByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicgYXMgJ2pzb24nLCBvYnNlcnZlOiAncmVzcG9uc2UnIGFzICdib2R5JyB9KS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHZhciBjb250ZW50RGlzcG9zaXRpb246IGFueSA9IHJlc3BEYXRhLmhlYWRlcnMuZ2V0KCdDb250ZW50LURpc3Bvc2l0aW9uJyk7XHJcbiAgICAgICAgdmFyIGZpbGVuYW1lID0gXCJcIjtcclxuICAgICAgICBsZXQgbWF0Y2hlcyA9IC9maWxlbmFtZT1cIiguKj8pXCIvZy5leGVjKGNvbnRlbnREaXNwb3NpdGlvbik7XHJcbiAgICAgICAgaWYgKG1hdGNoZXMgIT0gbnVsbCAmJiBtYXRjaGVzWzFdKSB7XHJcbiAgICAgICAgICBmaWxlbmFtZSA9IG1hdGNoZXNbMV0ucmVwbGFjZSgvWydcIl0vZywgJycpO1xyXG4gICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoZmlsZW5hbWUuaW5kZXhPZihcIj1cIikgKyAxLCBmaWxlbmFtZS5sZW5ndGgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRGaWxlRGF0YSh7IGRhdGE6IHJlc3BEYXRhLmJvZHksIGZpbGVuYW1lOiBmaWxlbmFtZSB9KTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIFByaW50VGVtcGxhdGUocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0ZJTEUnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0PEh0dHBSZXNwb25zZTxhbnk+PihhcGkgKyAnLycgKyBwYXlsb2FkLl9pZCwgcGF5bG9hZC5kYXRhLCB7IHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyBhcyAnanNvbicsIG9ic2VydmU6ICdyZXNwb25zZScgYXMgJ2JvZHknIH0pLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdmFyIGNvbnRlbnREaXNwb3NpdGlvbjogYW55ID0gcmVzcERhdGEuaGVhZGVycy5nZXQoJ0NvbnRlbnQtRGlzcG9zaXRpb24nKTtcclxuICAgICAgICB2YXIgZmlsZW5hbWUgPSBcIlwiO1xyXG4gICAgICAgIGxldCBtYXRjaGVzID0gL2ZpbGVuYW1lPVwiKC4qPylcIi9nLmV4ZWMoY29udGVudERpc3Bvc2l0aW9uKTtcclxuICAgICAgICBpZiAobWF0Y2hlcyAhPSBudWxsICYmIG1hdGNoZXNbMV0pIHtcclxuICAgICAgICAgIGZpbGVuYW1lID0gbWF0Y2hlc1sxXS5yZXBsYWNlKC9bJ1wiXS9nLCAnJyk7XHJcbiAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZyhmaWxlbmFtZS5pbmRleE9mKFwiPVwiKSArIDEsIGZpbGVuYW1lLmxlbmd0aClcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldFByaW50VGVtcGxhdGUoeyBkYXRhOiByZXNwRGF0YS5ib2R5LCBmaWxlbmFtZTogZmlsZW5hbWUgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBSZXNldEZpbGVEYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldEZpbGVEYXRhKCcnKTtcclxuICB9XHJcbiAgRG93bmxvYWRGaWxlKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0RPV05MT0FEX1BERicpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5wYXRoLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RmlsZURvd25sb2FkVXJsKHJlc3BEYXRhWydzdWNjZXNzJ10pO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgUmVzZXREb3dubG9hZFVybCgpIHtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRGaWxlRG93bmxvYWRVcmwoJycpO1xyXG4gIH1cclxuICBGaWxlVXBsb2FkKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9QREYnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQuX2lkLCBwYXlsb2FkLmRhdGEsIHBheWxvYWQucmVzcG9uY2UpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2cocmVzcERhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgR2V0Q2hhcnREYXRhKHBheWxvYWQ6IG9iamVjdCkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DSEFSVF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNldENoYXJ0RGF0YShyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBHZXRRcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfUVJfQ09ERScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgcGF5bG9hZFsnbnVtYmVyJ10sIHBheWxvYWQsIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RmlsZURhdGEoeyBkYXRhOiByZXNwRGF0YSwgZmlsZW5hbWU6IFwicXItXCIgKyBwYXlsb2FkWydmcm9tJ10gKyBcIi1cIiArIChwYXlsb2FkWyd0byddIC0gMSkgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXVkaXRWZXJzaW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdBVURJVF9WRVJTSU9OX0xJU1QnKTtcclxuICAgIHRoaXMuaHR0cC5nZXQoYXBpICsgXCIvXCIgKyBwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRBdWRpdFZlcnNpb25MaXN0KHJlc3BEYXRhKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBdWRpdEhpc3RvcnkocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnQVVESVRfSElTVE9SWScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgXCIvXCIgKyBwYXlsb2FkWydwYXRoJ10sIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0QXVkaXRIaXN0b3J5RGF0YShyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QXBsaWNhdGlvbnNUaGVtZVNldHRpbmcocGF5bG9hZDogb2JqZWN0KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0NVU1RPTV9URU1QTEFURScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpLCBwYXlsb2FkKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShyZXNwRGF0YSkgIT0gXCJ7fVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0VGhlbWVTZXR0aW5nKHJlc3BEYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIGdldEFwbGljYXRpb25zU2V0dGluZyhwYXlsb2FkOiBvYmplY3QpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfQ1VTVE9NX1RFTVBMQVRFJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGksIHBheWxvYWQpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHJlc3BEYXRhKSAhPSBcInt9XCIpIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRBcHBsaWNhdGlvblNldHRpbmcocmVzcERhdGEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgZmllbGREaW5hbWljQXBpKGFwaTogYW55LCBwYXlsb2FkOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IGhvc3QgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QmFzZVVybCgpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoaG9zdCArIGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0RmllbGREaW5hbWljQXBpUmVzcG9uY2UocmVzcERhdGEpXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmV4dEZvcm1EYXRhKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YSkgPT4ge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShyZXNwRGF0YSkgIT0gXCJ7fVwiKSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0TmV4dEZvcm1EYXRhKHJlc3BEYXRhKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2l0VmVyc2lvbihwYXlsb2FkOiBzdHJpbmcpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHSVRfVkVSU0lPTicpO1xyXG4gICAgdGhpcy5odHRwLmdldDxhbnk+KGFwaSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0R2l0VmVyc2lvbihyZXNwRGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldFJlcG9ydExvYWRHcmlkRGF0YShwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2V0UmVwb3J0TG9hZEdyaWREYXRhKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG5cclxuICBnZXRGYXZvdXJpdGVEYXRhKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9HUklEX0RBVEEnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSArICcvJyArIHBheWxvYWQucGF0aCwgcGF5bG9hZC5kYXRhKS5zdWJzY3JpYmUoXHJcbiAgICAgIChyZXNwRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BEYXRhICYmIHJlc3BEYXRhWydkYXRhJ10gJiYgcmVzcERhdGFbJ2RhdGEnXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBjb25zdCB1c2VyUHJlZmVyZW5jZSA9IHJlc3BEYXRhWydkYXRhJ11bMF07XHJcbiAgICAgICAgICB0aGlzLnN0cm9hZ2VTZXJ2aWNlLnNldFVzZXJQcmVmZXJlbmNlKHVzZXJQcmVmZXJlbmNlKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRVc2VyUHJlZmVyZW5jZSh1c2VyUHJlZmVyZW5jZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRVc2VyUHJlZmVyZW5jZShyZXNwRGF0YVsnZGF0YSddKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0VXNlck5vdGlmaWNhdGlvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVVc2VyTm90aWZpY2F0aW9uKHJlc3BEYXRhKVxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFVzZXJOb3RpZmljYXRpb25TZXR0aW5nKCkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9OT1RJRklDQVRJT05fU0VUVElORycpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpLCB7fSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2Uuc2hhcmVVc2VyTm90aWZpY2F0aW9uU2V0dGluZyhyZXNwRGF0YSlcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIHJlc2V0VXNlck5vdGlmaWNhdGlvbigpIHtcclxuICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zaGFyZVVzZXJOb3RpZmljYXRpb24oW10pXHJcbiAgfVxyXG5cclxuICBnZXREb3dubG9hZE1hbnVhbChwYXlsb2FkOiBvYmplY3QpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdET1dOTE9BRF9NQU5VQUwnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHJlc3BEYXRhLmZpbGVVcmw7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlUHVibGljVXJsRnJvbVMzKHVybCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRHcmlkUnVubmluZ0RhdGEocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgYXBpID0gdGhpcy5lbnZTZXJ2aWNlLmdldEFwaSgnR0VUX0dSSURfREFUQScpO1xyXG4gICAgdGhpcy5odHRwLnBvc3QoYXBpICsgJy8nICsgcGF5bG9hZC5wYXRoLCBwYXlsb2FkLmRhdGEpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BEYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kYXRhU2hhcmVTZXJ2aWNlLnNoYXJlR3JpZFJ1bm5pbmdEYXRhKHJlc3BEYXRhKTtcclxuICAgICAgfSxcclxuICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgfVxyXG4gIC8vIEZvciBhcHBcclxuICBnZXREYXRhYnlDb2xsZWN0aW9uTmFtZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIGxldCBhcGkgPSB0aGlzLmVudlNlcnZpY2UuZ2V0QXBpKCdHRVRfR1JJRF9EQVRBJyk7XHJcbiAgICB0aGlzLmh0dHAucG9zdChhcGkgKyAnLycgKyBwYXlsb2FkLnBhdGgsIHBheWxvYWQuZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGEpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFTaGFyZVNlcnZpY2UuY29sbGVjdGlvbkRhdGEocmVzcERhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgR2V0Q2hpbGRHcmlkKHBheWxvYWQ6IGFueSkge1xyXG4gICAgbGV0IGFwaSA9IHRoaXMuZW52U2VydmljZS5nZXRBcGkoJ0dFVF9DVVNUT01fVEVNUExBVEUnKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KGFwaSwgcGF5bG9hZCkuc3Vic2NyaWJlKFxyXG4gICAgICAocmVzcERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVNoYXJlU2VydmljZS5zZXRDaGlsZEdyaWQocmVzcERhdGFbMF0pO1xyXG4gICAgICB9LFxyXG4gICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcbiAgLy9FbmQgRm9yIGFwcCBmdW5jdGlvbnNcclxuXHJcblxyXG59XHJcbiJdfQ==
|