angular-odata 0.105.0 → 0.110.0

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.
Files changed (58) hide show
  1. package/esm2020/lib/api.mjs +44 -6
  2. package/esm2020/lib/client.mjs +6 -31
  3. package/esm2020/lib/helper.mjs +17 -7
  4. package/esm2020/lib/models/collection.mjs +25 -31
  5. package/esm2020/lib/models/model.mjs +6 -3
  6. package/esm2020/lib/models/options.mjs +5 -5
  7. package/esm2020/lib/resources/request.mjs +30 -2
  8. package/esm2020/lib/resources/resource.mjs +7 -50
  9. package/esm2020/lib/resources/responses/annotations.mjs +15 -3
  10. package/esm2020/lib/resources/responses/response.mjs +1 -1
  11. package/esm2020/lib/resources/responses/types.mjs +1 -1
  12. package/esm2020/lib/resources/types/batch.mjs +6 -9
  13. package/esm2020/lib/resources/types/count.mjs +1 -1
  14. package/esm2020/lib/resources/types/entity-set.mjs +32 -10
  15. package/esm2020/lib/resources/types/entity.mjs +1 -1
  16. package/esm2020/lib/resources/types/media.mjs +1 -1
  17. package/esm2020/lib/resources/types/metadata.mjs +3 -5
  18. package/esm2020/lib/resources/types/navigation-property.mjs +24 -6
  19. package/esm2020/lib/resources/types/options.mjs +1 -1
  20. package/esm2020/lib/resources/types/property.mjs +24 -4
  21. package/esm2020/lib/resources/types/reference.mjs +1 -1
  22. package/esm2020/lib/resources/types/singleton.mjs +1 -4
  23. package/esm2020/lib/resources/types/value.mjs +2 -2
  24. package/esm2020/lib/schema/parsers/callable.mjs +1 -1
  25. package/esm2020/lib/schema/parsers/edm.mjs +9 -9
  26. package/esm2020/lib/schema/parsers/enum-type.mjs +1 -1
  27. package/esm2020/lib/services/entity-set.mjs +7 -7
  28. package/esm2020/lib/utils/http.mjs +1 -1
  29. package/esm2020/lib/utils/objects.mjs +1 -1
  30. package/fesm2015/angular-odata.mjs +225 -157
  31. package/fesm2015/angular-odata.mjs.map +1 -1
  32. package/fesm2020/angular-odata.mjs +234 -162
  33. package/fesm2020/angular-odata.mjs.map +1 -1
  34. package/lib/api.d.ts +10 -3
  35. package/lib/client.d.ts +139 -1425
  36. package/lib/helper.d.ts +1 -1
  37. package/lib/models/collection.d.ts +11 -5
  38. package/lib/models/model.d.ts +7 -9
  39. package/lib/models/options.d.ts +3 -3
  40. package/lib/resources/query/handlers.d.ts +3 -1
  41. package/lib/resources/request.d.ts +13 -2
  42. package/lib/resources/resource.d.ts +2 -9
  43. package/lib/resources/responses/annotations.d.ts +17 -12
  44. package/lib/resources/responses/types.d.ts +3 -3
  45. package/lib/resources/types/count.d.ts +1 -1
  46. package/lib/resources/types/entity-set.d.ts +23 -6
  47. package/lib/resources/types/entity.d.ts +8 -24
  48. package/lib/resources/types/media.d.ts +7 -15
  49. package/lib/resources/types/metadata.d.ts +1 -1
  50. package/lib/resources/types/navigation-property.d.ts +26 -28
  51. package/lib/resources/types/options.d.ts +4 -2
  52. package/lib/resources/types/property.d.ts +28 -15
  53. package/lib/resources/types/reference.d.ts +3 -12
  54. package/lib/resources/types/singleton.d.ts +8 -27
  55. package/lib/services/entity-set.d.ts +15 -6
  56. package/lib/utils/http.d.ts +1 -1
  57. package/lib/utils/objects.d.ts +19 -5
  58. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { $BATCH, $QUERY, ACCEPT, IF_MATCH_HEADER, IF_NONE_MATCH_HEADER, PREFER, TEXT_PLAIN, } from '../constants';
2
- import { Http } from '../utils';
2
+ import { Http, Types } from '../utils';
3
3
  export class ODataRequest {
4
4
  constructor(init) {
5
5
  this._method = init.method;
@@ -7,6 +7,7 @@ export class ODataRequest {
7
7
  this.api = init.api;
8
8
  this.reportProgress = init.reportProgress;
9
9
  this.observe = init.observe;
10
+ this.context = init.context;
10
11
  // Response Type
11
12
  this._responseType = init.responseType;
12
13
  // The Body
@@ -99,6 +100,33 @@ export class ODataRequest {
99
100
  : params;
100
101
  //#endregion
101
102
  }
103
+ static factory(api, method, resource, options) {
104
+ const apiOptions = api.options;
105
+ let params = options.params || {};
106
+ if (options.withCount) {
107
+ params = Http.mergeHttpParams(params, apiOptions.helper.countParam());
108
+ }
109
+ let etag = options.etag;
110
+ if (etag === undefined && Types.isPlainObject(options.body)) {
111
+ etag = apiOptions.helper.etag(options.body);
112
+ }
113
+ return new ODataRequest({
114
+ method,
115
+ etag,
116
+ api,
117
+ resource,
118
+ params,
119
+ context: options.context,
120
+ body: options.body,
121
+ observe: options.observe,
122
+ headers: options.headers,
123
+ reportProgress: options.reportProgress,
124
+ responseType: options.responseType,
125
+ fetchPolicy: options.fetchPolicy,
126
+ withCredentials: options.withCredentials,
127
+ bodyQueryOptions: options.bodyQueryOptions,
128
+ });
129
+ }
102
130
  get responseType() {
103
131
  return this._responseType &&
104
132
  ['property', 'entity', 'entities'].indexOf(this._responseType) !== -1
@@ -159,4 +187,4 @@ export class ODataRequest {
159
187
  return ['PUT', 'PATCH', 'POST', 'DELETE'].indexOf(this._method) !== -1;
160
188
  }
161
189
  }
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHaEMsTUFBTSxPQUFPLFlBQVk7SUE0QnZCLFlBQVksSUEyQlg7UUFDQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTVCLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkMsV0FBVztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxlQUFlO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEtB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QUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sQ0FDTCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gICRCQVRDSCxcbiAgJFFVRVJZLFxuICBBQ0NFUFQsXG4gIElGX01BVENIX0hFQURFUixcbiAgSUZfTk9ORV9NQVRDSF9IRUFERVIsXG4gIFBSRUZFUixcbiAgVEVYVF9QTEFJTixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFF1ZXJ5T3B0aW9uTmFtZXMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2UnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFSZXF1ZXN0PFQ+IHtcbiAgcmVhZG9ubHkgYXBpOiBPRGF0YUFwaTtcbiAgcmVhZG9ubHkgb2JzZXJ2ZTogJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICByZWFkb25seSByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJvZHlRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgcmVhZG9ubHkgZmV0Y2hQb2xpY3k6XG4gICAgfCAnY2FjaGUtZmlyc3QnXG4gICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgfCAnbmV0d29yay1vbmx5J1xuICAgIHwgJ25vLWNhY2hlJ1xuICAgIHwgJ2NhY2hlLW9ubHknO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VUeXBlPzpcbiAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICB8ICdibG9iJ1xuICAgIHwgJ2pzb24nXG4gICAgfCAndGV4dCdcbiAgICB8ICd2YWx1ZSdcbiAgICB8ICdwcm9wZXJ0eSdcbiAgICB8ICdlbnRpdHknXG4gICAgfCAnZW50aXRpZXMnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRob2Q6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keTogYW55IHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGVhZGVyczogSHR0cEhlYWRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogSHR0cFBhcmFtcztcbiAgcHJpdmF0ZSByZWFkb25seSBfcGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBhcGk6IE9EYXRhQXBpO1xuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGJvZHk6IGFueTtcbiAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgZXRhZz86IHN0cmluZztcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgIHBhcmFtcz86IEh0dHBQYXJhbXMgfCB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfTtcbiAgICByZXNwb25zZVR5cGU/OlxuICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICB8ICdibG9iJ1xuICAgICAgfCAnanNvbidcbiAgICAgIHwgJ3RleHQnXG4gICAgICB8ICd2YWx1ZSdcbiAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgfCAnZW50aXR5J1xuICAgICAgfCAnZW50aXRpZXMnO1xuICAgIGZldGNoUG9saWN5PzpcbiAgICAgIHwgJ2NhY2hlLWZpcnN0J1xuICAgICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgICB8ICduZXR3b3JrLW9ubHknXG4gICAgICB8ICduby1jYWNoZSdcbiAgICAgIHwgJ2NhY2hlLW9ubHknO1xuICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgfSkge1xuICAgIHRoaXMuX21ldGhvZCA9IGluaXQubWV0aG9kO1xuICAgIHRoaXMucmVzb3VyY2UgPSBpbml0LnJlc291cmNlO1xuXG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlcG9ydFByb2dyZXNzID0gaW5pdC5yZXBvcnRQcm9ncmVzcztcbiAgICB0aGlzLm9ic2VydmUgPSBpbml0Lm9ic2VydmU7XG5cbiAgICAvLyBSZXNwb25zZSBUeXBlXG4gICAgdGhpcy5fcmVzcG9uc2VUeXBlID0gaW5pdC5yZXNwb25zZVR5cGU7XG5cbiAgICAvLyBUaGUgQm9keVxuICAgIHRoaXMuX2JvZHkgPSBpbml0LmJvZHkgIT09IHVuZGVmaW5lZCA/IGluaXQuYm9keSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2JvZHkgIT09IG51bGwpIHRoaXMuX2JvZHkgPSB0aGlzLnJlc291cmNlLnNlcmlhbGl6ZSh0aGlzLl9ib2R5KTtcblxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID1cbiAgICAgIGluaXQud2l0aENyZWRlbnRpYWxzID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLmFwaS5vcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgICAgICA6IGluaXQud2l0aENyZWRlbnRpYWxzO1xuICAgIHRoaXMuZmV0Y2hQb2xpY3kgPSBpbml0LmZldGNoUG9saWN5IHx8IHRoaXMuYXBpLm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zID0gW1xuICAgICAgLi4uKHRoaXMuYXBpLm9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyB8fCBbXSksXG4gICAgICAuLi4oaW5pdC5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICBdO1xuXG4gICAgLy8gVGhlIFBhdGggYW5kIFBhcmFtcyBmcm9tIHJlc291cmNlXG4gICAgY29uc3QgW3Jlc291cmNlUGF0aCwgcmVzb3VyY2VQYXJhbXNdID0gdGhpcy5yZXNvdXJjZS5wYXRoQW5kUGFyYW1zKCk7XG4gICAgdGhpcy5fcGF0aCA9IHJlc291cmNlUGF0aDtcblxuICAgIC8vI3JlZ2lvbiBIZWFkZXJzXG4gICAgY29uc3QgY3VzdG9tSGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICh0eXBlb2YgaW5pdC5ldGFnID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZNYXRjaCAmJlxuICAgICAgICBbJ1BVVCcsICdQQVRDSCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTUFUQ0hfSEVBREVSXSA9IGluaXQuZXRhZztcbiAgICAgIGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZOb25lTWF0Y2ggJiZcbiAgICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTk9ORV9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdCA9IFtdO1xuICAgIC8vIE1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYG9kYXRhLm1ldGFkYXRhPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhfWApO1xuICAgIC8vIElFRUU3NTRcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChcbiAgICAgICAgYElFRUU3NTRDb21wYXRpYmxlPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlfWBcbiAgICAgICk7XG4gICAgLy8gc3RyZWFtaW5nXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmcgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKGBzdHJlYW1pbmc9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nfWApO1xuICAgIC8vIEV4cG9uZW50aWFsRGVjaW1hbHNcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHMgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgRXhwb25lbnRpYWxEZWNpbWFscz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzfWBcbiAgICAgICk7XG4gICAgaWYgKGFjY2VwdC5sZW5ndGggPiAwKVxuICAgICAgY3VzdG9tSGVhZGVyc1tBQ0NFUFRdID0gW1xuICAgICAgICBgYXBwbGljYXRpb24vanNvbjske2FjY2VwdC5qb2luKCc7Jyl9YCxcbiAgICAgICAgJ3RleHQvcGxhaW4nLFxuICAgICAgICAnKi8qJyxcbiAgICAgIF07XG5cbiAgICBjb25zdCBwcmVmZXIgPSBbXTtcbiAgICAvLyBSZXR1cm5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ucmV0dXJuICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYHJldHVybj0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm59YCk7XG4gICAgLy8gTWF4UGFnZVNpemVcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9kYXRhLm1heHBhZ2VzaXplPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm1heFBhZ2VTaXplfWApO1xuICAgIC8vIEFubm90YXRpb25zXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmluY2x1ZGVBbm5vdGF0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChcbiAgICAgICAgYG9kYXRhLmluY2x1ZGUtYW5ub3RhdGlvbnM9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zfWBcbiAgICAgICk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmNvbnRpbnVlT25FcnJvciA9PT0gdHJ1ZSAmJlxuICAgICAgWydQT1NUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGBvZGF0YS5jb250aW51ZS1vbi1lcnJvcmApO1xuICAgIGlmIChwcmVmZXIubGVuZ3RoID4gMCkgY3VzdG9tSGVhZGVyc1tQUkVGRVJdID0gcHJlZmVyO1xuICAgIHRoaXMuX2hlYWRlcnMgPSBIdHRwLm1lcmdlSHR0cEhlYWRlcnMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlYWRlcnMsXG4gICAgICBjdXN0b21IZWFkZXJzLFxuICAgICAgaW5pdC5oZWFkZXJzIHx8IHt9XG4gICAgKTtcbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiBQYXJhbXNcbiAgICBjb25zdCBjdXN0b21QYXJhbXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fTtcbiAgICBpZiAoXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSAmJlxuICAgICAgJyRzZWxlY3QnIGluIHJlc291cmNlUGFyYW1zXG4gICAgKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRzZWxlY3QnXSA9IHJlc291cmNlUGFyYW1zWyckc2VsZWN0J107XG4gICAgfVxuICAgIGlmIChbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmICckZXhwYW5kJyBpbiByZXNvdXJjZVBhcmFtcykge1xuICAgICAgY3VzdG9tUGFyYW1zWyckZXhwYW5kJ10gPSByZXNvdXJjZVBhcmFtc1snJGV4cGFuZCddO1xuICAgIH1cbiAgICBpZiAoWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGN1c3RvbVBhcmFtcywgcmVzb3VyY2VQYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wYXJhbXMsXG4gICAgICBjdXN0b21QYXJhbXMsXG4gICAgICBpbml0LnBhcmFtcyB8fCB7fVxuICAgICk7XG5cbiAgICB0aGlzLl9wYXJhbXMgPVxuICAgICAgdGhpcy5fcmVzcG9uc2VUeXBlID09PSAnZW50aXR5J1xuICAgICAgICA/IEh0dHAud2l0aG91dEh0dHBQYXJhbXMocGFyYW1zLCBbXG4gICAgICAgICAgICAnJGZpbHRlcicsXG4gICAgICAgICAgICAnJG9yZGVyYnknLFxuICAgICAgICAgICAgJyRjb3VudCcsXG4gICAgICAgICAgICAnJHNraXAnLFxuICAgICAgICAgICAgJyR0b3AnLFxuICAgICAgICAgIF0pXG4gICAgICAgIDogcGFyYW1zO1xuICAgIC8vI2VuZHJlZ2lvblxuICB9XG5cbiAgZ2V0IHJlc3BvbnNlVHlwZSgpOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlICYmXG4gICAgICBbJ3Byb3BlcnR5JywgJ2VudGl0eScsICdlbnRpdGllcyddLmluZGV4T2YodGhpcy5fcmVzcG9uc2VUeXBlKSAhPT0gLTFcbiAgICAgID8gJ2pzb24nXG4gICAgICA6IHRoaXMuX3Jlc3BvbnNlVHlwZSA9PT0gJ3ZhbHVlJ1xuICAgICAgPyAndGV4dCdcbiAgICAgIDogPCdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc+dGhpcy5fcmVzcG9uc2VUeXBlO1xuICB9XG5cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKSA/IGAke3RoaXMuX3BhdGh9LyR7JFFVRVJZfWAgOiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgZ2V0IG1ldGhvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gJ1BPU1QnIDogdGhpcy5fbWV0aG9kO1xuICB9XG5cbiAgZ2V0IGJvZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgICB0aGlzLl9wYXJhbXMsXG4gICAgICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLm1hcCgobmFtZSkgPT4gYCQke25hbWV9YClcbiAgICAgICAgKVsxXS50b1N0cmluZygpXG4gICAgICA6IHRoaXMuX2JvZHk7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5zcGxpdEh0dHBQYXJhbXMoXG4gICAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5tYXAoKG5hbWUpID0+IGAkJHtuYW1lfWApXG4gICAgICAgIClbMF1cbiAgICAgIDogdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLm1lcmdlSHR0cEhlYWRlcnModGhpcy5faGVhZGVycywgeyBDT05URU5UX1RZUEU6IFRFWFRfUExBSU4gfSlcbiAgICAgIDogdGhpcy5faGVhZGVycztcbiAgfVxuXG4gIGdldCBwYXRoV2l0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgID8gYCR7dGhpcy5wYXRofT8ke3RoaXMucGFyYW1zfWBcbiAgICAgIDogdGhpcy5wYXRoO1xuICB9XG5cbiAgZ2V0IHVybCgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzLnBhdGh9YDtcbiAgfVxuXG4gIGdldCB1cmxXaXRoUGFyYW1zKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXMucGF0aFdpdGhQYXJhbXN9YDtcbiAgfVxuXG4gIGdldCBjYWNoZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmtleXMoKS5sZW5ndGggPiAwXG4gICAgICA/IGAke3RoaXMuX3BhdGh9PyR7dGhpcy5fcGFyYW1zfWBcbiAgICAgIDogdGhpcy5fcGF0aDtcbiAgfVxuXG4gIGlzUXVlcnlCb2R5KCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9tZXRob2QgPT09ICdHRVQnICYmXG4gICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLnNvbWUoKG5hbWUpID0+IHRoaXMuX3BhcmFtcy5oYXMoYCQke25hbWV9YCkpXG4gICAgKTtcbiAgfVxuXG4gIGlzQmF0Y2goKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aC5lbmRzV2l0aCgkQkFUQ0gpO1xuICB9XG5cbiAgaXNGZXRjaCgpIHtcbiAgICByZXR1cm4gWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG5cbiAgaXNNdXRhdGUoKSB7XG4gICAgcmV0dXJuIFsnUFVUJywgJ1BBVENIJywgJ1BPU1QnLCAnREVMRVRFJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxufVxuIl19
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sVUFBVSxHQUNYLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBSXZDLE1BQU0sT0FBTyxZQUFZO0lBNkJ2QixZQUFZLElBb0NYO1FBQ0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUU5QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFNUIsZ0JBQWdCO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUV2QyxXQUFXO1FBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FB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QUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sQ0FDTCxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUs7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ29udGV4dCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQge1xuICAkQkFUQ0gsXG4gICRRVUVSWSxcbiAgQUNDRVBULFxuICBJRl9NQVRDSF9IRUFERVIsXG4gIElGX05PTkVfTUFUQ0hfSEVBREVSLFxuICBQUkVGRVIsXG4gIFRFWFRfUExBSU4sXG59IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgSHR0cCwgVHlwZXMgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi9yZXNvdXJjZSc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVxdWVzdDxUPiB7XG4gIHJlYWRvbmx5IGFwaTogT0RhdGFBcGk7XG4gIHJlYWRvbmx5IG9ic2VydmU6ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgcmVhZG9ubHkgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICByZWFkb25seSByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJvZHlRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgcmVhZG9ubHkgZmV0Y2hQb2xpY3k6XG4gICAgfCAnY2FjaGUtZmlyc3QnXG4gICAgfCAnY2FjaGUtYW5kLW5ldHdvcmsnXG4gICAgfCAnbmV0d29yay1vbmx5J1xuICAgIHwgJ25vLWNhY2hlJ1xuICAgIHwgJ2NhY2hlLW9ubHknO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VUeXBlPzpcbiAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICB8ICdibG9iJ1xuICAgIHwgJ2pzb24nXG4gICAgfCAndGV4dCdcbiAgICB8ICd2YWx1ZSdcbiAgICB8ICdwcm9wZXJ0eSdcbiAgICB8ICdlbnRpdHknXG4gICAgfCAnZW50aXRpZXMnO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRob2Q6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYm9keTogYW55IHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGVhZGVyczogSHR0cEhlYWRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtczogSHR0cFBhcmFtcztcbiAgcHJpdmF0ZSByZWFkb25seSBfcGF0aDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGluaXQ6IHtcbiAgICBtZXRob2Q6IHN0cmluZztcbiAgICBhcGk6IE9EYXRhQXBpO1xuICAgIHJlc291cmNlOiBPRGF0YVJlc291cmNlPFQ+O1xuICAgIGJvZHk6IGFueTtcbiAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXSB9O1xuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICBwYXJhbXM/OlxuICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICB8IHtcbiAgICAgICAgICBbcGFyYW06IHN0cmluZ106XG4gICAgICAgICAgICB8IHN0cmluZ1xuICAgICAgICAgICAgfCBudW1iZXJcbiAgICAgICAgICAgIHwgYm9vbGVhblxuICAgICAgICAgICAgfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+O1xuICAgICAgICB9O1xuICAgIHJlc3BvbnNlVHlwZT86XG4gICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgIHwgJ2Jsb2InXG4gICAgICB8ICdqc29uJ1xuICAgICAgfCAndGV4dCdcbiAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgfCAncHJvcGVydHknXG4gICAgICB8ICdlbnRpdHknXG4gICAgICB8ICdlbnRpdGllcyc7XG4gICAgZmV0Y2hQb2xpY3k/OlxuICAgICAgfCAnY2FjaGUtZmlyc3QnXG4gICAgICB8ICdjYWNoZS1hbmQtbmV0d29yaydcbiAgICAgIHwgJ25ldHdvcmstb25seSdcbiAgICAgIHwgJ25vLWNhY2hlJ1xuICAgICAgfCAnY2FjaGUtb25seSc7XG4gICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICB9KSB7XG4gICAgdGhpcy5fbWV0aG9kID0gaW5pdC5tZXRob2Q7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGluaXQucmVzb3VyY2U7XG5cbiAgICB0aGlzLmFwaSA9IGluaXQuYXBpO1xuICAgIHRoaXMucmVwb3J0UHJvZ3Jlc3MgPSBpbml0LnJlcG9ydFByb2dyZXNzO1xuICAgIHRoaXMub2JzZXJ2ZSA9IGluaXQub2JzZXJ2ZTtcbiAgICB0aGlzLmNvbnRleHQgPSBpbml0LmNvbnRleHQ7XG5cbiAgICAvLyBSZXNwb25zZSBUeXBlXG4gICAgdGhpcy5fcmVzcG9uc2VUeXBlID0gaW5pdC5yZXNwb25zZVR5cGU7XG5cbiAgICAvLyBUaGUgQm9keVxuICAgIHRoaXMuX2JvZHkgPSBpbml0LmJvZHkgIT09IHVuZGVmaW5lZCA/IGluaXQuYm9keSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2JvZHkgIT09IG51bGwpIHRoaXMuX2JvZHkgPSB0aGlzLnJlc291cmNlLnNlcmlhbGl6ZSh0aGlzLl9ib2R5KTtcblxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID1cbiAgICAgIGluaXQud2l0aENyZWRlbnRpYWxzID09PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLmFwaS5vcHRpb25zLndpdGhDcmVkZW50aWFsc1xuICAgICAgICA6IGluaXQud2l0aENyZWRlbnRpYWxzO1xuICAgIHRoaXMuZmV0Y2hQb2xpY3kgPSBpbml0LmZldGNoUG9saWN5IHx8IHRoaXMuYXBpLm9wdGlvbnMuZmV0Y2hQb2xpY3k7XG4gICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zID0gW1xuICAgICAgLi4uKHRoaXMuYXBpLm9wdGlvbnMuYm9keVF1ZXJ5T3B0aW9ucyB8fCBbXSksXG4gICAgICAuLi4oaW5pdC5ib2R5UXVlcnlPcHRpb25zIHx8IFtdKSxcbiAgICBdO1xuXG4gICAgLy8gVGhlIFBhdGggYW5kIFBhcmFtcyBmcm9tIHJlc291cmNlXG4gICAgY29uc3QgW3Jlc291cmNlUGF0aCwgcmVzb3VyY2VQYXJhbXNdID0gdGhpcy5yZXNvdXJjZS5wYXRoQW5kUGFyYW1zKCk7XG4gICAgdGhpcy5fcGF0aCA9IHJlc291cmNlUGF0aDtcblxuICAgIC8vI3JlZ2lvbiBIZWFkZXJzXG4gICAgY29uc3QgY3VzdG9tSGVhZGVyczogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW10gfSA9IHt9O1xuICAgIGlmICh0eXBlb2YgaW5pdC5ldGFnID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZNYXRjaCAmJlxuICAgICAgICBbJ1BVVCcsICdQQVRDSCcsICdERUxFVEUnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTUFUQ0hfSEVBREVSXSA9IGluaXQuZXRhZztcbiAgICAgIGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmFwaS5vcHRpb25zLmV0YWcuaWZOb25lTWF0Y2ggJiZcbiAgICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgICApXG4gICAgICAgIGN1c3RvbUhlYWRlcnNbSUZfTk9ORV9NQVRDSF9IRUFERVJdID0gaW5pdC5ldGFnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY2VwdCA9IFtdO1xuICAgIC8vIE1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKVxuICAgICAgYWNjZXB0LnB1c2goYG9kYXRhLm1ldGFkYXRhPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/Lm1ldGFkYXRhfWApO1xuICAgIC8vIElFRUU3NTRcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICBhY2NlcHQucHVzaChcbiAgICAgICAgYElFRUU3NTRDb21wYXRpYmxlPSR7dGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmllZWU3NTRDb21wYXRpYmxlfWBcbiAgICAgICk7XG4gICAgLy8gc3RyZWFtaW5nXG4gICAgaWYgKHRoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5zdHJlYW1pbmcgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKGBzdHJlYW1pbmc9JHt0aGlzLmFwaS5vcHRpb25zLmFjY2VwdD8uc3RyZWFtaW5nfWApO1xuICAgIC8vIEV4cG9uZW50aWFsRGVjaW1hbHNcbiAgICBpZiAodGhpcy5hcGkub3B0aW9ucy5hY2NlcHQ/LmV4cG9uZW50aWFsRGVjaW1hbHMgIT09IHVuZGVmaW5lZClcbiAgICAgIGFjY2VwdC5wdXNoKFxuICAgICAgICBgRXhwb25lbnRpYWxEZWNpbWFscz0ke3RoaXMuYXBpLm9wdGlvbnMuYWNjZXB0Py5leHBvbmVudGlhbERlY2ltYWxzfWBcbiAgICAgICk7XG4gICAgaWYgKGFjY2VwdC5sZW5ndGggPiAwKVxuICAgICAgY3VzdG9tSGVhZGVyc1tBQ0NFUFRdID0gW1xuICAgICAgICBgYXBwbGljYXRpb24vanNvbjske2FjY2VwdC5qb2luKCc7Jyl9YCxcbiAgICAgICAgJ3RleHQvcGxhaW4nLFxuICAgICAgICAnKi8qJyxcbiAgICAgIF07XG5cbiAgICBjb25zdCBwcmVmZXIgPSBbXTtcbiAgICAvLyBSZXR1cm5cbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ucmV0dXJuICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIFsnUE9TVCcsICdQVVQnLCAnUEFUQ0gnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYHJldHVybj0ke3RoaXMuYXBpLm9wdGlvbnMucHJlZmVyPy5yZXR1cm59YCk7XG4gICAgLy8gTWF4UGFnZVNpemVcbiAgICBpZiAoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8ubWF4UGFnZVNpemUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xXG4gICAgKVxuICAgICAgcHJlZmVyLnB1c2goYG9kYXRhLm1heHBhZ2VzaXplPSR7dGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/Lm1heFBhZ2VTaXplfWApO1xuICAgIC8vIEFubm90YXRpb25zXG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmluY2x1ZGVBbm5vdGF0aW9ucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBbJ0dFVCddLmluZGV4T2YodGhpcy5fbWV0aG9kKSAhPT0gLTFcbiAgICApXG4gICAgICBwcmVmZXIucHVzaChcbiAgICAgICAgYG9kYXRhLmluY2x1ZGUtYW5ub3RhdGlvbnM9JHt0aGlzLmFwaS5vcHRpb25zLnByZWZlcj8uaW5jbHVkZUFubm90YXRpb25zfWBcbiAgICAgICk7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wcmVmZXI/LmNvbnRpbnVlT25FcnJvciA9PT0gdHJ1ZSAmJlxuICAgICAgWydQT1NUJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMVxuICAgIClcbiAgICAgIHByZWZlci5wdXNoKGBvZGF0YS5jb250aW51ZS1vbi1lcnJvcmApO1xuICAgIGlmIChwcmVmZXIubGVuZ3RoID4gMCkgY3VzdG9tSGVhZGVyc1tQUkVGRVJdID0gcHJlZmVyO1xuICAgIHRoaXMuX2hlYWRlcnMgPSBIdHRwLm1lcmdlSHR0cEhlYWRlcnMoXG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlYWRlcnMsXG4gICAgICBjdXN0b21IZWFkZXJzLFxuICAgICAgaW5pdC5oZWFkZXJzIHx8IHt9XG4gICAgKTtcbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8vI3JlZ2lvbiBQYXJhbXNcbiAgICBjb25zdCBjdXN0b21QYXJhbXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH0gPSB7fTtcbiAgICBpZiAoXG4gICAgICBbJ1BPU1QnLCAnUFVUJywgJ1BBVENIJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMSAmJlxuICAgICAgJyRzZWxlY3QnIGluIHJlc291cmNlUGFyYW1zXG4gICAgKSB7XG4gICAgICBjdXN0b21QYXJhbXNbJyRzZWxlY3QnXSA9IHJlc291cmNlUGFyYW1zWyckc2VsZWN0J107XG4gICAgfVxuICAgIGlmIChbJ1BPU1QnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xICYmICckZXhwYW5kJyBpbiByZXNvdXJjZVBhcmFtcykge1xuICAgICAgY3VzdG9tUGFyYW1zWyckZXhwYW5kJ10gPSByZXNvdXJjZVBhcmFtc1snJGV4cGFuZCddO1xuICAgIH1cbiAgICBpZiAoWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGN1c3RvbVBhcmFtcywgcmVzb3VyY2VQYXJhbXMpO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtcyA9IEh0dHAubWVyZ2VIdHRwUGFyYW1zKFxuICAgICAgdGhpcy5hcGkub3B0aW9ucy5wYXJhbXMsXG4gICAgICBjdXN0b21QYXJhbXMsXG4gICAgICBpbml0LnBhcmFtcyB8fCB7fVxuICAgICk7XG5cbiAgICB0aGlzLl9wYXJhbXMgPVxuICAgICAgdGhpcy5fcmVzcG9uc2VUeXBlID09PSAnZW50aXR5J1xuICAgICAgICA/IEh0dHAud2l0aG91dEh0dHBQYXJhbXMocGFyYW1zLCBbXG4gICAgICAgICAgICAnJGZpbHRlcicsXG4gICAgICAgICAgICAnJG9yZGVyYnknLFxuICAgICAgICAgICAgJyRjb3VudCcsXG4gICAgICAgICAgICAnJHNraXAnLFxuICAgICAgICAgICAgJyR0b3AnLFxuICAgICAgICAgIF0pXG4gICAgICAgIDogcGFyYW1zO1xuICAgIC8vI2VuZHJlZ2lvblxuICB9XG5cbiAgc3RhdGljIGZhY3RvcnkoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxhbnk+LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9XG4gICkge1xuICAgIGNvbnN0IGFwaU9wdGlvbnMgPSBhcGkub3B0aW9ucztcbiAgICBsZXQgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXMgfHwge307XG4gICAgaWYgKG9wdGlvbnMud2l0aENvdW50KSB7XG4gICAgICBwYXJhbXMgPSBIdHRwLm1lcmdlSHR0cFBhcmFtcyhwYXJhbXMsIGFwaU9wdGlvbnMuaGVscGVyLmNvdW50UGFyYW0oKSk7XG4gICAgfVxuXG4gICAgbGV0IGV0YWcgPSBvcHRpb25zLmV0YWc7XG4gICAgaWYgKGV0YWcgPT09IHVuZGVmaW5lZCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KG9wdGlvbnMuYm9keSkpIHtcbiAgICAgIGV0YWcgPSBhcGlPcHRpb25zLmhlbHBlci5ldGFnKG9wdGlvbnMuYm9keSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPRGF0YVJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgZXRhZyxcbiAgICAgIGFwaSxcbiAgICAgIHJlc291cmNlLFxuICAgICAgcGFyYW1zLFxuICAgICAgY29udGV4dDogb3B0aW9ucy5jb250ZXh0LFxuICAgICAgYm9keTogb3B0aW9ucy5ib2R5LFxuICAgICAgb2JzZXJ2ZTogb3B0aW9ucy5vYnNlcnZlLFxuICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnMucmVzcG9uc2VUeXBlLFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdGlvbnMuZmV0Y2hQb2xpY3ksXG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IG9wdGlvbnMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgYm9keVF1ZXJ5T3B0aW9uczogb3B0aW9ucy5ib2R5UXVlcnlPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHJlc3BvbnNlVHlwZSgpOiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlICYmXG4gICAgICBbJ3Byb3BlcnR5JywgJ2VudGl0eScsICdlbnRpdGllcyddLmluZGV4T2YodGhpcy5fcmVzcG9uc2VUeXBlKSAhPT0gLTFcbiAgICAgID8gJ2pzb24nXG4gICAgICA6IHRoaXMuX3Jlc3BvbnNlVHlwZSA9PT0gJ3ZhbHVlJ1xuICAgICAgPyAndGV4dCdcbiAgICAgIDogPCdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc+dGhpcy5fcmVzcG9uc2VUeXBlO1xuICB9XG5cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKSA/IGAke3RoaXMuX3BhdGh9LyR7JFFVRVJZfWAgOiB0aGlzLl9wYXRoO1xuICB9XG5cbiAgZ2V0IG1ldGhvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1F1ZXJ5Qm9keSgpID8gJ1BPU1QnIDogdGhpcy5fbWV0aG9kO1xuICB9XG5cbiAgZ2V0IGJvZHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLnNwbGl0SHR0cFBhcmFtcyhcbiAgICAgICAgICB0aGlzLl9wYXJhbXMsXG4gICAgICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLm1hcCgobmFtZSkgPT4gYCQke25hbWV9YClcbiAgICAgICAgKVsxXS50b1N0cmluZygpXG4gICAgICA6IHRoaXMuX2JvZHk7XG4gIH1cblxuICBnZXQgcGFyYW1zKCkge1xuICAgIHJldHVybiB0aGlzLmlzUXVlcnlCb2R5KClcbiAgICAgID8gSHR0cC5zcGxpdEh0dHBQYXJhbXMoXG4gICAgICAgICAgdGhpcy5fcGFyYW1zLFxuICAgICAgICAgIHRoaXMuYm9keVF1ZXJ5T3B0aW9ucy5tYXAoKG5hbWUpID0+IGAkJHtuYW1lfWApXG4gICAgICAgIClbMF1cbiAgICAgIDogdGhpcy5fcGFyYW1zO1xuICB9XG5cbiAgZ2V0IGhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNRdWVyeUJvZHkoKVxuICAgICAgPyBIdHRwLm1lcmdlSHR0cEhlYWRlcnModGhpcy5faGVhZGVycywgeyBDT05URU5UX1RZUEU6IFRFWFRfUExBSU4gfSlcbiAgICAgIDogdGhpcy5faGVhZGVycztcbiAgfVxuXG4gIGdldCBwYXRoV2l0aFBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMua2V5cygpLmxlbmd0aCA+IDBcbiAgICAgID8gYCR7dGhpcy5wYXRofT8ke3RoaXMucGFyYW1zfWBcbiAgICAgIDogdGhpcy5wYXRoO1xuICB9XG5cbiAgZ2V0IHVybCgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5hcGkuc2VydmljZVJvb3RVcmx9JHt0aGlzLnBhdGh9YDtcbiAgfVxuXG4gIGdldCB1cmxXaXRoUGFyYW1zKCkge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXMucGF0aFdpdGhQYXJhbXN9YDtcbiAgfVxuXG4gIGdldCBjYWNoZUtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1zLmtleXMoKS5sZW5ndGggPiAwXG4gICAgICA/IGAke3RoaXMuX3BhdGh9PyR7dGhpcy5fcGFyYW1zfWBcbiAgICAgIDogdGhpcy5fcGF0aDtcbiAgfVxuXG4gIGlzUXVlcnlCb2R5KCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9tZXRob2QgPT09ICdHRVQnICYmXG4gICAgICB0aGlzLmJvZHlRdWVyeU9wdGlvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5ib2R5UXVlcnlPcHRpb25zLnNvbWUoKG5hbWUpID0+IHRoaXMuX3BhcmFtcy5oYXMoYCQke25hbWV9YCkpXG4gICAgKTtcbiAgfVxuXG4gIGlzQmF0Y2goKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aC5lbmRzV2l0aCgkQkFUQ0gpO1xuICB9XG5cbiAgaXNGZXRjaCgpIHtcbiAgICByZXR1cm4gWydHRVQnXS5pbmRleE9mKHRoaXMuX21ldGhvZCkgIT09IC0xO1xuICB9XG5cbiAgaXNNdXRhdGUoKSB7XG4gICAgcmV0dXJuIFsnUFVUJywgJ1BBVENIJywgJ1BPU1QnLCAnREVMRVRFJ10uaW5kZXhPZih0aGlzLl9tZXRob2QpICE9PSAtMTtcbiAgfVxufVxuIl19
@@ -1,12 +1,10 @@
1
- import { map } from 'rxjs/operators';
2
1
  import { DEFAULT_VERSION, PARAM_SEPARATOR, QUERY_SEPARATOR, VALUE_SEPARATOR, } from '../constants';
3
2
  import { ODataHelper } from '../helper';
4
3
  import { ODataStructuredType } from '../schema';
5
4
  import { PathSegmentNames, } from '../types';
6
- import { Http, Objects, Types } from '../utils/index';
5
+ import { Objects, Types } from '../utils/index';
7
6
  import { ODataPathSegments, ODataPathSegmentsHandler } from './path';
8
7
  import { isQueryCustomType, ODataQueryOptions, ODataQueryOptionsHandler, } from './query';
9
- import { ODataRequest } from './request';
10
8
  export class ODataResource {
11
9
  constructor(api, { segments, query, schema, } = {}) {
12
10
  this.api = api;
@@ -232,61 +230,20 @@ export class ODataResource {
232
230
  return ODataResource.resolveKey(value, this.schema);
233
231
  }
234
232
  //#endregion
235
- // Base Requests
236
- request(method, options) {
237
- const apiOptions = this.api.options;
238
- let params = options.params || {};
239
- if (options.withCount) {
240
- params = Http.mergeHttpParams(params, apiOptions.helper.countParam());
241
- }
242
- let etag = options.etag;
243
- if (etag === undefined && Types.isPlainObject(options.body)) {
244
- etag = apiOptions.helper.etag(options.body);
245
- }
246
- const request = new ODataRequest({
247
- method,
248
- etag,
249
- body: options.body,
250
- api: this.api,
251
- resource: this,
252
- observe: 'response',
253
- headers: options.headers,
254
- reportProgress: options.reportProgress,
255
- params: params,
256
- responseType: options.responseType,
257
- fetchPolicy: options.fetchPolicy,
258
- withCredentials: options.withCredentials,
259
- bodyQueryOptions: options.bodyQueryOptions,
260
- });
261
- const res$ = this.api.request(request);
262
- switch (options.responseType) {
263
- case 'entities':
264
- return res$.pipe(map((res) => res.entities()));
265
- case 'entity':
266
- return res$.pipe(map((res) => res.entity()));
267
- case 'property':
268
- return res$.pipe(map((res) => res.property()));
269
- case 'value':
270
- return res$.pipe(map((res) => res.value()));
271
- default:
272
- // Other responseTypes (arraybuffer, blob, json, text) return body
273
- return res$.pipe(map((res) => res.body));
274
- }
275
- }
276
233
  get(options = {}) {
277
- return this.request('GET', options);
234
+ return this.api.request('GET', this, options);
278
235
  }
279
236
  post(body, options = {}) {
280
- return this.request('POST', { body, ...options });
237
+ return this.api.request('POST', this, { body, ...options });
281
238
  }
282
239
  put(body, options = {}) {
283
- return this.request('PUT', { body, ...options });
240
+ return this.api.request('PUT', this, { body, ...options });
284
241
  }
285
242
  patch(body, options = {}) {
286
- return this.request('PATCH', { body, ...options });
243
+ return this.api.request('PATCH', this, { body, ...options });
287
244
  }
288
245
  delete(options = {}) {
289
- return this.request('DELETE', options);
246
+ return this.api.request('DELETE', this, options);
290
247
  }
291
248
  }
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRCxPQUFPLEVBSUwsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix3QkFBd0IsR0FFekIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQWdCekMsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFDRSxHQUFhLEVBQ2IsRUFDRSxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sTUFLSixFQUFFO1FBRU4sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZC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Q0FBQztJQUNwRCxDQUFDO0lBRVMsR0FBRyxDQUNYLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRVMsS0FBSyxDQUNiLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRVMsTUFBTSxDQUNkLFVBWUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBQQVJBTV9TRVBBUkFUT1IsXG4gIFFVRVJZX1NFUEFSQVRPUixcbiAgVkFMVUVfU0VQQVJBVE9SLFxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgT0RhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uLCBPRGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhU3RydWN0dXJlZFR5cGUgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWFFbGVtZW50IH0gZnJvbSAnLi4vc2NoZW1hL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgUGFyc2VyT3B0aW9ucyxcbiAgUGFyc2VyLFxuICBRdWVyeU9wdGlvbk5hbWVzLFxuICBQYXRoU2VnbWVudE5hbWVzLFxufSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBIdHRwLCBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IE9EYXRhUGF0aFNlZ21lbnRzLCBPRGF0YVBhdGhTZWdtZW50c0hhbmRsZXIgfSBmcm9tICcuL3BhdGgnO1xuaW1wb3J0IHtcbiAgaXNRdWVyeUN1c3RvbVR5cGUsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXIsXG4gIFF1ZXJ5Q3VzdG9tVHlwZSxcbn0gZnJvbSAnLi9xdWVyeSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3JlcXVlc3QnO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVJlc3BvbnNlLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBoYXNFbnRpdHlLZXkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wYXRoU2VnbWVudHMuZ2V0KFBhdGhTZWdtZW50TmFtZXMuZW50aXR5U2V0KT8uaGFzS2V5KCkpO1xuICB9XG5cbiAgY2xlYXJLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/LmNsZWFyS2V5KCk7XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZWxzXG4gIGFzTW9kZWw8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KFxuICAgIGVudGl0eT86IFBhcnRpYWw8VD4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IGFubm90cywgcmVzZXQgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0eUFubm90YXRpb25zOyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE0ge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBNb2RlbCA9IHRoaXMuYXBpLm1vZGVsRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgZW50aXR5U2V0ID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKGVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihlbnRpdHlTZXQpLmVudGl0eShlbnRpdHkgYXMgUGFydGlhbDxUPik7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2RlbChlbnRpdHksIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgTTtcbiAgfVxuXG4gIGFzQ29sbGVjdGlvbjxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPiwgQyBleHRlbmRzIE9EYXRhQ29sbGVjdGlvbjxULCBNPj4oXG4gICAgZW50aXRpZXM/OiBQYXJ0aWFsPFQ+W10gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVtdLFxuICAgIHtcbiAgICAgIGFubm90cyxcbiAgICAgIHJlc2V0LFxuICAgIH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zOyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IEMge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBDb2xsZWN0aW9uID0gdGhpcy5hcGkuY29sbGVjdGlvbkZvclR5cGUodHlwZSk7XG4gICAgbGV0IHBhdGggPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oZW50aXRpZXMsIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgQztcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBpc1N1YnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdWJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc1N1cGVydHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1cGVydHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNFcXVhbFRvKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4sIHRlc3Q/OiAncGF0aCcgfCAncGFyYW1zJykge1xuICAgIGNvbnN0IFtzZWxmUGF0aCwgc2VsZlBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBjb25zdCBbb3RoZXJQYXRoLCBvdGhlclBhcmFtc10gPSBvdGhlci5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIHRlc3QgPT09ICdwYXRoJ1xuICAgICAgPyBvdGhlclBhdGggPT09IHNlbGZQYXRoXG4gICAgICA6IHRlc3QgPT09ICdwYXJhbXMnXG4gICAgICA/IFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpXG4gICAgICA6IG90aGVyUGF0aCA9PT0gc2VsZlBhdGggJiYgVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcyk7XG4gIH1cblxuICBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBjb25zdCBbc3BhdGgsIHNwYXJhbXNdID0gdGhpcy5wYXRoU2VnbWVudHMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuICAgIGNvbnN0IFssIHFwYXJhbXNdID0gdGhpcy5xdWVyeU9wdGlvbnMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuXG4gICAgcmV0dXJuIFtzcGF0aCwgeyAuLi5zcGFyYW1zLCAuLi5xcGFyYW1zIH1dO1xuICB9XG5cbiAgZW5kcG9pbnRVcmwocGFyYW1zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IFtwYXRoXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgLm1hcCgoZSkgPT4gYCR7ZVswXX0ke1ZBTFVFX1NFUEFSQVRPUn0ke2VbMV19YClcbiAgICAgIC5qb2luKFBBUkFNX1NFUEFSQVRPUik7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7cGF0aH0ke1FVRVJZX1NFUEFSQVRPUn0ke3F1ZXJ5U3RyaW5nfWAgOiBwYXRoO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFSZXNvdXJjZTxUPiB7XG4gICAgY29uc3QgQ3RvciA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE9EYXRhUmVzb3VyY2U7XG4gICAgcmV0dXJuIG5ldyBDdG9yKHRoaXMuYXBpLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHRoaXMuY2xvbmVTZWdtZW50cygpLFxuICAgICAgcXVlcnk6IHRoaXMuY2xvbmVRdWVyeTxUPigpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfX3BhcnNlcihcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zLFxuICAgIHR5cGU/OiBzdHJpbmdcbiAgKTogUGFyc2VyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkYXRhVHlwZSA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBPRGF0YUhlbHBlcltvcHRpb25zLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OXS50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgY29uc3QgX2QgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2Rlc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZCh2LCBvcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfcyA9ICh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3Modiwgb3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX2UgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2VuY29kZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9lKHYsIG9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoXG4gICAgZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPiwgcz86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD4pID0+IHZvaWRcbiAgKSB7XG4gICAgLypcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gdHlwZSA/IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgKi9cbiAgICBmKFxuICAgICAgbmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cyksXG4gICAgICB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGUgPyB0aGlzLnNjaGVtYSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShcbiAgICBmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+LCBzPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPikgPT4gdm9pZFxuICApIHtcbiAgICAvKlxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBzY2hlbWEgPSB0eXBlID8gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSA6IHVuZGVmaW5lZDtcbiAgICAqL1xuICAgIGYoXG4gICAgICBuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSxcbiAgICAgIHRoaXMuc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZSA/IHRoaXMuc2NoZW1hIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlS2V5PFQ+KFxuICAgIHZhbHVlOiBhbnksXG4gICAgc2NoZW1hPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICApOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1F1ZXJ5Q3VzdG9tVHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVxuICAgICAgICA/IHNjaGVtYS5yZXNvbHZlS2V5KHZhbHVlKVxuICAgICAgICA6IE9iamVjdHMucmVzb2x2ZUtleSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT0RhdGFSZXNvdXJjZS5yZXNvbHZlS2V5PFQ+KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNjaGVtYSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyBCYXNlIFJlcXVlc3RzXG4gIHByb3RlY3RlZCByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYXBpT3B0aW9ucyA9IHRoaXMuYXBpLm9wdGlvbnM7XG4gICAgbGV0IHBhcmFtcyA9IG9wdGlvbnMucGFyYW1zIHx8IHt9O1xuICAgIGlmIChvcHRpb25zLndpdGhDb3VudCkge1xuICAgICAgcGFyYW1zID0gSHR0cC5tZXJnZUh0dHBQYXJhbXMocGFyYW1zLCBhcGlPcHRpb25zLmhlbHBlci5jb3VudFBhcmFtKCkpO1xuICAgIH1cblxuICAgIGxldCBldGFnID0gb3B0aW9ucy5ldGFnO1xuICAgIGlmIChldGFnID09PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdChvcHRpb25zLmJvZHkpKSB7XG4gICAgICBldGFnID0gYXBpT3B0aW9ucy5oZWxwZXIuZXRhZyhvcHRpb25zLmJvZHkpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgT0RhdGFSZXF1ZXN0KHtcbiAgICAgIG1ldGhvZCxcbiAgICAgIGV0YWcsXG4gICAgICBib2R5OiBvcHRpb25zLmJvZHksXG4gICAgICBhcGk6IHRoaXMuYXBpLFxuICAgICAgcmVzb3VyY2U6IHRoaXMsXG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxuICAgICAgaGVhZGVyczogb3B0aW9ucy5oZWFkZXJzLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3MsXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgICBmZXRjaFBvbGljeTogb3B0aW9ucy5mZXRjaFBvbGljeSxcbiAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICBib2R5UXVlcnlPcHRpb25zOiBvcHRpb25zLmJvZHlRdWVyeU9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXMkID0gdGhpcy5hcGkucmVxdWVzdChyZXF1ZXN0KTtcbiAgICBzd2l0Y2ggKG9wdGlvbnMucmVzcG9uc2VUeXBlKSB7XG4gICAgICBjYXNlICdlbnRpdGllcyc6XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5lbnRpdGllcygpKSk7XG4gICAgICBjYXNlICdlbnRpdHknOlxuICAgICAgICByZXR1cm4gcmVzJC5waXBlKG1hcCgocmVzOiBPRGF0YVJlc3BvbnNlPFQ+KSA9PiByZXMuZW50aXR5KCkpKTtcbiAgICAgIGNhc2UgJ3Byb3BlcnR5JzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnByb3BlcnR5KCkpKTtcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgcmV0dXJuIHJlcyQucGlwZShtYXAoKHJlczogT0RhdGFSZXNwb25zZTxUPikgPT4gcmVzLnZhbHVlKCkgYXMgVCkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gT3RoZXIgcmVzcG9uc2VUeXBlcyAoYXJyYXlidWZmZXIsIGJsb2IsIGpzb24sIHRleHQpIHJldHVybiBib2R5XG4gICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IE9EYXRhUmVzcG9uc2U8VD4pID0+IHJlcy5ib2R5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldChcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgICAgYm9keVF1ZXJ5T3B0aW9ucz86IFF1ZXJ5T3B0aW9uTmFtZXNbXTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUE9TVCcsIHsgYm9keSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwdXQoXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUFVUJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhdGNoKFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ1BBVENIJywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZShcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QoJ0RFTEVURScsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEdBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE9BQU8sRUFJTCxnQkFBZ0IsR0FDakIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsd0JBQXdCLEdBRXpCLE1BQU0sU0FBUyxDQUFDO0FBZWpCLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ0UsR0FBYSxFQUNiLEVBQ0UsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLE1BS0osRUFBRTtRQUVOLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFDLENB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LENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFUyxJQUFJLENBQ1osSUFBUyxFQUNULFVBV0ksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVTLEdBQUcsQ0FDWCxJQUFTLEVBQ1QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRVMsS0FBSyxDQUNiLElBQVMsRUFDVCxVQVlJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFJLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFUyxNQUFNLENBQ2QsVUFZSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9EYXRhQXBpIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIERFRkFVTFRfVkVSU0lPTixcbiAgUEFSQU1fU0VQQVJBVE9SLFxuICBRVUVSWV9TRVBBUkFUT1IsXG4gIFZBTFVFX1NFUEFSQVRPUixcbn0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE9EYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhU2NoZW1hRWxlbWVudCB9IGZyb20gJy4uL3NjaGVtYS9lbGVtZW50JztcbmltcG9ydCB7XG4gIFBhcnNlck9wdGlvbnMsXG4gIFBhcnNlcixcbiAgUXVlcnlPcHRpb25OYW1lcyxcbiAgUGF0aFNlZ21lbnROYW1lcyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YVBhdGhTZWdtZW50cywgT0RhdGFQYXRoU2VnbWVudHNIYW5kbGVyIH0gZnJvbSAnLi9wYXRoJztcbmltcG9ydCB7XG4gIGlzUXVlcnlDdXN0b21UeXBlLFxuICBPRGF0YVF1ZXJ5T3B0aW9ucyxcbiAgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyLFxuICBRdWVyeUN1c3RvbVR5cGUsXG59IGZyb20gJy4vcXVlcnknO1xuaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxufSBmcm9tICcuL3Jlc3BvbnNlcy9pbmRleCc7XG5pbXBvcnQgeyBPRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRW50aXR5S2V5PFQ+ID1cbiAgfCB7XG4gICAgICByZWFkb25seSBbUCBpbiBrZXlvZiBUXT86IFRbUF07XG4gICAgfVxuICB8IFF1ZXJ5Q3VzdG9tVHlwZVxuICB8IHN0cmluZ1xuICB8IG51bWJlcjtcblxuZXhwb3J0IGNsYXNzIE9EYXRhUmVzb3VyY2U8VD4ge1xuICAvLyBWQVJJQUJMRVNcbiAgcHVibGljIGFwaTogT0RhdGFBcGk7XG4gIHB1YmxpYyBzY2hlbWE/OiBPRGF0YVNjaGVtYUVsZW1lbnQ7XG4gIHByb3RlY3RlZCBwYXRoU2VnbWVudHM6IE9EYXRhUGF0aFNlZ21lbnRzO1xuICBwcm90ZWN0ZWQgcXVlcnlPcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPjtcbiAgY29uc3RydWN0b3IoXG4gICAgYXBpOiBPRGF0YUFwaSxcbiAgICB7XG4gICAgICBzZWdtZW50cyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hLFxuICAgIH06IHtcbiAgICAgIHNlZ21lbnRzPzogT0RhdGFQYXRoU2VnbWVudHM7XG4gICAgICBxdWVyeT86IE9EYXRhUXVlcnlPcHRpb25zPFQ+O1xuICAgICAgc2NoZW1hPzogT0RhdGFTY2hlbWFFbGVtZW50O1xuICAgIH0gPSB7fVxuICApIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLnBhdGhTZWdtZW50cyA9IHNlZ21lbnRzIHx8IG5ldyBPRGF0YVBhdGhTZWdtZW50cygpO1xuICAgIHRoaXMucXVlcnlPcHRpb25zID0gcXVlcnkgfHwgbmV3IE9EYXRhUXVlcnlPcHRpb25zKCk7XG4gICAgdGhpcy5zY2hlbWEgPSBzY2hlbWE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMubGFzdCgpPy50eXBlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgc3RyaW5nIFRoZSB0eXBlIG9mIHRoZSByZXR1cm5cbiAgICovXG4gIHJldHVyblR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoKT8udHlwZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHN0cmluZyBBbGwgY292ZXJlZCB0eXBlcyBvZiB0aGUgcmVzb3VyY2VcbiAgICovXG4gIHR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5wYXRoU2VnbWVudHMudHlwZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBib29sZWFuIFRoZSByZXNvdXJjZSBoYXMga2V5ID9cbiAgICovXG4gIGhhc0tleSgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnBhdGhTZWdtZW50cy5sYXN0KHsga2V5OiB0cnVlIH0pPy5oYXNLZXkoKSk7XG4gIH1cblxuICBoYXNFbnRpdHlLZXkoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wYXRoU2VnbWVudHMuZ2V0KFBhdGhTZWdtZW50TmFtZXMuZW50aXR5U2V0KT8uaGFzS2V5KCkpO1xuICB9XG5cbiAgY2xlYXJLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aFNlZ21lbnRzLmxhc3QoeyBrZXk6IHRydWUgfSk/LmNsZWFyS2V5KCk7XG4gIH1cblxuICAvLyNyZWdpb24gTW9kZWxzXG4gIGFzTW9kZWw8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KFxuICAgIGVudGl0eT86IFBhcnRpYWw8VD4gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IGFubm90cywgcmVzZXQgfTogeyBhbm5vdHM/OiBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+OyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE0ge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBNb2RlbCA9IHRoaXMuYXBpLm1vZGVsRm9yVHlwZSh0eXBlKTtcbiAgICBsZXQgZW50aXR5U2V0ID0gYW5ub3RzPy5lbnRpdHlTZXQ7XG4gICAgaWYgKGVudGl0eVNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihlbnRpdHlTZXQpLmVudGl0eShlbnRpdHkgYXMgUGFydGlhbDxUPik7XG4gICAgICByZXNvdXJjZS5xdWVyeSgocSkgPT4gcS5hcHBseSh0aGlzLnF1ZXJ5T3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCkpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBNb2RlbChlbnRpdHksIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgTTtcbiAgfVxuXG4gIGFzQ29sbGVjdGlvbjxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPiwgQyBleHRlbmRzIE9EYXRhQ29sbGVjdGlvbjxULCBNPj4oXG4gICAgZW50aXRpZXM/OiBQYXJ0aWFsPFQ+W10gfCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfVtdLFxuICAgIHtcbiAgICAgIGFubm90cyxcbiAgICAgIHJlc2V0LFxuICAgIH06IHsgYW5ub3RzPzogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+OyByZXNldD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IEMge1xuICAgIGxldCByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPiA9IHRoaXMgYXMgT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBjb25zdCB0eXBlID0gYW5ub3RzPy50eXBlIHx8IHRoaXMucmV0dXJuVHlwZSgpO1xuICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQpIHRocm93IEVycm9yKCcnKTtcbiAgICBjb25zdCBDb2xsZWN0aW9uID0gdGhpcy5hcGkuY29sbGVjdGlvbkZvclR5cGUodHlwZSk7XG4gICAgbGV0IHBhdGggPSBhbm5vdHM/LmVudGl0eVNldDtcbiAgICBpZiAocGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXNvdXJjZSA9IHRoaXMuYXBpLmVudGl0eVNldDxUPihwYXRoKTtcbiAgICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KHRoaXMucXVlcnlPcHRpb25zLnRvUXVlcnlBcmd1bWVudHMoKSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oZW50aXRpZXMsIHsgcmVzb3VyY2UsIGFubm90cywgcmVzZXQgfSkgYXMgQztcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBpc1N1YnR5cGVPZihvdGhlcjogT0RhdGFSZXNvdXJjZTxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG90aGVyLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnNjaGVtYT8uaXNTdWJ0eXBlT2Yob3RoZXIuc2NoZW1hKVxuICAgICk7XG4gIH1cblxuICBpc1N1cGVydHlwZU9mKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zY2hlbWEgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3RoZXIuc2NoZW1hICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuc2NoZW1hPy5pc1N1cGVydHlwZU9mKG90aGVyLnNjaGVtYSlcbiAgICApO1xuICB9XG5cbiAgaXNFcXVhbFRvKG90aGVyOiBPRGF0YVJlc291cmNlPGFueT4sIHRlc3Q/OiAncGF0aCcgfCAncGFyYW1zJykge1xuICAgIGNvbnN0IFtzZWxmUGF0aCwgc2VsZlBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICBjb25zdCBbb3RoZXJQYXRoLCBvdGhlclBhcmFtc10gPSBvdGhlci5wYXRoQW5kUGFyYW1zKCk7XG4gICAgcmV0dXJuIHRlc3QgPT09ICdwYXRoJ1xuICAgICAgPyBvdGhlclBhdGggPT09IHNlbGZQYXRoXG4gICAgICA6IHRlc3QgPT09ICdwYXJhbXMnXG4gICAgICA/IFR5cGVzLmlzRXF1YWwoc2VsZlBhcmFtcywgb3RoZXJQYXJhbXMpXG4gICAgICA6IG90aGVyUGF0aCA9PT0gc2VsZlBhdGggJiYgVHlwZXMuaXNFcXVhbChzZWxmUGFyYW1zLCBvdGhlclBhcmFtcyk7XG4gIH1cblxuICBwYXRoQW5kUGFyYW1zKGVzY2FwZTogYm9vbGVhbiA9IGZhbHNlKTogW3N0cmluZywgeyBbbmFtZTogc3RyaW5nXTogYW55IH1dIHtcbiAgICBjb25zdCBbc3BhdGgsIHNwYXJhbXNdID0gdGhpcy5wYXRoU2VnbWVudHMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuICAgIGNvbnN0IFssIHFwYXJhbXNdID0gdGhpcy5xdWVyeU9wdGlvbnMucGF0aEFuZFBhcmFtcyhlc2NhcGUpO1xuXG4gICAgcmV0dXJuIFtzcGF0aCwgeyAuLi5zcGFyYW1zLCAuLi5xcGFyYW1zIH1dO1xuICB9XG5cbiAgZW5kcG9pbnRVcmwocGFyYW1zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLmFwaS5zZXJ2aWNlUm9vdFVybH0ke3RoaXN9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IFtwYXRoXSA9IHRoaXMucGF0aEFuZFBhcmFtcygpO1xuICAgICAgcmV0dXJuIGAke3RoaXMuYXBpLnNlcnZpY2VSb290VXJsfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IFtwYXRoLCBwYXJhbXNdID0gdGhpcy5wYXRoQW5kUGFyYW1zKCk7XG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmVudHJpZXMocGFyYW1zKVxuICAgICAgLm1hcCgoZSkgPT4gYCR7ZVswXX0ke1ZBTFVFX1NFUEFSQVRPUn0ke2VbMV19YClcbiAgICAgIC5qb2luKFBBUkFNX1NFUEFSQVRPUik7XG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nID8gYCR7cGF0aH0ke1FVRVJZX1NFUEFSQVRPUn0ke3F1ZXJ5U3RyaW5nfWAgOiBwYXRoO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFSZXNvdXJjZTxUPiB7XG4gICAgY29uc3QgQ3RvciA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE9EYXRhUmVzb3VyY2U7XG4gICAgcmV0dXJuIG5ldyBDdG9yKHRoaXMuYXBpLCB7XG4gICAgICBzY2hlbWE6IHRoaXMuc2NoZW1hLFxuICAgICAgc2VnbWVudHM6IHRoaXMuY2xvbmVTZWdtZW50cygpLFxuICAgICAgcXVlcnk6IHRoaXMuY2xvbmVRdWVyeTxUPigpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfX3BhcnNlcihcbiAgICB2YWx1ZTogYW55LFxuICAgIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zLFxuICAgIHR5cGU/OiBzdHJpbmdcbiAgKTogUGFyc2VyPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkYXRhVHlwZSA9XG4gICAgICBvcHRpb25zICE9PSB1bmRlZmluZWQgJiYgVHlwZXMuaXNQbGFpbk9iamVjdCh2YWx1ZSlcbiAgICAgICAgPyBPRGF0YUhlbHBlcltvcHRpb25zLnZlcnNpb24gfHwgREVGQVVMVF9WRVJTSU9OXS50eXBlKHZhbHVlKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBpZiAoZGF0YVR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gZGF0YSB0eXBlXG4gICAgICByZXR1cm4gdGhpcy5hcGkucGFyc2VyRm9yVHlwZTxUPihkYXRhVHlwZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNjaGVtYSAhPT0gdW5kZWZpbmVkICYmICdwYXJzZXInIGluIHRoaXMuc2NoZW1hKSB7XG4gICAgICAvLyBQYXJzZXIgZnJvbSByZXNvdXJjZSBzY2hlbWFcbiAgICAgIHJldHVybiAoPGFueT50aGlzLnNjaGVtYSkucGFyc2VyIGFzIFBhcnNlcjxUPiB8IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gUGFyc2VyIGZyb20gcmVzb3VyY2UgdHlwZVxuICAgICAgcmV0dXJuIHRoaXMuYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy5yZXR1cm5UeXBlKCk7XG4gICAgY29uc3QgX2QgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2Rlc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuZGVzZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpXG4gICAgICAgIDogdmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZCh2LCBvcHRpb25zKSlcbiAgICAgIDogX2QodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgc2VyaWFsaXplKHZhbHVlOiBhbnksIG9wdGlvbnM/OiBQYXJzZXJPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSB0aGlzLnR5cGUoKTtcbiAgICBjb25zdCBfcyA9ICh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5fX3BhcnNlcih2YWx1ZSwgb3B0aW9ucywgcmVzb3VyY2VUeXBlKTtcbiAgICAgIHJldHVybiBwYXJzZXIgIT09IHVuZGVmaW5lZCAmJiAnc2VyaWFsaXplJyBpbiBwYXJzZXJcbiAgICAgICAgPyBwYXJzZXIuc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKVxuICAgICAgICA6IHZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3Modiwgb3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuY29kZSh2YWx1ZTogYW55LCBvcHRpb25zPzogUGFyc2VyT3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3QgX2UgPSAodmFsdWU6IGFueSwgb3B0aW9ucz86IFBhcnNlck9wdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IHBhcnNlciA9IHRoaXMuX19wYXJzZXIodmFsdWUsIG9wdGlvbnMsIHJlc291cmNlVHlwZSk7XG4gICAgICByZXR1cm4gcGFyc2VyICE9PSB1bmRlZmluZWQgJiYgJ2VuY29kZScgaW4gcGFyc2VyXG4gICAgICAgID8gcGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucylcbiAgICAgICAgOiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9lKHYsIG9wdGlvbnMpKVxuICAgICAgOiBfZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZ21lbnRzOiB0aGlzLnBhdGhTZWdtZW50cy50b0pTT04oKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMucXVlcnlPcHRpb25zLnRvSlNPTigpLFxuICAgIH07XG4gIH1cblxuICBjbG9uZVNlZ21lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGhTZWdtZW50cy5jbG9uZSgpO1xuICB9XG5cbiAgLy8jcmVnaW9uIFF1ZXJ5IE9wdGlvbnNcbiAgY2xlYXJRdWVyeSgpIHtcbiAgICB0aGlzLnF1ZXJ5T3B0aW9ucy5jbGVhcigpO1xuICB9XG5cbiAgY2xvbmVRdWVyeTxQPigpIHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9wdGlvbnMuY2xvbmU8UD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHBhdGggc2VnbWVudHMgb2YgdGhlIHJlc291cmNlXG4gICAqIENyZWF0ZSBhbiBvYmplY3QgaGFuZGxlciBmb3IgbXV0YXRlIHRoZSBwYXRoIHNlZ21lbnRzIG9mIHRoZSByZXNvdXJjZVxuICAgKiBAcGFyYW0gZiBGdW5jdGlvbiBjb250ZXh0IGZvciBoYW5kbGUgdGhlIHNlZ21lbnRzXG4gICAqIEByZXR1cm5zIE9EYXRhQWN0aW9uUmVzb3VyY2VcbiAgICovXG4gIHNlZ21lbnQoXG4gICAgZjogKHE6IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPiwgcz86IE9EYXRhU3RydWN0dXJlZFR5cGU8VD4pID0+IHZvaWRcbiAgKSB7XG4gICAgLypcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlKCk7XG4gICAgY29uc3Qgc2NoZW1hID0gdHlwZSA/IHRoaXMuYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgKi9cbiAgICBmKFxuICAgICAgbmV3IE9EYXRhUGF0aFNlZ21lbnRzSGFuZGxlcjxUPih0aGlzLnBhdGhTZWdtZW50cyksXG4gICAgICB0aGlzLnNjaGVtYSBpbnN0YW5jZW9mIE9EYXRhU3RydWN0dXJlZFR5cGUgPyB0aGlzLnNjaGVtYSA6IHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zIG9mIHRoZSByZXNvdXJjZVxuICAgKiBDcmVhdGUgYW4gb2JqZWN0IGhhbmRsZXIgZm9yIG11dGF0ZSB0aGUgcXVlcnkgb3B0aW9ucyBvZiB0aGUgcmVzb3VyY2VcbiAgICogQHBhcmFtIGYgRnVuY3Rpb24gY29udGV4dCBmb3IgaGFuZGxlIHRoZSBxdWVyeSBvcHRpb25zXG4gICAqL1xuICBxdWVyeShcbiAgICBmOiAocTogT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+LCBzPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPikgPT4gdm9pZFxuICApIHtcbiAgICAvKlxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnJldHVyblR5cGUoKTtcbiAgICBjb25zdCBzY2hlbWEgPSB0eXBlID8gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSA6IHVuZGVmaW5lZDtcbiAgICAqL1xuICAgIGYoXG4gICAgICBuZXcgT0RhdGFRdWVyeU9wdGlvbnNIYW5kbGVyPFQ+KHRoaXMucXVlcnlPcHRpb25zKSxcbiAgICAgIHRoaXMuc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZSA/IHRoaXMuc2NoZW1hIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlS2V5PFQ+KFxuICAgIHZhbHVlOiBhbnksXG4gICAgc2NoZW1hPzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPlxuICApOiBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc1F1ZXJ5Q3VzdG9tVHlwZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9IGVsc2UgaWYgKFR5cGVzLmlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gc2NoZW1hIGluc3RhbmNlb2YgT0RhdGFTdHJ1Y3R1cmVkVHlwZVxuICAgICAgICA/IHNjaGVtYS5yZXNvbHZlS2V5KHZhbHVlKVxuICAgICAgICA6IE9iamVjdHMucmVzb2x2ZUtleSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBFbnRpdHlLZXk8VD4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVzb2x2ZUtleSh2YWx1ZTogYW55KTogRW50aXR5S2V5PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gT0RhdGFSZXNvdXJjZS5yZXNvbHZlS2V5PFQ+KFxuICAgICAgdmFsdWUsXG4gICAgICB0aGlzLnNjaGVtYSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+XG4gICAgKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICBwcm90ZWN0ZWQgZ2V0KFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgICBib2R5UXVlcnlPcHRpb25zPzogUXVlcnlPcHRpb25OYW1lc1tdO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdHRVQnLCB0aGlzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwb3N0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnJlcXVlc3Q8VD4oJ1BPU1QnLCB0aGlzLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHV0KFxuICAgIGJvZHk6IGFueSxcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdQVVQnLCB0aGlzLCB7IGJvZHksIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGF0Y2goXG4gICAgYm9keTogYW55LFxuICAgIG9wdGlvbnM6IE9EYXRhT3B0aW9ucyAmIHtcbiAgICAgIGV0YWc/OiBzdHJpbmc7XG4gICAgICByZXNwb25zZVR5cGU/OlxuICAgICAgICB8ICdhcnJheWJ1ZmZlcidcbiAgICAgICAgfCAnYmxvYidcbiAgICAgICAgfCAnanNvbidcbiAgICAgICAgfCAndGV4dCdcbiAgICAgICAgfCAndmFsdWUnXG4gICAgICAgIHwgJ3Byb3BlcnR5J1xuICAgICAgICB8ICdlbnRpdHknXG4gICAgICAgIHwgJ2VudGl0aWVzJztcbiAgICAgIHdpdGhDb3VudD86IGJvb2xlYW47XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLnJlcXVlc3Q8VD4oJ1BBVENIJywgdGhpcywgeyBib2R5LCAuLi5vcHRpb25zIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRlbGV0ZShcbiAgICBvcHRpb25zOiBPRGF0YU9wdGlvbnMgJiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgcmVzcG9uc2VUeXBlPzpcbiAgICAgICAgfCAnYXJyYXlidWZmZXInXG4gICAgICAgIHwgJ2Jsb2InXG4gICAgICAgIHwgJ2pzb24nXG4gICAgICAgIHwgJ3RleHQnXG4gICAgICAgIHwgJ3ZhbHVlJ1xuICAgICAgICB8ICdwcm9wZXJ0eSdcbiAgICAgICAgfCAnZW50aXR5J1xuICAgICAgICB8ICdlbnRpdGllcyc7XG4gICAgICB3aXRoQ291bnQ/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaS5yZXF1ZXN0PFQ+KCdERUxFVEUnLCB0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -21,6 +21,9 @@ export class ODataAnnotations {
21
21
  }
22
22
  }
23
23
  export class ODataPropertyAnnotations extends ODataAnnotations {
24
+ union(other) {
25
+ return new ODataPropertyAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
26
+ }
24
27
  clone() {
25
28
  return new ODataPropertyAnnotations(this.helper, new Map(this.annotations), this.context);
26
29
  }
@@ -29,6 +32,9 @@ export class ODataPropertyAnnotations extends ODataAnnotations {
29
32
  }
30
33
  }
31
34
  export class ODataEntityAnnotations extends ODataAnnotations {
35
+ union(other) {
36
+ return new ODataEntityAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
37
+ }
32
38
  clone() {
33
39
  return new ODataEntityAnnotations(this.helper, new Map(this.annotations), this.context);
34
40
  }
@@ -68,8 +74,11 @@ export class ODataEntityAnnotations extends ODataAnnotations {
68
74
  }
69
75
  return this._properties;
70
76
  }
71
- property(name) {
72
- return this.properties.get(name);
77
+ property(name, type) {
78
+ const props = this.properties.get(name);
79
+ return type === 'collection'
80
+ ? new ODataEntitiesAnnotations(this.helper, props)
81
+ : new ODataEntityAnnotations(this.helper, props);
73
82
  }
74
83
  get functions() {
75
84
  if (this._functions === undefined) {
@@ -82,6 +91,9 @@ export class ODataEntityAnnotations extends ODataAnnotations {
82
91
  }
83
92
  }
84
93
  export class ODataEntitiesAnnotations extends ODataAnnotations {
94
+ union(other) {
95
+ return new ODataEntitiesAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
96
+ }
85
97
  clone() {
86
98
  return new ODataEntitiesAnnotations(this.helper, new Map(this.annotations), this.context);
87
99
  }
@@ -122,4 +134,4 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
122
134
  return this.functions[name];
123
135
  }
124
136
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUksSUFBNEIsRUFBRSxRQUEyQjtRQUNyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQTRCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQWM7WUFDdEMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQUtGO0FBRUQsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGdCQUFnQjtJQUM1RCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxF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QUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDM0UsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMvQyxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhQ29udGV4dCwgT0RhdGFWZXJzaW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBPRGF0YUFubm90YXRpb25zIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGhlbHBlcjogT0RhdGFWZXJzaW9uSGVscGVyLFxuICAgIHByb3RlY3RlZCBhbm5vdGF0aW9uczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCksXG4gICAgcHJvdGVjdGVkIGNvbnRleHQ/OiBPRGF0YUNvbnRleHRcbiAgKSB7fVxuXG4gIGF0dHJpYnV0ZXM8VD4oZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgbWV0YWRhdGE6IE9EYXRhTWV0YWRhdGFUeXBlKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmF0dHJpYnV0ZXMoZGF0YSwgbWV0YWRhdGEpIGFzIFQ7XG4gIH1cblxuICB1cGRhdGUoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgYW55PihbXG4gICAgICAuLi50aGlzLmFubm90YXRpb25zLFxuICAgICAgLi4udGhpcy5oZWxwZXIuYW5ub3RhdGlvbnMoZGF0YSksXG4gICAgXSk7XG4gIH1cblxuICBnZXQgZW50aXR5U2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ/LmVudGl0eVNldDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci50eXBlKHRoaXMuYW5ub3RhdGlvbnMpIHx8IHRoaXMuY29udGV4dD8udHlwZTtcbiAgfVxuXG4gIC8vIE1ldGhvZFxuICBhYnN0cmFjdCBjbG9uZSgpOiBPRGF0YUFubm90YXRpb25zO1xuICBhYnN0cmFjdCBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9ucyB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnMge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9ucyhcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZW50aXR5KGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5pZCh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBldGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5ldGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1ldGFkYXRhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWV0YWRhdGFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBlZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFSZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFSZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhQ29udGVudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhQ29udGVudFR5cGUodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzPzogTWFwPHN0cmluZywgTWFwPHN0cmluZywgYW55Pj47XG4gIGdldCBwcm9wZXJ0aWVzKCkge1xuICAgIGlmICh0aGlzLl9wcm9wZXJ0aWVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSB0aGlzLmhlbHBlci5wcm9wZXJ0aWVzKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllcztcbiAgfVxuXG4gIHByb3BlcnR5KG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IGZ1bmN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fZnVuY3Rpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9ucyA9IHRoaXMuaGVscGVyLmZ1bmN0aW9ucyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9ucztcbiAgfVxuXG4gIGZ1bmN0aW9uKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tuYW1lXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zIGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9ucyB7XG4gIGNsb25lKCk6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnMoXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0aWVzKGRhdGEpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBjb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuY291bnQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbmV4dExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm5leHRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IGRlbHRhTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZGVsdGFMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHRvcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCR0b3A9KFxcZCspLyk7XG4gICAgcmV0dXJuIG1hdGNoICE9PSBudWxsID8gTnVtYmVyKG1hdGNoWzFdKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBza2lwKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXA9KFxcZCspLyk7XG4gICAgcmV0dXJuIG1hdGNoICE9PSBudWxsID8gTnVtYmVyKG1hdGNoWzFdKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBza2lwdG9rZW4oKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkc2tpcHRva2VuPShbXFxkXFx3XFxzJ10rKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IG1hdGNoWzFdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgZ2V0IGZ1bmN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fZnVuY3Rpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9ucyA9IHRoaXMuaGVscGVyLmZ1bmN0aW9ucyh0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmN0aW9ucztcbiAgfVxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9hbm5vdGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLE9BQWdCLGdCQUFnQjtJQUNwQyxZQUNTLE1BQTBCLEVBQ3ZCLGNBQWdDLElBQUksR0FBRyxFQUFlLEVBQ3RELE9BQXNCO1FBRnpCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUEyQztRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFlO0lBQy9CLENBQUM7SUFFSixVQUFVLENBQUMsSUFBNEIsRUFBRSxRQUEyQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLENBQWUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQTRCO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQWM7WUFDdEMsR0FBRyxJQUFJLENBQUMsV0FBVztZQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7SUFDbEUsQ0FBQztDQU1GO0FBRUQsTUFBTSxPQUFPLHdCQUE0QixTQUFRLGdCQUFtQjtJQUNsRSxLQUFLLENBQUMsS0FBb0M7UUFDeEMsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUN6QixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQTRCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHNCQUEwQixTQUFRLGdCQUFtQjtJQUNoRSxLQUFLLENBQUMsS0FBa0M7UUFDdEMsT0FBTyxJQUFJLHNCQUFzQixDQUMvQixJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksc0JBQXNCLENBQy9CLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUN6QixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQTRCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsSUFBSSxVQUFVO1FBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoRTtRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBSUQsUUFBUSxDQUNOLElBQWEsRUFDYixJQUE2QjtRQUU3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksS0FBSyxZQUFZO1lBQzFCLENBQUMsQ0FBQyxJQUFJLHdCQUF3QixDQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxJQUFJLHNCQUFzQixDQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsZ0JBQW1CO0lBQ2xFLEtBQUssQ0FBQyxLQUFvQztRQUN4QyxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFHLENBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ3pCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBNEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksR0FBRztRQUNMLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM5RCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDL0QsT0FBTyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUNELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbmltcG9ydCB7IE9EYXRhTWV0YWRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBoZWxwZXI6IE9EYXRhVmVyc2lvbkhlbHBlcixcbiAgICBwcm90ZWN0ZWQgYW5ub3RhdGlvbnM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PigpLFxuICAgIHByb3RlY3RlZCBjb250ZXh0PzogT0RhdGFDb250ZXh0XG4gICkge31cblxuICBhdHRyaWJ1dGVzKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0sIG1ldGFkYXRhOiBPRGF0YU1ldGFkYXRhVHlwZSk6IFBhcnRpYWw8VD4ge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIG1ldGFkYXRhKSBhcyBQYXJ0aWFsPFQ+O1xuICB9XG5cbiAgdXBkYXRlKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLmFubm90YXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oW1xuICAgICAgLi4udGhpcy5hbm5vdGF0aW9ucyxcbiAgICAgIC4uLnRoaXMuaGVscGVyLmFubm90YXRpb25zKGRhdGEpLFxuICAgIF0pO1xuICB9XG5cbiAgZ2V0IGVudGl0eVNldCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0Py5lbnRpdHlTZXQ7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIudHlwZSh0aGlzLmFubm90YXRpb25zKSB8fCB0aGlzLmNvbnRleHQ/LnR5cGU7XG4gIH1cblxuICAvLyBNZXRob2RcbiAgYWJzdHJhY3QgdW5pb24ob3RoZXI6IE9EYXRhQW5ub3RhdGlvbnM8YW55Pik6IE9EYXRhQW5ub3RhdGlvbnM8YW55PjtcbiAgYWJzdHJhY3QgY2xvbmUoKTogT0RhdGFBbm5vdGF0aW9uczxhbnk+O1xuICBhYnN0cmFjdCBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPFQ+IGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIHVuaW9uKG90aGVyOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55Pik6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbLi4udGhpcy5hbm5vdGF0aW9ucywgLi4ub3RoZXIuYW5ub3RhdGlvbnNdKSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29udGV4dCwgb3RoZXIuY29udGV4dClcbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4oXG4gICAgICB0aGlzLmhlbHBlcixcbiAgICAgIG5ldyBNYXAodGhpcy5hbm5vdGF0aW9ucyksXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLnByb3BlcnR5KGRhdGEpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+IGV4dGVuZHMgT0RhdGFBbm5vdGF0aW9uczxUPiB7XG4gIHVuaW9uKG90aGVyOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbLi4udGhpcy5hbm5vdGF0aW9ucywgLi4ub3RoZXIuYW5ub3RhdGlvbnNdKSxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuY29udGV4dCwgb3RoZXIuY29udGV4dClcbiAgICApO1xuICB9XG5cbiAgY2xvbmUoKTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZW50aXR5KGRhdGEpO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5pZCh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBldGFnKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5ldGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1ldGFkYXRhRXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWV0YWRhdGFFdGFnKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IHJlYWRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5yZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBlZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZWRpdExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFSZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFSZWFkTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUVkaXRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhQ29udGVudFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhQ29udGVudFR5cGUodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzPzogTWFwPGtleW9mIFQsIE1hcDxzdHJpbmcsIGFueT4+O1xuICBnZXQgcHJvcGVydGllcygpIHtcbiAgICBpZiAodGhpcy5fcHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gdGhpcy5oZWxwZXIucHJvcGVydGllczxUPih0aGlzLmFubm90YXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gIH1cblxuICBwcm9wZXJ0eTxGPihuYW1lOiBrZXlvZiBULCB0eXBlOiAnY29sbGVjdGlvbicpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj47XG4gIHByb3BlcnR5PEY+KG5hbWU6IGtleW9mIFQsIHR5cGU6ICdzaW5nbGUnKTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxGPjtcbiAgcHJvcGVydHk8Rj4oXG4gICAgbmFtZToga2V5b2YgVCxcbiAgICB0eXBlOiAnc2luZ2xlJyB8ICdjb2xsZWN0aW9uJ1xuICApOiBPRGF0YUVudGl0eUFubm90YXRpb25zPEY+IHwgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+IHtcbiAgICBjb25zdCBwcm9wcyA9IHRoaXMucHJvcGVydGllcy5nZXQobmFtZSk7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdjb2xsZWN0aW9uJ1xuICAgICAgPyBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+KHRoaXMuaGVscGVyLCBwcm9wcylcbiAgICAgIDogbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj4odGhpcy5oZWxwZXIsIHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpXG4gICAgKTtcbiAgfVxuXG4gIGNsb25lKCk6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgfVxuXG4gIGRhdGEoZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaCgvWyY/XXsxfVxcJHNraXB0b2tlbj0oW1xcZFxcd1xccyddKykvKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG59XG4iXX0=
@@ -167,4 +167,4 @@ export class ODataResponse extends HttpResponse {
167
167
  return value;
168
168
  }
169
169
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztZQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1lBQzFCLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQ2IsR0FBb0IsRUFDcEIsSUFNQztRQUVELE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksU0FBUztTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ2xCLElBQUksRUFBRTtpQkFDTixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzVELE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxRCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUM7SUFDSixDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDekUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUMvRCxNQUFNLFFBQVEsR0FBRyxXQUFXO3FCQUN6QixLQUFLLENBQUMsR0FBRyxDQUFDO3FCQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFXLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUMxRSxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUd6RCxDQUFDO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ25DO1lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbkQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDckM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyRCxJQUFJLFlBQVksRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsSUFBSSxPQUFPO1FBQ1QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMvQixJQUFJLENBQUMsUUFBUTtnQkFDWCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUs7b0JBQ3pDLENBQUMsQ0FBTyxJQUFJLENBQUMsSUFBSyxDQUFDLEdBQUcsQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDakI7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUdELElBQUksT0FBTztRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ3pDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RELENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBR0QsSUFBSSxXQUFXO1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM1RCxJQUFJLEdBQUcsRUFBRTtnQkFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxJQUFJO29CQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2xFO1lBQ0QsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFDbEUsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksUUFBUTtvQkFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQzthQUN4RTtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksc0JBQXNCLENBQ3ZDLE9BQU8sQ0FBQyxNQUFNLEVBQ2QsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBQ0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbkQsSUFBSSxNQUFNLEdBQUcsQ0FDWCxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxJQUFJLENBQ0csQ0FBQztRQUVkLElBQUksTUFBTSxLQUFLLElBQUk7WUFDakIsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQU0sQ0FBQztRQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQ3pDLE9BQU8sQ0FBQyxNQUFNLEVBQ2QsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO1FBQ0YsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckQsSUFBSSxRQUFRLEtBQUssSUFBSTtZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBUSxDQUFDO1FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FDekMsT0FBTyxDQUFDLE1BQU0sRUFDZCxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7UUFDRixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxJQUFJLFFBQVEsR0FBRyxDQUNiLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDeEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7WUFDakUsQ0FBQyxDQUFDLElBQUksQ0FDRyxDQUFDO1FBRWQsSUFBSSxRQUFRLEtBQUssSUFBSTtZQUNuQixRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsQ0FDVixPQUFPLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxPQUFPLENBQ0EsQ0FBQztRQUVkLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBUFBMSUNBVElPTl9KU09OLFxuICBPREFUQV9WRVJTSU9OX0hFQURFUlMsXG4gIENPTlRFTlRfVFlQRSxcbiAgQ0FDSEVfQ09OVFJPTCxcbiAgTE9DQVRJT05fSEVBREVSLFxuICBFVEFHX0hFQURFUlMsXG4gIE9EQVRBX0VOVElUWUlEX0hFQURFUlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IE9EYXRhUmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcbmltcG9ydCB7IE9EYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbi8qKlxuICogT0RhdGEgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2U8VD4gZXh0ZW5kcyBIdHRwUmVzcG9uc2U8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBUIHwgbnVsbDtcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgc3VwZXIoaW5pdCk7XG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSHR0cFJlc3BvbnNlPFQ+KHJlcTogT0RhdGFSZXF1ZXN0PFQ+LCByZXM6IEh0dHBSZXNwb25zZTxUPikge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keTogcmVzLmJvZHksXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiByZXMudXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTjxUPihcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxUPixcbiAgICBqc29uOiB7XG4gICAgICBib2R5OiBUIHwgbnVsbDtcbiAgICAgIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICB9XG4gICkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keToganNvbi5ib2R5LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGpzb24uaGVhZGVycyksXG4gICAgICBzdGF0dXM6IGpzb24uc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDoganNvbi5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiBqc29uLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgICAgICAua2V5cygpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+ICh7IFtuYW1lXTogdGhpcy5oZWFkZXJzLmdldEFsbChuYW1lKSB8fCBbXSB9KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBoZWFkZXIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBoZWFkZXIpLCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucz86IE9EYXRhUmVzcG9uc2VPcHRpb25zO1xuICBnZXQgb3B0aW9ucygpOiBPRGF0YVJlc3BvbnNlT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzLmFwaS5vcHRpb25zLnBhcnNlck9wdGlvbnMpO1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZihBUFBMSUNBVElPTl9KU09OKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjb250ZW50VHlwZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLmZpbmQoKHApID0+IHAuc3RhcnRzV2l0aChBUFBMSUNBVElPTl9KU09OKSkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhlYWRlciA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX1ZFUlNJT05fSEVBREVSUyk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXIpIHx8ICcnKS5yZXBsYWNlKC9cXDsvZywgJycpIGFzXG4gICAgICAgICAgfCAnMi4wJ1xuICAgICAgICAgIHwgJzMuMCdcbiAgICAgICAgICB8ICc0LjAnO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zKFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMoXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gKGFubm90cy5kYXRhKHBheWxvYWQpIGFzIFQpIDogbnVsbDtcbiAgICBsZXQgcHJvcGVydHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKGRhdGEsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBkYXRhXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmIChwcm9wZXJ0eSAhPT0gbnVsbClcbiAgICAgIHByb3BlcnR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShwcm9wZXJ0eSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4geyBwcm9wZXJ0eSwgYW5ub3RzIH07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIHRoZSByZXNwb25zZSBib2R5IGFzIGEgdmFsdWVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKCk6IFQgfCBudWxsIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLnBheWxvYWQ7XG4gICAgbGV0IHZhbHVlID0gKFxuICAgICAgcGF5bG9hZCAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KHBheWxvYWQpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhwYXlsb2FkLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogcGF5bG9hZFxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAodmFsdWUgIT09IG51bGwpIHZhbHVlID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucykgYXMgVDtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy9yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHdCQUF3QixHQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGFBQWEsRUFDYixlQUFlLEVBQ2YsWUFBWSxFQUNaLHNCQUFzQixHQUN2QixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBaUIsU0FBUSxZQUFlO0lBSW5ELFlBQVksSUFRWDtRQUNDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBSSxHQUFvQixFQUFFLEdBQW9CO1FBQ25FLE9BQU8sSUFBSSxhQUFhLENBQUk7WUFDMUIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO1lBQ1osUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1lBQ3RCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLE9BQU8sRUFBRSxH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LElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBTSxDQUFDO1FBQzNFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gIE9EYXRhRW50aXR5QW5ub3RhdGlvbnMsXG4gIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucyxcbiAgT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcbmltcG9ydCB7IFR5cGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFSZXNvdXJjZSB9IGZyb20gJy4uL3Jlc291cmNlJztcbmltcG9ydCB7IE9EYXRhRW50aXRpZXMsIE9EYXRhRW50aXR5LCBPRGF0YVByb3BlcnR5IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBBUFBMSUNBVElPTl9KU09OLFxuICBPREFUQV9WRVJTSU9OX0hFQURFUlMsXG4gIENPTlRFTlRfVFlQRSxcbiAgQ0FDSEVfQ09OVFJPTCxcbiAgTE9DQVRJT05fSEVBREVSLFxuICBFVEFHX0hFQURFUlMsXG4gIE9EQVRBX0VOVElUWUlEX0hFQURFUlMsXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4uLy4uL2FwaSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuLi9yZXF1ZXN0JztcbmltcG9ydCB7IE9EYXRhUmVzcG9uc2VPcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zJztcbmltcG9ydCB7IEh0dHAgfSBmcm9tICcuLi8uLi91dGlscy9odHRwJztcbmltcG9ydCB7IE9EYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2hlbHBlcic7XG5cbi8qKlxuICogT0RhdGEgUmVzcG9uc2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhUmVzcG9uc2U8VD4gZXh0ZW5kcyBIdHRwUmVzcG9uc2U8VD4ge1xuICByZWFkb25seSBhcGk6IE9EYXRhQXBpO1xuICByZWFkb25seSByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcblxuICBjb25zdHJ1Y3Rvcihpbml0OiB7XG4gICAgYXBpOiBPRGF0YUFwaTtcbiAgICByZXNvdXJjZTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgICBib2R5OiBUIHwgbnVsbDtcbiAgICBoZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgICBzdGF0dXM6IG51bWJlcjtcbiAgICBzdGF0dXNUZXh0OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICB9KSB7XG4gICAgc3VwZXIoaW5pdCk7XG4gICAgdGhpcy5hcGkgPSBpbml0LmFwaTtcbiAgICB0aGlzLnJlc291cmNlID0gaW5pdC5yZXNvdXJjZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSHR0cFJlc3BvbnNlPFQ+KHJlcTogT0RhdGFSZXF1ZXN0PFQ+LCByZXM6IEh0dHBSZXNwb25zZTxUPikge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keTogcmVzLmJvZHksXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgIHN0YXR1czogcmVzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiByZXMudXJsIHx8IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTjxUPihcbiAgICByZXE6IE9EYXRhUmVxdWVzdDxUPixcbiAgICBqc29uOiB7XG4gICAgICBib2R5OiBUIHwgbnVsbDtcbiAgICAgIGhlYWRlcnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdIH07XG4gICAgICBzdGF0dXM6IG51bWJlcjtcbiAgICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICAgIHVybDogc3RyaW5nIHwgbnVsbDtcbiAgICB9XG4gICkge1xuICAgIHJldHVybiBuZXcgT0RhdGFSZXNwb25zZTxUPih7XG4gICAgICBhcGk6IHJlcS5hcGksXG4gICAgICByZXNvdXJjZTogcmVxLnJlc291cmNlLFxuICAgICAgYm9keToganNvbi5ib2R5LFxuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKGpzb24uaGVhZGVycyksXG4gICAgICBzdGF0dXM6IGpzb24uc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDoganNvbi5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiBqc29uLnVybCB8fCB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvZHk6IHRoaXMuYm9keSxcbiAgICAgIGhlYWRlcnM6IHRoaXMuaGVhZGVyc1xuICAgICAgICAua2V5cygpXG4gICAgICAgIC5tYXAoKG5hbWUpID0+ICh7IFtuYW1lXTogdGhpcy5oZWFkZXJzLmdldEFsbChuYW1lKSB8fCBbXSB9KSlcbiAgICAgICAgLnJlZHVjZSgoYWNjLCBoZWFkZXIpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBoZWFkZXIpLCB7fSksXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfb3B0aW9ucz86IE9EYXRhUmVzcG9uc2VPcHRpb25zO1xuICBnZXQgb3B0aW9ucygpOiBPRGF0YVJlc3BvbnNlT3B0aW9ucyB7XG4gICAgaWYgKHRoaXMuX29wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG5ldyBPRGF0YVJlc3BvbnNlT3B0aW9ucyh0aGlzLmFwaS5vcHRpb25zLnBhcnNlck9wdGlvbnMpO1xuICAgICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLmhlYWRlcnMuZ2V0KENPTlRFTlRfVFlQRSk7XG4gICAgICBpZiAoY29udGVudFR5cGUgJiYgY29udGVudFR5cGUuaW5kZXhPZihBUFBMSUNBVElPTl9KU09OKSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBjb250ZW50VHlwZVxuICAgICAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAgICAgLmZpbmQoKHApID0+IHAuc3RhcnRzV2l0aChBUFBMSUNBVElPTl9KU09OKSkgYXMgc3RyaW5nO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldEZlYXR1cmVzKGZlYXR1cmVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGhlYWRlciA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX1ZFUlNJT05fSEVBREVSUyk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSAodGhpcy5oZWFkZXJzLmdldChoZWFkZXIpIHx8ICcnKS5yZXBsYWNlKC9cXDsvZywgJycpIGFzXG4gICAgICAgICAgfCAnMi4wJ1xuICAgICAgICAgIHwgJzMuMCdcbiAgICAgICAgICB8ICc0LjAnO1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldFZlcnNpb24odmVyc2lvbik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5oZWFkZXJzLmdldChMT0NBVElPTl9IRUFERVIpO1xuICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMuc2V0TG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWNoZUNvbnRyb2wgPSB0aGlzLmhlYWRlcnMuZ2V0KENBQ0hFX0NPTlRST0wpO1xuICAgICAgaWYgKGNhY2hlQ29udHJvbCkge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNldENhY2hlKGNhY2hlQ29udHJvbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGF5bG9hZD86IGFueTtcbiAgZ2V0IHBheWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuX3BheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcGF5bG9hZCA9XG4gICAgICAgIHRoaXMuYm9keSAmJiB0aGlzLm9wdGlvbnMudmVyc2lvbiA9PT0gJzIuMCdcbiAgICAgICAgICA/ICg8YW55PnRoaXMuYm9keSlbJ2QnXVxuICAgICAgICAgIDogdGhpcy5ib2R5O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcGF5bG9hZDtcbiAgfVxuXG4gIHByaXZhdGUgX2NvbnRleHQ/OiBhbnk7XG4gIGdldCBjb250ZXh0KCk6IE9EYXRhQ29udGV4dCB7XG4gICAgaWYgKHRoaXMuX2NvbnRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29udGV4dCA9IHRoaXMub3B0aW9ucy5oZWxwZXIuY29udGV4dChcbiAgICAgICAgVHlwZXMuaXNQbGFpbk9iamVjdCh0aGlzLnBheWxvYWQpID8gdGhpcy5wYXlsb2FkIDoge31cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYW5ub3RhdGlvbnM/OiBNYXA8c3RyaW5nLCBhbnk+O1xuICBnZXQgYW5ub3RhdGlvbnMoKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgaWYgKHRoaXMuX2Fubm90YXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB0aGlzLl9hbm5vdGF0aW9ucyA9IG9wdGlvbnMuaGVscGVyLmFubm90YXRpb25zKHRoaXMucGF5bG9hZCB8fCB7fSk7XG4gICAgICBsZXQga2V5ID0gSHR0cC5yZXNvbHZlSGVhZGVyS2V5KHRoaXMuaGVhZGVycywgRVRBR19IRUFERVJTKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgZXRhZyA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGV0YWcpIHRoaXMuX2Fubm90YXRpb25zLnNldChvcHRpb25zLmhlbHBlci5PREFUQV9FVEFHLCBldGFnKTtcbiAgICAgIH1cbiAgICAgIGtleSA9IEh0dHAucmVzb2x2ZUhlYWRlcktleSh0aGlzLmhlYWRlcnMsIE9EQVRBX0VOVElUWUlEX0hFQURFUlMpO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCBlbnRpdHlJZCA9IHRoaXMuaGVhZGVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKGVudGl0eUlkKSB0aGlzLl9hbm5vdGF0aW9ucy5zZXQob3B0aW9ucy5oZWxwZXIuT0RBVEFfSUQsIGVudGl0eUlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Fubm90YXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBlbnRpdHlcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0eSgpOiBPRGF0YUVudGl0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBjb25zdCBkYXRhID0gcGF5bG9hZCA/IGFubm90cy5kYXRhKHBheWxvYWQpIDogbnVsbDtcbiAgICBsZXQgZW50aXR5ID0gKFxuICAgICAgZGF0YSAhPT0gbnVsbCAmJiBUeXBlcy5pc1BsYWluT2JqZWN0KGRhdGEpXG4gICAgICAgID8gb3B0aW9ucy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCB0aGlzLmFwaS5vcHRpb25zLnN0cmlwTWV0YWRhdGEpXG4gICAgICAgIDogZGF0YVxuICAgICkgYXMgVCB8IG51bGw7XG5cbiAgICBpZiAoZW50aXR5ICE9PSBudWxsKVxuICAgICAgZW50aXR5ID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdHksIG9wdGlvbnMpIGFzIFQ7XG4gICAgcmV0dXJuIHsgZW50aXR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgZW50aXRpZXNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGVudGl0aWVzKCk6IE9EYXRhRW50aXRpZXM8VD4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBjb25zdCBhbm5vdHMgPSBuZXcgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+KFxuICAgICAgb3B0aW9ucy5oZWxwZXIsXG4gICAgICB0aGlzLmFubm90YXRpb25zLFxuICAgICAgdGhpcy5jb250ZXh0XG4gICAgKTtcbiAgICBsZXQgZW50aXRpZXMgPSBwYXlsb2FkID8gYW5ub3RzLmRhdGEocGF5bG9hZCkgOiBudWxsO1xuICAgIGlmIChlbnRpdGllcyAhPT0gbnVsbClcbiAgICAgIGVudGl0aWVzID0gdGhpcy5yZXNvdXJjZS5kZXNlcmlhbGl6ZShlbnRpdGllcywgb3B0aW9ucykgYXMgVFtdO1xuICAgIHJldHVybiB7IGVudGl0aWVzLCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBwcm9wZXJ0eVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvcGVydHkoKTogT0RhdGFQcm9wZXJ0eTxUPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5wYXlsb2FkO1xuICAgIGNvbnN0IGFubm90cyA9IG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8VD4oXG4gICAgICBvcHRpb25zLmhlbHBlcixcbiAgICAgIHRoaXMuYW5ub3RhdGlvbnMsXG4gICAgICB0aGlzLmNvbnRleHRcbiAgICApO1xuICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkID8gKGFubm90cy5kYXRhKHBheWxvYWQpIGFzIFQpIDogbnVsbDtcbiAgICBsZXQgcHJvcGVydHkgPSAoXG4gICAgICBkYXRhICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QoZGF0YSlcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKFxuICAgICAgICAgICAgZGF0YSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgICAgICAgICAgdGhpcy5hcGkub3B0aW9ucy5zdHJpcE1ldGFkYXRhXG4gICAgICAgICAgKVxuICAgICAgICA6IGRhdGFcbiAgICApIGFzIFQgfCBudWxsO1xuXG4gICAgaWYgKHByb3BlcnR5ICE9PSBudWxsKVxuICAgICAgcHJvcGVydHkgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHByb3BlcnR5LCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB7IHByb3BlcnR5LCBhbm5vdHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSB2YWx1ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdmFsdWUoKTogVCB8IG51bGwge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMucGF5bG9hZDtcbiAgICBsZXQgdmFsdWUgPSAoXG4gICAgICBwYXlsb2FkICE9PSBudWxsICYmIFR5cGVzLmlzUGxhaW5PYmplY3QocGF5bG9hZClcbiAgICAgICAgPyBvcHRpb25zLmhlbHBlci5hdHRyaWJ1dGVzKHBheWxvYWQsIHRoaXMuYXBpLm9wdGlvbnMuc3RyaXBNZXRhZGF0YSlcbiAgICAgICAgOiBwYXlsb2FkXG4gICAgKSBhcyBUIHwgbnVsbDtcblxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkgdmFsdWUgPSB0aGlzLnJlc291cmNlLmRlc2VyaWFsaXplKHZhbHVlLCBvcHRpb25zKSBhcyBUO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YUVudGl0eTxUPiA9IHtcbiAgZW50aXR5OiBUIHwgbnVsbDtcbiAgYW5ub3RzOiBPRGF0YUVudGl0eUFubm90YXRpb25zO1xufTtcbmV4cG9ydCB0eXBlIE9EYXRhRW50aXRpZXM8VD4gPSB7XG4gIGVudGl0aWVzOiBUW10gfCBudWxsO1xuICBhbm5vdHM6IE9EYXRhRW50aXRpZXNBbm5vdGF0aW9ucztcbn07XG5leHBvcnQgdHlwZSBPRGF0YVByb3BlcnR5PFQ+ID0ge1xuICBwcm9wZXJ0eTogVCB8IG51bGw7XG4gIGFubm90czogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zO1xufTtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3Jlc3BvbnNlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgT0RhdGFFbnRpdGllc0Fubm90YXRpb25zLFxuICBPRGF0YUVudGl0eUFubm90YXRpb25zLFxuICBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnMsXG59IGZyb20gJy4vYW5ub3RhdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBPRGF0YUVudGl0eTxUPiA9IHtcbiAgZW50aXR5OiBUIHwgbnVsbDtcbiAgYW5ub3RzOiBPRGF0YUVudGl0eUFubm90YXRpb25zPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgT0RhdGFFbnRpdGllczxUPiA9IHtcbiAgZW50aXRpZXM6IFRbXSB8IG51bGw7XG4gIGFubm90czogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPFQ+O1xufTtcblxuZXhwb3J0IHR5cGUgT0RhdGFQcm9wZXJ0eTxUPiA9IHtcbiAgcHJvcGVydHk6IFQgfCBudWxsO1xuICBhbm5vdHM6IE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxUPjtcbn07XG4iXX0=