commons-assessment 12.0.39-dev.3 → 12.0.39-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,7 @@
1
1
  import { HttpHeaders, HttpParams } from '@angular/common/http';
2
2
  import { Injectable } from '@angular/core';
3
+ import { throwError } from 'rxjs';
4
+ import { catchError, shareReplay } from 'rxjs/operators';
3
5
  import * as controllers from '../../../shared/controllers';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "@angular/common/http";
@@ -8,6 +10,8 @@ export class AssessmentMakerService {
8
10
  var _a;
9
11
  this.http = http;
10
12
  this.assetsBaseUrl = (_a = document === null || document === void 0 ? void 0 : document.baseURI) === null || _a === void 0 ? void 0 : _a.replace(/\/$/, '');
13
+ // cache the static config JSON so multiple maker instances on one page fetch it only once
14
+ this.configCache = {};
11
15
  }
12
16
  getHeaders() {
13
17
  return new HttpHeaders().set('X-Library-Source', 'commons-assessment');
@@ -20,7 +24,16 @@ export class AssessmentMakerService {
20
24
  return param;
21
25
  }
22
26
  getConfigJSON(fileName) {
23
- return this.http.get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`);
27
+ if (!this.configCache[fileName]) {
28
+ this.configCache[fileName] = this.http
29
+ .get(`${this.assetsBaseUrl}/assets/commons-assessment/${fileName}.json`)
30
+ .pipe(
31
+ // drop the cache entry on error so a later render can retry the fetch
32
+ catchError((err) => { delete this.configCache[fileName]; return throwError(err); }),
33
+ // share one request across all subscribers and replay the loaded config to later ones
34
+ shareReplay(1));
35
+ }
36
+ return this.configCache[fileName];
24
37
  }
25
38
  getResponseCount(assessmentInstanceId) {
26
39
  return this.http.get(controllers.assessmentMakerController.getResponseCount + this.createParams({ assessmentInstanceId }), { headers: this.getHeaders() });
@@ -63,4 +76,4 @@ AssessmentMakerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0
63
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AssessmentMakerService, decorators: [{
64
77
  type: Injectable
65
78
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxLQUFLLFdBQVcsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBRzNELE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDVSxJQUFnQjs7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUhULGtCQUFhLEdBQUcsTUFBQSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsT0FBTywwQ0FBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBSW5FLENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElB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QVMsdUJBQVQsU0FBUyxDQUFFLFFBQVEsRUFBRSxDQUFDLDBDQUFFLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsYUFBakIsaUJBQWlCLHVCQUFqQixpQkFBaUIsQ0FBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xPLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFZO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pJLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsTUFBVztRQUN4QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxSixDQUFDOztvSEFqRVUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGNvbnRyb2xsZXJzIGZyb20gJy4uLy4uLy4uL3NoYXJlZC9jb250cm9sbGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBc3Nlc3NtZW50TWFrZXJTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFzc2V0c0Jhc2VVcmwgPSBkb2N1bWVudD8uYmFzZVVSST8ucmVwbGFjZSgvXFwvJC8sICcnKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICBwcml2YXRlIGdldEhlYWRlcnMoKTogSHR0cEhlYWRlcnMge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycygpLnNldCgnWC1MaWJyYXJ5LVNvdXJjZScsICdjb21tb25zLWFzc2Vzc21lbnQnKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgbGV0IHBhcmFtID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcclxuICAgICAgcGFyYW0gPSBwYXJhbS5zZXQoa2V5LCBwYXJhbXNba2V5XSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFyYW07XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWdKU09OKGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXNzZXRzQmFzZVVybH0vYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC8ke2ZpbGVOYW1lfS5qc29uYCk7XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zZUNvdW50KGFzc2Vzc21lbnRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UmVzcG9uc2VDb3VudCArIHRoaXMuY3JlYXRlUGFyYW1zKHsgYXNzZXNzbWVudEluc3RhbmNlSWQgfSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5hc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlciwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuY3JlYXRlUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaFF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLnBhdGNoUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNCeUlkcyhwYXJhbXM6IHsgcXVlc3Rpb25JZHM6IG51bWJlcltdIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UXVlc3Rpb25zQnlJZHMsIHsgcGFyYW1zLCBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFzc2Vzc21lbnRDb250ZXh0KHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldEFzc2Vzc21lbnRDb250ZXh0ICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVNlY3Rpb24ocXVlc3Rpb25QYXBlcklkOiBudW1iZXIsIHNlY3Rpb25JZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZHVwbGljYXRlU2VjdGlvbj8ucmVwbGFjZSgnJEFzc2Vzc21lbnRRdWVzdGlvblBhcGVySWQnLCBxdWVzdGlvblBhcGVySWQ/LnRvU3RyaW5nKCkpPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVRdWVzdGlvbihzZWN0aW9uSWQ6IG51bWJlciwgc2VjdGlvblF1ZXN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVF1ZXN0aW9uPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25RdWVzdGlvbklkJywgc2VjdGlvblF1ZXN0aW9uSWQ/LnRvU3RyaW5nKCkpLCB7fSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZSwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlZkRhdGFCeUNvZGUoY29kZTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMucmVmRGF0YUNvbnRyb2xsZXIuZ2V0UmVmRGF0YUJ5Q29kZS5yZXBsYWNlKCckQ29kZScsIGNvZGUpICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcbn1cclxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1tYWtlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LW1ha2VyL3NlcnZpY2VzL2Fzc2Vzc21lbnQtbWFrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0sNkJBQTZCLENBQUM7OztBQUczRCxNQUFNLE9BQU8sc0JBQXNCO0lBS2pDLFlBQ1UsSUFBZ0I7O1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFMVCxrQkFBYSxHQUFHLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE9BQU8sMENBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSwwRkFBMEY7UUFDbEYsZ0JBQVcsR0FBNEMsRUFBRSxDQUFDO0lBSTlELENBQUM7SUFFRyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDckMsS0FBSyxHQUFHLEtBQUss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V0FBVyxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFKLENBQUM7O29IQTdFVSxzQkFBc0I7d0hBQXRCLHNCQUFzQjs0RkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzaGFyZVJlcGxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0ICogYXMgY29udHJvbGxlcnMgZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2NvbnRyb2xsZXJzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRNYWtlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXNzZXRzQmFzZVVybCA9IGRvY3VtZW50Py5iYXNlVVJJPy5yZXBsYWNlKC9cXC8kLywgJycpO1xyXG4gIC8vIGNhY2hlIHRoZSBzdGF0aWMgY29uZmlnIEpTT04gc28gbXVsdGlwbGUgbWFrZXIgaW5zdGFuY2VzIG9uIG9uZSBwYWdlIGZldGNoIGl0IG9ubHkgb25jZVxyXG4gIHByaXZhdGUgY29uZmlnQ2FjaGU6IHsgW2ZpbGVOYW1lOiBzdHJpbmddOiBPYnNlcnZhYmxlPGFueT4gfSA9IHt9O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudFxyXG4gICkgeyB9XHJcblxyXG4gIHByaXZhdGUgZ2V0SGVhZGVycygpOiBIdHRwSGVhZGVycyB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KCdYLUxpYnJhcnktU291cmNlJywgJ2NvbW1vbnMtYXNzZXNzbWVudCcpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XHJcbiAgICBsZXQgcGFyYW0gPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xyXG4gICAgICBwYXJhbSA9IHBhcmFtLnNldChrZXksIHBhcmFtc1trZXldKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwYXJhbTtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZ0pTT04oZmlsZU5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoIXRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdID0gdGhpcy5odHRwXHJcbiAgICAgICAgLmdldChgJHt0aGlzLmFzc2V0c0Jhc2VVcmx9L2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvJHtmaWxlTmFtZX0uanNvbmApXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAvLyBkcm9wIHRoZSBjYWNoZSBlbnRyeSBvbiBlcnJvciBzbyBhIGxhdGVyIHJlbmRlciBjYW4gcmV0cnkgdGhlIGZldGNoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHsgZGVsZXRlIHRoaXMuY29uZmlnQ2FjaGVbZmlsZU5hbWVdOyByZXR1cm4gdGhyb3dFcnJvcihlcnIpOyB9KSxcclxuICAgICAgICAgIC8vIHNoYXJlIG9uZSByZXF1ZXN0IGFjcm9zcyBhbGwgc3Vic2NyaWJlcnMgYW5kIHJlcGxheSB0aGUgbG9hZGVkIGNvbmZpZyB0byBsYXRlciBvbmVzXHJcbiAgICAgICAgICBzaGFyZVJlcGxheSgxKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWdDYWNoZVtmaWxlTmFtZV07XHJcbiAgfVxyXG5cclxuICBnZXRSZXNwb25zZUNvdW50KGFzc2Vzc21lbnRJbnN0YW5jZUlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UmVzcG9uc2VDb3VudCArIHRoaXMuY3JlYXRlUGFyYW1zKHsgYXNzZXNzbWVudEluc3RhbmNlSWQgfSksIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmFzc2Vzc21lbnRBbmRRdWVzdGlvblBhcGVyLCBwYXlsb2FkLCB7IGhlYWRlcnM6IHRoaXMuZ2V0SGVhZGVycygpIH0pO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hBc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlcihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goY29udHJvbGxlcnMuYXNzZXNzbWVudE1ha2VyQ29udHJvbGxlci5hc3Nlc3NtZW50QW5kUXVlc3Rpb25QYXBlciwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuY3JlYXRlUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaFF1ZXN0aW9uKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLnBhdGNoUXVlc3Rpb24sIHBheWxvYWQsIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNCeUlkcyhwYXJhbXM6IHsgcXVlc3Rpb25JZHM6IG51bWJlcltdIH0pIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZ2V0UXVlc3Rpb25zQnlJZHMsIHsgcGFyYW1zLCBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldEFzc2Vzc21lbnRDb250ZXh0KHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmdldEFzc2Vzc21lbnRDb250ZXh0ICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGR1cGxpY2F0ZVNlY3Rpb24ocXVlc3Rpb25QYXBlcklkOiBudW1iZXIsIHNlY3Rpb25JZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGNvbnRyb2xsZXJzLmFzc2Vzc21lbnRNYWtlckNvbnRyb2xsZXIuZHVwbGljYXRlU2VjdGlvbj8ucmVwbGFjZSgnJEFzc2Vzc21lbnRRdWVzdGlvblBhcGVySWQnLCBxdWVzdGlvblBhcGVySWQ/LnRvU3RyaW5nKCkpPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKSwge30sIHsgaGVhZGVyczogdGhpcy5nZXRIZWFkZXJzKCkgfSk7XHJcbiAgfVxyXG5cclxuICBkdXBsaWNhdGVRdWVzdGlvbihzZWN0aW9uSWQ6IG51bWJlciwgc2VjdGlvblF1ZXN0aW9uSWQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmR1cGxpY2F0ZVF1ZXN0aW9uPy5yZXBsYWNlKCckU2VjdGlvbklkJywgc2VjdGlvbklkPy50b1N0cmluZygpKT8ucmVwbGFjZSgnJFNlY3Rpb25RdWVzdGlvbklkJywgc2VjdGlvblF1ZXN0aW9uSWQ/LnRvU3RyaW5nKCkpLCB7fSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChjb250cm9sbGVycy5hc3Nlc3NtZW50TWFrZXJDb250cm9sbGVyLmNyZWF0ZUFzc2Vzc21lbnRJbnN0YW5jZSwgcGF5bG9hZCwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcblxyXG4gIGdldFJlZkRhdGFCeUNvZGUoY29kZTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoY29udHJvbGxlcnMucmVmRGF0YUNvbnRyb2xsZXIuZ2V0UmVmRGF0YUJ5Q29kZS5yZXBsYWNlKCckQ29kZScsIGNvZGUpICsgdGhpcy5jcmVhdGVQYXJhbXMocGFyYW1zKSwgeyBoZWFkZXJzOiB0aGlzLmdldEhlYWRlcnMoKSB9KTtcclxuICB9XHJcbn1cclxuIl19