@arsedizioni/ars-utils 18.2.342 → 18.2.344
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/clipper.common/common/interceptors/auth.interceptor.d.ts +1 -0
- package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +14 -11
- package/esm2022/clipper.common/common/services/clipper.service.mjs +3 -6
- package/esm2022/ui/ui/services/dialog.service.mjs +1 -2
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +14 -14
- package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs +0 -1
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ export declare class ClipperAuthInterceptor implements HttpInterceptor {
|
|
|
5
5
|
private clipperService;
|
|
6
6
|
private broadcastService;
|
|
7
7
|
private dialogService;
|
|
8
|
+
private lastErrorTime;
|
|
8
9
|
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
9
10
|
/**
|
|
10
11
|
* Handle 401 error
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
2
|
import { Injectable, inject } from '@angular/core';
|
|
3
|
+
import { BroadcastService } from '@arsedizioni/ars-utils/core';
|
|
3
4
|
import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
4
5
|
import { catchError, switchMap, throwError } from 'rxjs';
|
|
5
6
|
import { ClipperService } from '../services/clipper.service';
|
|
6
|
-
import { BroadcastService } from '@arsedizioni/ars-utils/core';
|
|
7
7
|
import { ClipperMessages } from '../messages';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class ClipperAuthInterceptor {
|
|
@@ -11,26 +11,29 @@ export class ClipperAuthInterceptor {
|
|
|
11
11
|
this.clipperService = inject(ClipperService);
|
|
12
12
|
this.broadcastService = inject(BroadcastService);
|
|
13
13
|
this.dialogService = inject(DialogService);
|
|
14
|
+
this.lastErrorTime = -1;
|
|
14
15
|
}
|
|
15
16
|
intercept(request, next) {
|
|
16
17
|
if (request.url.startsWith(this.clipperService.serviceUri)) {
|
|
17
18
|
request = request.clone({ withCredentials: true });
|
|
18
19
|
return next.handle(this.addTokenToRequest(request))
|
|
19
20
|
.pipe(catchError(error => {
|
|
21
|
+
this.dialogService.clearBusy();
|
|
20
22
|
if (error instanceof HttpErrorResponse &&
|
|
21
23
|
!request.url.includes("/login") &&
|
|
22
24
|
error.status === 401) {
|
|
23
25
|
return this.handle401Error(request, next);
|
|
24
26
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
const errorTime = new Date().getTime();
|
|
28
|
+
if (errorTime - this.lastErrorTime > 5000) {
|
|
29
|
+
this.lastErrorTime = errorTime;
|
|
30
|
+
const invalidSession = error.status == "403";
|
|
31
|
+
this.dialogService.error("<p>" + (error.error?.message ?? error.message ?? "Impossibile eseguire l'operazione richiesta.").replaceAll("\r\n", "</p><p>") + "</p>", null, "Errore in Clipper", undefined, undefined, invalidSession ? 5000 : 15000).afterClosed().subscribe(() => {
|
|
32
|
+
if (invalidSession) {
|
|
33
|
+
this.broadcastService.sendMessage(ClipperMessages.LOGOUT);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
34
37
|
return throwError(() => error);
|
|
35
38
|
}));
|
|
36
39
|
}
|
|
@@ -77,4 +80,4 @@ export class ClipperAuthInterceptor {
|
|
|
77
80
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImport: i0, type: ClipperAuthInterceptor, decorators: [{
|
|
78
81
|
type: Injectable
|
|
79
82
|
}] });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbi9jb21tb24vaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQWMsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBRzlDLE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFVSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFXLENBQUMsQ0FBQyxDQUFDO0tBbUZwQztJQWpGQyxTQUFTLENBQ1AsT0FBeUIsRUFDekIsSUFBaUI7UUFFakIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZ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TyxPQUFPLENBQUMsS0FBSyxDQUFDO29CQUNuQixVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLFNBQVMsR0FBRyxLQUFLO3dCQUNoQyxhQUFhLEVBQUUsYUFBYTtxQkFDN0I7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXJGVSxzQkFBc0I7a0hBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsaXBwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2xpcHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2xpcHBlck1lc3NhZ2VzIH0gZnJvbSAnLi4vbWVzc2FnZXMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlckF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgcHJpdmF0ZSBjbGlwcGVyU2VydmljZSA9IGluamVjdChDbGlwcGVyU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlID0gaW5qZWN0KEJyb2FkY2FzdFNlcnZpY2UpO1xyXG4gIHByaXZhdGUgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcclxuICBwcml2YXRlIGxhc3RFcnJvclRpbWU6IG51bWJlciA9IC0xO1xyXG5cclxuICBpbnRlcmNlcHQoXHJcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBpZiAocmVxdWVzdC51cmwuc3RhcnRzV2l0aCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkpKSB7XHJcbiAgICAgIHJlcXVlc3QgPSByZXF1ZXN0LmNsb25lKHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pO1xyXG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUodGhpcy5hZGRUb2tlblRvUmVxdWVzdChyZXF1ZXN0KSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xlYXJCdXN5KCk7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmXHJcbiAgICAgICAgICAgICAgIXJlcXVlc3QudXJsLmluY2x1ZGVzKFwiL2xvZ2luXCIpICYmXHJcbiAgICAgICAgICAgICAgZXJyb3Iuc3RhdHVzID09PSA0MDFcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXJyb3JUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGlmIChlcnJvclRpbWUgLSB0aGlzLmxhc3RFcnJvclRpbWUgPiA1MDAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5sYXN0RXJyb3JUaW1lID0gZXJyb3JUaW1lO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGludmFsaWRTZXNzaW9uID0gZXJyb3Iuc3RhdHVzID09IFwiNDAzXCI7XHJcbiAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFxyXG4gICAgICAgICAgICAgICAgXCI8cD5cIiArIChlcnJvci5lcnJvcj8ubWVzc2FnZSA/PyBlcnJvci5tZXNzYWdlID8/IFwiSW1wb3NzaWJpbGUgZXNlZ3VpcmUgbCdvcGVyYXppb25lIHJpY2hpZXN0YS5cIikucmVwbGFjZUFsbChcIlxcclxcblwiLCBcIjwvcD48cD5cIikgKyBcIjwvcD5cIixcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICBcIkVycm9yZSBpbiBDbGlwcGVyXCIsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkU2Vzc2lvbiA/IDUwMDAgOiAxNTAwMCkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoaW52YWxpZFNlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkxPR09VVCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSA0MDEgZXJyb3JcclxuICAgKiBAcGFyYW0gcmVxdWVzdCA6IHRoZSByZXF1ZXN0XHJcbiAgICogQHBhcmFtIG5leHQgOiB0aGUgaHR0cCBoYW5kbGVyXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGU0MDFFcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xyXG4gICAgaWYgKHRoaXMuY2xpcHBlclNlcnZpY2UubG9nZ2VkSW4oKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jbGlwcGVyU2VydmljZS5yZWZyZXNoKCkucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuYWRkVG9rZW5Ub1JlcXVlc3QocmVxdWVzdCkpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdG9rZW4gdG8gcmVxdWVzdFxyXG4gICAqIEBwYXJhbSByZXF1ZXN0IDogdGhlIHJlcXVlc3RcclxuICAgKiBAcGFyYW0gdG9rZW46IHRoZSB0b2tlbiBvciBudWxsIHRvIHVzZSBjdXJyZTNudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYWRkVG9rZW5Ub1JlcXVlc3QoXHJcbiAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxyXG4gICAgdG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogSHR0cFJlcXVlc3Q8YW55PiB7XHJcbiAgICBpZiAocmVxdWVzdC51cmwuc3RhcnRzV2l0aCh0aGlzLmNsaXBwZXJTZXJ2aWNlLnNlcnZpY2VVcmkpKSB7XHJcbiAgICAgIGlmICghdG9rZW4pIHRva2VuID0gdGhpcy5jbGlwcGVyU2VydmljZS5nZXRUb2tlbigpO1xyXG4gICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICBzZXRIZWFkZXJzOiB7XHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRva2VuLFxyXG4gICAgICAgICAgICAnbmdzdy1ieXBhc3MnOiAnbmdzdy1ieXBhc3MnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';
|
|
|
4
4
|
import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
5
5
|
import { of, throwError } from 'rxjs';
|
|
6
6
|
import { catchError, map } from 'rxjs/operators';
|
|
7
|
-
import { ClipperDashboard,
|
|
7
|
+
import { ClipperDashboard, ClipperQueryReferencesMode } from '../definitions';
|
|
8
8
|
import { ClipperMessages } from '../messages';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
export class ClipperService {
|
|
@@ -234,10 +234,7 @@ export class ClipperService {
|
|
|
234
234
|
* Get facets for a query
|
|
235
235
|
*/
|
|
236
236
|
queryFacets(params) {
|
|
237
|
-
return this.httpClient.post(
|
|
238
|
-
(params.models?.length === 1 && params.models[0] === ClipperModel.Coordinamento)
|
|
239
|
-
? this._serviceUri + '/documents/changes/facets'
|
|
240
|
-
: this._serviceUri + '/documents/facets', params);
|
|
237
|
+
return this.httpClient.post(this._serviceUri + '/documents/facets', params);
|
|
241
238
|
}
|
|
242
239
|
/**
|
|
243
240
|
* Update document state
|
|
@@ -550,4 +547,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
550
547
|
providedIn: 'root',
|
|
551
548
|
}]
|
|
552
549
|
}] });
|
|
553
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uL2NvbW1vbi9zZXJ2aWNlcy9jbGlwcGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQ00sZ0JBQWdCLEVBQ0EsV0FBVyxFQUN2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQStLLFlBQVksRUFBMkYsMEJBQTBCLEVBQWdPLE1BQU0sZ0JBQWdCLENBQUM7QUFDaGtCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBTTlDLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBS1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVoQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUd0QyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFJbEMsZUFBVSxHQUFxQixJQUFJLENBQUM7UUFZNUIsYUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsQyxjQUFTLEdBQUcsTUFBTSxDQUFVLEtB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Q0gsSUFBSSxDQUFDLFVBQVUsR0FBRywwQkFBMEIsRUFDNUMsTUFBTSxDQUNQLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEVBQVU7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixJQUFJLENBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyw0QkFBNEIsRUFDOUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ1gsQ0FBQztJQUNOLENBQUM7OEdBcHNCVSxjQUFjO2tIQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQXBpUmVzdWx0LCBCcm9hZGNhc3RTZXJ2aWNlLFxyXG4gIEZvbGRlclRyZWUsIE5hbWVWYWx1ZUl0ZW0sIFN5c3RlbVV0aWxzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBMb2dpbk9BdXRoVHlwZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWkub2F1dGgnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ2xpcHBlckRhc2hib2FyZCwgQ2xpcHBlckRhc2hib2FyZFJlc3VsdCwgQ2xpcHBlckRvY3VtZW50SW5mbywgQ2xpcHBlckRvY3VtZW50U3RydWN0dXJlLCBDbGlwcGVyRG9jdW1lbnRVcGRhdGVTdGF0ZVBhcmFtcywgQ2xpcHBlckV4cG9ydERvY3VtZW50c1BhcmFtcywgQ2xpcHBlckxvZ2luSW5mbywgQ2xpcHBlckxvZ2luUmVzdWx0LCBDbGlwcGVyTW9kZWwsIENsaXBwZXJNb2R1bGUsIENsaXBwZXJPVFBJbmZvLCBDbGlwcGVyUXVlcnlBcnNFdmVudHNQYXJhbXMsIENsaXBwZXJRdWVyeUFyc0V2ZW50c1Jlc3VsdCwgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUsIENsaXBwZXJSZWZlcmVuY2VzU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0LCBDbGlwcGVyU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoUmVzdWx0LCBDbGlwcGVyU2VuZERvY3VtZW50c0J5RW1haWxQYXJhbXMsIENsaXBwZXJUYXhvbm9teVBhcmFtcywgQ2xpcHBlclVzZXJMaW5rLCBDbGlwcGVyVXNlclNlYXJjaCwgQ2xpcHBlclVzZXJXb3JraW5nRG9jdW1lbnQgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XHJcbmltcG9ydCB7IENsaXBwZXJNZXNzYWdlcyB9IGZyb20gJy4uL21lc3NhZ2VzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uIHwgbnVsbDtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2UgPSBpbmplY3QoQnJvYWRjYXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfc2VydmljZVVyaTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IHNlcnZpY2VVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlVXJpO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2dpbkluZm86IENsaXBwZXJMb2dpbkluZm8gPSBudWxsO1xyXG4gIGdldCBsb2dpbkluZm8oKTogQ2xpcHBlckxvZ2luSW5mbyB7XHJcbiAgICBpZiAoIXRoaXMuX2xvZ2luSW5mbykge1xyXG4gICAgICBjb25zdCBsb2dpbkluZm8gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2xpcHBlcl9sb2dpbicpO1xyXG4gICAgICBpZiAobG9naW5JbmZvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMuX2xvZ2luSW5mbyA9IEpTT04ucGFyc2UobG9naW5JbmZvKSBhcyBDbGlwcGVyTG9naW5JbmZvO1xyXG4gICAgICAgIH0gY2F0Y2ggeyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9sb2dpbkluZm87XHJcbiAgfVxyXG4gIHB1YmxpYyByZWFkb25seSBsb2dnZWRJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2dpbmdJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90ID0gc2lnbmFsPENsaXBwZXJTZWFyY2hSZXN1bHQ+KG51bGwpO1xyXG4gIHB1YmxpYyByZWFkb25seSByZWZlcmVuY2VzU25hcHNob3QgPSBzaWduYWw8Q2xpcHBlclNlYXJjaFJlc3VsdD4obnVsbCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRhc2hib2FyZDogQ2xpcHBlckRhc2hib2FyZCA9IG5ldyBDbGlwcGVyRGFzaGJvYXJkKCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGJhZyA9IHNpZ25hbDxDbGlwcGVyRG9jdW1lbnRJbmZvW10+KFtdKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgYmFnVG90YWw6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFnKCkubGVuZ3RoO1xyXG4gIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNSUyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlVXJpIDogdGhlIHNlcnZpY2UgdXJpXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZykge1xyXG5cclxuICAgIC8vIENyZWF0ZSB1bmlxdWUgY2xpZW50IGlkXHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjbGlwcGVyX2NsaWVudF9pZCcpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjbGlwcGVyX2NsaWVudF9pZCcsIFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgICB0aGlzLl9zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgaWYgKCF0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uID0gdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IENsaXBwZXJNZXNzYWdlcy5MT0dJTl9DSEFOR0VEKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbihcclxuICAgICAgICAgICAgICBtZXNzYWdlLmRhdGEuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLm9hdXRoLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YS5vYXV0aEFjY2Vzc1Rva2VuKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSwgbnVsbCwgXCJFcnJvcmUgZGkgQ2xpcHBlclwiKTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ0Nvbm5lc3NvIGEgQ2xpcHBlcicsIDE1MDAsICdwb3dlcicpO1xyXG4gICAgICAgICAgICAgICAgICAvLyBMb2FkIGJhZ1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRCYWcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBDbGlwcGVyTWVzc2FnZXMuTE9HT1VUX0NPTVBMRVRFRCB8fFxyXG4gICAgICAgICAgbWVzc2FnZS5pZCA9PT0gQ2xpcHBlck1lc3NhZ2VzLkxPR0lOX0RJU0NPTk5FQ1RFRCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiPHA+XCIgKyByLm1lc3NhZ2UgKyBcIjwvcD48YnI+PGJyPjxocj48cCBjbGFzcz0nc21hbGwnPjxpPlBlciBlbGltaW5hcmUgbGEgY29uZmlndXJhemlvbmUgZGkgQ2xpcHBlciBhY2NlZGVyZSBhOjxicj48Yj5tZW51ID4gcGVyc29uYWxpenphID4gY29sbGVnYW1lbnRpPC9iPjwvaT48L3A+XCIsIG51bGwsIFwiRXJyb3JlIGRpIENsaXBwZXJcIik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnRGlzY29ubmVzc28gZGEgQ2xpcHBlcicsIDE1MDAsICdwb3dlcl9vZmYnKTtcclxuICAgICAgICAgICAgICAgIC8vIEVtcHR5IGJhZ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYWcuc2V0KFtdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbHVhdGUgY3VycmVudCBzZXNzaW9uIHN0b3JhZ2UgaW4gY2FzZSBvZiBwYWdlIHJlZnJlc2ggKEY1KVxyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluKCkgJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbi5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0IEpXVCB0b2tlbnNcclxuICogQHBhcmFtIHZhbHVlIDogdGhlIGxvZ2luIHJlc3VsdFxyXG4gKi9cclxuICBwcml2YXRlIHNldFRva2VuKHZhbHVlOiBDbGlwcGVyTG9naW5SZXN1bHQpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NsaXBwZXJfand0JywgdmFsdWUudG9rZW4pO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2xpcHBlcl9qd3RfcmVmcmVzaCcsIHZhbHVlLnJlZnJlc2hUb2tlbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBKV1QgdG9rZW5cclxuICAgKiBAcGFyYW0gcmVmcmVzaDogdHJ1ZSB0byBnZXQgdGhlIHJlZnJlc2ggdG9rZW4uIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICovXHJcbiAgZ2V0VG9rZW4ocmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIGxldCB0b2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocmVmcmVzaCA/ICdjbGlwcGVyX2p3dF9yZWZyZXNoJyA6ICdjbGlwcGVyX2p3dCcpO1xyXG4gICAgaWYgKHRva2VuICYmIHRva2VuWzBdID09PSAnXCInKSB7XHJcbiAgICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9rZW4gPz8gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGxvZ2luICAgXHJcbiAgICogQHBhcmFtIGVtYWlsOiB0aGUgb3B0aW9hbmwgZW1haWwgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcm1hIHBhc3N3b3JkOiB0aGUgb3B0aW9uYWwgcGFzc3dvcmQgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcmFtIHJlbWVtYmVyOiByZW1lbWJlciBjcmVkZW50aWFscyBcclxuICAgKiBAcGFyYW0gb2F1dGg6IHRoZSBvcHRpb25hbCBvcGVuIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRlZFxyXG4gICAqIEBwYXJhbSBvYXV0aEFjY2Vzc1Rva2VuOiB0aGUgb3B0aW9uYWwgT0F1dGgyIGFjY2VzcyB0b2tlblxyXG4gICAqIEByZXR1cm5zOiB0aGUgbG9naW4gcmVzdWx0XHJcbiAgICovXHJcbiAgbG9naW4oZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gZmFsc2UsXHJcbiAgICBvYXV0aDogTG9naW5PQXV0aFR5cGUgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyTG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbjInLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXI6IG9hdXRoID8gbnVsbCA6IGVtYWlsLFxyXG4gICAgICAgICAgcGFzc3dvcmQ6IG9hdXRoID8gbnVsbCA6IHBhc3N3b3JkLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpcHBlcl9jbGllbnRfaWRcIiksXHJcbiAgICAgICAgICBPQVVUSDogb2F1dGhcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6XHJcbiAgICAgICAgICAgICFvYXV0aFxyXG4gICAgICAgICAgICAgID8gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgICA6IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBvYXV0aEFjY2Vzc1Rva2VuKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9sb2dpbicpO1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBtYXAociA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dpbmdJbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAvLyBTdG9yZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgbG9naW5JbmZvOiBDbGlwcGVyTG9naW5JbmZvID0ge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHIudmFsdWUuY29udGV4dCxcclxuICAgICAgICAgICAgICB1c2VyU2V0dGluZ3M6IHIudmFsdWUuc2V0dGluZ3MsXHJcbiAgICAgICAgICAgICAgT0FVVEg6IG9hdXRoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFvYXV0aCkge1xyXG4gICAgICAgICAgICAgIGxvZ2luSW5mby51c2VyQ3JlZGVudGlhbHMgPVxyXG4gICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuY2lwaGVyKFxyXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICByZW1lbWJlcjogcmVtZW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgIH0pLCBsb2dpbkluZm8uY29udGV4dC51c2VySWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBpbmZvXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICdjbGlwcGVyX2xvZ2luJyxcclxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShsb2dpbkluZm8pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9sb2dpbkluZm8gPSBsb2dpbkluZm87XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlZEluLnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBsb2dvdXRcclxuICAgKi9cclxuICBsb2dvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8YW55Pih0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dvdXQnLCB7fSkucGlwZShcclxuICAgICAgbWFwKHIgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm4gclxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoX2UpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFJlc2V0IGxvZ2luIHJlZnJlc2ggdGltZXIgYW5kIGxvZ2luIHN0YXRlXHJcbiAqL1xyXG4gIHJlc2V0KCkgeyAgIFxyXG4gICAgLy8gQ2xlYXIgbG9naW4gaW5mb1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gbnVsbDtcclxuXHJcbiAgICAvLyBMb2dnZWQgb3V0XHJcbiAgICB0aGlzLmxvZ2dlZEluLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBsb2dpbiBkYXRhXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICAvLyBDbGVhciBsb2NhbCBzdG9yYWdlXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdjbGlwcGVyX2p3dCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9qd3RfcmVmcmVzaCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9vYXV0aCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NsaXBwZXJfbG9naW4nKTtcclxuXHJcbiAgICAvLyBSZXNldCBsb2dpblxyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBQZXJmb3JtIHRva2VuIHJlZnJlc2hcclxuICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyTG9naW5SZXN1bHQ+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvcmVmcmVzaDIvP3Rva2VuPScgKyB0aGlzLmdldFRva2VuKHRydWUpXHJcbiAgICApLnBpcGUobWFwKHIgPT4ge1xyXG4gICAgICAvLyBVcGRhdGUgdG9rZW5cclxuICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogR2V0IGEgbmV3IG9uZSB0aW1lIHBhc3N3b3JkXHJcbiAgKiBAcGFyYW0gaWQ6IHRoZSBvcHRpb25hbCByZXBvc2l0b3J5IGlkIFxyXG4gICovXHJcbiAgbmV3T1RQKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyT1RQSW5mbz4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9vdHAvbmV3Lz9pZD0nICsgaWQsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBBcnMgZXZlbnRzIGNhbGVuZGFyXHJcbiAgICovXHJcbiAgZXZlbnRzKHBhcmFtczogQ2xpcHBlclF1ZXJ5QXJzRXZlbnRzUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJRdWVyeUFyc0V2ZW50c1Jlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hcnMvZXZlbnRzJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJ5IGRvY3VtZW50c1xyXG4gICAqL1xyXG4gIHF1ZXJ5KHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoUmVzdWx0Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cycsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmYWNldHMgZm9yIGEgcXVlcnlcclxuICAgKi9cclxuICBxdWVyeUZhY2V0cyhwYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdD4+KFxyXG4gICAgICBwYXJhbXMubW9kZWwgPT09IENsaXBwZXJNb2RlbC5Db29yZGluYW1lbnRvIHx8XHJcbiAgICAgICAgKHBhcmFtcy5tb2RlbHM/Lmxlbmd0aCA9PT0gMSAmJiBwYXJhbXMubW9kZWxzWzBdID09PSBDbGlwcGVyTW9kZWwuQ29vcmRpbmFtZW50bylcclxuICAgICAgICA/IHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9jaGFuZ2VzL2ZhY2V0cydcclxuICAgICAgICA6IHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9mYWNldHMnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiBVcGRhdGUgZG9jdW1lbnQgc3RhdGVcclxuICAqL1xyXG4gIHVwZGF0ZVN0YXRlKHBhcmFtczogQ2xpcHBlckRvY3VtZW50VXBkYXRlU3RhdGVQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9zdGF0ZS91cGRhdGUnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBvcnQgYSBkb2N1bWVudCBpbiBwZGYgZm9ybWF0XHJcbiAgICovXHJcbiAgZXhwb3J0UGRmKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvZXhwb3J0LycgKyBpZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvKipcclxuICogRXhwb3J0IGRvY3VtZW50IGxpc3QgKHF1ZXJ5IG9yIHNlbGVjdGVkIGl0ZW1zKSBvciBleHBvcnQgZGVhZGxpbmVzIGFzIGljc1xyXG4gKi9cclxuICBleHBvcnQocGFyYW1zOiBDbGlwcGVyRXhwb3J0RG9jdW1lbnRzUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9leHBvcnQnLFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmQgZG9jdW1lbnRzIGxpbmsgYnkgZW1haWxcclxuICAgKi9cclxuICBzZW5kVG8ocGFyYW1zOiBDbGlwcGVyU2VuZERvY3VtZW50c0J5RW1haWxQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9zZW5kJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIHBhZ2UgdGhlIGZ1bGwgZG9jdW1lbnQgcmVwb3J0XHJcbiAgICovXHJcbiAgcmVwb3J0KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvcmVwb3J0LycgKyBpZCxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRvY3VtZW50IGNvbW1lbnRcclxuICAgKi9cclxuICBjb21tZW50KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxzdHJpbmc+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2NvbW1lbnQvJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRvY3VtZW50IGluZm9cclxuICAgKi9cclxuICBpbmZvKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyRG9jdW1lbnRJbmZvPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9pbmZvLycgKyBpZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBkb2N1bWVudCBzdHJ1Y3R1cmVcclxuICAgKi9cclxuICBpbmRleChpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8Q2xpcHBlckRvY3VtZW50U3RydWN0dXJlPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9zdHJ1Y3R1cmUvJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRvY3VtZW50IGxhc3QgdXBkYXRlXHJcbiAgICovXHJcbiAgbGFzdFVwZGF0ZShpZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8c3RyaW5nPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9sYXN0LXVwZGF0ZS8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWVyeSBkb2N1bWVudCByZWZlcmVuY2VzXHJcbiAgICovXHJcbiAgcmVmZXJlbmNlcyhwYXJhbXM6IENsaXBwZXJSZWZlcmVuY2VzU2VhcmNoUGFyYW1zKSB7XHJcbiAgICBsZXQgbW9kZSA9IHBhcmFtcy5tb2RlO1xyXG4gICAgaWYgKCFtb2RlKSBtb2RlID0gQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luO1xyXG4gICAgc3dpdGNoIChtb2RlKSB7XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc0luOlxyXG4gICAgICBjYXNlIENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNPdXQ6XHJcbiAgICAgICAgcGFyYW1zLm1vZGUgPSBtb2RlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaFJlc3VsdD4+KFxyXG4gICAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3JlZmVyZW5jZXMnLFxyXG4gICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5DaGFuZ2VzSW46XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuQ2hhbmdlc091dDpcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJTZWFyY2hSZXN1bHQ+PihcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9jaGFuZ2VzJyxcclxuICAgICAgICAgIHBhcmFtc1xyXG4gICAgICAgICk7XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuSnVyaXM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoUmVzdWx0Pj4oXHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvanVyaXMnLFxyXG4gICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmYWNldHMgZm9yIGEgZG9jdW1lbnQgcmVmZXJlbmNlc1xyXG4gICAqL1xyXG4gIHJlZmVyZW5jZXNGYWNldHMocGFyYW1zOiBDbGlwcGVyUmVmZXJlbmNlc1NlYXJjaFBhcmFtcykge1xyXG4gICAgbGV0IG1vZGUgPSBwYXJhbXMubW9kZSA/PyBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW47XHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW46XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc091dDpcclxuICAgICAgICBwYXJhbXMubW9kZSA9IG1vZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0Pj4oXHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvcmVmZXJlbmNlcy9mYWNldHMnLFxyXG4gICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5DaGFuZ2VzSW46XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuQ2hhbmdlc091dDpcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQ+PihcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9jaGFuZ2VzL2ZhY2V0cycsXHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLkp1cmlzOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdD4+KFxyXG4gICAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2p1cmlzL2ZhY2V0cycsXHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICApO1xyXG4gICAgICBkZWZhdWx0OiByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBkb2N1bWVudCBqdXJpcyBhcnRpY2xlc1xyXG4gICAqL1xyXG4gIGp1cmlzQXJ0aWNsZXMocGFyYW1zOiBDbGlwcGVyU2VhcmNoUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJTZWFyY2hSZXN1bHQ+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2p1cmlzL2FydGljbGVzJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBHZXQgY2FsZW5kYXIgc25hcHNob3QgYmFzZWQgb24gdGhlIGRlYWRsaW5lc1xyXG4gICovXHJcbiAgY2FsZW5kYXJTbmFwc2hvdChwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2NhbGVuZGFyL3NuYXBzaG90JyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIHRoZSB0YXhvbm9teVxyXG4gICAqL1xyXG4gIGdldFRheG9ub215KHBhcmFtczogQ2xpcHBlclRheG9ub215UGFyYW1zIHwgbnVsbCA9IG51bGwpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Rm9sZGVyVHJlZT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy90YXhvbm9teScsXHJcbiAgICAgIHBhcmFtcyA/PyB7IG1vZGVsOiAwLCBjb3VudEl0ZW1zOiBmYWxzZSB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgdG9waWNzXHJcbiAgICovXHJcbiAgZ2V0VG9waWNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PE5hbWVWYWx1ZUl0ZW08c3RyaW5nPltdPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL3RvcGljcydcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSB0YWdzXHJcbiAgICovXHJcbiAgZ2V0VGFncygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxOYW1lVmFsdWVJdGVtPHN0cmluZz5bXT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy90YWdzJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICAvLy9cclxuICAvLyBEQVNIQk9BUkRcclxuICAvLy9cclxuICAvKipcclxuICAqIFJldHJpZXZlIGN1cnJlbnQgZGFzaGJvYXJkXHJcbiAgKi9cclxuICBsb2FkRGFzaGJvYXJkKCkge1xyXG4gICAgdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyRGFzaGJvYXJkUmVzdWx0Pj4oXHJcbiAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvYWNjb3VudC9kYXNoYm9hcmQnLFxyXG4gICAgICAgIHsgcmVmcmVzaGluZzogdHJ1ZSB9XHJcbiAgICAgICkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmRvY3VtZW50VXBkYXRlcyA9IHIudmFsdWUuZG9jdW1lbnRVcGRhdGVzO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuZXhwaXJlZERlYWRsaW5lcyA9IHIudmFsdWUuZXhwaXJlZERlYWRsaW5lcztcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmV4cGlyaW5nRGVhZGxpbmVzID0gci52YWx1ZS5leHBpcmluZ0RlYWRsaW5lcztcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmlzVHJpYWwgPSByLnZhbHVlLmlzVHJpYWw7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZC5pdGVtcy5zZXQoci52YWx1ZS5pdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoQ2xpcHBlck1lc3NhZ2VzLkNPTU1BTkRfREFTSEJPQVJEX1VQREFURUQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFVwZGF0ZSB1bnJlYWQgaXRlbXNcclxuICAqIEBwYXJhbSBtb2R1bGUgOiB0aGUgbW9kdWxlXHJcbiAgKiBAcGFyYW0gaW5jcmVtZW50IDogdGhlIGluY3JlbWVudCAoY2FuIGJlIG5lZ2F0aXZlKVxyXG4gICovXHJcbiAgdXBkYXRlVW5yZWFkSXRlbXMobW9kdWxlOiBDbGlwcGVyTW9kdWxlLCBpbmNyZW1lbnQ6IG51bWJlcikge1xyXG4gICAgY29uc29sZS5sb2coJ21vZHVsZTonICsgbW9kdWxlKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkLnVwZGF0ZVVucmVhZEl0ZW1zKG1vZHVsZSwgaW5jcmVtZW50KTtcclxuICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuQ09NTUFORF9EQVNIQk9BUkRfVVBEQVRFRCk7XHJcbiAgfVxyXG5cclxuICAvLy9cclxuICAvLyBMSU5LU1xyXG4gIC8vL1xyXG5cclxuICAvKipcclxuICAqIFNhdmUgYSB1c2VyIGxpbmtcclxuICAqIEBwYXJhbSBpdGVtOiB0aGUgdXNlciBsaW5rXHJcbiAgKi9cclxuICBzYXZlTGluayhpdGVtOiBDbGlwcGVyVXNlckxpbmspIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Ym9vbGVhbj4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hY2NvdW50L2xpbmtzL3NhdmUnLFxyXG4gICAgICBpdGVtXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVsZXRlIGEgdXNlciBsaW5rXHJcbiAgICogQHBhcmFtIGl0ZW06IHRoZSB1c2VyIGxpbmtcclxuICAgKi9cclxuICBkZWxldGVMaW5rKGl0ZW06IENsaXBwZXJVc2VyTGluaykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxib29sZWFuPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2FjY291bnQvbGlua3MvZGVsZXRlJyxcclxuICAgICAgaXRlbVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICAvLy9cclxuICAvLyBCQUcgLSBXT1JLSU5HIERPQ1VNRU5UU1xyXG4gIC8vL1xyXG5cclxuICAvKipcclxuICAgKiBMb2FkIHdvcmtpbmcgZG9jdW1lbnRzXHJcbiAgICovXHJcbiAgbG9hZEJhZygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLmdldDxBcGlSZXN1bHQ8Q2xpcHBlclVzZXJXb3JraW5nRG9jdW1lbnRbXT4+KFxyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3dvcmtpbmcnXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICByID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHIudmFsdWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpdGVtczogQ2xpcHBlckRvY3VtZW50SW5mb1tdID0gW107XHJcbiAgICAgICAgICAgICAgci52YWx1ZS5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG4uZG9jdW1lbnREZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SW5mbyA9IEpTT04ucGFyc2Uobi5kb2N1bWVudERlc2NyaXB0b3IpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnRJbmZvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudElkID0gZG9jdW1lbnRJbmZvLkRvY3VtZW50SWQgfHwgZG9jdW1lbnRJbmZvLklkO1xyXG4gICAgICAgICAgICAgICAgICAgIG4udGl0bGUxID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/PyBkb2N1bWVudEluZm8uVGl0bGUyO1xyXG4gICAgICAgICAgICAgICAgICAgIG4udGl0bGUyID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/IGRvY3VtZW50SW5mby5UaXRsZTIgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIG4uZG9jdW1lbnREZXNjcmlwdG9yID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaChuKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLmJhZy5zZXQoaXRlbXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgb25lIG9yIG1vcmUgd29ya2luZyBkb2N1bWVudFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkcyA6IHRoZSBkb2N1bWVudCBpZHMgdG8gYWRkXHJcbiAgICovXHJcbiAgYWRkVG9CYWcoZG9jdW1lbnRJZHM6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyVXNlcldvcmtpbmdEb2N1bWVudFtdPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZy9hZGQnLFxyXG4gICAgICAgIHsgZG9jdW1lbnRJZHM6IGRvY3VtZW50SWRzIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHIudmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3SXRlbXM6IENsaXBwZXJEb2N1bWVudEluZm9bXSA9IFtdO1xyXG4gICAgICAgICAgICByLnZhbHVlLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKG4uZG9jdW1lbnREZXNjcmlwdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudEluZm8gPSBKU09OLnBhcnNlKG4uZG9jdW1lbnREZXNjcmlwdG9yKTtcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudElkID0gZG9jdW1lbnRJbmZvLkRvY3VtZW50SWQgfHwgZG9jdW1lbnRJbmZvLklkO1xyXG4gICAgICAgICAgICAgICAgICBuLnRpdGxlMSA9IGRvY3VtZW50SW5mby5UaXRsZTEgPz8gZG9jdW1lbnRJbmZvLlRpdGxlMjtcclxuICAgICAgICAgICAgICAgICAgbi50aXRsZTIgPSBkb2N1bWVudEluZm8uVGl0bGUxID8gZG9jdW1lbnRJbmZvLlRpdGxlMiA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBuLmRvY3VtZW50RGVzY3JpcHRvciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBuZXdJdGVtcy5wdXNoKG4pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmIChuZXdJdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5iYWcudXBkYXRlKHZhbHVlcyA9PiBbLi4udmFsdWVzLCAuLi5uZXdJdGVtc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIG9uZSB3b3JraW5nIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWQgOiB0aGUgZG9jdW1lbnQgaWRcclxuICAgKi9cclxuICByZW1vdmVGcm9tQmFnKGRvY3VtZW50SWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZy9kZWxldGUnLFxyXG4gICAgICAgIHsgZG9jdW1lbnRJZHM6IFtkb2N1bWVudElkXSB9XHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLmJhZygpLmZpbmRJbmRleChuID0+IG4uZG9jdW1lbnRJZCA9PT0gZG9jdW1lbnRJZCk7XHJcbiAgICAgICAgICBpZiAocCAhPT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5iYWcudXBkYXRlKHZhbHVlcyA9PiB7XHJcbiAgICAgICAgICAgICAgdmFsdWVzLnNwbGljZShwLCAxKTtcclxuICAgICAgICAgICAgICByZXR1cm4gWy4uLnZhbHVlc107XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ09wZXJhemlvbmUgY29tcGxldGF0YSBjb24gc3VjY2Vzc28uJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGFsbCB3b3JraW5nIGRvY3VtZW50c1xyXG4gICAqL1xyXG4gIGNsZWFyQmFnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZy9kZWxldGUnLFxyXG4gICAgICAgIHsgZGVsZXRlQWxsOiB0cnVlIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5iYWcuc2V0KFtdKTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8vXHJcbiAgLy8gV09SS0lORyBTRUFSQ0hFU1xyXG4gIC8vL1xyXG5cclxuICAvKipcclxuICAgKiBMb2FkIHdvcmtpbmcgc2VhcmNoZXNcclxuICAgKiBAcGFyYW06IG1vZHVsZTogdGhlIG1vZHVsZSB0byBsb2FkIHNlYXJjaGVzIGZvclxyXG4gICAqL1xyXG4gIGxvYWRTZWFyY2hlcyhtb2R1bGU6IENsaXBwZXJNb2R1bGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLmdldDxBcGlSZXN1bHQ8Q2xpcHBlclVzZXJTZWFyY2hbXT4+KFxyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3NlYXJjaGVzLz9tb2R1bGU9JyArIG1vZHVsZVxyXG4gICAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlIGEgd29ya2luZyBzZWFyY2hcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZHMgOiB0aGUgZG9jdW1lbnQgaWRzIHRvIGFkZFxyXG4gICAqL1xyXG4gIHNhdmVTZWFyY2gocGFyYW1zOiBDbGlwcGVyVXNlclNlYXJjaCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclVzZXJTZWFyY2g+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9zZWFyY2hlcy9zYXZlJyxcclxuICAgICAgICBwYXJhbXNcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSBvbmUgd29ya2luZyBzZWFyY2hcclxuICAgKiBAcGFyYW0gaWQgOiB0aGUgaWQgdG8gcmVtb3ZlXHJcbiAgICovXHJcbiAgZGVsZXRlU2VhcmNoKGlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PG51bWJlcj4+KFxyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3NlYXJjaGVzL2RlbGV0ZScsXHJcbiAgICAgICAgeyBpZDogaWQgfVxyXG4gICAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
550
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIuY29tbW9uL2NvbW1vbi9zZXJ2aWNlcy9jbGlwcGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFxQixRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQ00sZ0JBQWdCLEVBQ0EsV0FBVyxFQUN2QyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQWdCLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQXdRLDBCQUEwQixFQUFnTyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xqQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU05QyxNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUtVLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFaEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFHdEMsZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO1FBSWxDLGVBQVUsR0FBcUIsSUFBSSxDQUFDO1FBWTVCLGFBQVEsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuQyxhQUFRLEdBQUcsTUFBTSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUM3Qyx1QkFBa0IsR0FBRyxNQUFNLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBQ3ZELGNBQVMsR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3JELFFBQUcsR0FBRyxNQUFNLENBQXdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBbUIsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2RCxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDYSxZQUFPLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7S0FncUJyRDtJQXpyQkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDeEQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBcUIsQ0FBQztnQkFDOUQsQ0FBQztnQkFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQWFELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FDUixVQUFrQjtRQUVsQiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQy9DLFlBQVksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELGFBQWE7UUFDYixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUU5QixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6RixJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUNqRCxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxLQUFLLENBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUNyQixJQUFJLEVBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQzNDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztnQ0FDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO2lDQUM1RCxDQUFDO2dDQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQ0FDOUQsV0FBVztnQ0FDWCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ2pCLENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNWLENBQUM7cUJBQU0sSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLGVBQWUsQ0FBQyxnQkFBZ0I7b0JBQ3hELE9BQU8sQ0FBQyxFQUFFLEtBQUssZUFBZSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3BELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7d0JBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7NEJBQzFCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0NBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsaUpBQWlKLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7NEJBQzdOLENBQUM7aUNBQU0sQ0FBQztnQ0FDTixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0NBQ3RFLFlBQVk7Z0NBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ25CLENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsZ0VBQWdFO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDeEMsYUFBYTtZQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztLQUdDO0lBQ08sUUFBUSxDQUFDLEtBQXlCO1FBQ3hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxjQUFjLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLFVBQW1CLEtBQUs7UUFDL0IsSUFBSSxLQUFLLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwRixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFFBQW1DLElBQUksRUFDM0MsV0FBc0MsSUFBSSxFQUMxQyxXQUF1QyxLQUFLLEVBQzVDLFFBQTJDLElBQUksRUFDL0MsbUJBQThDLElBQUk7UUFDbEQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixJQUFJLENBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQzVCO1lBQ0UsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUNqQyxRQUFRLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztZQUNuRCxLQUFLLEVBQUUsS0FBSztTQUNiLEVBQ0Q7WUFDRSxPQUFPLEVBQ0wsQ0FBQyxLQUFLO2dCQUNKLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRTtnQkFDbkIsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFO3FCQUNoQixHQUFHLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDO1NBQzlDLENBQUM7YUFDSCxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN6QyxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZCxxQkFBcUI7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FBcUI7b0JBQ2xDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87b0JBQ3hCLFlBQVksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7b0JBQzlCLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNYLFNBQVMsQ0FBQyxlQUFlO3dCQUN2QixXQUFXLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDOzRCQUNiLEtBQUssRUFBRSxLQUFLOzRCQUNaLFFBQVEsRUFBRSxRQUFROzRCQUNsQixRQUFRLEVBQUUsUUFBUTt5QkFDbkIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7Z0JBRUQsY0FBYztnQkFDZCxZQUFZLENBQUMsT0FBTyxDQUNsQixlQUFlLEVBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQztnQkFFRixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFFNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFMUIsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFNLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDckUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ04sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztLQUVDO0lBQ0QsS0FBSztRQUNILG1CQUFtQjtRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUV2QixhQUFhO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILHNCQUFzQjtRQUN0QixjQUFjLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRCxjQUFjLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLFlBQVksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFekMsY0FBYztRQUNkLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFHRDs7S0FFQztJQUNELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQzdELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLGVBQWU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7TUFHRTtJQUNGLE1BQU0sQ0FBQyxFQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLEdBQUcsRUFBRSxDQUN4QyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQW1DO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxFQUNoQyxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUEyQjtRQUMvQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLFlBQVksRUFDL0IsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXLENBQUMsTUFBMkI7UUFDckMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsRUFDdEMsTUFBTSxDQUNULENBQUM7SUFDSixDQUFDO0lBR0Q7O01BRUU7SUFDRixXQUFXLENBQUMsTUFBd0M7UUFDbEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsRUFDNUMsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsRUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixHQUFHLEVBQUUsRUFDNUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQ3pCLENBQUM7SUFDSixDQUFDO0lBSUQ7O0tBRUM7SUFDRCxNQUFNLENBQUMsTUFBb0M7UUFDekMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsRUFDdEMsTUFBTSxFQUNOLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQXlDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLEVBQ3BDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixHQUFHLEVBQUUsRUFDNUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQ3pCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixHQUFHLEVBQUUsQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsR0FBRyxFQUFFLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsRUFBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLEdBQUcsRUFBRSxDQUNoRCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsR0FBRyxFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxVQUFVLENBQUMsTUFBcUM7UUFDOUMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSTtZQUFFLElBQUksR0FBRywwQkFBMEIsQ0FBQyxZQUFZLENBQUM7UUFDMUQsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssMEJBQTBCLENBQUMsWUFBWSxDQUFDO1lBQzdDLEtBQUssMEJBQTBCLENBQUMsYUFBYTtnQkFDM0MsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsdUJBQXVCLEVBQzFDLE1BQU0sQ0FDUCxDQUFDO1lBQ0osS0FBSywwQkFBMEIsQ0FBQyxTQUFTLENBQUM7WUFDMUMsS0FBSywwQkFBMEIsQ0FBQyxVQUFVO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixFQUN2QyxNQUFNLENBQ1AsQ0FBQztZQUNKLEtBQUssMEJBQTBCLENBQUMsS0FBSztnQkFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsRUFDckMsTUFBTSxDQUNQLENBQUM7WUFDSjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsTUFBcUM7UUFDcEQsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSwwQkFBMEIsQ0FBQyxZQUFZLENBQUM7UUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssMEJBQTBCLENBQUMsWUFBWSxDQUFDO1lBQzdDLEtBQUssMEJBQTBCLENBQUMsYUFBYTtnQkFDM0MsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsOEJBQThCLEVBQ2pELE1BQU0sQ0FDUCxDQUFDO1lBQ0osS0FBSywwQkFBMEIsQ0FBQyxTQUFTLENBQUM7WUFDMUMsS0FBSywwQkFBMEIsQ0FBQyxVQUFVO2dCQUN4QyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLDJCQUEyQixFQUM5QyxNQUFNLENBQ1AsQ0FBQztZQUNKLEtBQUssMEJBQTBCLENBQUMsS0FBSztnQkFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFBeUIsRUFDNUMsTUFBTSxDQUNQLENBQUM7WUFDSixPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLE1BQTJCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsMkJBQTJCLEVBQzlDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOztNQUVFO0lBQ0YsZ0JBQWdCLENBQUMsTUFBVztRQUMxQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLDhCQUE4QixFQUNqRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxTQUF1QyxJQUFJO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxFQUM5QixNQUFNLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FDN0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FDM0IsQ0FBQztJQUNKLENBQUM7SUFHRCxHQUFHO0lBQ0gsWUFBWTtJQUNaLEdBQUc7SUFDSDs7TUFFRTtJQUNGLGFBQWE7UUFDWCxJQUFJLENBQUMsVUFBVTthQUNaLElBQUksQ0FDSCxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixFQUN2QyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FDckIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2dCQUMzRCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUMvRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7TUFJRTtJQUNGLGlCQUFpQixDQUFDLE1BQXFCLEVBQUUsU0FBaUI7UUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsR0FBRztJQUNILFFBQVE7SUFDUixHQUFHO0lBRUg7OztNQUdFO0lBQ0YsUUFBUSxDQUFDLElBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxJQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLHVCQUF1QixFQUMxQyxJQUFJLENBQ0wsQ0FBQztJQUNKLENBQUM7SUFHRCxHQUFHO0lBQ0gsMEJBQTBCO0lBQzFCLEdBQUc7SUFFSDs7T0FFRztJQUNILE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLEdBQUcsQ0FDRixJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUN2QzthQUNBLFNBQVMsQ0FDUixDQUFDLENBQUMsRUFBRTtZQUNGLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDWixNQUFNLEtBQUssR0FBMEIsRUFBRSxDQUFDO29CQUN4QyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDbEIsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzs0QkFDekIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQ0FDakIsQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVSxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0NBQzFELENBQUMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDO2dDQUN0RCxDQUFDLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs0QkFDOUQsQ0FBQzs0QkFDRCxDQUFDLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDOzRCQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoQixDQUFDO29CQUNILENBQUMsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxXQUFxQjtRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsVUFBVSxHQUFHLHdCQUF3QixFQUMxQyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FDN0I7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1osTUFBTSxRQUFRLEdBQTBCLEVBQUUsQ0FBQztvQkFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7NEJBQ3pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7NEJBQ3RELElBQUksWUFBWSxFQUFFLENBQUM7Z0NBQ2pCLENBQUMsQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsRUFBRSxDQUFDO2dDQUMxRCxDQUFDLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQztnQ0FDdEQsQ0FBQyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7NEJBQzlELENBQUM7NEJBQ0QsQ0FBQyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQzs0QkFDNUIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbkIsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQ3RELENBQUM7b0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDbEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsVUFBa0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVTthQUNuQixJQUFJLENBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRywyQkFBMkIsRUFDN0MsRUFBRSxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUM5QjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxVQUFVLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ3BCLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO29CQUNyQixDQUFDLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsSUFBSSxDQUNILElBQUksQ0FBQyxVQUFVLEdBQUcsMkJBQTJCLEVBQzdDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUNwQjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsR0FBRztJQUNILG1CQUFtQjtJQUNuQixHQUFHO0lBRUg7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLE1BQXFCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFVBQVU7YUFDbkIsR0FBRyxDQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsOEJBQThCLEdBQUcsTUFBTSxDQUMxRCxDQUFBO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxNQUF5QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsVUFBVSxHQUFHLDBCQUEwQixFQUM1QyxNQUFNLENBQ1AsQ0FBQztJQUNOLENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZLENBQUMsRUFBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxVQUFVO2FBQ25CLElBQUksQ0FDSCxJQUFJLENBQUMsVUFBVSxHQUFHLDRCQUE0QixFQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDWCxDQUFDO0lBQ04sQ0FBQzs4R0Fqc0JVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgU2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBcGlSZXN1bHQsIEJyb2FkY2FzdFNlcnZpY2UsXHJcbiAgRm9sZGVyVHJlZSwgTmFtZVZhbHVlSXRlbSwgU3lzdGVtVXRpbHNcclxufSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmltcG9ydCB7IExvZ2luT0F1dGhUeXBlIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aS5vYXV0aCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDbGlwcGVyRGFzaGJvYXJkLCBDbGlwcGVyRGFzaGJvYXJkUmVzdWx0LCBDbGlwcGVyRG9jdW1lbnRJbmZvLCBDbGlwcGVyRG9jdW1lbnRTdHJ1Y3R1cmUsIENsaXBwZXJEb2N1bWVudFVwZGF0ZVN0YXRlUGFyYW1zLCBDbGlwcGVyRXhwb3J0RG9jdW1lbnRzUGFyYW1zLCBDbGlwcGVyTG9naW5JbmZvLCBDbGlwcGVyTG9naW5SZXN1bHQsIENsaXBwZXJNb2R1bGUsIENsaXBwZXJPVFBJbmZvLCBDbGlwcGVyUXVlcnlBcnNFdmVudHNQYXJhbXMsIENsaXBwZXJRdWVyeUFyc0V2ZW50c1Jlc3VsdCwgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUsIENsaXBwZXJSZWZlcmVuY2VzU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0LCBDbGlwcGVyU2VhcmNoUGFyYW1zLCBDbGlwcGVyU2VhcmNoUmVzdWx0LCBDbGlwcGVyU2VuZERvY3VtZW50c0J5RW1haWxQYXJhbXMsIENsaXBwZXJUYXhvbm9teVBhcmFtcywgQ2xpcHBlclVzZXJMaW5rLCBDbGlwcGVyVXNlclNlYXJjaCwgQ2xpcHBlclVzZXJXb3JraW5nRG9jdW1lbnQgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XHJcbmltcG9ydCB7IENsaXBwZXJNZXNzYWdlcyB9IGZyb20gJy4uL21lc3NhZ2VzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudCk7XHJcbiAgcHJpdmF0ZSBicm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uIHwgbnVsbDtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2UgPSBpbmplY3QoQnJvYWRjYXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfc2VydmljZVVyaTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IHNlcnZpY2VVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlVXJpO1xyXG4gIH1cclxuICBwcml2YXRlIF9sb2dpbkluZm86IENsaXBwZXJMb2dpbkluZm8gPSBudWxsO1xyXG4gIGdldCBsb2dpbkluZm8oKTogQ2xpcHBlckxvZ2luSW5mbyB7XHJcbiAgICBpZiAoIXRoaXMuX2xvZ2luSW5mbykge1xyXG4gICAgICBjb25zdCBsb2dpbkluZm8gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2xpcHBlcl9sb2dpbicpO1xyXG4gICAgICBpZiAobG9naW5JbmZvKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHRoaXMuX2xvZ2luSW5mbyA9IEpTT04ucGFyc2UobG9naW5JbmZvKSBhcyBDbGlwcGVyTG9naW5JbmZvO1xyXG4gICAgICAgIH0gY2F0Y2ggeyB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9sb2dpbkluZm87XHJcbiAgfVxyXG4gIHB1YmxpYyByZWFkb25seSBsb2dnZWRJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2dpbmdJbiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHNuYXBzaG90ID0gc2lnbmFsPENsaXBwZXJTZWFyY2hSZXN1bHQ+KG51bGwpO1xyXG4gIHB1YmxpYyByZWFkb25seSByZWZlcmVuY2VzU25hcHNob3QgPSBzaWduYWw8Q2xpcHBlclNlYXJjaFJlc3VsdD4obnVsbCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRhc2hib2FyZDogQ2xpcHBlckRhc2hib2FyZCA9IG5ldyBDbGlwcGVyRGFzaGJvYXJkKCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGJhZyA9IHNpZ25hbDxDbGlwcGVyRG9jdW1lbnRJbmZvW10+KFtdKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgYmFnVG90YWw6IFNpZ25hbDxudW1iZXI+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYmFnKCkubGVuZ3RoO1xyXG4gIH0pO1xyXG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc3VwcG9ydHNSUyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgc2VydmljZVxyXG4gICAqIEBwYXJhbSBzZXJ2aWNlVXJpIDogdGhlIHNlcnZpY2UgdXJpXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZykge1xyXG5cclxuICAgIC8vIENyZWF0ZSB1bmlxdWUgY2xpZW50IGlkXHJcbiAgICBpZiAoIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjbGlwcGVyX2NsaWVudF9pZCcpKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjbGlwcGVyX2NsaWVudF9pZCcsIFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgICB0aGlzLl9zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuXHJcbiAgICAvLyBSZWFjdCB0byBtZXNzYWdlIGJyb2FkY2FzdGluZ1xyXG4gICAgaWYgKCF0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uID0gdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IENsaXBwZXJNZXNzYWdlcy5MT0dJTl9DSEFOR0VEKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2dpbihcclxuICAgICAgICAgICAgICBtZXNzYWdlLmRhdGEuZW1haWwsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLnBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5kYXRhLm9hdXRoLFxyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZGF0YS5vYXV0aEFjY2Vzc1Rva2VuKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcylcclxuICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSwgbnVsbCwgXCJFcnJvcmUgZGkgQ2xpcHBlclwiKTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UudG9hc3QoJ0Nvbm5lc3NvIGEgQ2xpcHBlcicsIDE1MDAsICdwb3dlcicpO1xyXG4gICAgICAgICAgICAgICAgICAvLyBMb2FkIGJhZ1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRCYWcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLmlkID09PSBDbGlwcGVyTWVzc2FnZXMuTE9HT1VUX0NPTVBMRVRFRCB8fFxyXG4gICAgICAgICAgbWVzc2FnZS5pZCA9PT0gQ2xpcHBlck1lc3NhZ2VzLkxPR0lOX0RJU0NPTk5FQ1RFRCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKFwiPHA+XCIgKyByLm1lc3NhZ2UgKyBcIjwvcD48YnI+PGJyPjxocj48cCBjbGFzcz0nc21hbGwnPjxpPlBlciBlbGltaW5hcmUgbGEgY29uZmlndXJhemlvbmUgZGkgQ2xpcHBlciBhY2NlZGVyZSBhOjxicj48Yj5tZW51ID4gcGVyc29uYWxpenphID4gY29sbGVnYW1lbnRpPC9iPjwvaT48L3A+XCIsIG51bGwsIFwiRXJyb3JlIGRpIENsaXBwZXJcIik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnRGlzY29ubmVzc28gZGEgQ2xpcHBlcicsIDE1MDAsICdwb3dlcl9vZmYnKTtcclxuICAgICAgICAgICAgICAgIC8vIEVtcHR5IGJhZ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYWcuc2V0KFtdKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbHVhdGUgY3VycmVudCBzZXNzaW9uIHN0b3JhZ2UgaW4gY2FzZSBvZiBwYWdlIHJlZnJlc2ggKEY1KVxyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluKCkgJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbi5zZXQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2V0IEpXVCB0b2tlbnNcclxuICogQHBhcmFtIHZhbHVlIDogdGhlIGxvZ2luIHJlc3VsdFxyXG4gKi9cclxuICBwcml2YXRlIHNldFRva2VuKHZhbHVlOiBDbGlwcGVyTG9naW5SZXN1bHQpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2NsaXBwZXJfand0JywgdmFsdWUudG9rZW4pO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnY2xpcHBlcl9qd3RfcmVmcmVzaCcsIHZhbHVlLnJlZnJlc2hUb2tlbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBKV1QgdG9rZW5cclxuICAgKiBAcGFyYW0gcmVmcmVzaDogdHJ1ZSB0byBnZXQgdGhlIHJlZnJlc2ggdG9rZW4uIERlZmF1bHQgaXMgZmFsc2UuXHJcbiAgICovXHJcbiAgZ2V0VG9rZW4ocmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgIGxldCB0b2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0ocmVmcmVzaCA/ICdjbGlwcGVyX2p3dF9yZWZyZXNoJyA6ICdjbGlwcGVyX2p3dCcpO1xyXG4gICAgaWYgKHRva2VuICYmIHRva2VuWzBdID09PSAnXCInKSB7XHJcbiAgICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9rZW4gPz8gJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGxvZ2luICAgXHJcbiAgICogQHBhcmFtIGVtYWlsOiB0aGUgb3B0aW9hbmwgZW1haWwgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcm1hIHBhc3N3b3JkOiB0aGUgb3B0aW9uYWwgcGFzc3dvcmQgaWYgdXNpbmcgT0F1dGgyXHJcbiAgICogQHBhcmFtIHJlbWVtYmVyOiByZW1lbWJlciBjcmVkZW50aWFscyBcclxuICAgKiBAcGFyYW0gb2F1dGg6IHRoZSBvcHRpb25hbCBvcGVuIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRlZFxyXG4gICAqIEBwYXJhbSBvYXV0aEFjY2Vzc1Rva2VuOiB0aGUgb3B0aW9uYWwgT0F1dGgyIGFjY2VzcyB0b2tlblxyXG4gICAqIEByZXR1cm5zOiB0aGUgbG9naW4gcmVzdWx0XHJcbiAgICovXHJcbiAgbG9naW4oZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsLFxyXG4gICAgcmVtZW1iZXI6IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkID0gZmFsc2UsXHJcbiAgICBvYXV0aDogTG9naW5PQXV0aFR5cGUgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyTG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbjInLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXI6IG9hdXRoID8gbnVsbCA6IGVtYWlsLFxyXG4gICAgICAgICAgcGFzc3dvcmQ6IG9hdXRoID8gbnVsbCA6IHBhc3N3b3JkLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY2xpcHBlcl9jbGllbnRfaWRcIiksXHJcbiAgICAgICAgICBPQVVUSDogb2F1dGhcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6XHJcbiAgICAgICAgICAgICFvYXV0aFxyXG4gICAgICAgICAgICAgID8gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgICA6IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBvYXV0aEFjY2Vzc1Rva2VuKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9sb2dpbicpO1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBtYXAociA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvZ2dpbmdJbi5zZXQoZmFsc2UpO1xyXG4gICAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAvLyBTdG9yZSBhY2Nlc3MgdG9rZW5cclxuICAgICAgICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlKTtcclxuICAgICAgICAgICAgY29uc3QgbG9naW5JbmZvOiBDbGlwcGVyTG9naW5JbmZvID0ge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHIudmFsdWUuY29udGV4dCxcclxuICAgICAgICAgICAgICB1c2VyU2V0dGluZ3M6IHIudmFsdWUuc2V0dGluZ3MsXHJcbiAgICAgICAgICAgICAgT0FVVEg6IG9hdXRoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFvYXV0aCkge1xyXG4gICAgICAgICAgICAgIGxvZ2luSW5mby51c2VyQ3JlZGVudGlhbHMgPVxyXG4gICAgICAgICAgICAgICAgU3lzdGVtVXRpbHMuY2lwaGVyKFxyXG4gICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcclxuICAgICAgICAgICAgICAgICAgICByZW1lbWJlcjogcmVtZW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgIH0pLCBsb2dpbkluZm8uY29udGV4dC51c2VySWQudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBpbmZvXHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAgICAgICAgICdjbGlwcGVyX2xvZ2luJyxcclxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShsb2dpbkluZm8pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9sb2dpbkluZm8gPSBsb2dpbkluZm87XHJcblxyXG4gICAgICAgICAgICB0aGlzLmxvZ2dlZEluLnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcjtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBsb2dvdXRcclxuICAgKi9cclxuICBsb2dvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8YW55Pih0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dvdXQnLCB7fSkucGlwZShcclxuICAgICAgbWFwKHIgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICByZXR1cm4gclxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoX2UpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFJlc2V0IGxvZ2luIHJlZnJlc2ggdGltZXIgYW5kIGxvZ2luIHN0YXRlXHJcbiAqL1xyXG4gIHJlc2V0KCkgeyAgIFxyXG4gICAgLy8gQ2xlYXIgbG9naW4gaW5mb1xyXG4gICAgdGhpcy5fbG9naW5JbmZvID0gbnVsbDtcclxuXHJcbiAgICAvLyBMb2dnZWQgb3V0XHJcbiAgICB0aGlzLmxvZ2dlZEluLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBsb2dpbiBkYXRhXHJcbiAgICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICAvLyBDbGVhciBsb2NhbCBzdG9yYWdlXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdjbGlwcGVyX2p3dCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9qd3RfcmVmcmVzaCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpcHBlcl9vYXV0aCcpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2NsaXBwZXJfbG9naW4nKTtcclxuXHJcbiAgICAvLyBSZXNldCBsb2dpblxyXG4gICAgdGhpcy5yZXNldCgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBQZXJmb3JtIHRva2VuIHJlZnJlc2hcclxuICovXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyTG9naW5SZXN1bHQ+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvcmVmcmVzaDIvP3Rva2VuPScgKyB0aGlzLmdldFRva2VuKHRydWUpXHJcbiAgICApLnBpcGUobWFwKHIgPT4ge1xyXG4gICAgICAvLyBVcGRhdGUgdG9rZW5cclxuICAgICAgdGhpcy5zZXRUb2tlbihyLnZhbHVlKTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogR2V0IGEgbmV3IG9uZSB0aW1lIHBhc3N3b3JkXHJcbiAgKiBAcGFyYW0gaWQ6IHRoZSBvcHRpb25hbCByZXBvc2l0b3J5IGlkIFxyXG4gICovXHJcbiAgbmV3T1RQKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyT1RQSW5mbz4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9vdHAvbmV3Lz9pZD0nICsgaWQsXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZCBBcnMgZXZlbnRzIGNhbGVuZGFyXHJcbiAgICovXHJcbiAgZXZlbnRzKHBhcmFtczogQ2xpcHBlclF1ZXJ5QXJzRXZlbnRzUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJRdWVyeUFyc0V2ZW50c1Jlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hcnMvZXZlbnRzJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJ5IGRvY3VtZW50c1xyXG4gICAqL1xyXG4gIHF1ZXJ5KHBhcmFtczogQ2xpcHBlclNlYXJjaFBhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoUmVzdWx0Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cycsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBmYWNldHMgZm9yIGEgcXVlcnlcclxuICAgKi9cclxuICBxdWVyeUZhY2V0cyhwYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdD4+KFxyXG4gICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9mYWNldHMnLFxyXG4gICAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAqIFVwZGF0ZSBkb2N1bWVudCBzdGF0ZVxyXG4gICovXHJcbiAgdXBkYXRlU3RhdGUocGFyYW1zOiBDbGlwcGVyRG9jdW1lbnRVcGRhdGVTdGF0ZVBhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3N0YXRlL3VwZGF0ZScsXHJcbiAgICAgIHBhcmFtc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cG9ydCBhIGRvY3VtZW50IGluIHBkZiBmb3JtYXRcclxuICAgKi9cclxuICBleHBvcnRQZGYoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9leHBvcnQvJyArIGlkLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBFeHBvcnQgZG9jdW1lbnQgbGlzdCAocXVlcnkgb3Igc2VsZWN0ZWQgaXRlbXMpIG9yIGV4cG9ydCBkZWFkbGluZXMgYXMgaWNzXHJcbiAqL1xyXG4gIGV4cG9ydChwYXJhbXM6IENsaXBwZXJFeHBvcnREb2N1bWVudHNQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2V4cG9ydCcsXHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgeyByZXNwb25zZVR5cGU6ICdibG9iJyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBkb2N1bWVudHMgbGluayBieSBlbWFpbFxyXG4gICAqL1xyXG4gIHNlbmRUbyhwYXJhbXM6IENsaXBwZXJTZW5kRG9jdW1lbnRzQnlFbWFpbFBhcmFtcykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3NlbmQnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGEgcGFnZSB0aGUgZnVsbCBkb2N1bWVudCByZXBvcnRcclxuICAgKi9cclxuICByZXBvcnQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9yZXBvcnQvJyArIGlkLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZG9jdW1lbnQgY29tbWVudFxyXG4gICAqL1xyXG4gIGNvbW1lbnQoaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PHN0cmluZz4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvY29tbWVudC8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZG9jdW1lbnQgaW5mb1xyXG4gICAqL1xyXG4gIGluZm8oaWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PENsaXBwZXJEb2N1bWVudEluZm8+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2luZm8vJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRvY3VtZW50IHN0cnVjdHVyZVxyXG4gICAqL1xyXG4gIGluZGV4KGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyRG9jdW1lbnRTdHJ1Y3R1cmU+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3N0cnVjdHVyZS8nICsgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgZG9jdW1lbnQgbGFzdCB1cGRhdGVcclxuICAgKi9cclxuICBsYXN0VXBkYXRlKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxzdHJpbmc+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2xhc3QtdXBkYXRlLycgKyBpZFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJ5IGRvY3VtZW50IHJlZmVyZW5jZXNcclxuICAgKi9cclxuICByZWZlcmVuY2VzKHBhcmFtczogQ2xpcHBlclJlZmVyZW5jZXNTZWFyY2hQYXJhbXMpIHtcclxuICAgIGxldCBtb2RlID0gcGFyYW1zLm1vZGU7XHJcbiAgICBpZiAoIW1vZGUpIG1vZGUgPSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW47XHJcbiAgICBzd2l0Y2ggKG1vZGUpIHtcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzSW46XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuUmVmZXJlbmNlc091dDpcclxuICAgICAgICBwYXJhbXMubW9kZSA9IG1vZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoUmVzdWx0Pj4oXHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvcmVmZXJlbmNlcycsXHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLkNoYW5nZXNJbjpcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5DaGFuZ2VzT3V0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaFJlc3VsdD4+KFxyXG4gICAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2NoYW5nZXMnLFxyXG4gICAgICAgICAgcGFyYW1zXHJcbiAgICAgICAgKTtcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5KdXJpczpcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJTZWFyY2hSZXN1bHQ+PihcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9qdXJpcycsXHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICApO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGZhY2V0cyBmb3IgYSBkb2N1bWVudCByZWZlcmVuY2VzXHJcbiAgICovXHJcbiAgcmVmZXJlbmNlc0ZhY2V0cyhwYXJhbXM6IENsaXBwZXJSZWZlcmVuY2VzU2VhcmNoUGFyYW1zKSB7XHJcbiAgICBsZXQgbW9kZSA9IHBhcmFtcy5tb2RlID8/IENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbjtcclxuICAgIHN3aXRjaCAobW9kZSkge1xyXG4gICAgICBjYXNlIENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLlJlZmVyZW5jZXNJbjpcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5SZWZlcmVuY2VzT3V0OlxyXG4gICAgICAgIHBhcmFtcy5tb2RlID0gbW9kZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJTZWFyY2hGYWNldHNSZXN1bHQ+PihcclxuICAgICAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy9yZWZlcmVuY2VzL2ZhY2V0cycsXHJcbiAgICAgICAgICBwYXJhbXNcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIENsaXBwZXJRdWVyeVJlZmVyZW5jZXNNb2RlLkNoYW5nZXNJbjpcclxuICAgICAgY2FzZSBDbGlwcGVyUXVlcnlSZWZlcmVuY2VzTW9kZS5DaGFuZ2VzT3V0OlxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaEZhY2V0c1Jlc3VsdD4+KFxyXG4gICAgICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2NoYW5nZXMvZmFjZXRzJyxcclxuICAgICAgICAgIHBhcmFtc1xyXG4gICAgICAgICk7XHJcbiAgICAgIGNhc2UgQ2xpcHBlclF1ZXJ5UmVmZXJlbmNlc01vZGUuSnVyaXM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyU2VhcmNoRmFjZXRzUmVzdWx0Pj4oXHJcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvanVyaXMvZmFjZXRzJyxcclxuICAgICAgICAgIHBhcmFtc1xyXG4gICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGRvY3VtZW50IGp1cmlzIGFydGljbGVzXHJcbiAgICovXHJcbiAganVyaXNBcnRpY2xlcyhwYXJhbXM6IENsaXBwZXJTZWFyY2hQYXJhbXMpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxBcGlSZXN1bHQ8Q2xpcHBlclNlYXJjaFJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvanVyaXMvYXJ0aWNsZXMnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEdldCBjYWxlbmRhciBzbmFwc2hvdCBiYXNlZCBvbiB0aGUgZGVhZGxpbmVzXHJcbiAgKi9cclxuICBjYWxlbmRhclNuYXBzaG90KHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGFueT4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvY2FsZW5kYXIvc25hcHNob3QnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgdGhlIHRheG9ub215XHJcbiAgICovXHJcbiAgZ2V0VGF4b25vbXkocGFyYW1zOiBDbGlwcGVyVGF4b25vbXlQYXJhbXMgfCBudWxsID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxGb2xkZXJUcmVlPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL3RheG9ub215JyxcclxuICAgICAgcGFyYW1zID8/IHsgbW9kZWw6IDAsIGNvdW50SXRlbXM6IGZhbHNlIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSB0b3BpY3NcclxuICAgKi9cclxuICBnZXRUb3BpY3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8TmFtZVZhbHVlSXRlbTxzdHJpbmc+W10+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvdG9waWNzJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIHRhZ3NcclxuICAgKi9cclxuICBnZXRUYWdzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PE5hbWVWYWx1ZUl0ZW08c3RyaW5nPltdPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL3RhZ3MnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vL1xyXG4gIC8vIERBU0hCT0FSRFxyXG4gIC8vL1xyXG4gIC8qKlxyXG4gICogUmV0cmlldmUgY3VycmVudCBkYXNoYm9hcmRcclxuICAqL1xyXG4gIGxvYWREYXNoYm9hcmQoKSB7XHJcbiAgICB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJEYXNoYm9hcmRSZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9hY2NvdW50L2Rhc2hib2FyZCcsXHJcbiAgICAgICAgeyByZWZyZXNoaW5nOiB0cnVlIH1cclxuICAgICAgKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuZG9jdW1lbnRVcGRhdGVzID0gci52YWx1ZS5kb2N1bWVudFVwZGF0ZXM7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZC5leHBpcmVkRGVhZGxpbmVzID0gci52YWx1ZS5leHBpcmVkRGVhZGxpbmVzO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuZXhwaXJpbmdEZWFkbGluZXMgPSByLnZhbHVlLmV4cGlyaW5nRGVhZGxpbmVzO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmQuaXNUcmlhbCA9IHIudmFsdWUuaXNUcmlhbDtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLml0ZW1zLnNldChyLnZhbHVlLml0ZW1zKTtcclxuICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuQ09NTUFORF9EQVNIQk9BUkRfVVBEQVRFRCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVXBkYXRlIHVucmVhZCBpdGVtc1xyXG4gICogQHBhcmFtIG1vZHVsZSA6IHRoZSBtb2R1bGVcclxuICAqIEBwYXJhbSBpbmNyZW1lbnQgOiB0aGUgaW5jcmVtZW50IChjYW4gYmUgbmVnYXRpdmUpXHJcbiAgKi9cclxuICB1cGRhdGVVbnJlYWRJdGVtcyhtb2R1bGU6IENsaXBwZXJNb2R1bGUsIGluY3JlbWVudDogbnVtYmVyKSB7XHJcbiAgICBjb25zb2xlLmxvZygnbW9kdWxlOicgKyBtb2R1bGUpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmQudXBkYXRlVW5yZWFkSXRlbXMobW9kdWxlLCBpbmNyZW1lbnQpO1xyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLnNlbmRNZXNzYWdlKENsaXBwZXJNZXNzYWdlcy5DT01NQU5EX0RBU0hCT0FSRF9VUERBVEVEKTtcclxuICB9XHJcblxyXG4gIC8vL1xyXG4gIC8vIExJTktTXHJcbiAgLy8vXHJcblxyXG4gIC8qKlxyXG4gICogU2F2ZSBhIHVzZXIgbGlua1xyXG4gICogQHBhcmFtIGl0ZW06IHRoZSB1c2VyIGxpbmtcclxuICAqL1xyXG4gIHNhdmVMaW5rKGl0ZW06IENsaXBwZXJVc2VyTGluaykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0PEFwaVJlc3VsdDxib29sZWFuPj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL2FjY291bnQvbGlua3Mvc2F2ZScsXHJcbiAgICAgIGl0ZW1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgYSB1c2VyIGxpbmtcclxuICAgKiBAcGFyYW0gaXRlbTogdGhlIHVzZXIgbGlua1xyXG4gICAqL1xyXG4gIGRlbGV0ZUxpbmsoaXRlbTogQ2xpcHBlclVzZXJMaW5rKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGJvb2xlYW4+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvYWNjb3VudC9saW5rcy9kZWxldGUnLFxyXG4gICAgICBpdGVtXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vL1xyXG4gIC8vIEJBRyAtIFdPUktJTkcgRE9DVU1FTlRTXHJcbiAgLy8vXHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgd29ya2luZyBkb2N1bWVudHNcclxuICAgKi9cclxuICBsb2FkQmFnKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyVXNlcldvcmtpbmdEb2N1bWVudFtdPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvd29ya2luZydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIHIgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmVycm9yKHIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoci52YWx1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1zOiBDbGlwcGVyRG9jdW1lbnRJbmZvW10gPSBbXTtcclxuICAgICAgICAgICAgICByLnZhbHVlLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobi5kb2N1bWVudERlc2NyaXB0b3IpIHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRJbmZvID0gSlNPTi5wYXJzZShuLmRvY3VtZW50RGVzY3JpcHRvcik7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBuLmRvY3VtZW50SWQgPSBkb2N1bWVudEluZm8uRG9jdW1lbnRJZCB8fCBkb2N1bWVudEluZm8uSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbi50aXRsZTEgPSBkb2N1bWVudEluZm8uVGl0bGUxID8/IGRvY3VtZW50SW5mby5UaXRsZTI7XHJcbiAgICAgICAgICAgICAgICAgICAgbi50aXRsZTIgPSBkb2N1bWVudEluZm8uVGl0bGUxID8gZG9jdW1lbnRJbmZvLlRpdGxlMiA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgbi5kb2N1bWVudERlc2NyaXB0b3IgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKG4pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHRoaXMuYmFnLnNldChpdGVtcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBvbmUgb3IgbW9yZSB3b3JraW5nIGRvY3VtZW50XHJcbiAgICogQHBhcmFtIGRvY3VtZW50SWRzIDogdGhlIGRvY3VtZW50IGlkcyB0byBhZGRcclxuICAgKi9cclxuICBhZGRUb0JhZyhkb2N1bWVudElkczogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcclxuICAgICAgLnBvc3Q8QXBpUmVzdWx0PENsaXBwZXJVc2VyV29ya2luZ0RvY3VtZW50W10+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy93b3JraW5nL2FkZCcsXHJcbiAgICAgICAgeyBkb2N1bWVudElkczogZG9jdW1lbnRJZHMgfVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoci52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdJdGVtczogQ2xpcHBlckRvY3VtZW50SW5mb1tdID0gW107XHJcbiAgICAgICAgICAgIHIudmFsdWUuZm9yRWFjaChuID0+IHtcclxuICAgICAgICAgICAgICBpZiAobi5kb2N1bWVudERlc2NyaXB0b3IpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50SW5mbyA9IEpTT04ucGFyc2Uobi5kb2N1bWVudERlc2NyaXB0b3IpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50SW5mbykge1xyXG4gICAgICAgICAgICAgICAgICBuLmRvY3VtZW50SWQgPSBkb2N1bWVudEluZm8uRG9jdW1lbnRJZCB8fCBkb2N1bWVudEluZm8uSWQ7XHJcbiAgICAgICAgICAgICAgICAgIG4udGl0bGUxID0gZG9jdW1lbnRJbmZvLlRpdGxlMSA/PyBkb2N1bWVudEluZm8uVGl0bGUyO1xyXG4gICAgICAgICAgICAgICAgICBuLnRpdGxlMiA9IGRvY3VtZW50SW5mby5UaXRsZTEgPyBkb2N1bWVudEluZm8uVGl0bGUyIDogbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG4uZG9jdW1lbnREZXNjcmlwdG9yID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIG5ld0l0ZW1zLnB1c2gobik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKG5ld0l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLmJhZy51cGRhdGUodmFsdWVzID0+IFsuLi52YWx1ZXMsIC4uLm5ld0l0ZW1zXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdPcGVyYXppb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUgb25lIHdvcmtpbmcgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqL1xyXG4gIHJlbW92ZUZyb21CYWcoZG9jdW1lbnRJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy93b3JraW5nL2RlbGV0ZScsXHJcbiAgICAgICAgeyBkb2N1bWVudElkczogW2RvY3VtZW50SWRdIH1cclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgIGlmICghci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgcCA9IHRoaXMuYmFnKCkuZmluZEluZGV4KG4gPT4gbi5kb2N1bWVudElkID09PSBkb2N1bWVudElkKTtcclxuICAgICAgICAgIGlmIChwICE9PSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLmJhZy51cGRhdGUodmFsdWVzID0+IHtcclxuICAgICAgICAgICAgICB2YWx1ZXMuc3BsaWNlKHAsIDEpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBbLi4udmFsdWVzXTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS50b2FzdCgnT3BlcmF6aW9uZSBjb21wbGV0YXRhIGNvbiBzdWNjZXNzby4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYWxsIHdvcmtpbmcgZG9jdW1lbnRzXHJcbiAgICovXHJcbiAgY2xlYXJCYWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgICB0aGlzLnNlcnZpY2VVcmkgKyAnL2RvY3VtZW50cy93b3JraW5nL2RlbGV0ZScsXHJcbiAgICAgICAgeyBkZWxldGVBbGw6IHRydWUgfVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgaWYgKCFyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5lcnJvcihyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmJhZy5zZXQoW10pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnRvYXN0KCdPcGVyYXppb25lIGNvbXBsZXRhdGEgY29uIHN1Y2Nlc3NvLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLy9cclxuICAvLyBXT1JLSU5HIFNFQVJDSEVTXHJcbiAgLy8vXHJcblxyXG4gIC8qKlxyXG4gICAqIExvYWQgd29ya2luZyBzZWFyY2hlc1xyXG4gICAqIEBwYXJhbTogbW9kdWxlOiB0aGUgbW9kdWxlIHRvIGxvYWQgc2VhcmNoZXMgZm9yXHJcbiAgICovXHJcbiAgbG9hZFNlYXJjaGVzKG1vZHVsZTogQ2xpcHBlck1vZHVsZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAuZ2V0PEFwaVJlc3VsdDxDbGlwcGVyVXNlclNlYXJjaFtdPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvc2VhcmNoZXMvP21vZHVsZT0nICsgbW9kdWxlXHJcbiAgICAgIClcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgYSB3b3JraW5nIHNlYXJjaFxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkcyA6IHRoZSBkb2N1bWVudCBpZHMgdG8gYWRkXHJcbiAgICovXHJcbiAgc2F2ZVNlYXJjaChwYXJhbXM6IENsaXBwZXJVc2VyU2VhcmNoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxDbGlwcGVyVXNlclNlYXJjaD4+KFxyXG4gICAgICAgIHRoaXMuc2VydmljZVVyaSArICcvZG9jdW1lbnRzL3NlYXJjaGVzL3NhdmUnLFxyXG4gICAgICAgIHBhcmFtc1xyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIG9uZSB3b3JraW5nIHNlYXJjaFxyXG4gICAqIEBwYXJhbSBpZCA6IHRoZSBpZCB0byByZW1vdmVcclxuICAgKi9cclxuICBkZWxldGVTZWFyY2goaWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxyXG4gICAgICAucG9zdDxBcGlSZXN1bHQ8bnVtYmVyPj4oXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9kb2N1bWVudHMvc2VhcmNoZXMvZGVsZXRlJyxcclxuICAgICAgICB7IGlkOiBpZCB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -204,7 +204,6 @@ export class DialogService extends UIService {
|
|
|
204
204
|
* Clear busy dialog
|
|
205
205
|
*/
|
|
206
206
|
clearBusy() {
|
|
207
|
-
this.busyComponentRef?.destroy();
|
|
208
207
|
this.busyDialogRef?.detach();
|
|
209
208
|
}
|
|
210
209
|
/**
|
|
@@ -402,4 +401,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.3", ngImpor
|
|
|
402
401
|
providedIn: 'root'
|
|
403
402
|
}]
|
|
404
403
|
}], ctorParameters: () => [] });
|
|
405
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxzQkFBc0IsRUFFdkIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWExQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBWkYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFN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QWE7YUFDaEI7U0FDZixDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3RDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFPLENBQ0wsT0FBZSxFQUNmLFFBQWdCLFVBQVUsRUFDMUIsWUFBb0IsSUFBSSxFQUN4QixnQkFBd0IsSUFBSSxFQUM1QixlQUE4QixJQUFJLEVBQ2xDLFVBQXNCLElBQUksRUFDMUIsUUFBZ0IsR0FBRztRQUVuQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDdkMsU0FBUyxFQUFFLFVBQVU7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsS0FBSztZQUNuQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsWUFBWSxFQUFFLFlBQVk7Z0JBQzFCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixVQUFVLEVBQUUsTUFBTTthQUNFO1lBQ3RCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsUUFBUSxFQUFFLE9BQU87WUFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxJQUFJO1lBQ3RCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0YlUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgUGxhdGZvcm1Mb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIsIE1hdFNuYWNrQmFyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIEJ1c3lEaWFsb2dDb21wb25lbnRcclxufSBmcm9tICcuLi9kaWFsb2dzL2J1c3kvYnVzeS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBDb25maXJtRGlhbG9nQ29tcG9uZW50LFxyXG4gIENvbmZpcm1EaWFsb2dEYXRhXHJcbn0gZnJvbSAnLi4vZGlhbG9ncy9jb25maXJtL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgSW5mb0RpYWxvZ0NvbXBvbmVudCxcclxuICBJbmZvRGlhbG9nRGF0YVxyXG59IGZyb20gJy4uL2RpYWxvZ3MvaW5mby9pbmZvLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2FzdENvbXBvbmVudCwgVG9hc3REYXRhIH0gZnJvbSAnLi4vZGlhbG9ncy90b2FzdC90b2FzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVSVNlcnZpY2UgfSBmcm9tICcuL3VpLnNlcnZpY2UnO1xyXG5cclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGV4dGVuZHMgVUlTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBkaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcclxuICBwcml2YXRlIG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XHJcbiAgcHJpdmF0ZSBzbmFja0JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XHJcbiAgcHJpdmF0ZSBsb2NhdGlvbiA9IGluamVjdChQbGF0Zm9ybUxvY2F0aW9uKTtcclxuICBwcml2YXRlIGJ1c3lEaWFsb2dSZWY6IE92ZXJsYXlSZWY7XHJcbiAgcHJpdmF0ZSBidXN5Q29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8QnVzeURpYWxvZ0NvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBlcnJvckRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEluZm9EaWFsb2dDb21wb25lbnQ+O1xyXG4gIHByaXZhdGUgcG9wSGlzdG9yeTogYW55ID0gW107XHJcbiAgcHJpdmF0ZSBwb3BTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7ICAgXHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIC8vIEhhbmRsZSBkaWFsb2cgY2xvc2Ugd2hlbiBiYWNrIGJ1dHRvbiBpcyBjbGlja2VkXHJcbiAgICB0aGlzLmxvY2F0aW9uLm9uUG9wU3RhdGUoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucG9wcGluZ1N0YXRlKSB7XHJcbiAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGNvdW50ID4gMCkge1xyXG4gICAgICAgICAgLy8gRGlzYWJsZSBwb3Agc2F0ZSBpZiBjYXNlXHJcbiAgICAgICAgICB0aGlzLnBvcFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyBDbG9zZSBkaWFsb2dcclxuICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzW2NvdW50IC0gMV0uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB0aGlzLnBvcHBpbmdTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciB1cmwgZnJvbSAjIGluIGNhc2Ugb2YgcGFnZSByZWxvYWRcclxuICAgKiBAcGFyYW0gcmVzZXRQb3BwaW5nU3RhdGU6IHRydWUgaWYgcG9wcGluZyBzdGF0ZSBzaG91bGQgYmUgc2V0IHRvIGZhbHNlXHJcbiAgICovXHJcbiAgY2xlYXJVcmwocmVzZXRQb3BwaW5nU3RhdGU6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgY29uc3QgdXJsID0gbG9jYXRpb24uaHJlZjtcclxuICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgIHdoaWxlIChsID49IDAgJiYgdXJsW2wgLSAxXSA9PT0gJyMnKSBsLS07XHJcbiAgICBpZiAobCA8IHVybC5sZW5ndGgpXHJcbiAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgdXJsLnN1YnN0cmluZygwLCBsKSk7XHJcbiAgICBpZiAocmVzZXRQb3BwaW5nU3RhdGUpXHJcbiAgICAgIHRoaXMucG9wcGluZ1N0YXRlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBhbGwgZGlhbG9nc1xyXG4gICAqL1xyXG4gIGNsb3NlQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3MuZm9yRWFjaChuID0+IHtcclxuICAgICAgbi5jbG9zZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiBhIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAgICogQHBhcmFtIGNvbmZpZyA6IHRoZSBjb25maWdcclxuICAgKiBAcmV0dXJuczogdGhlIGRpYWxvZyBvYmplY3RcclxuICAgKi9cclxuICBvcGVuKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiBudWxsO1xyXG4gICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgIHJldHVybiB0aGlzLm9wZW5EaWFsb2coY29tcG9uZW50LCBjb25maWcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBPcGVuIGEgZGlhbG9nXHJcbiAqIEBwYXJhbSBjb21wb25lbnQgOiB0aGUgY29tcG9uZW50XHJcbiAqIEBwYXJhbSBjb25maWcgOiB0aGUgY29uZmlnXHJcbiAqIEByZXR1cm5zIDogdGhlIGRpYWxvZyBvYmplY3RcclxuICovXHJcbiAgcHJpdmF0ZSBvcGVuRGlhbG9nKGNvbXBvbmVudDogYW55LCBjb25maWc6IGFueSk6IE1hdERpYWxvZ1JlZjxhbnk+IHtcclxuICAgIC8vIFdlIHdpbGwgdGFrZSBjYXJlIG9mIG5hdmlnYXRpb25cclxuICAgIGNvbmZpZy5jbG9zZU9uTmF2aWdhdGlvbiA9IGZhbHNlO1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZy5vcGVuKGNvbXBvbmVudCwgY29uZmlnKTtcclxuICAgIGQuYWZ0ZXJPcGVuZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnB1c2hEaWFsb2coZC5pZCk7XHJcbiAgICB9KTtcclxuICAgIGQuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5wb3BEaWFsb2coZC5pZCk7ICAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBkLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgLy8gRmluYWwgY2xlYW51cCBvZiBtaWRkbGUgb2JqZWN0c1xyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmID0gbnVsbDtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBlbGVtZW50IGhlaWdodCBpbmNsdWRpbmcgbWFyZ2luc1xyXG4gICAqIEBwYXJhbSBlbGVtZW50IC0gZWxlbWVudFxyXG4gICAqIEByZXR1cm5zIHRoZSBoZWlnaHRcclxuICAgKi9cclxuICBwcml2YXRlIG91dGVySGVpZ2h0KGVsZW1lbnQ6IGFueSk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGNvbnN0IGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gICAgbGV0IGggPSBbJ3RvcCcsICdib3R0b20nXVxyXG4gICAgICAubWFwKHNpZGUgPT4gcGFyc2VJbnQoc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLScgKyBzaWRlKSkpXHJcbiAgICAgIC5yZWR1Y2UoKHRvdGFsLCBzaWRlKSA9PiB0b3RhbCArIHNpZGUsIGhlaWdodCk7XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybiBjdXJyZW50IGRpYWxvZyBoZWlnaHRcclxuICAgKi9cclxuICBnZXRDdXJyZW50RGlhbG9nSGVpZ2h0KCk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wb3BIaXN0b3J5Lmxlbmd0aDtcclxuICAgIGlmIChjb3VudCA+IDApIHtcclxuICAgICAgbGV0IGlkID0gdGhpcy5wb3BIaXN0b3J5W2NvdW50IC0gMV0uaWQ7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICBpZiAoZWxlbSAmJiBlbGVtLmNsaWVudEhlaWdodCA+IDApIHJldHVybiBlbGVtLmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGN1cnJlbnQgZGlhbG9nIHNjcm9sbGFibGUgaGVpZ2h0XHJcbiAgICovXHJcbiAgZ2V0Q3VycmVudERpYWxvZ1Njcm9sbGFibGVIZWlnaHQoXHJcbiAgICBmaXhlZFBhcnRzQ2xhc3NOYW1lOiBzdHJpbmdbXSxcclxuICAgIG1pbmltYWxIZWlnaHQ6IG51bWJlclxyXG4gICk6IG51bWJlciB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm4gMDtcclxuICAgIGxldCBoID0gdGhpcy5nZXRDdXJyZW50RGlhbG9nSGVpZ2h0KCk7XHJcbiAgICBpZiAoaCA8IG1pbmltYWxIZWlnaHQpIHsgXHJcbiAgICAgIGggPSBtaW5pbWFsSGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgaWYgKGZpeGVkUGFydHNDbGFzc05hbWUpIHtcclxuICAgICAgZml4ZWRQYXJ0c0NsYXNzTmFtZS5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsZW1zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShuKTtcclxuICAgICAgICBpZiAoZWxlbXMpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaCAtPSB0aGlzLm91dGVySGVpZ2h0KGVsZW1zW2ldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGg7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQdXNoIGEgZGlhbG9nIGluZm8gdGhlIGhpc3RvcnlcclxuICAgKi9cclxuICBwcml2YXRlIHB1c2hEaWFsb2coaWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgbGV0IGluZGV4ID0gaGlzdG9yeS5sZW5ndGg7XHJcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7IGluZGV4OiBpbmRleCB9LCBudWxsLCBsb2NhdGlvbi5ocmVmICsgJyMnKTtcclxuICAgIHRoaXMucG9wSGlzdG9yeS5wdXNoKHsgaWQ6IGlkLCB2YWx1ZTogaW5kZXggfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQb3AgYSBkaWFsb2cgZnJvbSB0aGUgaGlzdG9yeVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcG9wRGlhbG9nKGlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuO1xyXG4gICAgaWYgKHRoaXMucG9wU3RhdGUpIHtcclxuICAgICAgdGhpcy5wb3BwaW5nU3RhdGUgPSB0cnVlO1xyXG4gICAgICBsZXQgcG9wcGVkID0gMTtcclxuICAgICAgaWYgKGlkKSB7XHJcbiAgICAgICAgY29uc3QgcCA9IHRoaXMucG9wSGlzdG9yeS5maW5kSW5kZXgoKG46IGFueSkgPT4gbi5pZCA9PT0gaWQpO1xyXG4gICAgICAgIGlmIChwICE9IC0xKSB7XHJcbiAgICAgICAgICBwb3BwZWQgPSB0aGlzLnBvcEhpc3RvcnlbcF0udmFsdWUgLSBoaXN0b3J5LnN0YXRlLmluZGV4O1xyXG4gICAgICAgICAgaWYgKHBvcHBlZCkgcG9wcGVkKys7XHJcbiAgICAgICAgICBlbHNlIHBvcHBlZCA9IDE7XHJcbiAgICAgICAgICB0aGlzLnBvcEhpc3Rvcnkuc3BsaWNlKHAsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB1cmwgPSBsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgIGxldCBsID0gdXJsLmxlbmd0aDtcclxuICAgICAgICB3aGlsZSAobCA+PSAwICYmIHVybFtsIC0gMV0gPT09ICcjJyAmJiBwb3BwZWQgPiAwKSB7XHJcbiAgICAgICAgICBsLS07XHJcbiAgICAgICAgICBwb3BwZWQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGwgPCB1cmwubGVuZ3RoKVxyXG4gICAgICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwuc3Vic3RyaW5nKDAsIGwpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5wb3BTdGF0ZSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgdGhlIGJ1c3kgb3ZlcmxheVxyXG4gICAqIEBwYXJhbSB0eXBlOiB0aGUgdHlwZSBvZiBzcGlubmVyIHRvIGNyZWF0ZVxyXG4gICAqIEByZXR1cm5zOiB0aGUgbmV3IG92ZXJsYXlcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJ1c3koKTogT3ZlcmxheVJlZiB7XHJcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOididXN5LWJhY2tkcm9wJyxcclxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgICAuZ2xvYmFsKClcclxuICAgICAgICAuY2VudGVySG9yaXpvbnRhbGx5KClcclxuICAgICAgICAuY2VudGVyVmVydGljYWxseSgpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIGJ1c3kgZGlhbG9nXHJcbiAgICovXHJcbiAgY2xlYXJCdXN5KCkge1xyXG4gICAgdGhpcy5idXN5Q29tcG9uZW50UmVmPy5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmJ1c3lEaWFsb2dSZWY/LmRldGFjaCgpOyAgICBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIHR5cGU6IG5ldyB0eXBlIChkZWZhdWx0ID0gJ2JhcicpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBzZXRCdXN5KFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgdHlwZTogJ2JhcicgfCAnc3Bpbm5lcicgfCAnd2FpdCcgPSAnYmFyJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGxcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYnVzeURpYWxvZ1JlZj8uaGFzQXR0YWNoZWQoKTtcclxuICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTsgLy8gVXNlIHRoZSBzYW1lICAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPcGVuIG5ld1xyXG4gICAgICBpZiAoIXRoaXMuYnVzeURpYWxvZ1JlZikge1xyXG4gICAgICAgIHRoaXMuYnVzeURpYWxvZ1JlZiA9IHRoaXMuY3JlYXRlQnVzeSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYnVzeUNvbXBvbmVudFJlZiA9IHRoaXMuYnVzeURpYWxvZ1JlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChCdXN5RGlhbG9nQ29tcG9uZW50KSk7XHJcbiAgICAgIHRoaXMuYnVzeUNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXQobWVzc2FnZSwgcHJvZ3Jlc3MsIHByb2dyZXNzTW9kZSwgdHlwZSk7XHJcbiAgICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgICBhY3Rpb25cclxuICAgICAgICAgIC5waXBlKGZpcnN0KCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWV4aXN0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBidXN5KG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHByb2dyZXNzOiBudW1iZXIgPSAtMSxcclxuICAgIHByb2dyZXNzTW9kZTogJ2RldGVybWluYXRlJyB8ICdpbmRldGVybWluYXRlJyA9ICdpbmRldGVybWluYXRlJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNldEJ1c3kobWVzc2FnZSwgcHJvZ3Jlc3MsIHByb2dyZXNzTW9kZSwgJ2JhcicsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogRGlzcGxheSBhIGJ1c3kgc3Bpbm5lciBkaWFsb2dcclxuICogQHBhcmFtIG1lc3NhZ2UgOiBuZXcgbWVzc2FnZVxyXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICogQHBhcmFtIHByb2dyZXNzTW9kZSA6IG5ldyBtb2RlIChkZWZhdWx0ID0gJ2luZGV0ZXJtaW5hdGUnKVxyXG4gKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICovXHJcbiAgYnVzeVNwaW5uZXIobWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCAnc3Bpbm5lcicsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIERpc3BsYXkgYSB3YWl0IHNwaW5uZXIgXHJcbiAgKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcgcG9wdXAgaGFzIGJlZW4gb3BlbmVkXHJcbiAgKi9cclxuICB3YWl0KFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShudWxsLCBudWxsLCBudWxsLCAnd2FpdCcsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhbiBpbmZvcm1hdGlvbiBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gd2lkdGg6IHRoZSBwcmVmZXJyZWQgd2lkdGhcclxuICAgKiBAcGFyYW0gZGlzbWlzc0FmdGVyOiBpZiBzcGVjaWZpZWQsIHRoZSBkaWFsb2cgd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgZGlzbWlzc0FmdGVyIG1pbGxpc2Vjb25kc1xyXG4gICAqIEBwYXJhbSBkZXRhaWxzOiBpZiBzcGVjaWZpZWQsIHRoZSBkZXRhaWxzIGluZm9cclxuICAgKi9cclxuICBpbmZvKFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdJbmZvcm1hemlvbmknLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGwsXHJcbiAgICBkZXRhaWxzOiBzdHJpbmcgfCBudWxsID0gbnVsbFxyXG4gICk6IE1hdERpYWxvZ1JlZjxJbmZvRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2luZm9ybWF6aW9uaScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIG9rQ2FwdGlvbjogb2tDYXB0aW9uLFxyXG4gICAgICAgIGRpc21pc3NBZnRlcjogZGlzbWlzc0FmdGVyLFxyXG4gICAgICAgIGRldGFpbHM6IGRldGFpbHMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgSW5mb0RpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiB3aWR0aCArICdweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGFuIGVycm9yIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBsb2cgOiB0aGUgZXJyb3IgbG9nXHJcbiAgICogQHBhcmFtIHRpdGxlIDogZGlhbG9nIHRpdGxlXHJcbiAgICogQHBhcmFtIG9rQ2FwdGlvbiA6IG9rIGJ1dHRvbiBjYXB0aW9uXHJcbiAgICogQHBhcmFtIHdpZHRoOiB0aGUgcHJlZmVycmVkIHdpZHRoXHJcbiAgICogQHBhcmFtIGRpc21pc3NBZnRlcjogaWYgc3BlY2lmaWVkLCB0aGUgZGlhbG9nIHdpbGwgYmUgY2xvc2VkIGFmdGVyIGRpc21pc3NBZnRlciBtaWxsaXNlY29uZHMgICBcclxuICAgKi9cclxuICBlcnJvcihcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGxvZzogc3RyaW5nIHwgbnVsbCA9IG51bGwsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0Vycm9yZScsXHJcbiAgICBva0NhcHRpb246IHN0cmluZyA9ICdPaycsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwLFxyXG4gICAgZGlzbWlzc0FmdGVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxyXG4gICk6IE1hdERpYWxvZ1JlZjxJbmZvRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgaWYgKHRoaXMuZXJyb3JEaWFsb2dSZWYpIHtcclxuICAgICAgLy8gSnVzdCBjaGFuZ2UgY3VycmVudCBlcnJvclxyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldERhdGEoIHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXRhaWxzOiBsb2csXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgZGlzbWlzc0FmdGVyOiBkaXNtaXNzQWZ0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Vycm9yZScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIGRldGFpbHM6IGxvZyxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBhcHBlYXJhbmNlOiAnZmlsbCdcclxuICAgICAgfSBhcyBJbmZvRGlhbG9nRGF0YSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSB0b2FzdFxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZSB0byBkaXNwbGF5XHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIDogZHVyYXRpb24gaW4gbXNlY1xyXG4gICAqIEBwYXJhbSBpY29uIDogdGhlIG1hdC1pY29uIHRvIGRpc3BsYXlcclxuICAgKiBAcGFyYW0gYWN0aW9uQ2FwdGlvbiBhY3Rpb24gYnV0dG9uIGNhcHRpb25cclxuICAgKi9cclxuICB0b2FzdChcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGR1cmF0aW9uOiBudW1iZXIgPSAyMDAwLFxyXG4gICAgaWNvbjogc3RyaW5nID0gJ2NoZWNrJyxcclxuICAgIGFjdGlvbkNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0U25hY2tCYXJSZWY8VG9hc3RDb21wb25lbnQ+IHtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IC0xKSBkdXJhdGlvbiA9IDIwMDA7IC8vIGRlZmF1bHRcclxuICAgIGxldCB0b2FzdFJlZiA9IHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoVG9hc3RDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICBpY29uOiBpY29uLFxyXG4gICAgICAgIGFjdGlvbkNhcHRpb246IGFjdGlvbkNhcHRpb25cclxuICAgICAgfSBhcyBUb2FzdERhdGFcclxuICAgIH0pO1xyXG4gICAgdG9hc3RSZWYuaW5zdGFuY2UuYWN0aW9uLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRvYXN0UmVmLmRpc21pc3MoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRvYXN0UmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGNvbmZpcm0gZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBodG1sIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gY2FuY2VsQ2FwdGlvbiA6IGNhbmNlbCBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvdGhlckNhcHRpb24gOiBvdGhlciBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvcHRpb25zOiBjaGVjayBib3ggb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqL1xyXG4gIGNvbmZpcm0oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0NvbmZlcm1hJyxcclxuICAgIG9rQ2FwdGlvbjogc3RyaW5nID0gJ1NpJyxcclxuICAgIGNhbmNlbENhcHRpb246IHN0cmluZyA9ICdObycsXHJcbiAgICBvdGhlckNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgb3B0aW9uczogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnY29uZmVybWEnLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBjYW5jZWxDYXB0aW9uOiBjYW5jZWxDYXB0aW9uLFxyXG4gICAgICAgIG90aGVyQ2FwdGlvbjogb3RoZXJDYXB0aW9uLFxyXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAgIFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbiJdfQ==
|
|
404
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvdWkvdWkvc2VydmljZXMvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQWdCLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsV0FBVyxFQUFrQixNQUFNLDZCQUE2QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFDTCxzQkFBc0IsRUFFdkIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsbUJBQW1CLEVBRXBCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBYSxNQUFNLGtDQUFrQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBT3pDLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQWExQztRQUNFLEtBQUssRUFBRSxDQUFDO1FBWkYsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxNQUFN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LENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE9BQU8sQ0FDTCxPQUFlLEVBQ2YsUUFBZ0IsVUFBVSxFQUMxQixZQUFvQixJQUFJLEVBQ3hCLGdCQUF3QixJQUFJLEVBQzVCLGVBQThCLElBQUksRUFDbEMsVUFBc0IsSUFBSSxFQUMxQixRQUFnQixHQUFHO1FBRW5CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUN2QyxTQUFTLEVBQUUsVUFBVTtZQUNyQixTQUFTLEVBQUUsSUFBSTtZQUNmLFlBQVksRUFBRSxLQUFLO1lBQ25CLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsT0FBTztnQkFDaEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixZQUFZLEVBQUUsWUFBWTtnQkFDMUIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFVBQVUsRUFBRSxNQUFNO2FBQ0U7WUFDdEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixZQUFZLEVBQUUsSUFBSTtZQUNsQixRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7WUFDdEIsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXJiVSxhQUFhO2tIQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTeXN0ZW1VdGlscyB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7XHJcbiAgQnVzeURpYWxvZ0NvbXBvbmVudFxyXG59IGZyb20gJy4uL2RpYWxvZ3MvYnVzeS9idXN5LWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIENvbmZpcm1EaWFsb2dDb21wb25lbnQsXHJcbiAgQ29uZmlybURpYWxvZ0RhdGFcclxufSBmcm9tICcuLi9kaWFsb2dzL2NvbmZpcm0vY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBJbmZvRGlhbG9nQ29tcG9uZW50LFxyXG4gIEluZm9EaWFsb2dEYXRhXHJcbn0gZnJvbSAnLi4vZGlhbG9ncy9pbmZvL2luZm8tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvYXN0Q29tcG9uZW50LCBUb2FzdERhdGEgfSBmcm9tICcuLi9kaWFsb2dzL3RvYXN0L3RvYXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVJU2VydmljZSB9IGZyb20gJy4vdWkuc2VydmljZSc7XHJcblxyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2UgZXh0ZW5kcyBVSVNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xyXG4gIHByaXZhdGUgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcclxuICBwcml2YXRlIHNuYWNrQmFyID0gaW5qZWN0KE1hdFNuYWNrQmFyKTtcclxuICBwcml2YXRlIGxvY2F0aW9uID0gaW5qZWN0KFBsYXRmb3JtTG9jYXRpb24pO1xyXG4gIHByaXZhdGUgYnVzeURpYWxvZ1JlZjogT3ZlcmxheVJlZjtcclxuICBwcml2YXRlIGJ1c3lDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxCdXN5RGlhbG9nQ29tcG9uZW50PjtcclxuICBwcml2YXRlIGVycm9yRGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SW5mb0RpYWxvZ0NvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBwb3BIaXN0b3J5OiBhbnkgPSBbXTtcclxuICBwcml2YXRlIHBvcFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwcml2YXRlIHBvcHBpbmdTdGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgICBcclxuICAgIHN1cGVyKCk7XHJcblxyXG4gICAgLy8gSGFuZGxlIGRpYWxvZyBjbG9zZSB3aGVuIGJhY2sgYnV0dG9uIGlzIGNsaWNrZWRcclxuICAgIHRoaXMubG9jYXRpb24ub25Qb3BTdGF0ZSgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5wb3BwaW5nU3RhdGUpIHtcclxuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuZGlhbG9nLm9wZW5EaWFsb2dzLmxlbmd0aDtcclxuICAgICAgICBpZiAoY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAvLyBEaXNhYmxlIHBvcCBzYXRlIGlmIGNhc2VcclxuICAgICAgICAgIHRoaXMucG9wU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgIC8vIENsb3NlIGRpYWxvZ1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NbY291bnQgLSAxXS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHRoaXMucG9wcGluZ1N0YXRlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsZWFyIHVybCBmcm9tICMgaW4gY2FzZSBvZiBwYWdlIHJlbG9hZFxyXG4gICAqIEBwYXJhbSByZXNldFBvcHBpbmdTdGF0ZTogdHJ1ZSBpZiBwb3BwaW5nIHN0YXRlIHNob3VsZCBiZSBzZXQgdG8gZmFsc2VcclxuICAgKi9cclxuICBjbGVhclVybChyZXNldFBvcHBpbmdTdGF0ZTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cmwgPSBsb2NhdGlvbi5ocmVmO1xyXG4gICAgbGV0IGwgPSB1cmwubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGwgPj0gMCAmJiB1cmxbbCAtIDFdID09PSAnIycpIGwtLTtcclxuICAgIGlmIChsIDwgdXJsLmxlbmd0aClcclxuICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwuc3Vic3RyaW5nKDAsIGwpKTtcclxuICAgIGlmIChyZXNldFBvcHBpbmdTdGF0ZSlcclxuICAgICAgdGhpcy5wb3BwaW5nU3RhdGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENsb3NlIGFsbCBkaWFsb2dzXHJcbiAgICovXHJcbiAgY2xvc2VBbGwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5mb3JFYWNoKG4gPT4ge1xyXG4gICAgICBuLmNsb3NlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZGlhbG9nXHJcbiAgICogQHBhcmFtIGNvbXBvbmVudCA6IHRoZSBjb21wb25lbnRcclxuICAgKiBAcGFyYW0gY29uZmlnIDogdGhlIGNvbmZpZ1xyXG4gICAqIEByZXR1cm5zOiB0aGUgZGlhbG9nIG9iamVjdFxyXG4gICAqL1xyXG4gIG9wZW4oY29tcG9uZW50OiBhbnksIGNvbmZpZzogYW55KTogTWF0RGlhbG9nUmVmPGFueT4ge1xyXG4gICAgaWYgKCFTeXN0ZW1VdGlscy5pc0Jyb3dzZXIoKSkgcmV0dXJuIG51bGw7XHJcbiAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbkRpYWxvZyhjb21wb25lbnQsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIE9wZW4gYSBkaWFsb2dcclxuICogQHBhcmFtIGNvbXBvbmVudCA6IHRoZSBjb21wb25lbnRcclxuICogQHBhcmFtIGNvbmZpZyA6IHRoZSBjb25maWdcclxuICogQHJldHVybnMgOiB0aGUgZGlhbG9nIG9iamVjdFxyXG4gKi9cclxuICBwcml2YXRlIG9wZW5EaWFsb2coY29tcG9uZW50OiBhbnksIGNvbmZpZzogYW55KTogTWF0RGlhbG9nUmVmPGFueT4ge1xyXG4gICAgLy8gV2Ugd2lsbCB0YWtlIGNhcmUgb2YgbmF2aWdhdGlvblxyXG4gICAgY29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gZmFsc2U7XHJcbiAgICBsZXQgZCA9IHRoaXMuZGlhbG9nLm9wZW4oY29tcG9uZW50LCBjb25maWcpO1xyXG4gICAgZC5hZnRlck9wZW5lZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucHVzaERpYWxvZyhkLmlkKTtcclxuICAgIH0pO1xyXG4gICAgZC5iZWZvcmVDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBvcERpYWxvZyhkLmlkKTsgICAgICAgXHJcbiAgICB9KTtcclxuICAgIGQuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAvLyBGaW5hbCBjbGVhbnVwIG9mIG1pZGRsZSBvYmplY3RzXHJcbiAgICAgIHRoaXMuZXJyb3JEaWFsb2dSZWYgPSBudWxsO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGVsZW1lbnQgaGVpZ2h0IGluY2x1ZGluZyBtYXJnaW5zXHJcbiAgICogQHBhcmFtIGVsZW1lbnQgLSBlbGVtZW50XHJcbiAgICogQHJldHVybnMgdGhlIGhlaWdodFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3V0ZXJIZWlnaHQoZWxlbWVudDogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICBsZXQgaCA9IFsndG9wJywgJ2JvdHRvbSddXHJcbiAgICAgIC5tYXAoc2lkZSA9PiBwYXJzZUludChzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tJyArIHNpZGUpKSlcclxuICAgICAgLnJlZHVjZSgodG90YWwsIHNpZGUpID0+IHRvdGFsICsgc2lkZSwgaGVpZ2h0KTtcclxuICAgIHJldHVybiBoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGN1cnJlbnQgZGlhbG9nIGhlaWdodFxyXG4gICAqL1xyXG4gIGdldEN1cnJlbnREaWFsb2dIZWlnaHQoKTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgY29uc3QgY291bnQgPSB0aGlzLnBvcEhpc3RvcnkubGVuZ3RoO1xyXG4gICAgaWYgKGNvdW50ID4gMCkge1xyXG4gICAgICBsZXQgaWQgPSB0aGlzLnBvcEhpc3RvcnlbY291bnQgLSAxXS5pZDtcclxuICAgICAgbGV0IGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICAgIGlmIChlbGVtICYmIGVsZW0uY2xpZW50SGVpZ2h0ID4gMCkgcmV0dXJuIGVsZW0uY2xpZW50SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm4gY3VycmVudCBkaWFsb2cgc2Nyb2xsYWJsZSBoZWlnaHRcclxuICAgKi9cclxuICBnZXRDdXJyZW50RGlhbG9nU2Nyb2xsYWJsZUhlaWdodChcclxuICAgIGZpeGVkUGFydHNDbGFzc05hbWU6IHN0cmluZ1tdLFxyXG4gICAgbWluaW1hbEhlaWdodDogbnVtYmVyXHJcbiAgKTogbnVtYmVyIHtcclxuICAgIGlmICghU3lzdGVtVXRpbHMuaXNCcm93c2VyKCkpIHJldHVybiAwO1xyXG4gICAgbGV0IGggPSB0aGlzLmdldEN1cnJlbnREaWFsb2dIZWlnaHQoKTtcclxuICAgIGlmIChoIDwgbWluaW1hbEhlaWdodCkgeyBcclxuICAgICAgaCA9IG1pbmltYWxIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICBpZiAoZml4ZWRQYXJ0c0NsYXNzTmFtZSkge1xyXG4gICAgICBmaXhlZFBhcnRzQ2xhc3NOYW1lLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgY29uc3QgZWxlbXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG4pO1xyXG4gICAgICAgIGlmIChlbGVtcykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBoIC09IHRoaXMub3V0ZXJIZWlnaHQoZWxlbXNbaV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFB1c2ggYSBkaWFsb2cgaW5mbyB0aGUgaGlzdG9yeVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcHVzaERpYWxvZyhpZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm47XHJcbiAgICBsZXQgaW5kZXggPSBoaXN0b3J5Lmxlbmd0aDtcclxuICAgIGhpc3RvcnkucHVzaFN0YXRlKHsgaW5kZXg6IGluZGV4IH0sIG51bGwsIGxvY2F0aW9uLmhyZWYgKyAnIycpO1xyXG4gICAgdGhpcy5wb3BIaXN0b3J5LnB1c2goeyBpZDogaWQsIHZhbHVlOiBpbmRleCB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvcCBhIGRpYWxvZyBmcm9tIHRoZSBoaXN0b3J5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwb3BEaWFsb2coaWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICBpZiAoIVN5c3RlbVV0aWxzLmlzQnJvd3NlcigpKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5wb3BTdGF0ZSkge1xyXG4gICAgICB0aGlzLnBvcHBpbmdTdGF0ZSA9IHRydWU7XHJcbiAgICAgIGxldCBwb3BwZWQgPSAxO1xyXG4gICAgICBpZiAoaWQpIHtcclxuICAgICAgICBjb25zdCBwID0gdGhpcy5wb3BIaXN0b3J5LmZpbmRJbmRleCgobjogYW55KSA9PiBuLmlkID09PSBpZCk7XHJcbiAgICAgICAgaWYgKHAgIT0gLTEpIHtcclxuICAgICAgICAgIHBvcHBlZCA9IHRoaXMucG9wSGlzdG9yeVtwXS52YWx1ZSAtIGhpc3Rvcnkuc3RhdGUuaW5kZXg7XHJcbiAgICAgICAgICBpZiAocG9wcGVkKSBwb3BwZWQrKztcclxuICAgICAgICAgIGVsc2UgcG9wcGVkID0gMTtcclxuICAgICAgICAgIHRoaXMucG9wSGlzdG9yeS5zcGxpY2UocCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHVybCA9IGxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgbGV0IGwgPSB1cmwubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlIChsID49IDAgJiYgdXJsW2wgLSAxXSA9PT0gJyMnICYmIHBvcHBlZCA+IDApIHtcclxuICAgICAgICAgIGwtLTtcclxuICAgICAgICAgIHBvcHBlZC0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobCA8IHVybC5sZW5ndGgpXHJcbiAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIHVybC5zdWJzdHJpbmcoMCwgbCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcFN0YXRlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZSB0aGUgYnVzeSBvdmVybGF5XHJcbiAgICogQHBhcmFtIHR5cGU6IHRoZSB0eXBlIG9mIHNwaW5uZXIgdG8gY3JlYXRlXHJcbiAgICogQHJldHVybnM6IHRoZSBuZXcgb3ZlcmxheVxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlQnVzeSgpOiBPdmVybGF5UmVmIHtcclxuICAgIHJldHVybiB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6J2J1c3ktYmFja2Ryb3AnLFxyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKVxyXG4gICAgICAgIC5nbG9iYWwoKVxyXG4gICAgICAgIC5jZW50ZXJIb3Jpem9udGFsbHkoKVxyXG4gICAgICAgIC5jZW50ZXJWZXJ0aWNhbGx5KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgYnVzeSBkaWFsb2dcclxuICAgKi9cclxuICBjbGVhckJ1c3koKSB7XHJcbiAgICB0aGlzLmJ1c3lEaWFsb2dSZWY/LmRldGFjaCgpOyAgICBcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIHR5cGU6IG5ldyB0eXBlIChkZWZhdWx0ID0gJ2JhcicpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBzZXRCdXN5KFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgdHlwZTogJ2JhcicgfCAnc3Bpbm5lcicgfCAnd2FpdCcgPSAnYmFyJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGxcclxuICApOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYnVzeURpYWxvZ1JlZj8uaGFzQXR0YWNoZWQoKTtcclxuICAgIGlmIChleGlzdHMpIHtcclxuICAgICAgdGhpcy5idXN5Q29tcG9uZW50UmVmLmluc3RhbmNlLnNldChtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCB0eXBlKTsgLy8gVXNlIHRoZSBzYW1lICAgICAgXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBPcGVuIG5ld1xyXG4gICAgICBpZiAoIXRoaXMuYnVzeURpYWxvZ1JlZikge1xyXG4gICAgICAgIHRoaXMuYnVzeURpYWxvZ1JlZiA9IHRoaXMuY3JlYXRlQnVzeSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYnVzeUNvbXBvbmVudFJlZiA9IHRoaXMuYnVzeURpYWxvZ1JlZi5hdHRhY2gobmV3IENvbXBvbmVudFBvcnRhbChCdXN5RGlhbG9nQ29tcG9uZW50KSk7XHJcbiAgICAgIHRoaXMuYnVzeUNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZXQobWVzc2FnZSwgcHJvZ3Jlc3MsIHByb2dyZXNzTW9kZSwgdHlwZSk7XHJcbiAgICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgICBhY3Rpb25cclxuICAgICAgICAgIC5waXBlKGZpcnN0KCkpXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckJ1c3koKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIWV4aXN0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgYSBidXN5IGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbmV3IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICAgKiBAcGFyYW0gcHJvZ3Jlc3NNb2RlIDogbmV3IG1vZGUgKGRlZmF1bHQgPSAnaW5kZXRlcm1pbmF0ZScpXHJcbiAgICogQHBhcmFtIGFjdGlvbiA6IGFjdGlvbiB0byBkbyBkdXJpbmcgdGhlIGV4ZWN1dGlvbiAob3B0aW9uYWwpXHJcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICAgKi9cclxuICBidXN5KG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIHByb2dyZXNzOiBudW1iZXIgPSAtMSxcclxuICAgIHByb2dyZXNzTW9kZTogJ2RldGVybWluYXRlJyB8ICdpbmRldGVybWluYXRlJyA9ICdpbmRldGVybWluYXRlJyxcclxuICAgIGFjdGlvbjogT2JzZXJ2YWJsZTxPYmplY3Q+IHwgbnVsbCA9IG51bGwpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNldEJ1c3kobWVzc2FnZSwgcHJvZ3Jlc3MsIHByb2dyZXNzTW9kZSwgJ2JhcicsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogRGlzcGxheSBhIGJ1c3kgc3Bpbm5lciBkaWFsb2dcclxuICogQHBhcmFtIG1lc3NhZ2UgOiBuZXcgbWVzc2FnZVxyXG4gKiBAcGFyYW0gcHJvZ3Jlc3MgOiBuZXcgcHJvZ3Jlc3NcclxuICogQHBhcmFtIHByb2dyZXNzTW9kZSA6IG5ldyBtb2RlIChkZWZhdWx0ID0gJ2luZGV0ZXJtaW5hdGUnKVxyXG4gKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICogQHJldHVybnMgdHJ1ZSBpZiBhIG5ldyBwb3B1cCBoYXMgYmVlbiBvcGVuZWRcclxuICovXHJcbiAgYnVzeVNwaW5uZXIobWVzc2FnZTogc3RyaW5nLFxyXG4gICAgcHJvZ3Jlc3M6IG51bWJlciA9IC0xLFxyXG4gICAgcHJvZ3Jlc3NNb2RlOiAnZGV0ZXJtaW5hdGUnIHwgJ2luZGV0ZXJtaW5hdGUnID0gJ2luZGV0ZXJtaW5hdGUnLFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShtZXNzYWdlLCBwcm9ncmVzcywgcHJvZ3Jlc3NNb2RlLCAnc3Bpbm5lcicsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIERpc3BsYXkgYSB3YWl0IHNwaW5uZXIgXHJcbiAgKiBAcGFyYW0gYWN0aW9uIDogYWN0aW9uIHRvIGRvIGR1cmluZyB0aGUgZXhlY3V0aW9uIChvcHRpb25hbClcclxuICAqIEByZXR1cm5zIHRydWUgaWYgYSBuZXcgcG9wdXAgaGFzIGJlZW4gb3BlbmVkXHJcbiAgKi9cclxuICB3YWl0KFxyXG4gICAgYWN0aW9uOiBPYnNlcnZhYmxlPE9iamVjdD4gfCBudWxsID0gbnVsbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2V0QnVzeShudWxsLCBudWxsLCBudWxsLCAnd2FpdCcsIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhbiBpbmZvcm1hdGlvbiBkaWFsb2dcclxuICAgKiBAcGFyYW0gbWVzc2FnZSA6IG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gd2lkdGg6IHRoZSBwcmVmZXJyZWQgd2lkdGhcclxuICAgKiBAcGFyYW0gZGlzbWlzc0FmdGVyOiBpZiBzcGVjaWZpZWQsIHRoZSBkaWFsb2cgd2lsbCBiZSBjbG9zZWQgYWZ0ZXIgZGlzbWlzc0FmdGVyIG1pbGxpc2Vjb25kc1xyXG4gICAqIEBwYXJhbSBkZXRhaWxzOiBpZiBzcGVjaWZpZWQsIHRoZSBkZXRhaWxzIGluZm9cclxuICAgKi9cclxuICBpbmZvKFxyXG4gICAgbWVzc2FnZTogc3RyaW5nLFxyXG4gICAgdGl0bGU6IHN0cmluZyA9ICdJbmZvcm1hemlvbmknLFxyXG4gICAgb2tDYXB0aW9uOiBzdHJpbmcgPSAnT2snLFxyXG4gICAgd2lkdGg6IG51bWJlciA9IDUwMCxcclxuICAgIGRpc21pc3NBZnRlcjogbnVtYmVyIHwgbnVsbCA9IG51bGwsXHJcbiAgICBkZXRhaWxzOiBzdHJpbmcgfCBudWxsID0gbnVsbFxyXG4gICk6IE1hdERpYWxvZ1JlZjxJbmZvRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2luZm9ybWF6aW9uaScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIG9rQ2FwdGlvbjogb2tDYXB0aW9uLFxyXG4gICAgICAgIGRpc21pc3NBZnRlcjogZGlzbWlzc0FmdGVyLFxyXG4gICAgICAgIGRldGFpbHM6IGRldGFpbHMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgSW5mb0RpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiB3aWR0aCArICdweCcsXHJcbiAgICAgIHdpZHRoOiAnOTklJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IGFuIGVycm9yIGRpYWxvZ1xyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBsb2cgOiB0aGUgZXJyb3IgbG9nXHJcbiAgICogQHBhcmFtIHRpdGxlIDogZGlhbG9nIHRpdGxlXHJcbiAgICogQHBhcmFtIG9rQ2FwdGlvbiA6IG9rIGJ1dHRvbiBjYXB0aW9uXHJcbiAgICogQHBhcmFtIHdpZHRoOiB0aGUgcHJlZmVycmVkIHdpZHRoXHJcbiAgICogQHBhcmFtIGRpc21pc3NBZnRlcjogaWYgc3BlY2lmaWVkLCB0aGUgZGlhbG9nIHdpbGwgYmUgY2xvc2VkIGFmdGVyIGRpc21pc3NBZnRlciBtaWxsaXNlY29uZHMgICBcclxuICAgKi9cclxuICBlcnJvcihcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGxvZzogc3RyaW5nIHwgbnVsbCA9IG51bGwsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0Vycm9yZScsXHJcbiAgICBva0NhcHRpb246IHN0cmluZyA9ICdPaycsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwLFxyXG4gICAgZGlzbWlzc0FmdGVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxyXG4gICk6IE1hdERpYWxvZ1JlZjxJbmZvRGlhbG9nQ29tcG9uZW50PiB7XHJcbiAgICB0aGlzLmNsZWFyQnVzeSgpO1xyXG4gICAgaWYgKHRoaXMuZXJyb3JEaWFsb2dSZWYpIHtcclxuICAgICAgLy8gSnVzdCBjaGFuZ2UgY3VycmVudCBlcnJvclxyXG4gICAgICB0aGlzLmVycm9yRGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLnNldERhdGEoIHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBkZXRhaWxzOiBsb2csXHJcbiAgICAgICAgb2tDYXB0aW9uOiBva0NhcHRpb24sXHJcbiAgICAgICAgZGlzbWlzc0FmdGVyOiBkaXNtaXNzQWZ0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IHRoaXMub3BlbihJbmZvRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Vycm9yZScsXHJcbiAgICAgIGF1dG9Gb2N1czogdHJ1ZSxcclxuICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIGRldGFpbHM6IGxvZyxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBkaXNtaXNzQWZ0ZXI6IGRpc21pc3NBZnRlcixcclxuICAgICAgICBhcHBlYXJhbmNlOiAnZmlsbCdcclxuICAgICAgfSBhcyBJbmZvRGlhbG9nRGF0YSxcclxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmVycm9yRGlhbG9nUmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSB0b2FzdFxyXG4gICAqIEBwYXJhbSBtZXNzYWdlIDogbWVzc2FnZSB0byBkaXNwbGF5XHJcbiAgICogQHBhcmFtIGR1cmF0aW9uIDogZHVyYXRpb24gaW4gbXNlY1xyXG4gICAqIEBwYXJhbSBpY29uIDogdGhlIG1hdC1pY29uIHRvIGRpc3BsYXlcclxuICAgKiBAcGFyYW0gYWN0aW9uQ2FwdGlvbiBhY3Rpb24gYnV0dG9uIGNhcHRpb25cclxuICAgKi9cclxuICB0b2FzdChcclxuICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgIGR1cmF0aW9uOiBudW1iZXIgPSAyMDAwLFxyXG4gICAgaWNvbjogc3RyaW5nID0gJ2NoZWNrJyxcclxuICAgIGFjdGlvbkNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsXHJcbiAgKTogTWF0U25hY2tCYXJSZWY8VG9hc3RDb21wb25lbnQ+IHtcclxuICAgIHRoaXMuY2xlYXJCdXN5KCk7XHJcbiAgICBpZiAoZHVyYXRpb24gPT09IC0xKSBkdXJhdGlvbiA9IDIwMDA7IC8vIGRlZmF1bHRcclxuICAgIGxldCB0b2FzdFJlZiA9IHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoVG9hc3RDb21wb25lbnQsIHtcclxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgICBpY29uOiBpY29uLFxyXG4gICAgICAgIGFjdGlvbkNhcHRpb246IGFjdGlvbkNhcHRpb25cclxuICAgICAgfSBhcyBUb2FzdERhdGFcclxuICAgIH0pO1xyXG4gICAgdG9hc3RSZWYuaW5zdGFuY2UuYWN0aW9uLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRvYXN0UmVmLmRpc21pc3MoKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRvYXN0UmVmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzcGxheSBhIGNvbmZpcm0gZGlhbG9nXHJcbiAgICogQHBhcmFtIG1lc3NhZ2UgOiBodG1sIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gdGl0bGUgOiBkaWFsb2cgdGl0bGVcclxuICAgKiBAcGFyYW0gb2tDYXB0aW9uIDogb2sgYnV0dG9uIGNhcHRpb25cclxuICAgKiBAcGFyYW0gY2FuY2VsQ2FwdGlvbiA6IGNhbmNlbCBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvdGhlckNhcHRpb24gOiBvdGhlciBidXR0b24gY2FwdGlvblxyXG4gICAqIEBwYXJhbSBvcHRpb25zOiBjaGVjayBib3ggb3B0aW9uc1xyXG4gICAqIEBwYXJhbSB3aWR0aDogdGhlIHByZWZlcnJlZCB3aWR0aFxyXG4gICAqL1xyXG4gIGNvbmZpcm0oXHJcbiAgICBtZXNzYWdlOiBzdHJpbmcsXHJcbiAgICB0aXRsZTogc3RyaW5nID0gJ0NvbmZlcm1hJyxcclxuICAgIG9rQ2FwdGlvbjogc3RyaW5nID0gJ1NpJyxcclxuICAgIGNhbmNlbENhcHRpb246IHN0cmluZyA9ICdObycsXHJcbiAgICBvdGhlckNhcHRpb246IHN0cmluZyB8IG51bGwgPSBudWxsLFxyXG4gICAgb3B0aW9uczogYW55IHwgbnVsbCA9IG51bGwsXHJcbiAgICB3aWR0aDogbnVtYmVyID0gNTAwXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnY29uZmVybWEnLFxyXG4gICAgICBhdXRvRm9jdXM6IHRydWUsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogZmFsc2UsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICBva0NhcHRpb246IG9rQ2FwdGlvbixcclxuICAgICAgICBjYW5jZWxDYXB0aW9uOiBjYW5jZWxDYXB0aW9uLFxyXG4gICAgICAgIG90aGVyQ2FwdGlvbjogb3RoZXJDYXB0aW9uLFxyXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXHJcbiAgICAgICAgYXBwZWFyYW5jZTogJ2ZpbGwnXHJcbiAgICAgIH0gYXMgQ29uZmlybURpYWxvZ0RhdGEsXHJcbiAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiBmYWxzZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLCAgIFxyXG4gICAgICBtaW5XaWR0aDogJzM3NXB4JyxcclxuICAgICAgbWF4V2lkdGg6IHdpZHRoICsgJ3B4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnXHJcbiAgICB9KTtcclxuICB9XHJcbiAgXHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { signal, computed, inject, Injectable, NgModule } from '@angular/core';
|
|
3
3
|
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
|
4
|
+
import { BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';
|
|
4
5
|
import { DialogService } from '@arsedizioni/ars-utils/ui';
|
|
5
6
|
import { throwError, of, catchError as catchError$1, switchMap } from 'rxjs';
|
|
6
|
-
import { BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';
|
|
7
7
|
import { catchError, map } from 'rxjs/operators';
|
|
8
8
|
|
|
9
9
|
const ClipperMessages = {
|
|
@@ -2077,10 +2077,7 @@ class ClipperService {
|
|
|
2077
2077
|
* Get facets for a query
|
|
2078
2078
|
*/
|
|
2079
2079
|
queryFacets(params) {
|
|
2080
|
-
return this.httpClient.post(
|
|
2081
|
-
(params.models?.length === 1 && params.models[0] === ClipperModel.Coordinamento)
|
|
2082
|
-
? this._serviceUri + '/documents/changes/facets'
|
|
2083
|
-
: this._serviceUri + '/documents/facets', params);
|
|
2080
|
+
return this.httpClient.post(this._serviceUri + '/documents/facets', params);
|
|
2084
2081
|
}
|
|
2085
2082
|
/**
|
|
2086
2083
|
* Update document state
|
|
@@ -2399,26 +2396,29 @@ class ClipperAuthInterceptor {
|
|
|
2399
2396
|
this.clipperService = inject(ClipperService);
|
|
2400
2397
|
this.broadcastService = inject(BroadcastService);
|
|
2401
2398
|
this.dialogService = inject(DialogService);
|
|
2399
|
+
this.lastErrorTime = -1;
|
|
2402
2400
|
}
|
|
2403
2401
|
intercept(request, next) {
|
|
2404
2402
|
if (request.url.startsWith(this.clipperService.serviceUri)) {
|
|
2405
2403
|
request = request.clone({ withCredentials: true });
|
|
2406
2404
|
return next.handle(this.addTokenToRequest(request))
|
|
2407
2405
|
.pipe(catchError$1(error => {
|
|
2406
|
+
this.dialogService.clearBusy();
|
|
2408
2407
|
if (error instanceof HttpErrorResponse &&
|
|
2409
2408
|
!request.url.includes("/login") &&
|
|
2410
2409
|
error.status === 401) {
|
|
2411
2410
|
return this.handle401Error(request, next);
|
|
2412
2411
|
}
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2412
|
+
const errorTime = new Date().getTime();
|
|
2413
|
+
if (errorTime - this.lastErrorTime > 5000) {
|
|
2414
|
+
this.lastErrorTime = errorTime;
|
|
2415
|
+
const invalidSession = error.status == "403";
|
|
2416
|
+
this.dialogService.error("<p>" + (error.error?.message ?? error.message ?? "Impossibile eseguire l'operazione richiesta.").replaceAll("\r\n", "</p><p>") + "</p>", null, "Errore in Clipper", undefined, undefined, invalidSession ? 5000 : 15000).afterClosed().subscribe(() => {
|
|
2417
|
+
if (invalidSession) {
|
|
2418
|
+
this.broadcastService.sendMessage(ClipperMessages.LOGOUT);
|
|
2419
|
+
}
|
|
2420
|
+
});
|
|
2421
|
+
}
|
|
2422
2422
|
return throwError(() => error);
|
|
2423
2423
|
}));
|
|
2424
2424
|
}
|