ets-fe-ng-sdk 17.0.69 → 17.0.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/Services/api.service.mjs +11 -12
- package/esm2022/lib/Services/utility.service.mjs +33 -34
- package/esm2022/lib/Shared/components/info-dialog/info-dialog.component.mjs +4 -4
- package/esm2022/lib/Shared/components/info-dialog/info-dialog.service.mjs +4 -3
- package/fesm2022/ets-fe-ng-sdk.mjs +129 -128
- package/fesm2022/ets-fe-ng-sdk.mjs.map +1 -1
- package/lib/Services/api.service.d.ts +4 -4
- package/lib/Services/utility.service.d.ts +16 -16
- package/lib/Shared/components/info-dialog/info-dialog.component.d.ts +1 -1
- package/lib/Shared/components/info-dialog/info-dialog.service.d.ts +3 -2
- package/package.json +1 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpHeaders, HttpRequest } from '@angular/common/http';
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';
|
|
3
3
|
import { lastValueFrom, Observable, throwError } from 'rxjs';
|
|
4
4
|
import { catchError, map, retry, tap } from 'rxjs/operators';
|
|
5
|
+
import { CacheService } from './cache/cache.service';
|
|
6
|
+
import { LocalCacheService } from './cache/local-cache.service';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
import * as i2 from "./cache/cache.service";
|
|
8
|
-
import * as i3 from "./cache/local-cache.service";
|
|
9
8
|
export class ApiService {
|
|
10
9
|
get headers() {
|
|
11
10
|
return {
|
|
@@ -17,13 +16,13 @@ export class ApiService {
|
|
|
17
16
|
enctype: 'multipart/form-data',
|
|
18
17
|
};
|
|
19
18
|
}
|
|
20
|
-
constructor(
|
|
21
|
-
this.http = http;
|
|
22
|
-
this.cacheS = cacheS;
|
|
23
|
-
this.lCacheS = lCacheS;
|
|
19
|
+
constructor() {
|
|
24
20
|
this.showRoutes = 0;
|
|
25
21
|
this.baseURL = '';
|
|
26
22
|
this.retryCount = 0;
|
|
23
|
+
this.http = inject(HttpClient);
|
|
24
|
+
this.cacheS = inject(CacheService);
|
|
25
|
+
this.lCacheS = inject(LocalCacheService);
|
|
27
26
|
this.handleRequestError = (err) => {
|
|
28
27
|
let message;
|
|
29
28
|
if (err?.error instanceof ArrayBuffer)
|
|
@@ -321,7 +320,7 @@ export class ApiService {
|
|
|
321
320
|
},
|
|
322
321
|
});
|
|
323
322
|
}
|
|
324
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ApiService, deps: [
|
|
323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
325
324
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ApiService, providedIn: 'root' }); }
|
|
326
325
|
}
|
|
327
326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: ApiService, decorators: [{
|
|
@@ -329,5 +328,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImpor
|
|
|
329
328
|
args: [{
|
|
330
329
|
providedIn: 'root',
|
|
331
330
|
}]
|
|
332
|
-
}], ctorParameters: () => [
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWlDLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRixPQUFPLEVBQU8sYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWM3RCxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFJRCxZQUNTLElBQWdCLEVBQ2hCLE1BQW9CLEVBQ3BCLE9BQTBCO1FBRjFCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQWpCM0IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQVl2QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ0wsZUFBVSxHQUFHLENBQUMsQ0FBQztRQVliLHVCQUFrQixHQUFHLENBQUMsR0FBc0IsRUFBRSxFQUFFO1lBQ3hELElBQUksT0FBTyxDQUFDO1lBQ1osSUFBSSxHQUFHLEVBQUUsS0FBSyxZQUFZLFdBQVc7Z0JBQUUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJ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QUFJO2FBQ2IsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtZQUN4Qyx3QkFBd0I7WUFDeEIsR0FBRyxNQUFNLEVBQUUsT0FBTztZQUNsQixvQ0FBb0M7WUFDcEMsc0JBQXNCO1lBQ3RCLHNDQUFzQztZQUN0QyxRQUFRO1lBQ1IsNkJBQTZCO1lBQzdCLEtBQUs7U0FDTixDQUFDO2FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBa0IsQ0FBQztJQUNoRSxDQUFDO0lBQ0Qsc0JBQXNCLENBQVUsS0FBYSxFQUFFLElBQWM7UUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFJLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDOUIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7YUFDekQ7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQXZTVSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSGVhZGVycywgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpaWYsIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgcmV0cnksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElDb2RlRGVzY3JpcHRpb24sIElDb2RlVGl0bGUgfSBmcm9tICcuLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENhY2hlU2VydmljZSB9IGZyb20gJy4vY2FjaGUvbG9jYWwtY2FjaGUuc2VydmljZSc7XG5leHBvcnQgaW50ZXJmYWNlIElSZXNwb25zZSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgcmVzdWx0OiBhbnk7XG4gIHN0YXR1czogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdmYWlsdXJlJztcbiAgc3RhdHVzQ29kZTogJ1NNMDAwJyB8ICdTTTAwMScgfCAnU00wMDInIHwgJ1NNMDAzJztcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzaG93Um91dGVzID0gMDtcbiAgcHJpdmF0ZSBnZXQgaGVhZGVycygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9O1xuICB9XG4gIHByb3RlY3RlZCBnZXQgZmlsZUhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICB9O1xuICB9XG5cbiAgYmFzZVVSTCA9ICcnO1xuICBwcml2YXRlIHJldHJ5Q291bnQgPSAwO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgY2FjaGVTOiBDYWNoZVNlcnZpY2UsXG4gICAgcHVibGljIGxDYWNoZVM6IExvY2FsQ2FjaGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHJpdmF0ZSBsb2dSb3V0ZXMobWV0aG9kOiAnZ2V0JyB8ICdwb3N0JyB8ICdwdXQnIHwgJ2RlbGV0ZScsIHJvdXRlLCAuLi5leHRyYXMpIHtcbiAgICBpZiAodGhpcy5zaG93Um91dGVzKSB7XG4gICAgICBjb25zb2xlLmxvZyhtZXRob2QsIHJvdXRlLCAuLi5leHRyYXMpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgaGFuZGxlUmVxdWVzdEVycm9yID0gKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAoZXJyPy5lcnJvciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSBtZXNzYWdlID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDhBcnJheShlcnI/LmVycm9yKSk7XG4gICAgcmV0dXJuIHRocm93RXJyb3IobWVzc2FnZSB8fCBlcnI/LmVycm9yPy5tZXNzYWdlKTtcbiAgfTtcbiAgcHJvdGVjdGVkIGNvbmNhdGVuYXRlSGVhZGVycyA9IChoZWFkZXJzMTogSHR0cEhlYWRlcnMsIGhlYWRlcnMyOiBIdHRwSGVhZGVycyk6IEh0dHBIZWFkZXJzID0+IHtcbiAgICBpZiAoIWhlYWRlcnMxKSByZXR1cm4gaGVhZGVyczI7XG4gICAgZWxzZSBpZiAoIWhlYWRlcnMyKSByZXR1cm4gaGVhZGVyczE7XG5cbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBoZWFkZXJzMS5rZXlzKCkpIGhlYWRlcnMgPSBoZWFkZXJzLnNldChpdGVtLCBoZWFkZXJzMS5nZXQoaXRlbSkpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBoZWFkZXJzMi5rZXlzKCkpIHtcbiAgICAgIGlmIChoZWFkZXJzLmhhcyhpdGVtKSkgaGVhZGVycy5kZWxldGUoaXRlbSk7XG4gICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoaXRlbSwgaGVhZGVyczIuZ2V0KGl0ZW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlcnM7XG4gIH07XG5cbiAgLy8jcmVnaW9uIFBBVENIXG4gIHBhdGNoPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/LCBleHRyYXM/OiBJRXh0cmFzKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ3Bvc3QnLCByb3V0ZSwgYm9keSk7XG4gICAgY29uc29sZS5sb2coYm9keSk7XG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50ID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJykgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucGF0Y2goZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhoZWFkZXJzLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG4gIC8vI3JlZ2lvbiBQT1NUXG4gIHBvc3Q8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncG9zdCcsIHJvdXRlLCBib2R5KTtcbiAgICBjb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKSA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCtyb3V0ZSksIGJvZHksIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHBvc3RGaWxlPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhLCBleHRyYXM/OiBhbnkpIHtcbiAgICAvLyByZXR1cm4gdGhpcy5wb3N0PFQ+KHJvdXRlLCBib2R5LCB7XG4gICAgLy8gICBvcHRpb25zOiB7XG4gICAgLy8gICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgIC8vICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgLy8gICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKFxuICAgIC8vICAgICAgIG5ldyBIdHRwSGVhZGVycyh7XG4gICAgLy8gICAgICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgLy8gICAgICAgfSksXG4gICAgLy8gICAgICAgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzXG4gICAgLy8gICAgICksXG4gICAgLy8gICB9LFxuICAgIC8vIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCtyb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwb3N0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHBvc3RTdHJpbmcocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVxdWVzdENvdW50JywgKytFVFNlbnZpcm9ubWVudC5yZXF1ZXN0Q291bnQpO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgfSk7XG4gICAgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBoZWFkZXJzLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5wb3N0PHN0cmluZz4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZ1dpdGhMb2NhbENhY2hlKHJvdXRlOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGJkeSA9IGJvZHk/LnRyaW0oKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIGJkeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIGJkeSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RTdHJpbmcocm91dGUsIGJkeSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyBiZHksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBHRVRcbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBHRVQgcmVxdWVzdFxuICAgKiBAcGFyYW0gcm91dGUgQVBJIGVuZHBvaW50XG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9iamVjdCB0byBjb252ZXJ0IGludG8gcXVlcnlwYXJhbXNcbiAgICogQHBhcmFtIGV4dHJhcyBFeHRyYSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdnZXQnLCByb3V0ZSwgcGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMK3JvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLmdldChxdWVyeSwge1xuICAgICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgcmV0cnkodGhpcy5yZXRyeUNvdW50KSxcbiAgICAgICAgICB0YXAoKHgpID0+ICh0aGlzLnNob3dSb3V0ZXMgPyBjb25zb2xlLmxvZyh4KSA6IG51bGwpKSxcbiAgICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKVxuICAgICAgICAgICAgICBpZiAocmVzWzBdPy5jb2RlKSByZXR1cm4gcmVzLnNvcnQoKS5zb3J0MignY29kZScsIHRydWUpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChyZXNbMF0/LmNvbHVtbk5hbWUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2x1bW5OYW1lJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHJlcy5zb3J0KCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpLFxuICAgICAgICApXG4gICAgICAgIC50b1Byb21pc2UoKVxuICAgICAgICAudGhlbigocikgPT4ge1xuICAgICAgICAgIHJlcy5uZXh0KHIpO1xuICAgICAgICAgIHRoaXMuY2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycikgPT4gcmVzLmVycm9yKGVycikpO1xuICAgIH0pO1xuICB9O1xuXG4gIGdldENvZGVzID0gPFQgZXh0ZW5kcyBJQ29kZVRpdGxlIHwgSUNvZGVEZXNjcmlwdGlvbiA9IElDb2RlVGl0bGUgJiBJQ29kZURlc2NyaXB0aW9uPihyb3V0ZTogc3RyaW5nKSA9PlxuICAgIHRoaXMuZ2V0PFRbXT4ocm91dGUpLnBpcGUobWFwKChyZXMpID0+IHRoaXMuc29ydENvZGVzKHJlcykpKTtcblxuICBnZXRUZXh0ID0gPFQgPSBzdHJpbmc+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB7IFtmaWVsZDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9LCBleHRyYXM/OiBJRXh0cmFzKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgZ2V0RmlsZSA9IDxUID0gc3RyaW5nPihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSwgZXh0cmFzPzogSUV4dHJhcykgPT5cbiAgICB0aGlzLmdldDxUPihyb3V0ZSwgcGFyYW1ldGVycywge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlCdWZmZXInLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRXaXRoQm9keSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PzogYW55LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2dldCcsIHJvdXRlKTtcbiAgICAvLyBkZWJ1Z2dlclxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnR0VUJywgdGhpcy5iYXNlVVJMK3JvdXRlLCBib2R5LCB7XG4gICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucmVxdWVzdDxUPihyZXEpLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8VD47XG4gIH07XG5cbiAgZ2V0RnJvbWxvY2FsID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBPYmplY3QsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VD4oKHJlcykgPT4ge1xuICAgICAgY29uc3QgcXVlcnkgPSByb3V0ZSArIHRoaXMuZ2V0UmVxdWVzdFBhcnNlKHBhcmFtZXRlcnMpO1xuICAgICAgaWYgKHRoaXMubENhY2hlUy5oYXMocXVlcnkpKSB7XG4gICAgICAgIHJlcy5uZXh0KHRoaXMubENhY2hlUy5nZXRJdGVtPFQ+KHF1ZXJ5KSk7XG4gICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgfSBlbHNlXG4gICAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5nZXQocXVlcnksIG51bGwsIGV4dHJhcykpLnRoZW4oKHIpID0+IHtcbiAgICAgICAgICAvLyBpZiAoIXRoaXMuY1MuaGFzKHJvdXRlKSlcbiAgICAgICAgICByZXMubmV4dChyKTtcbiAgICAgICAgICB0aGlzLmxDYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICBnZXRXaXRoTG9jYWxDYWNoZSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogT2JqZWN0LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIGlmICh0aGlzLmxDYWNoZVMuaGFzKHF1ZXJ5KSkge1xuICAgICAgICByZXMubmV4dCh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxUPihxdWVyeSkpO1xuICAgICAgfVxuICAgICAgbGFzdFZhbHVlRnJvbSh0aGlzLmdldChxdWVyeSwgbnVsbCwgZXh0cmFzKSlcbiAgICAgICAgLnRoZW4oKHIpID0+IHtcbiAgICAgICAgICAvLyBpZiAoIXRoaXMuY1MuaGFzKHJvdXRlKSlcbiAgICAgICAgICByZXMubmV4dChyKTtcbiAgICAgICAgICB0aGlzLmxDYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIHJlcy5lcnJvcihlKTtcbiAgICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG4gIGdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzPzogT2JqZWN0KSB7XG4gICAgcmV0dXJuICFwYXJhbWV0ZXJzXG4gICAgICA/ICcnXG4gICAgICA6ICc/JyArXG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1ldGVycylcbiAgICAgICAgICAgIC5maWx0ZXIoKGtleSkgPT4gcGFyYW1ldGVyc1trZXldPy50b1N0cmluZygpPy50cmltKCkgIT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gYCR7a2V5fT0ke3BhcmFtZXRlcnNba2V5XT8udG9TdHJpbmcoKT8udHJpbSgpfWApXG4gICAgICAgICAgICAuam9pbignJicpO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBQVVRcbiAgcHV0PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/LCBleHRyYXM/OiBJRXh0cmFzKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ3B1dCcsIHJvdXRlLCBib2R5KTtcbiAgICBsZXQgcXVlcnkgPSB0aGlzLmJhc2VVUkwrcm91dGUgKyAnJyxcbiAgICAgIG5ib2R5ID0gYm9keTtcbiAgICBpZiAoZXh0cmFzPy5yZXF1ZXN0VHlwZSA9PSAncXVlcnlQYXJhbXMnKSB7XG4gICAgICBxdWVyeSArPSB0aGlzLmdldFJlcXVlc3RQYXJzZShib2R5KTtcbiAgICAgIG5ib2R5ID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50ID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJykgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KHF1ZXJ5LCBuYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHB1dEZpbGU8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEsIGV4dHJhcz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCtyb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwdXRGaWxlV2l0aEVuZG9yc2VtZW50PFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk6IEZvcm1EYXRhKSB7XG4gICAgcmV0dXJuIHRoaXMucHV0PFQ+KHJvdXRlLCBib2R5LCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gREVMRVRFXG4gIGRlbGV0ZSA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgdGhpcy5sb2dSb3V0ZXMoJ2RlbGV0ZScsIHJvdXRlKTtcblxuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudCA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmRlbGV0ZTxUPih0aGlzLmJhc2VVUkwrcm91dGUsIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfTtcbiAgZGVsZXRlV2l0aEJvZHkgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT86IGFueSwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdkZWxldGUnLCByb3V0ZSk7XG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdERUxFVEUnLHRoaXMuYmFzZVVSTCsgcm91dGUsIGJvZHksIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9O1xuICBkZWxldGVUZXh0ID0gKHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+XG4gICAgdGhpcy5kZWxldGU8c3RyaW5nPihyb3V0ZSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHNvcnRDb2RlcyA9IDxUIGV4dGVuZHMgeyBjb2RlOiBzdHJpbmcgfT4oZGF0YTogVFtdKSA9PiB7XG4gICAgcmV0dXJuIGRhdGE/LnNvcnQyKCdjb2RlJywgdHJ1ZSk/LnNvcnQyKCdjb2RlJykgYXMgYW55IGFzIFRbXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIElFeHRyYXMge1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHVzZSB0aGUgZW5kb3JzZW1lbnQgaGVhZGVyXG4gICAqL1xuICB1c2VFbmRvcnNlbWVudD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXBvcnQgcHJvZ3Jlc3Mgb2YgdGhlIHJlcXVlc3RcbiAgICovXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHJlcXVlc3Qgb3B0aW9ucy4gVGhlIGFkZGVkIG9wdGlvbnMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgICBbeDogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcmVxdWVzdCB0eXBlLiBJZiB0aGUgcmVxdWVzdCB0eXBlIGlzIHF1ZXJ5UGFyYW1zLCB0aGUgYm9keSB3aWxsIGJlIHNlbnQgYXMgcXVlcnkgcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVxdWVzdFR5cGU/OiAncXVlcnlQYXJhbXMnO1xufVxuIl19
|
|
331
|
+
}], ctorParameters: () => [] });
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvU2VydmljZXMvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBcUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBTyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVVoRSxNQUFNLE9BQU8sVUFBVTtJQUVyQixJQUFZLE9BQU87UUFDakIsT0FBTztZQUNMLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFjLFdBQVc7UUFDdkIsT0FBTztZQUNMLE9BQU8sRUFBRSxxQkFBcUI7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRRDtRQWxCUSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBWXZCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDTCxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsV0FBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5QixZQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFTakMsdUJBQWtCLEdBQUcsQ0FBQyxHQUFzQixFQUFFLEVB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VUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFvQixDQUFDO0lBQ2xFLENBQUM7SUFDRCxPQUFPLENBQVUsS0FBYSxFQUFFLElBQWMsRUFBRSxNQUFZO1FBQzFELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQzFDLHdCQUF3QjtZQUN4QixHQUFHLE1BQU0sRUFBRSxPQUFPO1lBQ2xCLG9DQUFvQztZQUNwQyxzQkFBc0I7WUFDdEIsc0NBQXNDO1lBQ3RDLFFBQVE7WUFDUiw2QkFBNkI7WUFDN0IsS0FBSztTQUNOLENBQUM7YUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFrQixDQUFDO0lBQ2hFLENBQUM7SUFDRCxzQkFBc0IsQ0FBVSxLQUFhLEVBQUUsSUFBYztRQUMzRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUksS0FBSyxFQUFFLElBQUksRUFBRTtZQUM5QixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQzthQUN6RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdlNVLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaWlmLCBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHJldHJ5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJQ29kZURlc2NyaXB0aW9uLCBJQ29kZVRpdGxlIH0gZnJvbSAnLi4vU2hhcmVkL21vZGVscy9pbmRleC5tb2RlbCc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlL2NhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxDYWNoZVNlcnZpY2UgfSBmcm9tICcuL2NhY2hlL2xvY2FsLWNhY2hlLnNlcnZpY2UnO1xuZXhwb3J0IGludGVyZmFjZSBJUmVzcG9uc2Uge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlc3VsdDogYW55O1xuICBzdGF0dXM6ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnZmFpbHVyZSc7XG4gIHN0YXR1c0NvZGU6ICdTTTAwMCcgfCAnU00wMDEnIHwgJ1NNMDAyJyB8ICdTTTAwMyc7XG59XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSB7XG4gIHByaXZhdGUgc2hvd1JvdXRlcyA9IDA7XG4gIHByaXZhdGUgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IGZpbGVIZWFkZXJzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgfTtcbiAgfVxuXG4gIGJhc2VVUkwgPSAnJztcbiAgcHJpdmF0ZSByZXRyeUNvdW50ID0gMDtcbiAgcHVibGljIGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHB1YmxpYyBjYWNoZVMgPSBpbmplY3QoQ2FjaGVTZXJ2aWNlKTtcbiAgcHVibGljIGxDYWNoZVMgPSBpbmplY3QoTG9jYWxDYWNoZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwcml2YXRlIGxvZ1JvdXRlcyhtZXRob2Q6ICdnZXQnIHwgJ3Bvc3QnIHwgJ3B1dCcgfCAnZGVsZXRlJywgcm91dGUsIC4uLmV4dHJhcykge1xuICAgIGlmICh0aGlzLnNob3dSb3V0ZXMpIHtcbiAgICAgIGNvbnNvbGUubG9nKG1ldGhvZCwgcm91dGUsIC4uLmV4dHJhcyk7XG4gICAgfVxuICB9XG4gIHByb3RlY3RlZCBoYW5kbGVSZXF1ZXN0RXJyb3IgPSAoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgIGxldCBtZXNzYWdlO1xuICAgIGlmIChlcnI/LmVycm9yIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIG1lc3NhZ2UgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50OEFycmF5KGVycj8uZXJyb3IpKTtcbiAgICByZXR1cm4gdGhyb3dFcnJvcihtZXNzYWdlIHx8IGVycj8uZXJyb3I/Lm1lc3NhZ2UpO1xuICB9O1xuICBwcm90ZWN0ZWQgY29uY2F0ZW5hdGVIZWFkZXJzID0gKGhlYWRlcnMxOiBIdHRwSGVhZGVycywgaGVhZGVyczI6IEh0dHBIZWFkZXJzKTogSHR0cEhlYWRlcnMgPT4ge1xuICAgIGlmICghaGVhZGVyczEpIHJldHVybiBoZWFkZXJzMjtcbiAgICBlbHNlIGlmICghaGVhZGVyczIpIHJldHVybiBoZWFkZXJzMTtcblxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGhlYWRlcnMxLmtleXMoKSkgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGl0ZW0sIGhlYWRlcnMxLmdldChpdGVtKSk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGhlYWRlcnMyLmtleXMoKSkge1xuICAgICAgaWYgKGhlYWRlcnMuaGFzKGl0ZW0pKSBoZWFkZXJzLmRlbGV0ZShpdGVtKTtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldChpdGVtLCBoZWFkZXJzMi5nZXQoaXRlbSkpO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfTtcblxuICAvLyNyZWdpb24gUEFUQ0hcbiAgcGF0Y2g8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygncG9zdCcsIHJvdXRlLCBib2R5KTtcbiAgICBjb25zb2xlLmxvZyhib2R5KTtcbiAgICBsZXQgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKS5zZXQoJ3VzZUVuZG9yc2VtZW50JywgJ3RydWUnKSA6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wYXRjaChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICAvLyNlbmRyZWdpb25cbiAgLy8jcmVnaW9uIFBPU1RcbiAgcG9zdDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwb3N0Jywgcm91dGUsIGJvZHkpO1xuICAgIGNvbnNvbGUubG9nKGJvZHkpO1xuICAgIGxldCBoZWFkZXJzID0gZXh0cmFzPy51c2VFbmRvcnNlbWVudCA/IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChlbmNvZGVVUkkodGhpcy5iYXNlVVJMICsgcm91dGUpLCBib2R5LCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKGhlYWRlcnMsIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICB9KVxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvcikpIGFzIE9ic2VydmFibGU8YW55PjtcbiAgfVxuICBwb3N0RmlsZTxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSwgZXh0cmFzPzogYW55KSB7XG4gICAgLy8gcmV0dXJuIHRoaXMucG9zdDxUPihyb3V0ZSwgYm9keSwge1xuICAgIC8vICAgb3B0aW9uczoge1xuICAgIC8vICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAvLyAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgIC8vICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAvLyAgICAgICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgIC8vICAgICAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgIC8vICAgICApLFxuICAgIC8vICAgfSxcbiAgICAvLyB9KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGVuY29kZVVSSSh0aGlzLmJhc2VVUkwgKyByb3V0ZSksIGJvZHksIHtcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgIC4uLmV4dHJhcz8ub3B0aW9ucyxcbiAgICAgICAgLy8gaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoXG4gICAgICAgIC8vICAgbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgLy8gICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgLy8gICB9KSxcbiAgICAgICAgLy8gICBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnNcbiAgICAgICAgLy8gKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxUPjtcbiAgfVxuICBwb3N0RmlsZVdpdGhFbmRvcnNlbWVudDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5OiBGb3JtRGF0YSkge1xuICAgIHJldHVybiB0aGlzLnBvc3Q8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIHBvc3RTdHJpbmcocm91dGU6IHN0cmluZywgYm9keT8sIGV4dHJhcz86IElFeHRyYXMpIHtcbiAgICAvLyBjb25zb2xlLmxvZygncmVxdWVzdENvdW50JywgKytFVFNlbnZpcm9ubWVudC5yZXF1ZXN0Q291bnQpO1xuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicsXG4gICAgfSk7XG4gICAgaGVhZGVycyA9IGV4dHJhcz8udXNlRW5kb3JzZW1lbnQgPyBoZWFkZXJzLnNldCgndXNlRW5kb3JzZW1lbnQnLCAndHJ1ZScpIDogaGVhZGVycztcbiAgICByZXR1cm4gdGhpcy5wb3N0PHN0cmluZz4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMoaGVhZGVycywgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgcG9zdFN0cmluZ1dpdGhMb2NhbENhY2hlKHJvdXRlOiBzdHJpbmcsIGJvZHk6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxzdHJpbmc+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IGJkeSA9IGJvZHk/LnRyaW0oKTtcbiAgICAgIC8vIGRlYnVnZ2VyXG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhyb3V0ZSArICdfJyArIGJkeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08c3RyaW5nPihyb3V0ZSArICdfJyArIGJkeSkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RTdHJpbmcocm91dGUsIGJkeSlcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocm91dGUgKyAnXycgKyBiZHksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBHRVRcbiAgLyoqXG4gICAqIFBlcmZvcm0gYSBHRVQgcmVxdWVzdFxuICAgKiBAcGFyYW0gcm91dGUgQVBJIGVuZHBvaW50XG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIE9iamVjdCB0byBjb252ZXJ0IGludG8gcXVlcnlwYXJhbXNcbiAgICogQHBhcmFtIGV4dHJhcyBFeHRyYSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlcXVlc3RcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogeyBbZmllbGQ6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfSwgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4gPT4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdnZXQnLCByb3V0ZSwgcGFyYW1ldGVycyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMICsgcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0KHF1ZXJ5LCB7XG4gICAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICByZXRyeSh0aGlzLnJldHJ5Q291bnQpLFxuICAgICAgICAgIHRhcCgoeCkgPT4gKHRoaXMuc2hvd1JvdXRlcyA/IGNvbnNvbGUubG9nKHgpIDogbnVsbCkpLFxuICAgICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpXG4gICAgICAgICAgICAgIGlmIChyZXNbMF0/LmNvZGUpIHJldHVybiByZXMuc29ydCgpLnNvcnQyKCdjb2RlJywgdHJ1ZSk7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHJlc1swXT8uY29sdW1uTmFtZSkgcmV0dXJuIHJlcy5zb3J0KCkuc29ydDIoJ2NvbHVtbk5hbWUnLCB0cnVlKTtcbiAgICAgICAgICAgICAgZWxzZSByZXR1cm4gcmVzLnNvcnQoKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZVJlcXVlc3RFcnJvciksXG4gICAgICAgIClcbiAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5jYWNoZVMuc2V0SXRlbShxdWVyeSwgcik7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiByZXMuZXJyb3IoZXJyKSk7XG4gICAgfSk7XG4gIH07XG5cbiAgZ2V0Q29kZXMgPSA8VCBleHRlbmRzIElDb2RlVGl0bGUgfCBJQ29kZURlc2NyaXB0aW9uID0gSUNvZGVUaXRsZSAmIElDb2RlRGVzY3JpcHRpb24+KHJvdXRlOiBzdHJpbmcpID0+XG4gICAgdGhpcy5nZXQ8VFtdPihyb3V0ZSkucGlwZShtYXAoKHJlcykgPT4gdGhpcy5zb3J0Q29kZXMocmVzKSkpO1xuXG4gIGdldFRleHQgPSA8VCA9IHN0cmluZz4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IHsgW2ZpZWxkOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIH0sIGV4dHJhcz86IElFeHRyYXMpID0+XG4gICAgdGhpcy5nZXQ8VD4ocm91dGUsIHBhcmFtZXRlcnMsIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICBnZXRGaWxlID0gPFQgPSBzdHJpbmc+KHJvdXRlOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB7IFtmaWVsZDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9LCBleHRyYXM/OiBJRXh0cmFzKSA9PlxuICAgIHRoaXMuZ2V0PFQ+KHJvdXRlLCBwYXJhbWV0ZXJzLCB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdhcnJheUJ1ZmZlcicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gIGdldFdpdGhCb2R5ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZ2V0Jywgcm91dGUpO1xuICAgIC8vIGRlYnVnZ2VyXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KCdHRVQnLCB0aGlzLmJhc2VVUkwgKyByb3V0ZSwgYm9keSwge1xuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4ocmVxKS5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9O1xuXG4gIGdldEZyb21sb2NhbCA9IDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBwYXJhbWV0ZXJzPzogT2JqZWN0LCBleHRyYXM/OiBJRXh0cmFzKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChyZXMpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gcm91dGUgKyB0aGlzLmdldFJlcXVlc3RQYXJzZShwYXJhbWV0ZXJzKTtcbiAgICAgIGlmICh0aGlzLmxDYWNoZVMuaGFzKHF1ZXJ5KSkge1xuICAgICAgICByZXMubmV4dCh0aGlzLmxDYWNoZVMuZ2V0SXRlbTxUPihxdWVyeSkpO1xuICAgICAgICByZXMuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICBsYXN0VmFsdWVGcm9tKHRoaXMuZ2V0KHF1ZXJ5LCBudWxsLCBleHRyYXMpKS50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgZ2V0V2l0aExvY2FsQ2FjaGUgPSA8VCA9IGFueT4ocm91dGU6IHN0cmluZywgcGFyYW1ldGVycz86IE9iamVjdCwgZXh0cmFzPzogSUV4dHJhcykgPT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxUPigocmVzKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeSA9IHJvdXRlICsgdGhpcy5nZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycyk7XG4gICAgICBpZiAodGhpcy5sQ2FjaGVTLmhhcyhxdWVyeSkpIHtcbiAgICAgICAgcmVzLm5leHQodGhpcy5sQ2FjaGVTLmdldEl0ZW08VD4ocXVlcnkpKTtcbiAgICAgIH1cbiAgICAgIGxhc3RWYWx1ZUZyb20odGhpcy5nZXQocXVlcnksIG51bGwsIGV4dHJhcykpXG4gICAgICAgIC50aGVuKChyKSA9PiB7XG4gICAgICAgICAgLy8gaWYgKCF0aGlzLmNTLmhhcyhyb3V0ZSkpXG4gICAgICAgICAgcmVzLm5leHQocik7XG4gICAgICAgICAgdGhpcy5sQ2FjaGVTLnNldEl0ZW0ocXVlcnksIHIpO1xuICAgICAgICAgIHJlcy5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXMuZXJyb3IoZSk7XG4gICAgICAgICAgcmVzLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xuICBnZXRSZXF1ZXN0UGFyc2UocGFyYW1ldGVycz86IE9iamVjdCkge1xuICAgIHJldHVybiAhcGFyYW1ldGVyc1xuICAgICAgPyAnJ1xuICAgICAgOiAnPycgK1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKChrZXkpID0+IHBhcmFtZXRlcnNba2V5XT8udG9TdHJpbmcoKT8udHJpbSgpICE9IG51bGwpXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IGAke2tleX09JHtwYXJhbWV0ZXJzW2tleV0/LnRvU3RyaW5nKCk/LnRyaW0oKX1gKVxuICAgICAgICAgICAgLmpvaW4oJyYnKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUFVUXG4gIHB1dDxUID0gYW55Pihyb3V0ZTogc3RyaW5nLCBib2R5PywgZXh0cmFzPzogSUV4dHJhcyk6IE9ic2VydmFibGU8VD4ge1xuICAgIHRoaXMubG9nUm91dGVzKCdwdXQnLCByb3V0ZSwgYm9keSk7XG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5iYXNlVVJMICsgcm91dGUgKyAnJyxcbiAgICAgIG5ib2R5ID0gYm9keTtcbiAgICBpZiAoZXh0cmFzPy5yZXF1ZXN0VHlwZSA9PSAncXVlcnlQYXJhbXMnKSB7XG4gICAgICBxdWVyeSArPSB0aGlzLmdldFJlcXVlc3RQYXJzZShib2R5KTtcbiAgICAgIG5ib2R5ID0gbnVsbDtcbiAgICB9XG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50ID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJykgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucHV0KHF1ZXJ5LCBuYm9keSwge1xuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9XG4gIHB1dEZpbGU8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEsIGV4dHJhcz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQoZW5jb2RlVVJJKHRoaXMuYmFzZVVSTCArIHJvdXRlKSwgYm9keSwge1xuICAgICAgICAvLyByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICAvLyBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhcbiAgICAgICAgLy8gICBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAvLyAgICAgZW5jdHlwZTogJ211bHRpcGFydC9mb3JtLWRhdGEnLFxuICAgICAgICAvLyAgIH0pLFxuICAgICAgICAvLyAgIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVyc1xuICAgICAgICAvLyApLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPFQ+O1xuICB9XG4gIHB1dEZpbGVXaXRoRW5kb3JzZW1lbnQ8VCA9IGFueT4ocm91dGU6IHN0cmluZywgYm9keTogRm9ybURhdGEpIHtcbiAgICByZXR1cm4gdGhpcy5wdXQ8VD4ocm91dGUsIGJvZHksIHtcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJyksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBERUxFVEVcbiAgZGVsZXRlID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZGVsZXRlJywgcm91dGUpO1xuXG4gICAgbGV0IGhlYWRlcnMgPSBleHRyYXM/LnVzZUVuZG9yc2VtZW50ID8gbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycykuc2V0KCd1c2VFbmRvcnNlbWVudCcsICd0cnVlJykgOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZGVsZXRlPFQ+KHRoaXMuYmFzZVVSTCArIHJvdXRlLCB7XG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAuLi5leHRyYXM/Lm9wdGlvbnMsXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29uY2F0ZW5hdGVIZWFkZXJzKG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcnMpLCBleHRyYXM/Lm9wdGlvbnM/LmhlYWRlcnMpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVSZXF1ZXN0RXJyb3IpKSBhcyBPYnNlcnZhYmxlPGFueT47XG4gIH07XG4gIGRlbGV0ZVdpdGhCb2R5ID0gPFQgPSBhbnk+KHJvdXRlOiBzdHJpbmcsIGJvZHk/OiBhbnksIGV4dHJhcz86IElFeHRyYXMpID0+IHtcbiAgICB0aGlzLmxvZ1JvdXRlcygnZGVsZXRlJywgcm91dGUpO1xuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnREVMRVRFJywgdGhpcy5iYXNlVVJMICsgcm91dGUsIGJvZHksIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgaGVhZGVyczogdGhpcy5jb25jYXRlbmF0ZUhlYWRlcnMobmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVycyksIGV4dHJhcz8ub3B0aW9ucz8uaGVhZGVycyksXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5yZXF1ZXN0PFQ+KHJlcSkucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlUmVxdWVzdEVycm9yKSkgYXMgT2JzZXJ2YWJsZTxhbnk+O1xuICB9O1xuICBkZWxldGVUZXh0ID0gKHJvdXRlOiBzdHJpbmcsIGV4dHJhcz86IElFeHRyYXMpID0+XG4gICAgdGhpcy5kZWxldGU8c3RyaW5nPihyb3V0ZSwge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgLi4uZXh0cmFzPy5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbmNhdGVuYXRlSGVhZGVycyhuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXJzKSwgZXh0cmFzPy5vcHRpb25zPy5oZWFkZXJzKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIC8vI2VuZHJlZ2lvblxuXG4gIHNvcnRDb2RlcyA9IDxUIGV4dGVuZHMgeyBjb2RlOiBzdHJpbmcgfT4oZGF0YTogVFtdKSA9PiB7XG4gICAgcmV0dXJuIGRhdGE/LnNvcnQyKCdjb2RlJywgdHJ1ZSk/LnNvcnQyKCdjb2RlJykgYXMgYW55IGFzIFRbXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIElFeHRyYXMge1xuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHVzZSB0aGUgZW5kb3JzZW1lbnQgaGVhZGVyXG4gICAqL1xuICB1c2VFbmRvcnNlbWVudD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBSZXBvcnQgcHJvZ3Jlc3Mgb2YgdGhlIHJlcXVlc3RcbiAgICovXG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHJlcXVlc3Qgb3B0aW9ucy4gVGhlIGFkZGVkIG9wdGlvbnMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgZGVmYXVsdCBvcHRpb25zXG4gICAqL1xuICBvcHRpb25zPzoge1xuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcbiAgICBbeDogc3RyaW5nXTogYW55O1xuICB9O1xuICAvKipcbiAgICogU3BlY2lmeSB0aGUgcmVxdWVzdCB0eXBlLiBJZiB0aGUgcmVxdWVzdCB0eXBlIGlzIHF1ZXJ5UGFyYW1zLCB0aGUgYm9keSB3aWxsIGJlIHNlbnQgYXMgcXVlcnkgcGFyYW1ldGVyc1xuICAgKi9cbiAgcmVxdWVzdFR5cGU/OiAncXVlcnlQYXJhbXMnO1xufVxuIl19
|