jconsumer-shared 1.2.5 → 1.2.7
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/auth-service.mjs +17 -2
- package/esm2022/lib/consumer-service.mjs +21 -45
- package/esm2022/lib/order.service.mjs +9 -1
- package/fesm2022/jconsumer-shared.mjs +43 -44
- package/fesm2022/jconsumer-shared.mjs.map +1 -1
- package/jconsumer-shared-1.2.7.tgz +0 -0
- package/lib/auth-service.d.ts +3 -0
- package/lib/consumer-service.d.ts +3 -5
- package/lib/order.service.d.ts +2 -0
- package/package.json +1 -1
- package/jconsumer-shared-1.2.5.tgz +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Injectable } from "@angular/core";
|
|
2
|
-
import { Subject } from "rxjs";
|
|
2
|
+
import { of, Subject } from "rxjs";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "./service-meta";
|
|
5
5
|
import * as i2 from "./local-storage.service";
|
|
@@ -151,6 +151,21 @@ export class AuthService {
|
|
|
151
151
|
return false;
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
+
refreshToken() {
|
|
155
|
+
const _this = this;
|
|
156
|
+
return new Promise((resolve, reject) => {
|
|
157
|
+
_this.refreshLogin().subscribe((response) => {
|
|
158
|
+
_this.lStorageService.setitemonLocalStorage('refreshToken', response.token);
|
|
159
|
+
resolve(response);
|
|
160
|
+
}, (error) => { reject(error); });
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
refreshLogin() {
|
|
164
|
+
return this.serviceMeta.httpPost('consumer/oauth/token/refresh');
|
|
165
|
+
}
|
|
166
|
+
refresh(response) {
|
|
167
|
+
return of(response);
|
|
168
|
+
}
|
|
154
169
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, deps: [{ token: i1.ServiceMeta }, { token: i2.LocalStorageService }, { token: i3.SessionStorageService }, { token: i4.GroupStorageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
155
170
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
156
171
|
}
|
|
@@ -160,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
160
175
|
providedIn: 'root'
|
|
161
176
|
}]
|
|
162
177
|
}], ctorParameters: () => [{ type: i1.ServiceMeta }, { type: i2.LocalStorageService }, { type: i3.SessionStorageService }, { type: i4.GroupStorageService }] });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2F1dGgtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVMzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQWFSO0lBQ0E7SUFDQTtJQUNBO0lBZEosT0FBTyxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUFFckMsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQVk7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQ1ksV0FBd0IsRUFDeEIsZUFBb0MsRUFDcEMscUJBQTRDLEVBQzVDLFlBQWlDO1FBSGpDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFxQjtRQUNwQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtJQUN6QyxDQUFDO0lBRUwsS0FBSyxDQUFDLFNBQWM7UUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzVDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN6RCxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLHVCQUF1QixFQUFFLENBQUM7b0JBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDdkYsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDakIsR0FBRyxFQUFFO3dCQUNELElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLEVBQUUsU0FBUyxDQUFDLENBQUM7d0JBQzlFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNCLENBQUMsQ0FBQyxDQUFBO2dCQUNWLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsSUFBUyxFQUFFLFNBQWM7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxNQUFNLENBQUMsU0FBYztRQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FDcEMsSUFBSSxDQUFDLEVBQUU7Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCxRQUFRO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNsRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDbEMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxLQUFLLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3RELE9BQU8sRUFBRSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVM7UUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsZUFBZSxDQUFDLElBQVM7UUFDckIsTUFBTSxHQUFHLEdBQUcseUJBQXlCLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNELGlCQUFpQixDQUFDLE9BQU8sRUFBQyxHQUFHO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixHQUFFLE9BQU8sR0FBRSxPQUFPLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUNsRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLE1BQWU7UUFDckQsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsY0FBYyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxjQUFjLENBQUMsV0FBbUIsRUFBRSxNQUFlLEVBQUUsV0FBb0I7UUFDckUsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLHFCQUFxQixHQUFHLFdBQVcsR0FBRyxlQUFlLEdBQUcsV0FBVyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNEOzs7T0FHRztJQUNILGNBQWM7UUFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLE9BQU87WUFDaEMsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUFZO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLCtCQUErQixHQUFHLElBQUksQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxHQUFXLEVBQUUsSUFBWTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxpQ0FBaUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO3dHQW5KUSxXQUFXOzRHQUFYLFdBQVcsY0FOUixNQUFNOzs0RkFNVCxXQUFXO2tCQVB2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgU2VydmljZU1ldGEgfSBmcm9tIFwiLi9zZXJ2aWNlLW1ldGFcIjtcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBHcm91cFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vZ3JvdXAtc3RvcmFnZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuLyoqXHJcbiAqIFxyXG4gKiBTZXJ2aWNlIGhhbmRsZXMgYXV0aGVudGljYXRpb25cclxuICovXHJcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XHJcblxyXG4gICAgcHJpdmF0ZSBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG5cclxuICAgIGdldE1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbmRNZXNzYWdlKG1lc3NhZ2U6IGFueSkge1xyXG4gICAgICAgIHRoaXMuc3ViamVjdC5uZXh0KG1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgc2VydmljZU1ldGE6IFNlcnZpY2VNZXRhLFxyXG4gICAgICAgIHByaXZhdGUgbFN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBncm91cFNlcnZpY2U6IEdyb3VwU3RvcmFnZVNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgbG9naW4ocG9zdF9kYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5sU3RvcmFnZVNlcnZpY2Uuc2V0aXRlbW9uTG9jYWxTdG9yYWdlKCdsb2dpbicsIHRydWUpO1xyXG4gICAgICAgIHBvc3RfZGF0YS5tVW5pcXVlSWQgPSB0aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZSgnbVVuaXF1ZUlkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2cocG9zdF9kYXRhKTtcclxuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBfdGhpcy5sb2dpbkNvbnN1bWVyKHBvc3RfZGF0YSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sU3RvcmFnZVNlcnZpY2UucmVtb3ZlaXRlbWZyb21Mb2NhbFN0b3JhZ2UoJ2xvZ2luJyk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXRMb2dpbkRhdGEoZGF0YSwgcG9zdF9kYXRhKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyB0dHlwZTogJ3JlZnJlc2gnLCBhY3Rpb246IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxICYmIGVycm9yLmVycm9yID09PSAnU2Vzc2lvbiBBbHJlYWR5IEV4aXN0Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF1dGhUb2tlbiA9IHRoaXMubFN0b3JhZ2VTZXJ2aWNlLmdldGl0ZW1mcm9tTG9jYWxTdG9yYWdlKCdjX2F1dGhvcml6YXRpb25Ub2tlbicpO1xyXG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmRvTG9nb3V0KCkudGhlbihcclxuICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sU3RvcmFnZVNlcnZpY2Uuc2V0aXRlbW9uTG9jYWxTdG9yYWdlKCdjX2F1dGhvcml6YXRpb25Ub2tlbicsIGF1dGhUb2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5sb2dpbihwb3N0X2RhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFNldCBDcmVkZW50aWFscyBhbmQgVXNlciBUeXBlIChwcm92aWRlci9jb25zdW1lcikgaW4gTG9jYWwgU3RvcmFnZVxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcGFyYW0gcG9zdF9kYXRhIFxyXG4gICAgICogQHBhcmFtIG1vZCBcclxuICAgICAqL1xyXG4gICAgc2V0TG9naW5EYXRhKGRhdGE6IGFueSwgcG9zdF9kYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlNldCBMb2dpbiBEYXRhOlwiLCBkYXRhKTtcclxuICAgICAgICB0aGlzLmdyb3VwU2VydmljZS5zZXRpdGVtVG9Hcm91cFN0b3JhZ2UoJ2psZF9zY29uJywgZGF0YSk7XHJcbiAgICAgICAgdGhpcy5sU3RvcmFnZVNlcnZpY2Uuc2V0aXRlbW9uTG9jYWxTdG9yYWdlKCdpc0J1c2luZXNzT3duZXInLCAnZmFsc2UnKTtcclxuICAgICAgICBpZiAocG9zdF9kYXRhWydwYXNzd29yZCddKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSBwb3N0X2RhdGFbJ3Bhc3N3b3JkJ107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZSgneW53LWNyZWRlbnRpYWxzJywgSlNPTi5zdHJpbmdpZnkocG9zdF9kYXRhKSk7XHJcbiAgICB9XHJcbiAgICBzaWduVXAocG9zdF9kYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNpZ25VcENvbnN1bWVyKHBvc3RfZGF0YSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XHJcbiAgICB9XHJcbiAgICBkb0xvZ291dCgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkRvIExvZ291dFwiKVxyXG4gICAgICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgICAgICB0aGlzLmxTdG9yYWdlU2VydmljZS5zZXRpdGVtb25Mb2NhbFN0b3JhZ2UoJ2xvZ291dCcsIHRydWUpO1xyXG4gICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZWl0ZW1mcm9tTG9jYWxTdG9yYWdlKCdhdXRob3JpemF0aW9uJyk7XHJcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMuY29uc3VtZXJMb2dvdXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMubFN0b3JhZ2VTZXJ2aWNlLmNsZWFyTG9jYWxzdG9yYWdlKCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuY2xlYXJTZXNzaW9uU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7IHR0eXBlOiAncmVmcmVzaCcsIGFjdGlvbjogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNpZ25VcENvbnN1bWVyKGJvZHk6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBQb3N0KCdjb25zdW1lcicsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ2luQ29uc3VtZXIoYm9keTogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJMb2dpbkNvbnN1bWVyXCIsIGJvZHkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBQb3N0KCdjb25zdW1lci9sb2dpbicsIGJvZHkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN1bWVyTG9nb3V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBEZWxldGUoJ2NvbnN1bWVyL2xvZ2luJyk7XHJcbiAgICB9XHJcbiAgICBzZW5kQ29uc3VtZXJPVFAoYm9keTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29hdXRoL2lkZW50aWZ5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5Q29uc3VtZXJPVFAocHVycG9zZSxvdHApIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvb2F1dGgvJysgcHVycG9zZSArJy9vdHAvJyArIG90cCArICcvdmVyaWZ5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUG9zdCh1cmwpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5TmV3UGhvbmVPVFAob3RwOiBzdHJpbmcsIGJvZHk6IGFueSwgb3JpZ2luPzogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IG9yaWdpbiArICcvbG9naW4vJyArIG90cCArICcvdmVyaWZ5TG9naW4nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBQdXQocGF0aCwgYm9keSk7XHJcbiAgICB9XHJcbiAgICB2ZXJpZnlOZXdQaG9uZShwaG9uZW51bWJlcjogc3RyaW5nLCBvcmlnaW4/OiBzdHJpbmcsIGNvdW50cnlDb2RlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IG9yaWdpbiArICcvbG9naW4vdmVyaWZ5TG9naW4vJyArIHBob25lbnVtYmVyICsgJz9jb3VudHJ5Q29kZT0nICsgY291bnRyeUNvZGU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFBvc3QocGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UHJvdmlkZXJDb25zdW1lcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwR2V0KCdzcGNvbnN1bWVyJyk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIFRvIGNoZWNrIHdoZXRoZXIgdXNlciBsb2dnZWQgaW4gb3Igbm90XHJcbiAgICAgKiBAcmV0dXJucyB0cnVlL2ZhbHNlXHJcbiAgICAgKi9cclxuICAgIGdvVGhyb3VnaExvZ2luKCkge1xyXG4gICAgICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcclxuICAgICAgICAgICAgaWYgKF90aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZSgneW53LWNyZWRlbnRpYWxzJykpIHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBzaGFyZU9UUGZvckZvcm0odXVpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbnNlbnRmb3JtL3NlbmRPdHAvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFB1dCh1cmwpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5T1RQZm9yRm9ybShvdHA6IHN0cmluZywgdXVpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbnNlbnRmb3JtL3ZlcmlmeU90cC8nICsgb3RwICsgJy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUGF0Y2godXJsKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xvZ2dlZEluKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZSgneW53LWNyZWRlbnRpYWxzJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvamNvbnN1bWVyLXNoYXJlZC9zcmMvbGliL2F1dGgtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFTL0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFhUjtJQUNBO0lBQ0E7SUFDQTtJQWRKLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFDO0lBRXJDLFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUNZLFdBQXdCLEVBQ3hCLGVBQW9DLEVBQ3BDLHFCQUE0QyxFQUM1QyxZQUFpQztRQUhqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBcUI7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7SUFDekMsQ0FBQztJQUVMLEtBQUssQ0FBQyxTQUFjO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QixN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QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNlcnZpY2VNZXRhIH0gZnJvbSBcIi4vc2VydmljZS1tZXRhXCI7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tIFwiLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4vc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgR3JvdXBTdG9yYWdlU2VydmljZSB9IGZyb20gXCIuL2dyb3VwLXN0b3JhZ2Uuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbi8qKlxyXG4gKiBcclxuICogU2VydmljZSBoYW5kbGVzIGF1dGhlbnRpY2F0aW9uXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgc3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHJcbiAgICBnZXRNZXNzYWdlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZW5kTWVzc2FnZShtZXNzYWdlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnN1YmplY3QubmV4dChtZXNzYWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHNlcnZpY2VNZXRhOiBTZXJ2aWNlTWV0YSxcclxuICAgICAgICBwcml2YXRlIGxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHNlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZ3JvdXBTZXJ2aWNlOiBHcm91cFN0b3JhZ2VTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIGxvZ2luKHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZSgnbG9naW4nLCB0cnVlKTtcclxuICAgICAgICBwb3N0X2RhdGEubVVuaXF1ZUlkID0gdGhpcy5sU3RvcmFnZVNlcnZpY2UuZ2V0aXRlbWZyb21Mb2NhbFN0b3JhZ2UoJ21VbmlxdWVJZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHBvc3RfZGF0YSk7XHJcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgX3RoaXMubG9naW5Db25zdW1lcihwb3N0X2RhdGEpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnJlbW92ZWl0ZW1mcm9tTG9jYWxTdG9yYWdlKCdsb2dpbicpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuc2V0TG9naW5EYXRhKGRhdGEsIHBvc3RfZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKHsgdHR5cGU6ICdyZWZyZXNoJywgYWN0aW9uOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMSAmJiBlcnJvci5lcnJvciA9PT0gJ1Nlc3Npb24gQWxyZWFkeSBFeGlzdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRoVG9rZW4gPSB0aGlzLmxTdG9yYWdlU2VydmljZS5nZXRpdGVtZnJvbUxvY2FsU3RvcmFnZSgnY19hdXRob3JpemF0aW9uVG9rZW4nKTtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5kb0xvZ291dCgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZSgnY19hdXRob3JpemF0aW9uVG9rZW4nLCBhdXRoVG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMubG9naW4ocG9zdF9kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXQgQ3JlZGVudGlhbHMgYW5kIFVzZXIgVHlwZSAocHJvdmlkZXIvY29uc3VtZXIpIGluIExvY2FsIFN0b3JhZ2VcclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHBhcmFtIHBvc3RfZGF0YSBcclxuICAgICAqIEBwYXJhbSBtb2QgXHJcbiAgICAgKi9cclxuICAgIHNldExvZ2luRGF0YShkYXRhOiBhbnksIHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJTZXQgTG9naW4gRGF0YTpcIiwgZGF0YSk7XHJcbiAgICAgICAgdGhpcy5ncm91cFNlcnZpY2Uuc2V0aXRlbVRvR3JvdXBTdG9yYWdlKCdqbGRfc2NvbicsIGRhdGEpO1xyXG4gICAgICAgIHRoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZSgnaXNCdXNpbmVzc093bmVyJywgJ2ZhbHNlJyk7XHJcbiAgICAgICAgaWYgKHBvc3RfZGF0YVsncGFzc3dvcmQnXSkge1xyXG4gICAgICAgICAgICBkZWxldGUgcG9zdF9kYXRhWydwYXNzd29yZCddO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxTdG9yYWdlU2VydmljZS5zZXRpdGVtb25Mb2NhbFN0b3JhZ2UoJ3ludy1jcmVkZW50aWFscycsIEpTT04uc3RyaW5naWZ5KHBvc3RfZGF0YSkpO1xyXG4gICAgfVxyXG4gICAgc2lnblVwKHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zaWduVXBDb25zdW1lcihwb3N0X2RhdGEpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xyXG4gICAgfVxyXG4gICAgZG9Mb2dvdXQoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJEbyBMb2dvdXRcIilcclxuICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5sU3RvcmFnZVNlcnZpY2Uuc2V0aXRlbW9uTG9jYWxTdG9yYWdlKCdsb2dvdXQnLCB0cnVlKTtcclxuICAgICAgICB0aGlzLmxTdG9yYWdlU2VydmljZS5yZW1vdmVpdGVtZnJvbUxvY2FsU3RvcmFnZSgnYXV0aG9yaXphdGlvbicpO1xyXG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLmNvbnN1bWVyTG9nb3V0KCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmxTdG9yYWdlU2VydmljZS5jbGVhckxvY2Fsc3RvcmFnZSgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmNsZWFyU2Vzc2lvblN0b3JhZ2UoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoeyB0dHlwZTogJ3JlZnJlc2gnLCBhY3Rpb246IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBzaWduVXBDb25zdW1lcihib2R5OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUG9zdCgnY29uc3VtZXInLCBib2R5KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbkNvbnN1bWVyKGJvZHk6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTG9naW5Db25zdW1lclwiLCBib2R5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUG9zdCgnY29uc3VtZXIvbG9naW4nLCBib2R5KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdW1lckxvZ291dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwRGVsZXRlKCdjb25zdW1lci9sb2dpbicpO1xyXG4gICAgfVxyXG4gICAgc2VuZENvbnN1bWVyT1RQKGJvZHk6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vYXV0aC9pZGVudGlmeSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIHZlcmlmeUNvbnN1bWVyT1RQKHB1cnBvc2UsIG90cCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vYXV0aC8nICsgcHVycG9zZSArICcvb3RwLycgKyBvdHAgKyAnL3ZlcmlmeSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFBvc3QodXJsKTtcclxuICAgIH1cclxuICAgIHZlcmlmeU5ld1Bob25lT1RQKG90cDogc3RyaW5nLCBib2R5OiBhbnksIG9yaWdpbj86IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBvcmlnaW4gKyAnL2xvZ2luLycgKyBvdHAgKyAnL3ZlcmlmeUxvZ2luJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlTWV0YS5odHRwUHV0KHBhdGgsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5TmV3UGhvbmUocGhvbmVudW1iZXI6IHN0cmluZywgb3JpZ2luPzogc3RyaW5nLCBjb3VudHJ5Q29kZT86IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSBvcmlnaW4gKyAnL2xvZ2luL3ZlcmlmeUxvZ2luLycgKyBwaG9uZW51bWJlciArICc/Y291bnRyeUNvZGU9JyArIGNvdW50cnlDb2RlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBQb3N0KHBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFByb3ZpZGVyQ29uc3VtZXIoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cEdldCgnc3Bjb25zdW1lcicpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUbyBjaGVjayB3aGV0aGVyIHVzZXIgbG9nZ2VkIGluIG9yIG5vdFxyXG4gICAgICogQHJldHVybnMgdHJ1ZS9mYWxzZVxyXG4gICAgICovXHJcbiAgICBnb1Rocm91Z2hMb2dpbigpIHtcclxuICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5sU3RvcmFnZVNlcnZpY2UuZ2V0aXRlbWZyb21Mb2NhbFN0b3JhZ2UoJ3ludy1jcmVkZW50aWFscycpKSB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG4gICAgc2hhcmVPVFBmb3JGb3JtKHV1aWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS9zZW5kT3RwLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VNZXRhLmh0dHBQdXQodXJsKTtcclxuICAgIH1cclxuICAgIHZlcmlmeU9UUGZvckZvcm0ob3RwOiBzdHJpbmcsIHV1aWQ6IHN0cmluZykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS92ZXJpZnlPdHAvJyArIG90cCArICcvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFBhdGNoKHVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMb2dnZWRJbigpIHtcclxuICAgICAgICBpZiAodGhpcy5sU3RvcmFnZVNlcnZpY2UuZ2V0aXRlbWZyb21Mb2NhbFN0b3JhZ2UoJ3ludy1jcmVkZW50aWFscycpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZWZyZXNoVG9rZW4oKSB7XHJcbiAgICAgICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnJlZnJlc2hMb2dpbigpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMubFN0b3JhZ2VTZXJ2aWNlLnNldGl0ZW1vbkxvY2FsU3RvcmFnZSgncmVmcmVzaFRva2VuJywgcmVzcG9uc2UudG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4geyByZWplY3QoZXJyb3IpIH0pXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZWZyZXNoTG9naW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZU1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL29hdXRoL3Rva2VuL3JlZnJlc2gnKTtcclxuICAgIH1cclxuICAgIHJlZnJlc2gocmVzcG9uc2UpIHtcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -27,30 +27,6 @@ export class ConsumerService {
|
|
|
27
27
|
const url = 'consumer/providers/' + accountid;
|
|
28
28
|
return this.servicemeta.httpDelete(url);
|
|
29
29
|
}
|
|
30
|
-
doDeleteFavProvider(fav, cthis) {
|
|
31
|
-
return new Promise((resolve, reject) => {
|
|
32
|
-
this.deleteFavProvider(fav.id)
|
|
33
|
-
.then(data => {
|
|
34
|
-
resolve(data);
|
|
35
|
-
}, error => {
|
|
36
|
-
reject(error);
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
deleteFavProvider(id) {
|
|
41
|
-
return new Promise((resolve, reject) => {
|
|
42
|
-
this.removeProviderfromFavourite(id)
|
|
43
|
-
.subscribe(data => {
|
|
44
|
-
resolve('reloadlist');
|
|
45
|
-
}, error => {
|
|
46
|
-
reject(error);
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
addProvidertoFavourite(accountid) {
|
|
51
|
-
const url = 'consumer/providers/' + accountid;
|
|
52
|
-
return this.servicemeta.httpPost(url);
|
|
53
|
-
}
|
|
54
30
|
changePasswordProfile(data, origin) {
|
|
55
31
|
const url = origin + '/login/chpwd';
|
|
56
32
|
return this.servicemeta.httpPut(url, data);
|
|
@@ -102,8 +78,12 @@ export class ConsumerService {
|
|
|
102
78
|
getWaitlist(params) {
|
|
103
79
|
return this.servicemeta.httpGet('consumer/waitlist', null, params);
|
|
104
80
|
}
|
|
105
|
-
|
|
106
|
-
|
|
81
|
+
getWaitlistToday(filter = {}) {
|
|
82
|
+
const path = 'consumer/waitlist/today';
|
|
83
|
+
return this.servicemeta.httpGet(path, null, filter);
|
|
84
|
+
}
|
|
85
|
+
getWaitlistFuture(filter = {}) {
|
|
86
|
+
return this.servicemeta.httpGet('consumer/waitlist/future', null, filter);
|
|
107
87
|
}
|
|
108
88
|
addConsumerWaitlistAttachment(accountid, uuid, body) {
|
|
109
89
|
const url = 'consumer/waitlist/' + uuid + '/attachment' + '?account=' + accountid;
|
|
@@ -119,10 +99,6 @@ export class ConsumerService {
|
|
|
119
99
|
const url = 'consumer/waitlist/attachment/' + uuid + '?account=' + accountid;
|
|
120
100
|
return this.servicemeta.httpGet(url);
|
|
121
101
|
}
|
|
122
|
-
getWaitlistToday() {
|
|
123
|
-
const path = 'consumer/waitlist/today';
|
|
124
|
-
return this.servicemeta.httpGet(path);
|
|
125
|
-
}
|
|
126
102
|
//Appointment Urls
|
|
127
103
|
getAppointmentFuture(params) {
|
|
128
104
|
return this.servicemeta.httpGet('consumer/appointment/future', null, params);
|
|
@@ -485,20 +461,20 @@ export class ConsumerService {
|
|
|
485
461
|
}
|
|
486
462
|
return null;
|
|
487
463
|
}
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
464
|
+
getUserEstimatedWaitingTime(prov_arr) {
|
|
465
|
+
let str = '';
|
|
466
|
+
for (let i = 0; i < prov_arr.length; i++) {
|
|
467
|
+
if (str !== '') {
|
|
468
|
+
str += '%2C'; // comma
|
|
469
|
+
}
|
|
470
|
+
str += prov_arr[i];
|
|
471
|
+
}
|
|
472
|
+
if (str === '') {
|
|
473
|
+
return null;
|
|
474
|
+
}
|
|
475
|
+
const path = 'provider/waitlist/queues/providerWaitingTime/' + str;
|
|
476
|
+
return this.servicemeta.httpGet(path);
|
|
477
|
+
}
|
|
502
478
|
// updateAnalytics(body) {
|
|
503
479
|
// const url = 'provider/analytics/update';
|
|
504
480
|
// return this.servicemeta.httpPost(url, body);
|
|
@@ -798,4 +774,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
798
774
|
providedIn: 'root'
|
|
799
775
|
}]
|
|
800
776
|
}], ctorParameters: () => [{ type: i1.ServiceMeta }] });
|
|
801
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9jb25zdW1lci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sZUFBZTtJQUdaO0lBRlosU0FBUyxDQUFNO0lBQ2YsWUFDWSxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUNoQyxDQUFDO0lBQ0wsZUFBZSxDQUFDLElBQUk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELGdCQUFnQixDQUFDLFNBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELDJCQUEyQixDQUFDLFNBQVM7UUFDakMsTUFBTSxHQUFHLEdBQUcscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFNO1FBQzNCLE9BQU8sSUFB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RyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxJQUFJO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxzQkFBc0IsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztRQUN4RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7d0dBcHhCUSxlQUFlOzRHQUFmLGVBQWUsY0FIWixNQUFNOzs0RkFHVCxlQUFlO2tCQUozQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTWV0YSB9IGZyb20gXCIuL3NlcnZpY2UtbWV0YVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29uc3VtZXJTZXJ2aWNlIHtcclxuICAgIG9yZGVyZGF0YTogYW55O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlbWV0YTogU2VydmljZU1ldGFcclxuICAgICkgeyB9XHJcbiAgICBzZXRPcmRlckRldGFpbHMoZGF0YSkge1xyXG4gICAgICAgIHRoaXMub3JkZXJkYXRhID0gZGF0YTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm9yZGVyZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckRldGFpbHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJkYXRhO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJDb25zdW1lcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdzcGNvbnN1bWVyJyk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVTUENvbnN1bWVyKHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCgnc3Bjb25zdW1lcicsIHBvc3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRGYXZQcm92aWRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9wcm92aWRlcnMnKTtcclxuICAgIH1cclxuICAgIHJlbW92ZVByb3ZpZGVyZnJvbUZhdm91cml0ZShhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcHJvdmlkZXJzLycgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cERlbGV0ZSh1cmwpO1xyXG4gICAgfVxyXG4gICAgZG9EZWxldGVGYXZQcm92aWRlcihmYXYsIGN0aGlzPykge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlRmF2UHJvdmlkZXIoZmF2LmlkKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGRlbGV0ZUZhdlByb3ZpZGVyKGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVQcm92aWRlcmZyb21GYXZvdXJpdGUoaWQpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCdyZWxvYWRsaXN0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGFkZFByb3ZpZGVydG9GYXZvdXJpdGUoYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3Byb3ZpZGVycy8nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCk7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VQYXNzd29yZFByb2ZpbGUoZGF0YSwgb3JpZ2luPykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IG9yaWdpbiArICcvbG9naW4vY2hwd2QnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN1bWVydGVsZWdyYW1DaGF0KGNvdW50cnlDb2RlLCBsb2dpbklkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NoYXRib3QvdGVsZWdyYW0vY29uc3VtZXIvY2hhdElkLycgKyBjb3VudHJ5Q29kZSArICcvJyArIGxvZ2luSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29uc3VtZXJSYXRlU2VydmljZShwYXJhbXMsIHR5cGUpIHtcclxuICAgICAgICBsZXQgcGF0aDtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NoZWNraW4nKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvd2FpdGxpc3QvcmF0aW5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcHBvaW50bWVudCcpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9yYXRpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29yZGVyJykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL29yZGVycy9yYXRpbmcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVDb25zdW1lclJhdGVTZXJ2aWNlKHBhcmFtcywgZGF0YSwgdHlwZSkge1xyXG4gICAgICAgIGxldCBwYXRoO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnY2hlY2tpbicpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci93YWl0bGlzdC9yYXRpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FwcG9pbnRtZW50Jykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3JhdGluZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3JkZXInKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvb3JkZXJzL3JhdGluZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQocGF0aCwgZGF0YSwgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIHBvc3RDb25zdW1lclJhdGVTZXJ2aWNlKHBhcmFtcywgZGF0YSwgdHlwZSkge1xyXG4gICAgICAgIGxldCBwYXRoO1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnY2hlY2tpbicpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci93YWl0bGlzdC9yYXRpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FwcG9pbnRtZW50Jykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3JhdGluZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnb3JkZXInKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvb3JkZXJzL3JhdGluZyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHBhdGgsIGRhdGEsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICAvL1dhaXRsaXN0IFVybHNcclxuICAgIGdldFdhaXRsaXN0KHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL3dhaXRsaXN0JywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldFdhaXRsaXN0RnV0dXJlKHBhcmFtcz8pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci93YWl0bGlzdC9mdXR1cmUnLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJXYWl0bGlzdEF0dGFjaG1lbnQoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0LycgKyB1dWlkICsgJy9hdHRhY2htZW50JyArICc/YWNjb3VudD0nICsgYWNjb3VudGlkOztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgYWRkV2FpdGxpc3RBdHRhY2htZW50KGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9zaGFyZS9hdHRhY2htZW50cy8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkOztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29uc3VtZXJXYWl0bGlzdEF0dGFjaG1lbnRzQnlVdWlkKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9hdHRhY2htZW50LycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0V2FpdGxpc3RUb2RheSgpIHtcclxuICAgICAgICBjb25zdCBwYXRoID0gJ2NvbnN1bWVyL3dhaXRsaXN0L3RvZGF5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgLy9BcHBvaW50bWVudCBVcmxzXHJcbiAgICBnZXRBcHBvaW50bWVudEZ1dHVyZShwYXJhbXM/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvYXBwb2ludG1lbnQvZnV0dXJlJywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcHRsaXN0KHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50JywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50VG9kYXkocGFyYW1zPykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3RvZGF5JywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGFkZENvbnN1bWVyQXBwb2ludG1lbnRBdHRhY2htZW50KGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC8nICsgdXVpZCArICcvYXR0YWNobWVudCcgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDs7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGFkZEFwcG9pbnRtZW50QXR0YWNobWVudChhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2hhcmUvYXR0YWNobWVudHMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDs7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyQXBwb2ludG1lbnRBdHRhY2htZW50c0J5VXVpZCh1dWlkLCBhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvYXR0YWNobWVudC8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIC8vT3JkZXIgVXJsc1xyXG4gICAgZ2V0Q29uc3VtZXJGdXRPcmRlcnMoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9mdXR1cmUnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyT3JkZXJzKHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL29yZGVycycsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICAvL0RvbmF0aW9uIFVybHNcclxuICAgIGdldENvbnN1bWVyRG9uYXRpb25zKHBhcmFtcyA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29uc3VtZXJXYWl0bGlzdE1lZXRpbmdEZXRhaWxzKHV1aWQsIG1vZGUsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC8nICsgdXVpZCArICcvbWVldGluZ0RldGFpbHMvJyArIG1vZGUgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckFwcHRNZWV0aW5nRGV0YWlscyh1dWlkLCBtb2RlLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvJyArIHV1aWQgKyAnL21lZXRpbmdEZXRhaWxzLycgKyBtb2RlICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvZmlsZShjb25zdW1lcklkKSB7XHJcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRNeVByb2ZpbGUoY29uc3VtZXJJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xyXG4gICAgfVxyXG4gICAgZ2V0VGVsZWdyYW1zdGF0KCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci90ZWxlZ3JhbS9zZXR0aW5ncyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlVGVsZWdyYW1Ob3RpKHN0YXR1cykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci90ZWxlZ3JhbS9zZXR0aW5ncy8nICsgc3RhdHVzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE15UHJvZmlsZShpZCkge1xyXG4gICAgICAgIGxldCBwYXRoID0gJ2NvbnN1bWVyLycgKyBpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlUHJvZmlsZShkYXRhLCBvcmlnaW4pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUGF0Y2gob3JpZ2luLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHVwZGF0ZVNQQ29uc3VtZXJQcm9maWxlKGRhdGEsIG9yaWdpbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQob3JpZ2luLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZE1lbWJlcnMoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9mYW1pbHkvbWVtYmVyJywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBlZGl0TWVtYmVyKGRhdGEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KCdjb25zdW1lci9mYW1pbHkvbWVtYmVyJywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lclBheW1lbnRzKGZpbHRlcj8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwsIGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckJ5Q29uc3VtZXJVVUlEKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDaGVja2luQnlDb25zdW1lclVVSUQodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVVUlEOlwiLCB1dWlkKTtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHBvaW50bWVudEJ5Q29uc3VtZXJVVUlEKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyRG9uYXRpb25CeVVpZCh1aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24vJyArIHVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lclBheW1lbnRCeUlkKGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvJyArIGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE1lbWJlcnMocHJvdmlkZXJDdXN0b21lcklEKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2ZhbWlseS9tZW1iZXIvJyArIHByb3ZpZGVyQ3VzdG9tZXJJRDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBkZWxldGVNZW1iZXIobWVtYmVySWQsIHBhcmVudElEKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9mYW1pbHkvbWVtYmVyLycgKyBtZW1iZXJJZCArICcvJyArIHBhcmVudElEO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBEZWxldGUocGF0aCk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0bGlzdEhpc3RvcnkocGFyYW1zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci93YWl0bGlzdC9oaXN0b3J5JywgbnVsbCwgcGFyYW1zKTtcclxuICAgICAgICAvLyBzZXQgbm9fcmVkaXJlY3RfcGF0aCBpbiBpbnRlcmNlcHRvciB0byBhdm9pZCByZWRpcmVjdCBvbiA0MDFcclxuICAgIH1cclxuICAgIGdldEhpc3RvcnlXYWl0bGlzdENvdW50KHBhcmFtcyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvd2FpdGxpc3QvaGlzdG9yeS9jb3VudCcsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0bGlzdEJpbGwocGFyYW1zLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9iaWxsLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQocGF0aCwgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldFBheW1lbnREZXRhaWwocGFyYW1zLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvZGV0YWlscy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCwgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50SGlzdG9yeShwYXJhbXM/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvYXBwb2ludG1lbnQvaGlzdG9yeScsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHBvaW50bWVudEhpc3RvcnlDb3VudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9hcHBvaW50bWVudC9oaXN0b3J5L2NvdW50Jyk7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckhpc3RvcnkocGFyYW1zPykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvaGlzdG9yeSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRQYXltZW50TW9kZXNvZlByb3ZpZGVyKHByb3ZpZCwgc2VydmljZUlkLCBwdXJwb3NlPykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9wYXltZW50L21vZGVzL3NlcnZpY2UvJyArIHByb3ZpZCArICcvJyArIHNlcnZpY2VJZCArICcvJyArIHB1cnBvc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgY29uc3VtZXJQYXltZW50KGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN1bWVyUGF5bWVudF9pbnZvY2llKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvanAvZmluYW5jZS9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlDb3Vwb24oakNvdXBvbkNvZGUsIGNoZWNraW5JZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2phbGRlZS9jb3Vwb25zLycgKyBqQ291cG9uQ29kZSArICcvJyArIGNoZWNraW5JZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckNvbW11bmljYXRpb25zKHByb3ZpZGVyX2lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbW11bmljYXRpb25zP2FjY291bnQ9JyArIHByb3ZpZGVyX2lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldFd0bGlzdEhpc3RvcnkodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci93YWl0bGlzdC9zdGF0ZXMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgZ2V0V2FpdGxpc3RRdWVzdGlvbm5haXJlQnlVaWQodWlkLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvcXVlc3Rpb25uYWlyZS8nICsgdWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwdEhpc3RvcnkodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9zdGF0ZS8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQocGF0aCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHB0UXVlc3Rpb25uYWlyZUJ5VWlkKHVpZCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3F1ZXN0aW9ubmFpcmUvJyArIHVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudElkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50RGV0YWlsKHV1aWQsIHBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0SmFsZGVlQ2FzaGFuZEpjcmVkaXQoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhbGxldC9yZWRlZW0vZWxpZ2libGUvYW10JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRSZW1haW5pbmdQcmVwYXltZW50QW1vdW50KGpjYXNoPywgamNyZWRpdD8sIGFkdmFuY2VhbW91bnQ/KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhbGxldC9yZWRlZW0vcmVtYWluaW5nL2FtdCcgKyAnP3VzZUpjYXNoPScgKyBqY2FzaCArICcmdXNlSmNyZWRpdD0nICsgamNyZWRpdCArICcmYWR2YW5jZVBheUFtb3VudD0nICsgYWR2YW5jZWFtb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBQYXlCeUphbGRlZXdhbGxldChwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9wYXltZW50L3dhbGxldCcsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldFdhaXRsaXN0RGV0YWlsKHV1aWQsIHBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvd2FpdGxpc3QvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2VuZXJhdGVEb25hdGlvbkxpbmsoYWNjb3VudGlkLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvZ2VuZXJhdGUvcGF5bGluaz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZEN1c3RvbWVyRG9uYXRpb24ocG9zdERhdGEsIGFjY291bnRpZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9kb25hdGlvbj9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldERvbmF0aW9uTGlua1V1aWQodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9wYXltZW50L3BheWxpbmsvZG9uYXRpb24vJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJXYWl0bGlzdE5vdGUoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0L2NvbW11bmljYXRpb24vJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0RG9uYXRpb25RdWVzdGlvbm5haXJlKHNlcnZpY2VJZCwgYWNjb3VudF9pZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL2RvbmF0aW9uLycgKyBzZXJ2aWNlSWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRfaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0RG9uYXRpb25RdWVzdGlvbm5haXJlKHV1aWQsIGJvZHksIGFjY291bnRfaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24vcXVlc3Rpb25uYWlyZS9zdWJtaXQvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRfaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGNvbnN1bWVyRG9uYXRpb25RbnJVcGxvYWRTdGF0dXNVcGRhdGUodWlkLCBhY2NvdW50LCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2RvbmF0aW9uL3F1ZXN0aW9ubmFpcmUvdXBsb2FkL3N0YXR1cy8nICsgdWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHZhbGlkYXRlQ29uc3VtZXJRdWVzdGlvbm5haXJlKGJvZHksIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3ZhbGlkYXRlJyArICc/YWNjb3VudD0nICsgYWNjb3VudElkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIHZhbGlkYXRlQ29uc3VtZXJPbmVUaW1lUXVlc3Rpb25uYWlyZShib2R5LCBhY2NvdW50SWQsIHByb3ZpZGVyQ29uc3VtZXJJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3ZhbGlkYXRlL29uZXRpbWVxdWVzdGlvbm5haXJlLycgKyBwcm92aWRlckNvbnN1bWVySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJDdXN0b21lck9uZXRpbWVJbmZvKHByb3ZpZGVyQ29uc3VtZXJJRCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3Byb3ZpZGVyQ3VzdG9tZXIvJyArIHByb3ZpZGVyQ29uc3VtZXJJRCArIFwiP2FjY291bnQ9XCIgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0Q3VzdG9tZXJPbmV0aW1lSW5mbyhib2R5LCB1c2VySWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlLycgKyB1c2VySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0Q29uc3VtZXJBcHB0U2VydmljZU9wdGlvbihib2R5LCB1dWlkLCBhY2NvdW50KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2VvcHRpb24vJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIHJlc2NoZWR1bGVDb25zdW1lckFwcHRtbnQoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3Jlc2NoZWR1bGU/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ3VzdG9tZXJBcHBvaW50bWVudChhY2NvdW50aWQsIHBvc3REYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L2FkZD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldENvbnZlbmllbnRGZWVPZlByb3ZpZGVyKHByb3ZpZCwgZGF0YT8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudC9tb2Rlcy9jb252ZW5pZW5jZUZlZS8nICsgcHJvdmlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZEFwcHRBZHZhbmNlUGF5bWVudChwYXJhbSwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9hZHZhbmNlUGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCh1cmwsIGJvZHksIG51bGwsIHBhcmFtKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyUXVlc3Rpb25uYWlyZShzZXJ2aWNlSWQsIGNvbnN1bWVySWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2UvJyArIHNlcnZpY2VJZCArICcvY29uc3VtZXIvJyArIGNvbnN1bWVySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2aWNlb3B0aW9uc0FwcHQoc2VydmlkLCBhY2NvdW50KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3F1ZXN0aW9ubmFpcmUvc2VydmljZW9wdGlvbnMvJyArIHNlcnZpZCArICcvMD9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50UmVzY2hlZHVsZVByaWNlbGlzdChzZXJ2aWNlaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2NoZWR1bGUvJyArIHNlcnZpY2VpZCArICcvcHJpY2VsaXN0JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTbG90c0J5TG9jYXRpb25TZXJ2aWNlYW5kRGF0ZShsb2NpZCwgc2VydmlkLCBwZGF0ZSwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NjaGVkdWxlL2RhdGUvJyArIHBkYXRlICsgJy9sb2NhdGlvbi8nICsgbG9jaWQgKyAnL3NlcnZpY2UvJyArIHNlcnZpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEF2YWlsYWJsZURhdGVzc0J5TG9jYXRpb25TZXJ2aWNlKGxvY2lkLCBzZXJ2aWQsIGFjY291bnRpZD8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvYXZhaWxhYmlsaXR5L2xvY2F0aW9uLycgKyBsb2NpZCArICcvc2VydmljZS8nICsgc2VydmlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0U2VydmljZXNmb3JBcHBvbnRtbnRCeUxvY2F0aW9uSWQobG9jaWQpIHtcclxuICAgICAgICBpZiAobG9jaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2UvJyArIGxvY2lkO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmVzY2hlZHVsZUNvbnN1bWVyV2FpdGxpc3QoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL3dhaXRsaXN0L3Jlc2NoZWR1bGU/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRRdWV1ZXNieUxvY2F0aW9uYW5kU2VydmljZUlkQXZhaWxhYmxlRGF0ZXMobG9jaWQsIHNlcnZpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0L3F1ZXVlcy9hdmFpbGFibGUvJyArIGxvY2lkICsgJy8nICsgc2VydmlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgYWRkQ2hlY2tpbihhY2NvdW50aWQsIHBvc3REYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL3dhaXRsaXN0L2FkZD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIHN1Ym1pdENvbnN1bWVyV2FpdGxpc3RTZXJ2aWNlT3B0aW9uKGJvZHksIHV1aWQsIGFjY291bnQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3Qvc2VydmljZW9wdGlvbi8nICsgdXVpZCArICcvP2FjY291bnQ9JyArIGFjY291bnQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGdldFBhcnR5c2l6ZURldGFpbHMoZG9tYWluLCBzdWJkb21haW4pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAneW53Q29uZi9zZXR0aW5ncy8nICsgZG9tYWluICsgJy8nICsgc3ViZG9tYWluO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGFkZFdhaXRsaXN0QWR2YW5jZVBheW1lbnQocGFyYW0sIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvYWR2YW5jZVBheW1lbnQnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBib2R5LCBudWxsLCBwYXJhbSk7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2aWNlb3B0aW9uc1dhaXRsaXN0KHNlcnZpZCwgYWNjb3VudCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2VvcHRpb25zLycgKyBzZXJ2aWQgKyAnLzA/YWNjb3VudD0nICsgYWNjb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRRdWV1ZXNieUxvY2F0aW9uYW5kU2VydmljZUlkKGxvY2lkLCBzZXJ2aWQsIHBkYXRlPywgYWNjb3VudGlkPykge1xyXG4gICAgICAgIGNvbnN0IGRkID0gKHBkYXRlICE9PSB1bmRlZmluZWQpID8gJy8nICsgcGRhdGUgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9xdWV1ZXMvJyArIGxvY2lkICsgJy8nICsgc2VydmlkICsgZGQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0U2VydmljZXNCeUxvY2F0aW9uSWQobG9jaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3Qvc2VydmljZXMvJyArIGxvY2lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE9yZGVyUXVlc3Rpb25uYWlyZUJ5VWlkKHVpZCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9xdWVzdGlvbm5haXJlLycgKyB1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTdG9yZUNvbnRhY3QoYWNjb3VudGlkPykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL29yZGVycy9zZXR0aW5ncy9zdG9yZS9jb250YWN0L2luZm8vJyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckNhdGFsb2dzKGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvY2F0YWxvZ3MvJyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRBdmFpbGFibGVEYXRlc0ZvckhvbWUoY2F0YWxvZ2lkLCBhY2NvdW50aWQ/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvb3JkZXJzL2NhdGFsb2dzL2RlbGl2ZXJ5L2RhdGVzLycgKyBjYXRhbG9naWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICBnZXRBdmFpbGFibGVEYXRlc0ZvclBpY2t1cChjYXRhbG9naWQsIGFjY291bnRpZD8pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9vcmRlcnMvY2F0YWxvZ3MvcGlja1VwL2RhdGVzLycgKyBjYXRhbG9naWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVDb25zdW1lcmFkZHJlc3MoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9kZWxpdmVyeUFkZHJlc3MnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIENyZWF0ZUNvbnN1bWVyT3JkZXIoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9vcmRlcnM/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBDcmVhdGVDb25zdW1lckVtYWlsKHV1aWQsIGFjY291bnRpZCwgcG9zdF9EYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCgnY29uc3VtZXIvb3JkZXJzLycgKyB1dWlkICsgJy9lbWFpbD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3RfRGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lck9yZGVyUXVlc3Rpb25uYWlyZShjYXRlbG9nSWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL29yZGVyLycgKyBjYXRlbG9nSWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lcmFkZHJlc3MoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2RlbGl2ZXJ5QWRkcmVzcyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q2FydGRldGFpbHMoYWNjb3VudGlkLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9hbW91bnQ/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGdldFVzZXJBcHB0VGltZShwcm92X2Fycikge1xyXG4gICAgICAgIGlmIChwcm92X2Fyci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2NoZWR1bGUvbmV4dEF2YWlsYWJsZVNjaGVkdWxlLycgKyBwcm92X2Fyci5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRQYXRoID0gZW5jb2RlVVJJKHBhdGgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KGVuY29kZWRQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICAvLyBnZXRVc2VyRXN0aW1hdGVkV2FpdGluZ1RpbWUocHJvdl9hcnIpIHtcclxuICAgIC8vICAgICBsZXQgc3RyID0gJyc7XHJcbiAgICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm92X2Fyci5sZW5ndGg7IGkrKykge1xyXG4gICAgLy8gICAgICAgICBpZiAoc3RyICE9PSAnJykge1xyXG4gICAgLy8gICAgICAgICAgICAgc3RyICs9ICclMkMnOyAvLyBjb21tYVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIHN0ciArPSBwcm92X2FycltpXTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgaWYgKHN0ciA9PT0gJycpIHtcclxuICAgIC8vICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICBjb25zdCBwYXRoID0gJ3Byb3ZpZGVyL3dhaXRsaXN0L3F1ZXVlcy9wcm92aWRlcldhaXRpbmdUaW1lLycgKyBzdHI7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoKTtcclxuICAgIC8vIH1cclxuICAgIC8vIHVwZGF0ZUFuYWx5dGljcyhib2R5KSB7XHJcbiAgICAvLyAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL2FuYWx5dGljcy91cGRhdGUnO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBnZXRTZWFyY2hDYXRhbG9nSXRlbShhY2NvdW50OiBhbnksIHRlbXBOYW1lOiBhbnksIG5hbWU6IGFueSkge1xyXG4gICAgLy8gICAgIGNvbnN0IHVybCA9IHByb2plY3RDb25zdGFudHMuU0FQQVRIICsgJ3NlYXJjaGRldGFpbHMvJyArIGFjY291bnQgKyAnL0l0ZW0vc2VhcmNoPycgKyB0ZW1wTmFtZSArICc9JyArIG5hbWUgKyAnKic7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgLy8gfVxyXG4gICAgZ2V0T3JkZXJTZXR0aW5ncyhhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvb3JkZXJzL3NldHRpbmdzJyArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGFkZENvbnN1bWVydG9Qcm92aWRlck5vdGUobWVzc2FnZSwgZmlsdGVyKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL21lc3NhZ2UvY29tbXVuaWNhdGlvbnMnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgbWVzc2FnZSwgbnVsbCwgZmlsdGVyKTtcclxuICAgIH1cclxuICAgIHRlbGVncmFtQ2hhdChjb3VudHJ5Q29kZSwgcGhOdW1iZXIpIHtcclxuICAgICAgICBpZiAoY291bnRyeUNvZGUgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9ICdjaGF0Ym90L3RlbGVncmFtL3Byb3ZpZGVyL2NoYXRJZC85MS8nICsgcGhOdW1iZXI7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9ICdjaGF0Ym90L3RlbGVncmFtL3Byb3ZpZGVyL2NoYXRJZC8nICsgY291bnRyeUNvZGUgKyAnLycgKyBwaE51bWJlcjtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGFkZFByb3ZpZGVyQXBwb2ludG1lbnROb3RlKHV1aWQsIGJvZHkpIHtcclxuICAgIC8vICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvYXBwb2ludG1lbnQvY29tbXVuaWNhdGUvJyArIHV1aWQ7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGFkZFByb3ZpZGVyT3JkZXJOb3RlKHV1aWQsIGJvZHkpIHtcclxuICAgIC8vICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvb3JkZXJzL2NvbW11bmljYXRlLycgKyB1dWlkO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBhZGRQcm92aWRlckRvbmF0aW9uTm90ZSh1dWlkLCBib2R5KSB7XHJcbiAgICAvLyAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL2RvbmF0aW9uL2NvbW11bmljYXRlLycgKyB1dWlkO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBhZGRQcm92aWRlcldhaXRsaXN0Tm90ZSh1dWlkLCBib2R5KSB7XHJcbiAgICAvLyAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL3dhaXRsaXN0L2NvbW11bmljYXRlLycgKyB1dWlkO1xyXG4gICAgLy8gICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICAvLyB9XHJcbiAgICBnZXRNZW1iZXJzaGlwKGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9tZW1iZXJzaGlwL3NlcnZpY2VzP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBhZGRDb25zdW1lckFwcG9pbnRtZW50Tm90ZShhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvY29tbXVuaWNhdGUvbWVzc2FnZS8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ29uc3VtZXJPcmRlck5vdGUoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVyL2NvbW11bmljYXRlLycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGFkZENvbnN1bWVyT3JkZXJOb3RlY29tbShhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvb3JkZXJzL2NvbW11bmljYXRlL21lc3NhZ2UvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJEb25hdGlvbk5vdGUoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2RvbmF0aW9uL2NvbW11bmljYXRlLycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGRlYWN0aXZlQWNjb3VudCh1c2VyOiBhbnkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSB1c2VyICsgJy9sb2dpbi9kZUFjdGl2YXRlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwRGVsZXRlKHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDYXRhbG9nQnlJZChjYXRhbG9ncywgY2F0YWxvZ0lkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJDQXRhbG9nczpcIiwgY2F0YWxvZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiSUQ6XCIsIGNhdGFsb2dJZCk7XHJcbiAgICAgICAgbGV0IGNhdGFsb2dBcnJheSA9IGNhdGFsb2dzLmZpbHRlcihjYXRhbG9nID0+IGNhdGFsb2cuaWQgPT0gY2F0YWxvZ0lkKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkNhdGFsb2dBcnJheVwiLCBjYXRhbG9nQXJyYXkpO1xyXG4gICAgICAgIGlmIChjYXRhbG9nQXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2F0YWxvZ0FycmF5WzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGdldENhdGFsb2dJdGVtQnlJZChjYXRhbG9nLCBjYXRhbG9nSXRlbUlkKSB7XHJcbiAgICAgICAgbGV0IGNhdGFsb2dJdGVtQXJyYXkgPSBjYXRhbG9nLmNhdGFsb2dJdGVtLmZpbHRlcihjYXRhbG9nSXRlbSA9PiBjYXRhbG9nSXRlbS5pZCA9PSBjYXRhbG9nSXRlbUlkKTtcclxuICAgICAgICBpZiAoY2F0YWxvZ0l0ZW1BcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRhbG9nSXRlbUFycmF5WzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG9yZGVycyBcclxuICAgICAqIEBwYXJhbSBpdGVtIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGdldEl0ZW1RdHkob3JkZXJzLCBpdGVtSWQpIHtcclxuICAgICAgICBjb25zdCBvcmRlckxpc3QgPSBvcmRlcnM7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJDYXJ0IEl0ZW1zOlwiLCBvcmRlckxpc3QpO1xyXG4gICAgICAgIGxldCBxdHkgPSAwO1xyXG4gICAgICAgIGlmIChvcmRlckxpc3QgIT09IG51bGwgJiYgb3JkZXJMaXN0LmZpbHRlcihpID0+IGkuaWQgPT0gaXRlbUlkKSkge1xyXG4gICAgICAgICAgICBxdHkgPSBvcmRlckxpc3QuZmlsdGVyKGkgPT4gaS5pZCA9PSBpdGVtSWQpLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHF0eTtcclxuICAgIH1cclxuICAgIGdldEFwcHRSZXF1ZXN0TGlzdChhY2NvdW50SWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9hcHBvaW50bWVudC9zZXJ2aWNlL3JlcXVlc3Q/YWNjb3VudC1lcT0nICsgYWNjb3VudElkKTtcclxuICAgIH1cclxuICAgIHBvc3RBcHBvaW50bWVudFJlcXVlc3QoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9hcHBvaW50bWVudC9zZXJ2aWNlL3JlcXVlc3Q/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRQcmVzY3JpcHRpb25zKCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdzcGNvbnN1bWVyL21lZGljYWxyZWNvcmQvcHJlc2NyaXB0aW9uJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBzdWJtaXRJdGVtT3B0aW9ucyhpdGVtSWQsIG9yZGVySWQsIGFjY291bnRJZCwgcG9zdERhdGEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCgnY29uc3VtZXIvb3JkZXJzL2l0ZW0vc2VydmljZW9wdGlvbi8nICsgaXRlbUlkICsgJy8nICsgb3JkZXJJZCArICc/YWNjb3VudD0nICsgYWNjb3VudElkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2aWNlb3B0aW9uc09yZGVyKGl0ZW1JZCwgYWNjb3VudCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2VvcHRpb25zL29yZGVyL2l0ZW0vJyArIGl0ZW1JZCArICc/YWNjb3VudD0nICsgYWNjb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICByZW1vdmVQcm9maWxlUGhvdG8oY29uc3VtZXJJZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnc3Bjb25zdW1lci9yZW1vdmUvcHJvZmlsZVBob3RvLycgKyBjb25zdW1lcklkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBEZWxldGUocGF0aCwgYm9keSk7XHJcbiAgICB9XHJcbiAgICBhZGRQcm9maWxlUGhvdG8oY3VzdG9tZXJJZDogbnVtYmVyLCBwb3N0X2RhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdzcGNvbnN1bWVyL3VwbG9hZC9wcm9maWxlUGhvdG8vJyArIGN1c3RvbWVySWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBwb3N0X2RhdGEpO1xyXG4gICAgfVxyXG4gICAgZ2V0RG9jdW1lbnQoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3NwY29uc3VtZXIvbWVkaWNhbHJlY29yZC9wcmVzY3JpcHRpb24nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEl0ZW1zTGlzdFdpdGhJdGVtT3B0aW9ucyhjYXRhbG9nSWQsIGFjY291bnQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcXVlc3Rpb25uYWlyZS9zZXJ2aWNlb3B0aW9uL29yZGVyL2NhdGFsb2cvaXRlbS8nICsgY2F0YWxvZ0lkICsgJy9PTkxJTkU/YWNjb3VudD0nICsgYWNjb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICB2aWRlb2F1ZGlvUzNVcGxvYWQodXJsLCBmaWxlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJWaWRlb0F1ZGlvIFVwbG9hZFwiLCB1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBmaWxlKTtcclxuICAgIH1cclxuICAgIGdldEFwcHRDb3Vwb25zKHNlcnZJZCwgbG9jSWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2VydmljZS8nICsgc2VydklkICsgJy9sb2NhdGlvbi8nICsgbG9jSWQgKyAnL2NvdXBvbnMnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENoZWNraW5Db3Vwb25zKHNlcnZJZCwgbG9jSWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3Qvc2VydmljZS8nICsgc2VydklkICsgJy9sb2NhdGlvbi8nICsgbG9jSWQgKyAnL2NvdXBvbnMnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENoZWNraW5ieUVuY0lkKGVuY0lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0L2VuYy8nICsgZW5jSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwdGJ5RW5jSWQoZW5jSWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvZW5jLycgKyBlbmNJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlcmJ5RW5jSWQoZW5jSWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvb3JkZXJzL2VuYy8nICsgZW5jSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0U29yZGVyYnlFbmNJZChlbmNJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9zb3JkZXIvZW5jSWQvJyArIGVuY0lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEl2clF1ZXN0aW9ubmFpcmVCeVVpZCh1aWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9pdnIvcXVlc3Rpb25uYWlyZS8nICsgdWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0aXZyQnlDb25zdW1lclVVSUQodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2l2ci8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50QnlJZChhcHBtbnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci9hcHBvaW50bWVudC8nICsgYXBwbW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJPcmRlckRldGFpbEJ5SWQodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci9vcmRlcnMvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJXYWl0bGlzdERldGFpbEJ5SWQodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci93YWl0bGlzdC8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBQYXltZW50bGlua2NoZWNrKHV1aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudC9wYXkvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0SWRUZXJtaW5vbG9naWVzKGRvbWFpbiwgc3ViRG9tYWluKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3lud0NvbmYvdGVybWlub2xvZ2llcy8nICsgZG9tYWluICsgJy8nICsgc3ViRG9tYWluO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGxpbmtQYXltZW50KGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvcGF5bWVudC9wYXlsaW5rL29yZGVyL2NyZWF0ZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGxpbmtQYXltZW50X2ludm9pYyhkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2pwL2ZpbmFuY2UvcGF5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgbGlua01lbWJlcnNoaXBQYXltZW50X2ludm9pYyhkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL21lbWJlcnNoaXAvcGF5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgZ2V0bWVtYmVyc2hpcEludm9jaWVEZXRhaWxzQnlJZCh1dWlkLGFjY0lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL21lbWJlcnNoaXAvbWVtYmVyL3N1YnNjcmlwdGlvbi8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjSWQ7O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGxpbmtTb1BheW1lbnRfaW52b2ljKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvc28vcGF5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgZ2V0SW52b2ljZURldGFpbHNCeUlkKGFjY0lkLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2pwL2ZpbmFuY2UvaW52b2ljZS8nICsgYWNjSWQgKyAnLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldFNvSW52b2ljZURldGFpbHNCeUlkKGFjY0lkLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3NvL2ludm9pY2UvJyArIGFjY0lkICsgJy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICB1cGxvYWRGaWxlc1RvUzMoZGF0YSwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2ZpbGVTaGFyZS91cGxvYWQnICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHZpZGVvYXVkaW9TM1VwbG9hZFN0YXR1c1VwZGF0ZShzdGF0dXMsIGlkLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZmlsZVNoYXJlL3VwbG9hZC8nICsgc3RhdHVzICsgJy8nICsgaWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KHVybCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHB0QmlsbCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50LycgKyB1dWlkICsgJy8nICsgJ2JpbGxkZXRhaWxzJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0QmlsbCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0LycgKyB1dWlkICsgJy8nICsgJ2JpbGxkZXRhaWxzJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRJbnZvaWNlRGV0YWlsc0J5dXVpZCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2pwL2ZpbmFuY2UvaW52b2ljZS95bnd1aWQnICsgJy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRJbnZvaWNlKGFjY291bnRJZCwgaW52b2ljZVVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9qcC9maW5hbmNlL2ludm9pY2UnICsgJy8nICsgYWNjb3VudElkICsgJy8nICsgaW52b2ljZVVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zZW50Rm9ybShpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS8nICsgaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Y29uc2VudEZvcm1RdWVzdGlvbmFpcmUodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS9xdWVzdGlvbm5haXJlLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIHN1Ym1pdFF1ZXN0aW9ubmFpcmUoYm9keSwgdXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS9xdWVzdGlvbm5haXJlL3N1Ym1pdC8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5U2lnbih1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbnNlbnRmb3JtL3ZlcmlmeXNpZ24vJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBhdGNoKHVybCwgYm9keSk7XHJcbiAgICB9XHJcbiAgICB2ZXJpZnlRbnIodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS92ZXJpZnlTdGF0dXMvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgaXNQcm92aWRlclJlYWR5KHBvc3RfZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3ZpZGVvY2FsbC9yZWFkeScsIHBvc3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVBbmFseXRpY3MoYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hbmFseXRpY3MvdXBkYXRlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0VXNlcnNCeUxvY2F0aW9uKGxvY2F0aW9uSWQsIHVuaXF1ZUlkLCBsaXN0T2ZVcmxzKSB7XHJcbiAgICAgICAgbGV0IHBhdGggPSAncHJvdmlkZXIvYWNjb3VudC9zZXR0aW5ncy9sb2NhdGlvbi8nICsgbG9jYXRpb25JZCArICcvJyArIHVuaXF1ZUlkICsgJy8nICsgbGlzdE9mVXJscztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgZ2V0TG9jYXRpb25zQnlVc2VySUQodXNlcklEKSB7XHJcbiAgICAgICAgbGV0IHBhdGggPSAnY29uc3VtZXIvdXNlci8nICsgdXNlcklEICsgJy9sb2NhdGlvbic7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoKTtcclxuICAgIH1cclxuICAgIGdldEluYm94KHVzZXJ0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1c2VydHlwZSArICcvY29tbXVuaWNhdGlvbnMnKTtcclxuICAgIH1cclxuICAgIHJlYWRQcm92aWRlck1lc3NhZ2VzKHByb3ZpZGVySWQsIG1lc3NhZ2VJZHMsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb21tdW5pY2F0aW9ucy9yZWFkTWVzc2FnZXMvJyArIHByb3ZpZGVySWQgKyAnLycgKyBtZXNzYWdlSWRzICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCh1cmwpO1xyXG4gICAgfVxyXG4gICAgbGlua0lwUGF5bWVudF9pbnZvaWMoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9pcC9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRJcEludm9pY2VEZXRhaWxzQnlJZChhY2NJZCwgdXVpZCkge1xyXG4gICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvaXAvaW52b2ljZS8nICsgYWNjSWQgKyAnLycgKyB1dWlkO1xyXG4gICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
777
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3VtZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2pjb25zdW1lci1zaGFyZWQvc3JjL2xpYi9jb25zdW1lci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sZUFBZTtJQUdaO0lBRlosU0FBUyxDQUFNO0lBQ2YsWUFDWSxXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtJQUNoQyxDQUFDO0lBQ0wsZUFBZSxDQUFDLElBQUk7UUFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUNELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUNELG1CQUFtQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELGdCQUFnQixDQUFDLFNBQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELDJCQUEyQixDQUFDLFNBQVM7UUFDakMsTUFBTSxHQUFHLEdBQUcscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELHFCQUFxQixDQUFDLElBQUksRUFBRSxNQUFPO1FBQy9CLE1BQU0sR0FB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QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTWV0YSB9IGZyb20gXCIuL3NlcnZpY2UtbWV0YVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ29uc3VtZXJTZXJ2aWNlIHtcclxuICAgIG9yZGVyZGF0YTogYW55O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBzZXJ2aWNlbWV0YTogU2VydmljZU1ldGFcclxuICAgICkgeyB9XHJcbiAgICBzZXRPcmRlckRldGFpbHMoZGF0YSkge1xyXG4gICAgICAgIHRoaXMub3JkZXJkYXRhID0gZGF0YTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLm9yZGVyZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckRldGFpbHMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJkYXRhO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJDb25zdW1lcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdzcGNvbnN1bWVyJyk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVTUENvbnN1bWVyKHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCgnc3Bjb25zdW1lcicsIHBvc3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRGYXZQcm92aWRlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9wcm92aWRlcnMnKTtcclxuICAgIH1cclxuICAgIHJlbW92ZVByb3ZpZGVyZnJvbUZhdm91cml0ZShhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcHJvdmlkZXJzLycgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cERlbGV0ZSh1cmwpO1xyXG4gICAgfVxyXG4gICAgY2hhbmdlUGFzc3dvcmRQcm9maWxlKGRhdGEsIG9yaWdpbj8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSBvcmlnaW4gKyAnL2xvZ2luL2NocHdkJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBjb25zdW1lcnRlbGVncmFtQ2hhdChjb3VudHJ5Q29kZSwgbG9naW5JZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjaGF0Ym90L3RlbGVncmFtL2NvbnN1bWVyL2NoYXRJZC8nICsgY291bnRyeUNvZGUgKyAnLycgKyBsb2dpbklkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyUmF0ZVNlcnZpY2UocGFyYW1zLCB0eXBlKSB7XHJcbiAgICAgICAgbGV0IHBhdGg7XHJcbiAgICAgICAgaWYgKHR5cGUgPT09ICdjaGVja2luJykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL3dhaXRsaXN0L3JhdGluZyc7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnYXBwb2ludG1lbnQnKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvcmF0aW5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvcmRlcicpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci9vcmRlcnMvcmF0aW5nJztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlQ29uc3VtZXJSYXRlU2VydmljZShwYXJhbXMsIGRhdGEsIHR5cGUpIHtcclxuICAgICAgICBsZXQgcGF0aDtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NoZWNraW4nKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvd2FpdGxpc3QvcmF0aW5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcHBvaW50bWVudCcpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9yYXRpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29yZGVyJykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL29yZGVycy9yYXRpbmcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KHBhdGgsIGRhdGEsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBwb3N0Q29uc3VtZXJSYXRlU2VydmljZShwYXJhbXMsIGRhdGEsIHR5cGUpIHtcclxuICAgICAgICBsZXQgcGF0aDtcclxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NoZWNraW4nKSB7XHJcbiAgICAgICAgICAgIHBhdGggPSAnY29uc3VtZXIvd2FpdGxpc3QvcmF0aW5nJztcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcHBvaW50bWVudCcpIHtcclxuICAgICAgICAgICAgcGF0aCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9yYXRpbmcnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29yZGVyJykge1xyXG4gICAgICAgICAgICBwYXRoID0gJ2NvbnN1bWVyL29yZGVycy9yYXRpbmcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdChwYXRoLCBkYXRhLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgLy9XYWl0bGlzdCBVcmxzXHJcbiAgICBnZXRXYWl0bGlzdChwYXJhbXMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci93YWl0bGlzdCcsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0bGlzdFRvZGF5KGZpbHRlciA9IHt9KSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci93YWl0bGlzdC90b2RheSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgZ2V0V2FpdGxpc3RGdXR1cmUoZmlsdGVyID0ge30pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci93YWl0bGlzdC9mdXR1cmUnLCBudWxsLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJXYWl0bGlzdEF0dGFjaG1lbnQoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0LycgKyB1dWlkICsgJy9hdHRhY2htZW50JyArICc/YWNjb3VudD0nICsgYWNjb3VudGlkOztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgYWRkV2FpdGxpc3RBdHRhY2htZW50KGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9zaGFyZS9hdHRhY2htZW50cy8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkOztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29uc3VtZXJXYWl0bGlzdEF0dGFjaG1lbnRzQnlVdWlkKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9hdHRhY2htZW50LycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgLy9BcHBvaW50bWVudCBVcmxzXHJcbiAgICBnZXRBcHBvaW50bWVudEZ1dHVyZShwYXJhbXM/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvYXBwb2ludG1lbnQvZnV0dXJlJywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcHRsaXN0KHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50JywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50VG9kYXkocGFyYW1zPykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3RvZGF5JywgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGFkZENvbnN1bWVyQXBwb2ludG1lbnRBdHRhY2htZW50KGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC8nICsgdXVpZCArICcvYXR0YWNobWVudCcgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDs7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGFkZEFwcG9pbnRtZW50QXR0YWNobWVudChhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2hhcmUvYXR0YWNobWVudHMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDs7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyQXBwb2ludG1lbnRBdHRhY2htZW50c0J5VXVpZCh1dWlkLCBhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvYXR0YWNobWVudC8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIC8vT3JkZXIgVXJsc1xyXG4gICAgZ2V0Q29uc3VtZXJGdXRPcmRlcnMoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9mdXR1cmUnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyT3JkZXJzKHBhcmFtcykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL29yZGVycycsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICAvL0RvbmF0aW9uIFVybHNcclxuICAgIGdldENvbnN1bWVyRG9uYXRpb25zKHBhcmFtcyA9IG51bGwpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q29uc3VtZXJXYWl0bGlzdE1lZXRpbmdEZXRhaWxzKHV1aWQsIG1vZGUsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC8nICsgdXVpZCArICcvbWVldGluZ0RldGFpbHMvJyArIG1vZGUgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckFwcHRNZWV0aW5nRGV0YWlscyh1dWlkLCBtb2RlLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvJyArIHV1aWQgKyAnL21lZXRpbmdEZXRhaWxzLycgKyBtb2RlICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvZmlsZShjb25zdW1lcklkKSB7XHJcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5nZXRNeVByb2ZpbGUoY29uc3VtZXJJZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBwcm9taXNlO1xyXG4gICAgfVxyXG4gICAgZ2V0VGVsZWdyYW1zdGF0KCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci90ZWxlZ3JhbS9zZXR0aW5ncyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZW5hYmxlVGVsZWdyYW1Ob3RpKHN0YXR1cykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci90ZWxlZ3JhbS9zZXR0aW5ncy8nICsgc3RhdHVzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE15UHJvZmlsZShpZCkge1xyXG4gICAgICAgIGxldCBwYXRoID0gJ2NvbnN1bWVyLycgKyBpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlUHJvZmlsZShkYXRhLCBvcmlnaW4pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUGF0Y2gob3JpZ2luLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHVwZGF0ZVNQQ29uc3VtZXJQcm9maWxlKGRhdGEsIG9yaWdpbikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQob3JpZ2luLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZE1lbWJlcnMoZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9mYW1pbHkvbWVtYmVyJywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBlZGl0TWVtYmVyKGRhdGEpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KCdjb25zdW1lci9mYW1pbHkvbWVtYmVyJywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lclBheW1lbnRzKGZpbHRlcj8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwsIGZpbHRlcik7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckJ5Q29uc3VtZXJVVUlEKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDaGVja2luQnlDb25zdW1lclVVSUQodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJVVUlEOlwiLCB1dWlkKTtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHBvaW50bWVudEJ5Q29uc3VtZXJVVUlEKHV1aWQsIGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyRG9uYXRpb25CeVVpZCh1aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24vJyArIHVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lclBheW1lbnRCeUlkKGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvJyArIGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE1lbWJlcnMocHJvdmlkZXJDdXN0b21lcklEKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2ZhbWlseS9tZW1iZXIvJyArIHByb3ZpZGVyQ3VzdG9tZXJJRDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBkZWxldGVNZW1iZXIobWVtYmVySWQsIHBhcmVudElEKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9mYW1pbHkvbWVtYmVyLycgKyBtZW1iZXJJZCArICcvJyArIHBhcmVudElEO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBEZWxldGUocGF0aCk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0bGlzdEhpc3RvcnkocGFyYW1zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci93YWl0bGlzdC9oaXN0b3J5JywgbnVsbCwgcGFyYW1zKTtcclxuICAgICAgICAvLyBzZXQgbm9fcmVkaXJlY3RfcGF0aCBpbiBpbnRlcmNlcHRvciB0byBhdm9pZCByZWRpcmVjdCBvbiA0MDFcclxuICAgIH1cclxuICAgIGdldEhpc3RvcnlXYWl0bGlzdENvdW50KHBhcmFtcyA9IHt9KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvd2FpdGxpc3QvaGlzdG9yeS9jb3VudCcsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0bGlzdEJpbGwocGFyYW1zLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9iaWxsLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQocGF0aCwgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldFBheW1lbnREZXRhaWwocGFyYW1zLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvZGV0YWlscy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCwgbnVsbCwgcGFyYW1zKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50SGlzdG9yeShwYXJhbXM/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvYXBwb2ludG1lbnQvaGlzdG9yeScsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHBvaW50bWVudEhpc3RvcnlDb3VudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9hcHBvaW50bWVudC9oaXN0b3J5L2NvdW50Jyk7XHJcbiAgICB9XHJcbiAgICBnZXRPcmRlckhpc3RvcnkocGFyYW1zPykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvaGlzdG9yeSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwsIHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgICBnZXRQYXltZW50TW9kZXNvZlByb3ZpZGVyKHByb3ZpZCwgc2VydmljZUlkLCBwdXJwb3NlPykge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9wYXltZW50L21vZGVzL3NlcnZpY2UvJyArIHByb3ZpZCArICcvJyArIHNlcnZpY2VJZCArICcvJyArIHB1cnBvc2U7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgY29uc3VtZXJQYXltZW50KGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN1bWVyUGF5bWVudF9pbnZvY2llKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvanAvZmluYW5jZS9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwbHlDb3Vwb24oakNvdXBvbkNvZGUsIGNoZWNraW5JZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2phbGRlZS9jb3Vwb25zLycgKyBqQ291cG9uQ29kZSArICcvJyArIGNoZWNraW5JZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckNvbW11bmljYXRpb25zKHByb3ZpZGVyX2lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbW11bmljYXRpb25zP2FjY291bnQ9JyArIHByb3ZpZGVyX2lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldFd0bGlzdEhpc3RvcnkodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci93YWl0bGlzdC9zdGF0ZXMvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgZ2V0V2FpdGxpc3RRdWVzdGlvbm5haXJlQnlVaWQodWlkLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvcXVlc3Rpb25uYWlyZS8nICsgdWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwdEhpc3RvcnkodXVpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9zdGF0ZS8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQocGF0aCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHB0UXVlc3Rpb25uYWlyZUJ5VWlkKHVpZCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3F1ZXN0aW9ubmFpcmUvJyArIHVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudElkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50RGV0YWlsKHV1aWQsIHBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2V0SmFsZGVlQ2FzaGFuZEpjcmVkaXQoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhbGxldC9yZWRlZW0vZWxpZ2libGUvYW10JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRSZW1haW5pbmdQcmVwYXltZW50QW1vdW50KGpjYXNoPywgamNyZWRpdD8sIGFkdmFuY2VhbW91bnQ/KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhbGxldC9yZWRlZW0vcmVtYWluaW5nL2FtdCcgKyAnP3VzZUpjYXNoPScgKyBqY2FzaCArICcmdXNlSmNyZWRpdD0nICsgamNyZWRpdCArICcmYWR2YW5jZVBheUFtb3VudD0nICsgYWR2YW5jZWFtb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBQYXlCeUphbGRlZXdhbGxldChwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9wYXltZW50L3dhbGxldCcsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldFdhaXRsaXN0RGV0YWlsKHV1aWQsIHBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvd2FpdGxpc3QvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoLCBudWxsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG4gICAgZ2VuZXJhdGVEb25hdGlvbkxpbmsoYWNjb3VudGlkLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3BheW1lbnQvZ2VuZXJhdGUvcGF5bGluaz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZEN1c3RvbWVyRG9uYXRpb24ocG9zdERhdGEsIGFjY291bnRpZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9kb25hdGlvbj9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldERvbmF0aW9uTGlua1V1aWQodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9wYXltZW50L3BheWxpbmsvZG9uYXRpb24vJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJXYWl0bGlzdE5vdGUoYWNjb3VudGlkLCB1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0L2NvbW11bmljYXRpb24vJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0RG9uYXRpb25RdWVzdGlvbm5haXJlKHNlcnZpY2VJZCwgYWNjb3VudF9pZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL2RvbmF0aW9uLycgKyBzZXJ2aWNlSWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRfaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0RG9uYXRpb25RdWVzdGlvbm5haXJlKHV1aWQsIGJvZHksIGFjY291bnRfaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24vcXVlc3Rpb25uYWlyZS9zdWJtaXQvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRfaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGNvbnN1bWVyRG9uYXRpb25RbnJVcGxvYWRTdGF0dXNVcGRhdGUodWlkLCBhY2NvdW50LCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2RvbmF0aW9uL3F1ZXN0aW9ubmFpcmUvdXBsb2FkL3N0YXR1cy8nICsgdWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHZhbGlkYXRlQ29uc3VtZXJRdWVzdGlvbm5haXJlKGJvZHksIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3ZhbGlkYXRlJyArICc/YWNjb3VudD0nICsgYWNjb3VudElkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIHZhbGlkYXRlQ29uc3VtZXJPbmVUaW1lUXVlc3Rpb25uYWlyZShib2R5LCBhY2NvdW50SWQsIHByb3ZpZGVyQ29uc3VtZXJJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3ZhbGlkYXRlL29uZXRpbWVxdWVzdGlvbm5haXJlLycgKyBwcm92aWRlckNvbnN1bWVySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0UHJvdmlkZXJDdXN0b21lck9uZXRpbWVJbmZvKHByb3ZpZGVyQ29uc3VtZXJJRCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3Byb3ZpZGVyQ3VzdG9tZXIvJyArIHByb3ZpZGVyQ29uc3VtZXJJRCArIFwiP2FjY291bnQ9XCIgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0Q3VzdG9tZXJPbmV0aW1lSW5mbyhib2R5LCB1c2VySWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlLycgKyB1c2VySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgc3VibWl0Q29uc3VtZXJBcHB0U2VydmljZU9wdGlvbihib2R5LCB1dWlkLCBhY2NvdW50KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2VvcHRpb24vJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIHJlc2NoZWR1bGVDb25zdW1lckFwcHRtbnQoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3Jlc2NoZWR1bGU/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ3VzdG9tZXJBcHBvaW50bWVudChhY2NvdW50aWQsIHBvc3REYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L2FkZD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldENvbnZlbmllbnRGZWVPZlByb3ZpZGVyKHByb3ZpZCwgZGF0YT8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvcGF5bWVudC9tb2Rlcy9jb252ZW5pZW5jZUZlZS8nICsgcHJvdmlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGFkZEFwcHRBZHZhbmNlUGF5bWVudChwYXJhbSwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9hZHZhbmNlUGF5bWVudCc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCh1cmwsIGJvZHksIG51bGwsIHBhcmFtKTtcclxuICAgIH1cclxuICAgIGdldENvbnN1bWVyUXVlc3Rpb25uYWlyZShzZXJ2aWNlSWQsIGNvbnN1bWVySWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2UvJyArIHNlcnZpY2VJZCArICcvY29uc3VtZXIvJyArIGNvbnN1bWVySWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2aWNlb3B0aW9uc0FwcHQoc2VydmlkLCBhY2NvdW50KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3F1ZXN0aW9ubmFpcmUvc2VydmljZW9wdGlvbnMvJyArIHNlcnZpZCArICcvMD9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEFwcG9pbnRtZW50UmVzY2hlZHVsZVByaWNlbGlzdChzZXJ2aWNlaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2NoZWR1bGUvJyArIHNlcnZpY2VpZCArICcvcHJpY2VsaXN0JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTbG90c0J5TG9jYXRpb25TZXJ2aWNlYW5kRGF0ZShsb2NpZCwgc2VydmlkLCBwZGF0ZSwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NjaGVkdWxlL2RhdGUvJyArIHBkYXRlICsgJy9sb2NhdGlvbi8nICsgbG9jaWQgKyAnL3NlcnZpY2UvJyArIHNlcnZpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldEF2YWlsYWJsZURhdGVzc0J5TG9jYXRpb25TZXJ2aWNlKGxvY2lkLCBzZXJ2aWQsIGFjY291bnRpZD8pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvYXZhaWxhYmlsaXR5L2xvY2F0aW9uLycgKyBsb2NpZCArICcvc2VydmljZS8nICsgc2VydmlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0U2VydmljZXNmb3JBcHBvbnRtbnRCeUxvY2F0aW9uSWQobG9jaWQpIHtcclxuICAgICAgICBpZiAobG9jaWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2UvJyArIGxvY2lkO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmVzY2hlZHVsZUNvbnN1bWVyV2FpdGxpc3QoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL3dhaXRsaXN0L3Jlc2NoZWR1bGU/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRRdWV1ZXNieUxvY2F0aW9uYW5kU2VydmljZUlkQXZhaWxhYmxlRGF0ZXMobG9jaWQsIHNlcnZpZCwgYWNjb3VudGlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0L3F1ZXVlcy9hdmFpbGFibGUvJyArIGxvY2lkICsgJy8nICsgc2VydmlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgYWRkQ2hlY2tpbihhY2NvdW50aWQsIHBvc3REYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL3dhaXRsaXN0L2FkZD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIHN1Ym1pdENvbnN1bWVyV2FpdGxpc3RTZXJ2aWNlT3B0aW9uKGJvZHksIHV1aWQsIGFjY291bnQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3Qvc2VydmljZW9wdGlvbi8nICsgdXVpZCArICcvP2FjY291bnQ9JyArIGFjY291bnQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuICAgIGdldFBhcnR5c2l6ZURldGFpbHMoZG9tYWluLCBzdWJkb21haW4pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAneW53Q29uZi9zZXR0aW5ncy8nICsgZG9tYWluICsgJy8nICsgc3ViZG9tYWluO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGFkZFdhaXRsaXN0QWR2YW5jZVBheW1lbnQocGFyYW0sIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvYWR2YW5jZVBheW1lbnQnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBib2R5LCBudWxsLCBwYXJhbSk7XHJcbiAgICB9XHJcbiAgICBnZXRTZXJ2aWNlb3B0aW9uc1dhaXRsaXN0KHNlcnZpZCwgYWNjb3VudCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2VvcHRpb25zLycgKyBzZXJ2aWQgKyAnLzA/YWNjb3VudD0nICsgYWNjb3VudDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRRdWV1ZXNieUxvY2F0aW9uYW5kU2VydmljZUlkKGxvY2lkLCBzZXJ2aWQsIHBkYXRlPywgYWNjb3VudGlkPykge1xyXG4gICAgICAgIGNvbnN0IGRkID0gKHBkYXRlICE9PSB1bmRlZmluZWQpID8gJy8nICsgcGRhdGUgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9xdWV1ZXMvJyArIGxvY2lkICsgJy8nICsgc2VydmlkICsgZGQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0U2VydmljZXNCeUxvY2F0aW9uSWQobG9jaWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3Qvc2VydmljZXMvJyArIGxvY2lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE9yZGVyUXVlc3Rpb25uYWlyZUJ5VWlkKHVpZCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9xdWVzdGlvbm5haXJlLycgKyB1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTdG9yZUNvbnRhY3QoYWNjb3VudGlkPykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL29yZGVycy9zZXR0aW5ncy9zdG9yZS9jb250YWN0L2luZm8vJyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lckNhdGFsb2dzKGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvY2F0YWxvZ3MvJyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRBdmFpbGFibGVEYXRlc0ZvckhvbWUoY2F0YWxvZ2lkLCBhY2NvdW50aWQ/KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCgnY29uc3VtZXIvb3JkZXJzL2NhdGFsb2dzL2RlbGl2ZXJ5L2RhdGVzLycgKyBjYXRhbG9naWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICBnZXRBdmFpbGFibGVEYXRlc0ZvclBpY2t1cChjYXRhbG9naWQsIGFjY291bnRpZD8pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KCdjb25zdW1lci9vcmRlcnMvY2F0YWxvZ3MvcGlja1VwL2RhdGVzLycgKyBjYXRhbG9naWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZCk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVDb25zdW1lcmFkZHJlc3MoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9kZWxpdmVyeUFkZHJlc3MnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIENyZWF0ZUNvbnN1bWVyT3JkZXIoYWNjb3VudGlkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9vcmRlcnM/YWNjb3VudD0nICsgYWNjb3VudGlkLCBwb3N0RGF0YSk7XHJcbiAgICB9XHJcbiAgICBDcmVhdGVDb25zdW1lckVtYWlsKHV1aWQsIGFjY291bnRpZCwgcG9zdF9EYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCgnY29uc3VtZXIvb3JkZXJzLycgKyB1dWlkICsgJy9lbWFpbD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3RfRGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lck9yZGVyUXVlc3Rpb25uYWlyZShjYXRlbG9nSWQsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL29yZGVyLycgKyBjYXRlbG9nSWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zdW1lcmFkZHJlc3MoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2RlbGl2ZXJ5QWRkcmVzcyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q2FydGRldGFpbHMoYWNjb3VudGlkLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL29yZGVycy9hbW91bnQ/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIGdldFVzZXJBcHB0VGltZShwcm92X2Fycikge1xyXG4gICAgICAgIGlmIChwcm92X2Fyci5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSAnY29uc3VtZXIvYXBwb2ludG1lbnQvc2NoZWR1bGUvbmV4dEF2YWlsYWJsZVNjaGVkdWxlLycgKyBwcm92X2Fyci5qb2luKCcsJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGVuY29kZWRQYXRoID0gZW5jb2RlVVJJKHBhdGgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KGVuY29kZWRQYXRoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBnZXRVc2VyRXN0aW1hdGVkV2FpdGluZ1RpbWUocHJvdl9hcnIpIHtcclxuICAgICAgICBsZXQgc3RyID0gJyc7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm92X2Fyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoc3RyICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgc3RyICs9ICclMkMnOyAvLyBjb21tYVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN0ciArPSBwcm92X2FycltpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHN0ciA9PT0gJycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHBhdGggPSAncHJvdmlkZXIvd2FpdGxpc3QvcXVldWVzL3Byb3ZpZGVyV2FpdGluZ1RpbWUvJyArIHN0cjtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlQW5hbHl0aWNzKGJvZHkpIHtcclxuICAgIC8vICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvYW5hbHl0aWNzL3VwZGF0ZSc7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGdldFNlYXJjaENhdGFsb2dJdGVtKGFjY291bnQ6IGFueSwgdGVtcE5hbWU6IGFueSwgbmFtZTogYW55KSB7XHJcbiAgICAvLyAgICAgY29uc3QgdXJsID0gcHJvamVjdENvbnN0YW50cy5TQVBBVEggKyAnc2VhcmNoZGV0YWlscy8nICsgYWNjb3VudCArICcvSXRlbS9zZWFyY2g/JyArIHRlbXBOYW1lICsgJz0nICsgbmFtZSArICcqJztcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICAvLyB9XHJcbiAgICBnZXRPcmRlclNldHRpbmdzKGFjY291bnRpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvc2V0dGluZ3MnICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJ0b1Byb3ZpZGVyTm90ZShtZXNzYWdlLCBmaWx0ZXIpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvbWVzc2FnZS9jb21tdW5pY2F0aW9ucyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBtZXNzYWdlLCBudWxsLCBmaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgdGVsZWdyYW1DaGF0KGNvdW50cnlDb2RlLCBwaE51bWJlcikge1xyXG4gICAgICAgIGlmIChjb3VudHJ5Q29kZSA9PT0gJycpIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gJ2NoYXRib3QvdGVsZWdyYW0vcHJvdmlkZXIvY2hhdElkLzkxLycgKyBwaE51bWJlcjtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdXJsID0gJ2NoYXRib3QvdGVsZWdyYW0vcHJvdmlkZXIvY2hhdElkLycgKyBjb3VudHJ5Q29kZSArICcvJyArIHBoTnVtYmVyO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gYWRkUHJvdmlkZXJBcHBvaW50bWVudE5vdGUodXVpZCwgYm9keSkge1xyXG4gICAgLy8gICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci9hcHBvaW50bWVudC9jb21tdW5pY2F0ZS8nICsgdXVpZDtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gYWRkUHJvdmlkZXJPcmRlck5vdGUodXVpZCwgYm9keSkge1xyXG4gICAgLy8gICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci9vcmRlcnMvY29tbXVuaWNhdGUvJyArIHV1aWQ7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGFkZFByb3ZpZGVyRG9uYXRpb25Ob3RlKHV1aWQsIGJvZHkpIHtcclxuICAgIC8vICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvZG9uYXRpb24vY29tbXVuaWNhdGUvJyArIHV1aWQ7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGFkZFByb3ZpZGVyV2FpdGxpc3ROb3RlKHV1aWQsIGJvZHkpIHtcclxuICAgIC8vICAgICBjb25zdCB1cmwgPSAncHJvdmlkZXIvd2FpdGxpc3QvY29tbXVuaWNhdGUvJyArIHV1aWQ7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIC8vIH1cclxuICAgIGdldE1lbWJlcnNoaXAoYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL21lbWJlcnNoaXAvc2VydmljZXM/YWNjb3VudD0nICsgYWNjb3VudElkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGFkZENvbnN1bWVyQXBwb2ludG1lbnROb3RlKGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9jb21tdW5pY2F0ZS9tZXNzYWdlLycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBib2R5KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDb25zdW1lck9yZGVyTm90ZShhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvb3JkZXIvY29tbXVuaWNhdGUvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgYWRkQ29uc3VtZXJPcmRlck5vdGVjb21tKGFjY291bnRpZCwgdXVpZCwgYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvY29tbXVuaWNhdGUvbWVzc2FnZS8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjb3VudGlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgYm9keSk7XHJcbiAgICB9XHJcbiAgICBhZGRDb25zdW1lckRvbmF0aW9uTm90ZShhY2NvdW50aWQsIHV1aWQsIGJvZHkpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZG9uYXRpb24vY29tbXVuaWNhdGUvJyArIHV1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZGVhY3RpdmVBY2NvdW50KHVzZXI6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHVzZXIgKyAnL2xvZ2luL2RlQWN0aXZhdGUnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBEZWxldGUodXJsKTtcclxuICAgIH1cclxuICAgIGdldENhdGFsb2dCeUlkKGNhdGFsb2dzLCBjYXRhbG9nSWQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkNBdGFsb2dzOlwiLCBjYXRhbG9ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJJRDpcIiwgY2F0YWxvZ0lkKTtcclxuICAgICAgICBsZXQgY2F0YWxvZ0FycmF5ID0gY2F0YWxvZ3MuZmlsdGVyKGNhdGFsb2cgPT4gY2F0YWxvZy5pZCA9PSBjYXRhbG9nSWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQ2F0YWxvZ0FycmF5XCIsIGNhdGFsb2dBcnJheSk7XHJcbiAgICAgICAgaWYgKGNhdGFsb2dBcnJheS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRhbG9nQXJyYXlbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgZ2V0Q2F0YWxvZ0l0ZW1CeUlkKGNhdGFsb2csIGNhdGFsb2dJdGVtSWQpIHtcclxuICAgICAgICBsZXQgY2F0YWxvZ0l0ZW1BcnJheSA9IGNhdGFsb2cuY2F0YWxvZ0l0ZW0uZmlsdGVyKGNhdGFsb2dJdGVtID0+IGNhdGFsb2dJdGVtLmlkID09IGNhdGFsb2dJdGVtSWQpO1xyXG4gICAgICAgIGlmIChjYXRhbG9nSXRlbUFycmF5Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNhdGFsb2dJdGVtQXJyYXlbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gb3JkZXJzIFxyXG4gICAgICogQHBhcmFtIGl0ZW0gXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZ2V0SXRlbVF0eShvcmRlcnMsIGl0ZW1JZCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyTGlzdCA9IG9yZGVycztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkNhcnQgSXRlbXM6XCIsIG9yZGVyTGlzdCk7XHJcbiAgICAgICAgbGV0IHF0eSA9IDA7XHJcbiAgICAgICAgaWYgKG9yZGVyTGlzdCAhPT0gbnVsbCAmJiBvcmRlckxpc3QuZmlsdGVyKGkgPT4gaS5pZCA9PSBpdGVtSWQpKSB7XHJcbiAgICAgICAgICAgIHF0eSA9IG9yZGVyTGlzdC5maWx0ZXIoaSA9PiBpLmlkID09IGl0ZW1JZCkubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcXR5O1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwdFJlcXVlc3RMaXN0KGFjY291bnRJZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2UvcmVxdWVzdD9hY2NvdW50LWVxPScgKyBhY2NvdW50SWQpO1xyXG4gICAgfVxyXG4gICAgcG9zdEFwcG9pbnRtZW50UmVxdWVzdChhY2NvdW50aWQsIHBvc3REYXRhKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3NlcnZpY2UvcmVxdWVzdD9hY2NvdW50PScgKyBhY2NvdW50aWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldFByZXNjcmlwdGlvbnMoKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3NwY29uc3VtZXIvbWVkaWNhbHJlY29yZC9wcmVzY3JpcHRpb24nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIHN1Ym1pdEl0ZW1PcHRpb25zKGl0ZW1JZCwgb3JkZXJJZCwgYWNjb3VudElkLCBwb3N0RGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KCdjb25zdW1lci9vcmRlcnMvaXRlbS9zZXJ2aWNlb3B0aW9uLycgKyBpdGVtSWQgKyAnLycgKyBvcmRlcklkICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQsIHBvc3REYXRhKTtcclxuICAgIH1cclxuICAgIGdldFNlcnZpY2VvcHRpb25zT3JkZXIoaXRlbUlkLCBhY2NvdW50KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3F1ZXN0aW9ubmFpcmUvc2VydmljZW9wdGlvbnMvb3JkZXIvaXRlbS8nICsgaXRlbUlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIHJlbW92ZVByb2ZpbGVQaG90byhjb25zdW1lcklkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9ICdzcGNvbnN1bWVyL3JlbW92ZS9wcm9maWxlUGhvdG8vJyArIGNvbnN1bWVySWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cERlbGV0ZShwYXRoLCBib2R5KTtcclxuICAgIH1cclxuICAgIGFkZFByb2ZpbGVQaG90byhjdXN0b21lcklkOiBudW1iZXIsIHBvc3RfZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3NwY29uc3VtZXIvdXBsb2FkL3Byb2ZpbGVQaG90by8nICsgY3VzdG9tZXJJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIHBvc3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXREb2N1bWVudCgpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnc3Bjb25zdW1lci9tZWRpY2FscmVjb3JkL3ByZXNjcmlwdGlvbic7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0SXRlbXNMaXN0V2l0aEl0ZW1PcHRpb25zKGNhdGFsb2dJZCwgYWNjb3VudCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9xdWVzdGlvbm5haXJlL3NlcnZpY2VvcHRpb24vb3JkZXIvY2F0YWxvZy9pdGVtLycgKyBjYXRhbG9nSWQgKyAnL09OTElORT9hY2NvdW50PScgKyBhY2NvdW50O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIHZpZGVvYXVkaW9TM1VwbG9hZCh1cmwsIGZpbGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlZpZGVvQXVkaW8gVXBsb2FkXCIsIHVybCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCh1cmwsIGZpbGUpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwdENvdXBvbnMoc2VydklkLCBsb2NJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9zZXJ2aWNlLycgKyBzZXJ2SWQgKyAnL2xvY2F0aW9uLycgKyBsb2NJZCArICcvY291cG9ucyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q2hlY2tpbkNvdXBvbnMoc2VydklkLCBsb2NJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci93YWl0bGlzdC9zZXJ2aWNlLycgKyBzZXJ2SWQgKyAnL2xvY2F0aW9uLycgKyBsb2NJZCArICcvY291cG9ucyc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Q2hlY2tpbmJ5RW5jSWQoZW5jSWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvd2FpdGxpc3QvZW5jLycgKyBlbmNJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHB0YnlFbmNJZChlbmNJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hcHBvaW50bWVudC9lbmMvJyArIGVuY0lkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldE9yZGVyYnlFbmNJZChlbmNJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9vcmRlcnMvZW5jLycgKyBlbmNJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRTb3JkZXJieUVuY0lkKGVuY0lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3NvcmRlci9lbmNJZC8nICsgZW5jSWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0SXZyUXVlc3Rpb25uYWlyZUJ5VWlkKHVpZCwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2l2ci9xdWVzdGlvbm5haXJlLycgKyB1aWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRpdnJCeUNvbnN1bWVyVVVJRCh1dWlkLCBhY2NvdW50aWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvaXZyLycgKyB1dWlkICsgJz9hY2NvdW50PScgKyBhY2NvdW50aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgZ2V0QXBwb2ludG1lbnRCeUlkKGFwcG1udElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL2FwcG9pbnRtZW50LycgKyBhcHBtbnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRQcm92aWRlck9yZGVyRGV0YWlsQnlJZCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL29yZGVycy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRQcm92aWRlcldhaXRsaXN0RGV0YWlsQnlJZCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ3Byb3ZpZGVyL3dhaXRsaXN0LycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIFBheW1lbnRsaW5rY2hlY2sodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9wYXltZW50L3BheS8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRJZFRlcm1pbm9sb2dpZXMoZG9tYWluLCBzdWJEb21haW4pIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAneW53Q29uZi90ZXJtaW5vbG9naWVzLycgKyBkb21haW4gKyAnLycgKyBzdWJEb21haW47XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgbGlua1BheW1lbnQoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdwcm92aWRlci9wYXltZW50L3BheWxpbmsvb3JkZXIvY3JlYXRlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgbGlua1BheW1lbnRfaW52b2ljKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvanAvZmluYW5jZS9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBsaW5rTWVtYmVyc2hpcFBheW1lbnRfaW52b2ljKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvbWVtYmVyc2hpcC9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRtZW1iZXJzaGlwSW52b2NpZURldGFpbHNCeUlkKHV1aWQsIGFjY0lkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL21lbWJlcnNoaXAvbWVtYmVyL3N1YnNjcmlwdGlvbi8nICsgdXVpZCArICc/YWNjb3VudD0nICsgYWNjSWQ7O1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGxpbmtTb1BheW1lbnRfaW52b2ljKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvc28vcGF5JztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGRhdGEpO1xyXG4gICAgfVxyXG4gICAgZ2V0SW52b2ljZURldGFpbHNCeUlkKGFjY0lkLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2pwL2ZpbmFuY2UvaW52b2ljZS8nICsgYWNjSWQgKyAnLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIGdldFNvSW52b2ljZURldGFpbHNCeUlkKGFjY0lkLCB1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3NvL2ludm9pY2UvJyArIGFjY0lkICsgJy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICB1cGxvYWRGaWxlc1RvUzMoZGF0YSwgYWNjb3VudElkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2ZpbGVTaGFyZS91cGxvYWQnICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBvc3QodXJsLCBkYXRhKTtcclxuICAgIH1cclxuICAgIHZpZGVvYXVkaW9TM1VwbG9hZFN0YXR1c1VwZGF0ZShzdGF0dXMsIGlkLCBhY2NvdW50SWQpIHtcclxuICAgICAgICBjb25zdCB1cmwgPSAnY29uc3VtZXIvZmlsZVNoYXJlL3VwbG9hZC8nICsgc3RhdHVzICsgJy8nICsgaWQgKyAnP2FjY291bnQ9JyArIGFjY291bnRJZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUHV0KHVybCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICBnZXRBcHB0QmlsbCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2FwcG9pbnRtZW50LycgKyB1dWlkICsgJy8nICsgJ2JpbGxkZXRhaWxzJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRXYWl0QmlsbCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL3dhaXRsaXN0LycgKyB1dWlkICsgJy8nICsgJ2JpbGxkZXRhaWxzJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRJbnZvaWNlRGV0YWlsc0J5dXVpZCh1dWlkKSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2pwL2ZpbmFuY2UvaW52b2ljZS95bnd1aWQnICsgJy8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRJbnZvaWNlKGFjY291bnRJZCwgaW52b2ljZVVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9qcC9maW5hbmNlL2ludm9pY2UnICsgJy8nICsgYWNjb3VudElkICsgJy8nICsgaW52b2ljZVVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHVybCk7XHJcbiAgICB9XHJcbiAgICBnZXRDb25zZW50Rm9ybShpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS8nICsgaWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwsIG51bGwpO1xyXG4gICAgfVxyXG4gICAgZ2V0Y29uc2VudEZvcm1RdWVzdGlvbmFpcmUodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS9xdWVzdGlvbm5haXJlLycgKyB1dWlkO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBHZXQodXJsKTtcclxuICAgIH1cclxuICAgIHN1Ym1pdFF1ZXN0aW9ubmFpcmUoYm9keSwgdXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS9xdWVzdGlvbm5haXJlL3N1Ym1pdC8nICsgdXVpZDtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgdmVyaWZ5U2lnbih1dWlkLCBib2R5KSB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gJ2NvbnN1bWVyL2NvbnNlbnRmb3JtL3ZlcmlmeXNpZ24vJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFBhdGNoKHVybCwgYm9keSk7XHJcbiAgICB9XHJcbiAgICB2ZXJpZnlRbnIodXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb25zZW50Zm9ybS92ZXJpZnlTdGF0dXMvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG4gICAgaXNQcm92aWRlclJlYWR5KHBvc3RfZGF0YSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQdXQoJ2NvbnN1bWVyL2FwcG9pbnRtZW50L3ZpZGVvY2FsbC9yZWFkeScsIHBvc3RfZGF0YSk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVBbmFseXRpY3MoYm9keSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9hbmFseXRpY3MvdXBkYXRlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwUG9zdCh1cmwsIGJvZHkpO1xyXG4gICAgfVxyXG4gICAgZ2V0VXNlcnNCeUxvY2F0aW9uKGxvY2F0aW9uSWQsIHVuaXF1ZUlkLCBsaXN0T2ZVcmxzKSB7XHJcbiAgICAgICAgbGV0IHBhdGggPSAncHJvdmlkZXIvYWNjb3VudC9zZXR0aW5ncy9sb2NhdGlvbi8nICsgbG9jYXRpb25JZCArICcvJyArIHVuaXF1ZUlkICsgJy8nICsgbGlzdE9mVXJscztcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlbWV0YS5odHRwR2V0KHBhdGgpO1xyXG4gICAgfVxyXG4gICAgZ2V0TG9jYXRpb25zQnlVc2VySUQodXNlcklEKSB7XHJcbiAgICAgICAgbGV0IHBhdGggPSAnY29uc3VtZXIvdXNlci8nICsgdXNlcklEICsgJy9sb2NhdGlvbic7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldChwYXRoKTtcclxuICAgIH1cclxuICAgIGdldEluYm94KHVzZXJ0eXBlKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1c2VydHlwZSArICcvY29tbXVuaWNhdGlvbnMnKTtcclxuICAgIH1cclxuICAgIHJlYWRQcm92aWRlck1lc3NhZ2VzKHByb3ZpZGVySWQsIG1lc3NhZ2VJZHMsIGFjY291bnRJZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9jb21tdW5pY2F0aW9ucy9yZWFkTWVzc2FnZXMvJyArIHByb3ZpZGVySWQgKyAnLycgKyBtZXNzYWdlSWRzICsgJz9hY2NvdW50PScgKyBhY2NvdW50SWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cFB1dCh1cmwpO1xyXG4gICAgfVxyXG4gICAgbGlua0lwUGF5bWVudF9pbnZvaWMoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9pcC9wYXknO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2VtZXRhLmh0dHBQb3N0KHVybCwgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBnZXRJcEludm9pY2VEZXRhaWxzQnlJZChhY2NJZCwgdXVpZCkge1xyXG4gICAgICAgIGNvbnN0IHVybCA9ICdjb25zdW1lci9pcC9pbnZvaWNlLycgKyBhY2NJZCArICcvJyArIHV1aWQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZW1ldGEuaHR0cEdldCh1cmwpO1xyXG4gICAgfVxyXG59Il19
|