@techextensor/tab-core-utility 2.2.192 → 2.2.193

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 (85) hide show
  1. package/esm2022/index.mjs +6 -1
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +38 -22
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +14 -50
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +41 -14
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +38 -49
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +84 -30
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +141 -12
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +137 -42
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +89 -38
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +156 -128
  12. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  13. package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +79 -0
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +28 -23
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +9 -11
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -45
  18. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +79 -76
  19. package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +76 -0
  20. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +38 -0
  21. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +8 -4
  22. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +8 -33
  23. package/esm2022/lib/tab-core-utility/app/helpers/transition-response.adapter.mjs +83 -0
  24. package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
  25. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  26. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +42 -0
  27. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +39 -1
  28. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +36 -7
  29. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +84 -47
  30. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +24 -13
  31. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +57 -23
  32. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +21 -10
  33. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +12 -6
  34. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +11 -4
  35. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +17 -16
  36. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -55
  37. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +1 -164
  38. package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +36 -11
  39. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +78 -1
  40. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +90 -0
  41. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +268 -0
  42. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +207 -0
  43. package/index.d.ts +5 -0
  44. package/lib/tab-core-utility/app/constants/api-constants.d.ts +25 -18
  45. package/lib/tab-core-utility/app/constants/common.d.ts +9 -0
  46. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  47. package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +14 -8
  48. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +8 -1
  49. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +20 -10
  50. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +33 -6
  51. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +50 -8
  52. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +16 -21
  53. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +34 -19
  54. package/lib/tab-core-utility/app/enums/query.enum.d.ts +3 -6
  55. package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +32 -0
  56. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +5 -8
  57. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +3 -0
  58. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  59. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +7 -51
  60. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +1 -0
  61. package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +29 -0
  62. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +22 -0
  63. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +2 -1
  64. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +1 -0
  65. package/lib/tab-core-utility/app/helpers/transition-response.adapter.d.ts +30 -0
  66. package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -1
  67. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +56 -6
  68. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +84 -0
  69. package/lib/tab-core-utility/app/models/api-query.class.d.ts +54 -9
  70. package/lib/tab-core-utility/app/models/app-field.model.d.ts +4 -2
  71. package/lib/tab-core-utility/app/models/app-object.model.d.ts +5 -3
  72. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  73. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +7 -2
  74. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  75. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  76. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  77. package/lib/tab-core-utility/app/utils/json.util.d.ts +3 -2
  78. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +1 -9
  79. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +0 -61
  80. package/lib/tab-core-utility/auth/auth.service.d.ts +6 -0
  81. package/lib/tab-core-utility/core/http-client/api.service.d.ts +46 -0
  82. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +40 -0
  83. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +73 -0
  84. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +122 -0
  85. package/package.json +3 -2
@@ -9,43 +9,46 @@ export class AppObjectModel {
9
9
  this.dsqMap = new Map();
10
10
  this.allFields = [];
11
11
  this.allDSQs = [];
12
- this.ID = raw?.ID;
13
- this.ObjectName = raw?.ObjectName;
14
- this.DisplayName = raw?.DisplayName;
15
- this.Description = raw?.Description;
16
- this.SystemDBTableName = raw?.SystemDBTableName;
17
- this.IsSystem = raw?.IsSystem;
18
- this.IsVisible = raw?.IsVisible;
19
- this.IsDeprecated = raw?.IsDeprecated;
20
- this.IsSupportBluePrint = raw?.IsSupportBluePrint;
21
- this.IsLocationTracking = raw?.IsLocationTracking;
22
- this.ObjectType = raw?.ObjectType;
23
- this.DeploymentStatus = raw?.DeploymentStatus;
24
- this.CreationType = raw?.CreationType;
25
- this.AllowVersioning = raw?.AllowVersioning;
26
- this.EnableTracking = raw?.EnableTracking;
27
- this.AllowSearchable = raw?.AllowSearchable;
28
- this.AllowReports = raw?.AllowReports;
29
- this.AllowActivities = raw?.AllowActivities;
30
- this.AllowSharing = raw?.AllowSharing;
31
- this.AllowSoftDelete = raw?.AllowSoftDelete;
32
- this.IsReplicationNeeded = raw?.IsReplicationNeeded;
33
- this.IsCacheEnable = raw?.IsCacheEnable;
34
- this.CacheTtl = raw?.CacheTtl;
35
- this.AppObjectConfiguration = raw?.AppObjectConfiguration;
36
- this.CRUDAppObjectId = raw?.CRUDAppObjectId;
37
- this.ConnectionId = raw?.ConnectionId;
38
- this.IsSupportLayout = raw?.IsSupportLayout;
39
- this.AccessList = raw?.AccessList;
40
- this.Resources = raw?.Resources;
41
- this.ChildRelationShips = raw?.ChildRelationShips;
42
- this.AppId = raw?.RecordInfo?.AppId?.toLowerCase();
12
+ this.parsedAppObjectJson = null;
13
+ this.parsedAppObjectJson = this.parseAppObjectJson(raw?.appObjectJson);
14
+ this.ID = raw?.appObjectId;
15
+ this.ObjectName = raw?.appObjectName;
16
+ this.DisplayName = this.parsedAppObjectJson?.DisplayName;
17
+ this.Description = this.parsedAppObjectJson?.Description;
18
+ this.SystemDBTableName = this.parsedAppObjectJson?.SystemDBTableName;
19
+ this.IsSystem = this.parsedAppObjectJson?.IsSystem;
20
+ this.IsVisible = this.parsedAppObjectJson?.IsVisible;
21
+ this.IsDeprecated = this.parsedAppObjectJson?.IsDeprecated;
22
+ this.IsSupportBluePrint = this.parsedAppObjectJson?.IsSupportBluePrint;
23
+ this.IsLocationTracking = this.parsedAppObjectJson?.IsLocationTracking;
24
+ this.ObjectType = this.parsedAppObjectJson?.ObjectType;
25
+ this.DeploymentStatus = this.parsedAppObjectJson?.DeploymentStatus;
26
+ this.CreationType = this.parsedAppObjectJson?.CreationType;
27
+ this.AllowVersioning = this.parsedAppObjectJson?.AllowVersioning;
28
+ this.EnableTracking = this.parsedAppObjectJson?.EnableTracking;
29
+ this.AllowSearchable = this.parsedAppObjectJson?.AllowSearchable;
30
+ this.AllowReports = this.parsedAppObjectJson?.AllowReports;
31
+ this.AllowActivities = this.parsedAppObjectJson?.AllowActivities;
32
+ this.AllowSharing = this.parsedAppObjectJson?.AllowSharing;
33
+ this.AllowSoftDelete = this.parsedAppObjectJson?.AllowSoftDelete;
34
+ this.IsReplicationNeeded = this.parsedAppObjectJson?.IsReplicationNeeded;
35
+ this.IsCacheEnable = this.parsedAppObjectJson?.IsCacheEnable;
36
+ this.CacheTtl = this.parsedAppObjectJson?.CacheTtl;
37
+ this.AppObjectConfiguration = this.parsedAppObjectJson?.AppObjectConfiguration;
38
+ this.CRUDAppObjectId = this.parsedAppObjectJson?.CRUDAppObjectId;
39
+ this.ConnectionId = this.parsedAppObjectJson?.ConnectionId;
40
+ this.IsSupportLayout = this.parsedAppObjectJson?.IsSupportLayout;
41
+ this.AccessList = this.parsedAppObjectJson?.AccessList;
42
+ this.Resources = this.parsedAppObjectJson?.Resources;
43
+ this.ChildRelationShips = this.parsedAppObjectJson?.ChildRelationShips;
44
+ this.AppId = this.parsedAppObjectJson?.RecordInfo?.AppId?.toLowerCase();
45
+ }
46
+ parseAppObjectJson(appObjectJson) {
43
47
  try {
44
- this.parsedAppObjectConfiguration = JSON.parse(this.AppObjectConfiguration || '{}');
48
+ return typeof appObjectJson === 'string' ? JSON.parse(appObjectJson) : (appObjectJson ?? {});
45
49
  }
46
- catch (e) {
47
- console.warn('Invalid AppObjectConfiguration JSON', e);
48
- this.parsedAppObjectConfiguration = {};
50
+ catch {
51
+ return {};
49
52
  }
50
53
  }
51
54
  /**
@@ -56,10 +59,10 @@ export class AppObjectModel {
56
59
  */
57
60
  fields() {
58
61
  if (!this.allFields?.length) {
59
- this.allFields = (this.raw?.Fields ?? []).map((field) => {
62
+ this.allFields = (this.parsedAppObjectJson?.Fields ?? []).map((field) => {
60
63
  const model = new AppFieldModel(field);
61
64
  // Cache the field in a map by ID
62
- this.fieldMap.set(field?.ID?.toLowerCase(), model);
65
+ this.fieldMap.set(field?.Id?.toLowerCase(), model);
63
66
  return model;
64
67
  });
65
68
  }
@@ -81,7 +84,7 @@ export class AppObjectModel {
81
84
  return this.fieldMap.get(idOrName);
82
85
  }
83
86
  // Convert the idOrName to lowercase for case-insensitive search
84
- const idLower = idOrName.toLowerCase();
87
+ const idLower = idOrName?.toLowerCase();
85
88
  // Find the field by matching ID or name, case-insensitively
86
89
  return this.allFields?.find(f => f.ID?.toLowerCase() === idLower || f.FieldName?.toLowerCase() === idLower || f.DisplayName?.toLowerCase() === idLower);
87
90
  }
@@ -115,13 +118,13 @@ export class AppObjectModel {
115
118
  dataSourceQueries() {
116
119
  // Check if allDSQs is empty or undefined
117
120
  if (!this.allDSQs?.length) {
118
- // Map the raw DataSourceQueries to DataSourceQueryModel instances
119
- this.allDSQs = (this.raw?.DataSourceQueries ?? []).map((dsq) => {
121
+ // Map the raw queries to DataSourceQueryModel instances
122
+ this.allDSQs = (this.raw?.queries ?? []).map((dsq) => {
120
123
  const model = new DataSourceQueryModel(dsq, this, this.metadataHelper);
121
124
  // Cache the DataSourceQuery in a map by ID, QueryName, and DisplayName
122
- this.dsqMap.set(dsq?.ID?.toLowerCase(), model);
123
- this.dsqMap.set(dsq?.QueryName, model);
124
- this.dsqMap.set(dsq?.DisplayName, model);
125
+ this.dsqMap.set(dsq?.queryId?.toLowerCase(), model);
126
+ this.dsqMap.set(dsq?.queryName, model);
127
+ this.dsqMap.set(dsq?.displayName, model);
125
128
  return model;
126
129
  });
127
130
  }
@@ -178,12 +181,46 @@ export class AppObjectModel {
178
181
  return { fields, dsqs };
179
182
  }
180
183
  /**
181
- * Converts the current object to a JSON object.
184
+ * Converts the current object to JSON in the old API format (PascalCase).
185
+ * This ensures backward compatibility with code expecting the old format.
182
186
  *
183
- * @returns {any} The raw data as a JSON object.
187
+ * @returns {any} The data in old API format.
184
188
  */
185
189
  toJSON() {
186
- return this.raw;
190
+ return {
191
+ ID: this.ID,
192
+ ObjectName: this.ObjectName,
193
+ DisplayName: this.DisplayName,
194
+ Description: this.Description,
195
+ SystemDBTableName: this.SystemDBTableName,
196
+ IsSystem: this.IsSystem,
197
+ IsVisible: this.IsVisible,
198
+ IsDeprecated: this.IsDeprecated,
199
+ IsSupportBluePrint: this.IsSupportBluePrint,
200
+ IsLocationTracking: this.IsLocationTracking,
201
+ ObjectType: this.ObjectType,
202
+ DeploymentStatus: this.DeploymentStatus,
203
+ CreationType: this.CreationType,
204
+ AllowVersioning: this.AllowVersioning,
205
+ EnableTracking: this.EnableTracking,
206
+ AllowSearchable: this.AllowSearchable,
207
+ AllowReports: this.AllowReports,
208
+ AllowActivities: this.AllowActivities,
209
+ AllowSharing: this.AllowSharing,
210
+ AllowSoftDelete: this.AllowSoftDelete,
211
+ IsReplicationNeeded: this.IsReplicationNeeded,
212
+ IsCacheEnable: this.IsCacheEnable,
213
+ CacheTtl: this.CacheTtl,
214
+ AppObjectConfiguration: this.AppObjectConfiguration,
215
+ CRUDAppObjectId: this.CRUDAppObjectId,
216
+ ConnectionId: this.ConnectionId,
217
+ IsSupportLayout: this.IsSupportLayout,
218
+ AccessList: this.AccessList,
219
+ Resources: this.Resources,
220
+ ChildRelationShips: this.ChildRelationShips,
221
+ Fields: this.fields().map(f => f.toJSON()),
222
+ DataSourceQueries: this.dataSourceQueries().map(dsq => dsq.toJSON())
223
+ };
187
224
  }
188
225
  }
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW9iamVjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLGNBQWM7SUF5Q3pCLFlBQTZCLEdBQVEsRUFBVSxjQUE4QjtRQUFoRCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBTjdFLGFBQWE7UUFDSSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQzFELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO1FBRzNDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxVQUFVLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLGlCQUFpQixDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElB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LFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxPQUFPLENBQ25JLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHFCQUFxQixDQUFDLFFBQWdEO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDakIsb0NBQW9DO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFakUsaURBQWlEO1FBQ2pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV0RSw0QkFBNEI7UUFDNUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYXBwLW9iamVjdC5tb2RlbC50c1xyXG5pbXBvcnQgeyBPYmplY3RUeXBlIH0gZnJvbSAnLi4vZW51bXMvY29tbW9uLmVudW0nO1xyXG5pbXBvcnQgeyBPYmplY3RDcmVhdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IERlcGxveW1lbnRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcy9wZXJtaXNzaW9uLmVudW0nO1xyXG5pbXBvcnQgeyBDaGlsZFJlbGF0aW9uU2hpcCB9IGZyb20gJy4vYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IEFwcEZpZWxkTW9kZWwgfSBmcm9tICcuL2FwcC1maWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IE9iamVjdEFjY2VzcyB9IGZyb20gJy4vYXBwLW9iamVjdC5jbGFzcyc7XHJcbmltcG9ydCB7IFJlc291cmNlcyB9IGZyb20gJy4vY29tbW9uLmNsYXNzJztcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgfSBmcm9tICcuL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBBcHBPYmplY3RNb2RlbCB7XHJcbiAgLy8gUHJvcGVydGllc1xyXG4gIHJlYWRvbmx5IElEOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgT2JqZWN0TmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRGVzY3JpcHRpb246IHN0cmluZztcclxuICByZWFkb25seSBTeXN0ZW1EQlRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IElzU3lzdGVtOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IElzVmlzaWJsZTogYm9vbGVhbjtcclxuICByZWFkb25seSBJc0RlcHJlY2F0ZWQ6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgSXNTdXBwb3J0Qmx1ZVByaW50OiBib29sZWFuIHwgbnVsbDtcclxuICByZWFkb25seSBJc0xvY2F0aW9uVHJhY2tpbmc6IGJvb2xlYW4gfCBudWxsO1xyXG4gIHJlYWRvbmx5IE9iamVjdFR5cGU6IE9iamVjdFR5cGU7XHJcbiAgcmVhZG9ubHkgRGVwbG95bWVudFN0YXR1czogRGVwbG95bWVudFN0YXR1cztcclxuICByZWFkb25seSBDcmVhdGlvblR5cGU6IE9iamVjdENyZWF0aW9uVHlwZTtcclxuICByZWFkb25seSBBbGxvd1ZlcnNpb25pbmc6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgRW5hYmxlVHJhY2tpbmc6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgQWxsb3dTZWFyY2hhYmxlOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IEFsbG93UmVwb3J0czogYm9vbGVhbjtcclxuICByZWFkb25seSBBbGxvd0FjdGl2aXRpZXM6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgQWxsb3dTaGFyaW5nOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IEFsbG93U29mdERlbGV0ZTogYm9vbGVhbiB8IG51bGw7XHJcbiAgcmVhZG9ubHkgSXNSZXBsaWNhdGlvbk5lZWRlZDogYm9vbGVhbiB8IG51bGw7XHJcbiAgcmVhZG9ubHkgSXNDYWNoZUVuYWJsZTogYm9vbGVhbiB8IG51bGw7XHJcbiAgcmVhZG9ubHkgQ2FjaGVUdGw6IG51bWJlciB8IG51bGw7XHJcbiAgcmVhZG9ubHkgQXBwT2JqZWN0Q29uZmlndXJhdGlvbjogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IENSVURBcHBPYmplY3RJZDogc3RyaW5nIHwgbnVsbDtcclxuICByZWFkb25seSBDb25uZWN0aW9uSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgcmVhZG9ubHkgSXNTdXBwb3J0TGF5b3V0OiBib29sZWFuIHwgbnVsbDtcclxuICByZWFkb25seSBBY2Nlc3NMaXN0OiBBcnJheTxPYmplY3RBY2Nlc3M+O1xyXG4gIHJlYWRvbmx5IFJlc291cmNlczogQXJyYXk8UmVzb3VyY2VzPjtcclxuICByZWFkb25seSBDaGlsZFJlbGF0aW9uU2hpcHM6IEFycmF5PENoaWxkUmVsYXRpb25TaGlwPjtcclxuICByZWFkb25seSBwYXJzZWRBcHBPYmplY3RDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgcmVhZG9ubHkgQXBwSWQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIC8vIENhY2hlIG1hcHNcclxuICBwcml2YXRlIHJlYWRvbmx5IGZpZWxkTWFwID0gbmV3IE1hcDxzdHJpbmcsIEFwcEZpZWxkTW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkc3FNYXAgPSBuZXcgTWFwPHN0cmluZywgRGF0YVNvdXJjZVF1ZXJ5TW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSBhbGxGaWVsZHM6IEFwcEZpZWxkTW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgYWxsRFNRczogRGF0YVNvdXJjZVF1ZXJ5TW9kZWxbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LCBwcml2YXRlIG1ldGFkYXRhSGVscGVyOiBNZXRhZGF0YUhlbHBlcikge1xyXG4gICAgdGhpcy5JRCA9IHJhdz8uSUQ7XHJcbiAgICB0aGlzLk9iamVjdE5hbWUgPSByYXc/Lk9iamVjdE5hbWU7XHJcbiAgICB0aGlzLkRpc3BsYXlOYW1lID0gcmF3Py5EaXNwbGF5TmFtZTtcclxuICAgIHRoaXMuRGVzY3JpcHRpb24gPSByYXc/LkRlc2NyaXB0aW9uO1xyXG4gICAgdGhpcy5TeXN0ZW1EQlRhYmxlTmFtZSA9IHJhdz8uU3lzdGVtREJUYWJsZU5hbWU7XHJcbiAgICB0aGlzLklzU3lzdGVtID0gcmF3Py5Jc1N5c3RlbTtcclxuICAgIHRoaXMuSXNWaXNpYmxlID0gcmF3Py5Jc1Zpc2libGU7XHJcbiAgICB0aGlzLklzRGVwcmVjYXRlZCA9IHJhdz8uSXNEZXByZWNhdGVkO1xyXG4gICAgdGhpcy5Jc1N1cHBvcnRCbHVlUHJpbnQgPSByYXc/LklzU3VwcG9ydEJsdWVQcmludDtcclxuICAgIHRoaXMuSXNMb2NhdGlvblRyYWNraW5nID0gcmF3Py5Jc0xvY2F0aW9uVHJhY2tpbmc7XHJcbiAgICB0aGlzLk9iamVjdFR5cGUgPSByYXc/Lk9iamVjdFR5cGU7XHJcbiAgICB0aGlzLkRlcGxveW1lbnRTdGF0dXMgPSByYXc/LkRlcGxveW1lbnRTdGF0dXM7XHJcbiAgICB0aGlzLkNyZWF0aW9uVHlwZSA9IHJhdz8uQ3JlYXRpb25UeXBlO1xyXG4gICAgdGhpcy5BbGxvd1ZlcnNpb25pbmcgPSByYXc/LkFsbG93VmVyc2lvbmluZztcclxuICAgIHRoaXMuRW5hYmxlVHJhY2tpbmcgPSByYXc/LkVuYWJsZVRyYWNraW5nO1xyXG4gICAgdGhpcy5BbGxvd1NlYXJjaGFibGUgPSByYXc/LkFsbG93U2VhcmNoYWJsZTtcclxuICAgIHRoaXMuQWxsb3dSZXBvcnRzID0gcmF3Py5BbGxvd1JlcG9ydHM7XHJcbiAgICB0aGlzLkFsbG93QWN0aXZpdGllcyA9IHJhdz8uQWxsb3dBY3Rpdml0aWVzO1xyXG4gICAgdGhpcy5BbGxvd1NoYXJpbmcgPSByYXc/LkFsbG93U2hhcmluZztcclxuICAgIHRoaXMuQWxsb3dTb2Z0RGVsZXRlID0gcmF3Py5BbGxvd1NvZnREZWxldGU7XHJcbiAgICB0aGlzLklzUmVwbGljYXRpb25OZWVkZWQgPSByYXc/LklzUmVwbGljYXRpb25OZWVkZWQ7XHJcbiAgICB0aGlzLklzQ2FjaGVFbmFibGUgPSByYXc/LklzQ2FjaGVFbmFibGU7XHJcbiAgICB0aGlzLkNhY2hlVHRsID0gcmF3Py5DYWNoZVR0bDtcclxuICAgIHRoaXMuQXBwT2JqZWN0Q29uZmlndXJhdGlvbiA9IHJhdz8uQXBwT2JqZWN0Q29uZmlndXJhdGlvbjtcclxuICAgIHRoaXMuQ1JVREFwcE9iamVjdElkID0gcmF3Py5DUlVEQXBwT2JqZWN0SWQ7XHJcbiAgICB0aGlzLkNvbm5lY3Rpb25JZCA9IHJhdz8uQ29ubmVjdGlvbklkO1xyXG4gICAgdGhpcy5Jc1N1cHBvcnRMYXlvdXQgPSByYXc/LklzU3VwcG9ydExheW91dDtcclxuICAgIHRoaXMuQWNjZXNzTGlzdCA9IHJhdz8uQWNjZXNzTGlzdDtcclxuICAgIHRoaXMuUmVzb3VyY2VzID0gcmF3Py5SZXNvdXJjZXM7XHJcbiAgICB0aGlzLkNoaWxkUmVsYXRpb25TaGlwcyA9IHJhdz8uQ2hpbGRSZWxhdGlvblNoaXBzO1xyXG4gICAgdGhpcy5BcHBJZCA9IHJhdz8uUmVjb3JkSW5mbz8uQXBwSWQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5wYXJzZWRBcHBPYmplY3RDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZSh0aGlzLkFwcE9iamVjdENvbmZpZ3VyYXRpb24gfHwgJ3t9Jyk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybignSW52YWxpZCBBcHBPYmplY3RDb25maWd1cmF0aW9uIEpTT04nLCBlKTtcclxuICAgICAgdGhpcy5wYXJzZWRBcHBPYmplY3RDb25maWd1cmF0aW9uID0ge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXR1cm5zIGFsbCBmaWVsZHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgQXBwT2JqZWN0LiBUaGUgZmllbGRzIGFyZSBjYWNoZWQgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzXHJcbiAgICogYXJlIGZhc3Rlci4gVGhlIGNhY2hlIGlzIHN0b3JlZCBpbiBhIG1hcCBieSBJRC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtBcHBGaWVsZE1vZGVsW119IEFuIGFycmF5IG9mIEFwcEZpZWxkTW9kZWwgb2JqZWN0cy5cclxuICAgKi9cclxuICBmaWVsZHMoKTogQXBwRmllbGRNb2RlbFtdIHtcclxuICAgIGlmICghdGhpcy5hbGxGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmFsbEZpZWxkcyA9ICh0aGlzLnJhdz8uRmllbGRzID8/IFtdKS5tYXAoKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBBcHBGaWVsZE1vZGVsKGZpZWxkKTtcclxuICAgICAgICAvLyBDYWNoZSB0aGUgZmllbGQgaW4gYSBtYXAgYnkgSURcclxuICAgICAgICB0aGlzLmZpZWxkTWFwLnNldChmaWVsZD8uSUQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcclxuICAgICAgICByZXR1cm4gbW9kZWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWxsRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZmllbGQgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogSWYgdGhlIGZpZWxkIGlzIGNhY2hlZCwgaXQgcmV0dXJucyBpdCBmcm9tIHRoZSBjYWNoZS5cclxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGZpZWxkcy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRPck5hbWUgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgZmllbGQgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWwgfCB1bmRlZmluZWR9IC0gVGhlIGZpZWxkIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxyXG4gICAqL1xyXG4gIGZpZWxkKGlkT3JOYW1lOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIEVuc3VyZSBhbGwgZmllbGRzIGFyZSBsb2FkZWQgYW5kIGNhY2hlZFxyXG4gICAgdGhpcy5maWVsZHMoKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQgaXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSBtYXBcclxuICAgIGlmICh0aGlzLmZpZWxkTWFwLmhhcyhpZE9yTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGRNYXAuZ2V0KGlkT3JOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IHRoZSBpZE9yTmFtZSB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoXHJcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvLyBGaW5kIHRoZSBmaWVsZCBieSBtYXRjaGluZyBJRCBvciBuYW1lLCBjYXNlLWluc2Vuc2l0aXZlbHlcclxuICAgIHJldHVybiB0aGlzLmFsbEZpZWxkcz8uZmluZChcclxuICAgICAgZiA9PiBmLklEPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyIHx8IGYuRmllbGROYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyIHx8IGYuRGlzcGxheU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IGlkTG93ZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYWxsIGZpZWxkcyBvZiB0aGUgYXBwIG9iamVjdCB0aGF0IGFyZSBsb29rdXAgZmllbGRzLlxyXG4gICAqIEEgbG9va3VwIGZpZWxkIGlzIGEgZmllbGQgdGhhdCBoYXMgYSByZWxhdGlvbnNoaXAgd2l0aCBhbm90aGVyIGZpZWxkLlxyXG4gICAqIEl0IGlzIHVzZWQgdG8gcGVyZm9ybSBsb29rdXBzLCBzdWNoIGFzIHJldHJpZXZpbmcgYSBsaXN0IG9mIHZhbHVlc1xyXG4gICAqIGZyb20gYSByZWxhdGVkIGZpZWxkLlxyXG4gICAqIFxyXG4gICAqIEByZXR1cm5zIHtBcHBGaWVsZE1vZGVsW119IC0gQW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzIHRoYXQgYXJlIGxvb2t1cCBmaWVsZHMuXHJcbiAgICovXHJcbiAgbG9va3VwRmllbGRzKCk6IEFwcEZpZWxkTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHMoKS5maWx0ZXIoZmllbGQgPT4gZmllbGQuSXNMb29rdXApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGFwcCBvYmplY3QgdGhhdCBzYXRpc2Z5IHRoZSBnaXZlbiBmaWx0ZXIgZnVuY3Rpb24uXHJcbiAgICogVGhlIGZpbHRlciBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBlYWNoIGZpZWxkIGFzIGFuIGFyZ3VtZW50LCBhbmQgc2hvdWxkIHJldHVybiB0cnVlIGlmIHRoZSBmaWVsZFxyXG4gICAqIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LlxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyB7QXBwRmllbGRNb2RlbFtdfSBUaGUgYXJyYXkgb2YgZmllbGRzIHRoYXQgc2F0aXNmeSB0aGUgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogQXBwRmllbGRNb2RlbCkgPT4gYm9vbGVhbik6IEFwcEZpZWxkTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHMoKS5maWx0ZXIoZmlsdGVyRm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFsbCBkYXRhIHNvdXJjZSBxdWVyaWVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEFwcE9iamVjdC4gXHJcbiAgICogVGhlIHF1ZXJpZXMgYXJlIGNhY2hlZCBmb3IgZmFzdGVyIHN1YnNlcXVlbnQgYWNjZXNzLiBUaGUgY2FjaGUgaXMgc3RvcmVkIGluIGEgbWFwIGJ5IElELCBRdWVyeU5hbWUsIGFuZCBEaXNwbGF5TmFtZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbFtdfSBBbiBhcnJheSBvZiBEYXRhU291cmNlUXVlcnlNb2RlbCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGRhdGFTb3VyY2VRdWVyaWVzKCk6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgYWxsRFNRcyBpcyBlbXB0eSBvciB1bmRlZmluZWRcclxuICAgIGlmICghdGhpcy5hbGxEU1FzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHRoZSByYXcgRGF0YVNvdXJjZVF1ZXJpZXMgdG8gRGF0YVNvdXJjZVF1ZXJ5TW9kZWwgaW5zdGFuY2VzXHJcbiAgICAgIHRoaXMuYWxsRFNRcyA9ICh0aGlzLnJhdz8uRGF0YVNvdXJjZVF1ZXJpZXMgPz8gW10pLm1hcCgoZHNxOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBEYXRhU291cmNlUXVlcnlNb2RlbChkc3EsIHRoaXMsIHRoaXMubWV0YWRhdGFIZWxwZXIpO1xyXG4gICAgICAgIC8vIENhY2hlIHRoZSBEYXRhU291cmNlUXVlcnkgaW4gYSBtYXAgYnkgSUQsIFF1ZXJ5TmFtZSwgYW5kIERpc3BsYXlOYW1lXHJcbiAgICAgICAgdGhpcy5kc3FNYXAuc2V0KGRzcT8uSUQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcclxuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5RdWVyeU5hbWUsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5EaXNwbGF5TmFtZSwgbW9kZWwpO1xyXG4gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hbGxEU1FzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogSWYgdGhlIHF1ZXJ5IGlzIGNhY2hlZCwgaXQgcmV0dXJucyBpdCBmcm9tIHRoZSBjYWNoZS5cclxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkT3JOYW1lIC0gVGhlIElEIG9yIG5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWQuXHJcbiAgICovXHJcbiAgZGF0YVNvdXJjZVF1ZXJ5KGlkT3JOYW1lOiBzdHJpbmcpOiBEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyBFbnN1cmUgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYXJlIGxvYWRlZCBhbmQgY2FjaGVkXHJcbiAgICB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUgbWFwXHJcbiAgICBpZiAodGhpcy5kc3FNYXAuaGFzKGlkT3JOYW1lKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kc3FNYXAuZ2V0KGlkT3JOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IHRoZSBpZE9yTmFtZSB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoXHJcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvLyBGaW5kIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBieSBtYXRjaGluZyBRdWVyeU5hbWUgb3IgRGlzcGxheU5hbWUsIGNhc2UtaW5zZW5zaXRpdmVseVxyXG4gICAgcmV0dXJuIHRoaXMuYWxsRFNRcz8uZmluZChcclxuICAgICAgZHNxID0+IGRzcS5JRD8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBkc3EuUXVlcnlOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyIHx8IGRzcS5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzIHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZWFjaCBkYXRhIHNvdXJjZSBxdWVyeSBhcyBhbiBhcmd1bWVudC5cclxuICAgKiBJZiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzLlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbFtdfSAtIFRoZSBhcnJheSBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzIHRoYXQgc2F0aXNmeSB0aGUgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIGZpbmREYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbjogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCkuZmlsdGVyKGZpbHRlckZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgZ2l2ZW4gdGVybSBpbiB0aGUgZmllbGRzIGFuZCBkYXRhIHNvdXJjZSBxdWVyaWVzIG9mIHRoaXMgQXBwT2JqZWN0LlxyXG4gICAqIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcGVyZm9ybWVkIG9uIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxyXG4gICAqICAgLSBGaWVsZCBuYW1lIGFuZCBkZXNjcmlwdGlvblxyXG4gICAqICAgLSBEYXRhIHNvdXJjZSBxdWVyeSBuYW1lLCBkaXNwbGF5IG5hbWUsIGFuZCBkZXNjcmlwdGlvblxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHJldHVybnMge3sgZmllbGRzOiBBcHBGaWVsZE1vZGVsW107IGRzcXM6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10gfX0gLSBBbiBvYmplY3Qgd2l0aCB0aGUgc2VhcmNoIHJlc3VsdHMuXHJcbiAgICogICBUaGUgYGZpZWxkc2AgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCB0ZXJtLlxyXG4gICAqICAgVGhlIGBkc3FzYCBwcm9wZXJ0eSBjb250YWlucyBhbiBhcnJheSBvZiBEYXRhU291cmNlUXVlcnlNb2RlbCBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCB0ZXJtLlxyXG4gICAqL1xyXG4gIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB7IGZpZWxkczogQXBwRmllbGRNb2RlbFtdOyBkc3FzOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIH0ge1xyXG4gICAgLy8gU2VhcmNoIGZvciB0aGUgdGVybSBpbiB0aGUgZmllbGRzXHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5zZWFyY2godGVybSkpO1xyXG5cclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRlcm0gaW4gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXNcclxuICAgIGNvbnN0IGRzcXMgPSB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCkuZmlsdGVyKGRzcSA9PiBkc3Euc2VhcmNoKHRlcm0pKTtcclxuXHJcbiAgICAvLyBSZXR1cm4gdGhlIHNlYXJjaCByZXN1bHRzXHJcbiAgICByZXR1cm4geyBmaWVsZHMsIGRzcXMgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG9iamVjdCB0byBhIEpTT04gb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge2FueX0gVGhlIHJhdyBkYXRhIGFzIGEgSlNPTiBvYmplY3QuXHJcbiAgICovXHJcbiAgdG9KU09OKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5yYXc7XHJcbiAgfVxyXG59Il19
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLW9iamVjdC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLW9iamVjdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsTUFBTSxPQUFPLGNBQWM7SUF5Q3pCLFlBQTZCLEdBQVEsRUFBVSxjQUE4QjtRQUFoRCxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUDdFLGFBQWE7UUFDSSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO1FBQzFELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBMkIsRUFBRSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFRLElBQUksQ0FBQztRQUd0QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUV2RSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsYUFBYSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztRQUNyRSxJ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WUFDckMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JFLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhcHAtb2JqZWN0Lm1vZGVsLnRzXHJcbmltcG9ydCB7IE9iamVjdFR5cGUgfSBmcm9tICcuLi9lbnVtcy9jb21tb24uZW51bSc7XHJcbmltcG9ydCB7IE9iamVjdENyZWF0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgRGVwbG95bWVudFN0YXR1cyB9IGZyb20gJy4uL2VudW1zL3Blcm1pc3Npb24uZW51bSc7XHJcbmltcG9ydCB7IENoaWxkUmVsYXRpb25TaGlwIH0gZnJvbSAnLi9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzJztcclxuaW1wb3J0IHsgQXBwRmllbGRNb2RlbCB9IGZyb20gJy4vYXBwLWZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgT2JqZWN0QWNjZXNzIH0gZnJvbSAnLi9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgUmVzb3VyY2VzIH0gZnJvbSAnLi9jb21tb24uY2xhc3MnO1xyXG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnlNb2RlbCB9IGZyb20gJy4vZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFwcE9iamVjdE1vZGVsIHtcclxuICAvLyBQcm9wZXJ0aWVzXHJcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICByZWFkb25seSBPYmplY3ROYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRGlzcGxheU5hbWU6IHN0cmluZztcclxuICByZWFkb25seSBEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IFN5c3RlbURCVGFibGVOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgSXNTeXN0ZW06IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgSXNWaXNpYmxlOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IElzRGVwcmVjYXRlZDogYm9vbGVhbjtcclxuICByZWFkb25seSBJc1N1cHBvcnRCbHVlUHJpbnQ6IGJvb2xlYW4gfCBudWxsO1xyXG4gIHJlYWRvbmx5IElzTG9jYXRpb25UcmFja2luZzogYm9vbGVhbiB8IG51bGw7XHJcbiAgcmVhZG9ubHkgT2JqZWN0VHlwZTogT2JqZWN0VHlwZTtcclxuICByZWFkb25seSBEZXBsb3ltZW50U3RhdHVzOiBEZXBsb3ltZW50U3RhdHVzO1xyXG4gIHJlYWRvbmx5IENyZWF0aW9uVHlwZTogT2JqZWN0Q3JlYXRpb25UeXBlO1xyXG4gIHJlYWRvbmx5IEFsbG93VmVyc2lvbmluZzogYm9vbGVhbjtcclxuICByZWFkb25seSBFbmFibGVUcmFja2luZzogYm9vbGVhbjtcclxuICByZWFkb25seSBBbGxvd1NlYXJjaGFibGU6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgQWxsb3dSZXBvcnRzOiBib29sZWFuO1xyXG4gIHJlYWRvbmx5IEFsbG93QWN0aXZpdGllczogYm9vbGVhbjtcclxuICByZWFkb25seSBBbGxvd1NoYXJpbmc6IGJvb2xlYW47XHJcbiAgcmVhZG9ubHkgQWxsb3dTb2Z0RGVsZXRlOiBib29sZWFuIHwgbnVsbDtcclxuICByZWFkb25seSBJc1JlcGxpY2F0aW9uTmVlZGVkOiBib29sZWFuIHwgbnVsbDtcclxuICByZWFkb25seSBJc0NhY2hlRW5hYmxlOiBib29sZWFuIHwgbnVsbDtcclxuICByZWFkb25seSBDYWNoZVR0bDogbnVtYmVyIHwgbnVsbDtcclxuICByZWFkb25seSBBcHBPYmplY3RDb25maWd1cmF0aW9uOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgQ1JVREFwcE9iamVjdElkOiBzdHJpbmcgfCBudWxsO1xyXG4gIHJlYWRvbmx5IENvbm5lY3Rpb25JZDogc3RyaW5nIHwgbnVsbDtcclxuICByZWFkb25seSBJc1N1cHBvcnRMYXlvdXQ6IGJvb2xlYW4gfCBudWxsO1xyXG4gIHJlYWRvbmx5IEFjY2Vzc0xpc3Q6IEFycmF5PE9iamVjdEFjY2Vzcz47XHJcbiAgcmVhZG9ubHkgUmVzb3VyY2VzOiBBcnJheTxSZXNvdXJjZXM+O1xyXG4gIHJlYWRvbmx5IENoaWxkUmVsYXRpb25TaGlwczogQXJyYXk8Q2hpbGRSZWxhdGlvblNoaXA+O1xyXG4gIHJlYWRvbmx5IEFwcElkOiBzdHJpbmcgfCBudWxsO1xyXG5cclxuICAvLyBDYWNoZSBtYXBzXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmaWVsZE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcHBGaWVsZE1vZGVsPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZHNxTWFwID0gbmV3IE1hcDxzdHJpbmcsIERhdGFTb3VyY2VRdWVyeU1vZGVsPigpO1xyXG4gIHByaXZhdGUgYWxsRmllbGRzOiBBcHBGaWVsZE1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIGFsbERTUXM6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIHBhcnNlZEFwcE9iamVjdEpzb246IGFueSA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmF3OiBhbnksIHByaXZhdGUgbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyKSB7XHJcbiAgICB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24gPSB0aGlzLnBhcnNlQXBwT2JqZWN0SnNvbihyYXc/LmFwcE9iamVjdEpzb24pO1xyXG5cclxuICAgIHRoaXMuSUQgPSByYXc/LmFwcE9iamVjdElkO1xyXG4gICAgdGhpcy5PYmplY3ROYW1lID0gcmF3Py5hcHBPYmplY3ROYW1lO1xyXG4gICAgdGhpcy5EaXNwbGF5TmFtZSA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uRGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLkRlc2NyaXB0aW9uID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5EZXNjcmlwdGlvbjtcclxuICAgIHRoaXMuU3lzdGVtREJUYWJsZU5hbWUgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgdGhpcy5Jc1N5c3RlbSA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uSXNTeXN0ZW07XHJcbiAgICB0aGlzLklzVmlzaWJsZSA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uSXNWaXNpYmxlO1xyXG4gICAgdGhpcy5Jc0RlcHJlY2F0ZWQgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LklzRGVwcmVjYXRlZDtcclxuICAgIHRoaXMuSXNTdXBwb3J0Qmx1ZVByaW50ID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5Jc1N1cHBvcnRCbHVlUHJpbnQ7XHJcbiAgICB0aGlzLklzTG9jYXRpb25UcmFja2luZyA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uSXNMb2NhdGlvblRyYWNraW5nO1xyXG4gICAgdGhpcy5PYmplY3RUeXBlID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5PYmplY3RUeXBlO1xyXG4gICAgdGhpcy5EZXBsb3ltZW50U3RhdHVzID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5EZXBsb3ltZW50U3RhdHVzO1xyXG4gICAgdGhpcy5DcmVhdGlvblR5cGUgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkNyZWF0aW9uVHlwZTtcclxuICAgIHRoaXMuQWxsb3dWZXJzaW9uaW5nID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5BbGxvd1ZlcnNpb25pbmc7XHJcbiAgICB0aGlzLkVuYWJsZVRyYWNraW5nID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5FbmFibGVUcmFja2luZztcclxuICAgIHRoaXMuQWxsb3dTZWFyY2hhYmxlID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5BbGxvd1NlYXJjaGFibGU7XHJcbiAgICB0aGlzLkFsbG93UmVwb3J0cyA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uQWxsb3dSZXBvcnRzO1xyXG4gICAgdGhpcy5BbGxvd0FjdGl2aXRpZXMgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkFsbG93QWN0aXZpdGllcztcclxuICAgIHRoaXMuQWxsb3dTaGFyaW5nID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5BbGxvd1NoYXJpbmc7XHJcbiAgICB0aGlzLkFsbG93U29mdERlbGV0ZSA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uQWxsb3dTb2Z0RGVsZXRlO1xyXG4gICAgdGhpcy5Jc1JlcGxpY2F0aW9uTmVlZGVkID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5Jc1JlcGxpY2F0aW9uTmVlZGVkO1xyXG4gICAgdGhpcy5Jc0NhY2hlRW5hYmxlID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5Jc0NhY2hlRW5hYmxlO1xyXG4gICAgdGhpcy5DYWNoZVR0bCA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uQ2FjaGVUdGw7XHJcbiAgICB0aGlzLkFwcE9iamVjdENvbmZpZ3VyYXRpb24gPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkFwcE9iamVjdENvbmZpZ3VyYXRpb247XHJcbiAgICB0aGlzLkNSVURBcHBPYmplY3RJZCA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uQ1JVREFwcE9iamVjdElkO1xyXG4gICAgdGhpcy5Db25uZWN0aW9uSWQgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkNvbm5lY3Rpb25JZDtcclxuICAgIHRoaXMuSXNTdXBwb3J0TGF5b3V0ID0gdGhpcy5wYXJzZWRBcHBPYmplY3RKc29uPy5Jc1N1cHBvcnRMYXlvdXQ7XHJcbiAgICB0aGlzLkFjY2Vzc0xpc3QgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkFjY2Vzc0xpc3Q7XHJcbiAgICB0aGlzLlJlc291cmNlcyA9IHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uUmVzb3VyY2VzO1xyXG4gICAgdGhpcy5DaGlsZFJlbGF0aW9uU2hpcHMgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LkNoaWxkUmVsYXRpb25TaGlwcztcclxuICAgIHRoaXMuQXBwSWQgPSB0aGlzLnBhcnNlZEFwcE9iamVjdEpzb24/LlJlY29yZEluZm8/LkFwcElkPy50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZUFwcE9iamVjdEpzb24oYXBwT2JqZWN0SnNvbjogYW55KTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0eXBlb2YgYXBwT2JqZWN0SnNvbiA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKGFwcE9iamVjdEpzb24pIDogKGFwcE9iamVjdEpzb24gPz8ge30pO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgYWxsIGZpZWxkcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBcHBPYmplY3QuIFRoZSBmaWVsZHMgYXJlIGNhY2hlZCBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHNcclxuICAgKiBhcmUgZmFzdGVyLiBUaGUgY2FjaGUgaXMgc3RvcmVkIGluIGEgbWFwIGJ5IElELlxyXG4gICAqXHJcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWxbXX0gQW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGZpZWxkcygpOiBBcHBGaWVsZE1vZGVsW10ge1xyXG4gICAgaWYgKCF0aGlzLmFsbEZpZWxkcz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxsRmllbGRzID0gKHRoaXMucGFyc2VkQXBwT2JqZWN0SnNvbj8uRmllbGRzID8/IFtdKS5tYXAoKGZpZWxkOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBBcHBGaWVsZE1vZGVsKGZpZWxkKTtcclxuICAgICAgICAvLyBDYWNoZSB0aGUgZmllbGQgaW4gYSBtYXAgYnkgSURcclxuICAgICAgICB0aGlzLmZpZWxkTWFwLnNldChmaWVsZD8uSWQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcclxuICAgICAgICByZXR1cm4gbW9kZWw7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuYWxsRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZmllbGQgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogSWYgdGhlIGZpZWxkIGlzIGNhY2hlZCwgaXQgcmV0dXJucyBpdCBmcm9tIHRoZSBjYWNoZS5cclxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGZpZWxkcy5cclxuICAgKiBcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRPck5hbWUgLSBUaGUgSUQgb3IgbmFtZSBvZiB0aGUgZmllbGQgdG8gcmV0cmlldmUuXHJcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWwgfCB1bmRlZmluZWR9IC0gVGhlIGZpZWxkIG1vZGVsIGlmIGZvdW5kLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxyXG4gICAqL1xyXG4gIGZpZWxkKGlkT3JOYW1lOiBzdHJpbmcpOiBBcHBGaWVsZE1vZGVsIHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIEVuc3VyZSBhbGwgZmllbGRzIGFyZSBsb2FkZWQgYW5kIGNhY2hlZFxyXG4gICAgdGhpcy5maWVsZHMoKTtcclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGQgaXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSBtYXBcclxuICAgIGlmICh0aGlzLmZpZWxkTWFwLmhhcyhpZE9yTmFtZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmllbGRNYXAuZ2V0KGlkT3JOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IHRoZSBpZE9yTmFtZSB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoXHJcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWU/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgLy8gRmluZCB0aGUgZmllbGQgYnkgbWF0Y2hpbmcgSUQgb3IgbmFtZSwgY2FzZS1pbnNlbnNpdGl2ZWx5XHJcbiAgICByZXR1cm4gdGhpcy5hbGxGaWVsZHM/LmZpbmQoXHJcbiAgICAgIGYgPT4gZi5JRD8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBmLkZpZWxkTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBmLkRpc3BsYXlOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFsbCBmaWVsZHMgb2YgdGhlIGFwcCBvYmplY3QgdGhhdCBhcmUgbG9va3VwIGZpZWxkcy5cclxuICAgKiBBIGxvb2t1cCBmaWVsZCBpcyBhIGZpZWxkIHRoYXQgaGFzIGEgcmVsYXRpb25zaGlwIHdpdGggYW5vdGhlciBmaWVsZC5cclxuICAgKiBJdCBpcyB1c2VkIHRvIHBlcmZvcm0gbG9va3Vwcywgc3VjaCBhcyByZXRyaWV2aW5nIGEgbGlzdCBvZiB2YWx1ZXNcclxuICAgKiBmcm9tIGEgcmVsYXRlZCBmaWVsZC5cclxuICAgKiBcclxuICAgKiBAcmV0dXJucyB7QXBwRmllbGRNb2RlbFtdfSAtIEFuIGFycmF5IG9mIEFwcEZpZWxkTW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBsb29rdXAgZmllbGRzLlxyXG4gICAqL1xyXG4gIGxvb2t1cEZpZWxkcygpOiBBcHBGaWVsZE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpZWxkID0+IGZpZWxkLklzTG9va3VwKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBmaWVsZHMgZm9yIHRoZSBhcHAgb2JqZWN0IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZWFjaCBmaWVsZCBhcyBhbiBhcmd1bWVudCwgYW5kIHNob3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgZmllbGRcclxuICAgKiBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdC5cclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXHJcbiAgICogQHJldHVybnMge0FwcEZpZWxkTW9kZWxbXX0gVGhlIGFycmF5IG9mIGZpZWxkcyB0aGF0IHNhdGlzZnkgdGhlIGZpbHRlciBmdW5jdGlvbi5cclxuICAgKi9cclxuICBmaW5kRmllbGRzKGZpbHRlckZuOiAoZmllbGQ6IEFwcEZpZWxkTW9kZWwpID0+IGJvb2xlYW4pOiBBcHBGaWVsZE1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpbHRlckZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbGwgZGF0YSBzb3VyY2UgcXVlcmllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBBcHBPYmplY3QuXHJcbiAgICogVGhlIHF1ZXJpZXMgYXJlIGNhY2hlZCBmb3IgZmFzdGVyIHN1YnNlcXVlbnQgYWNjZXNzLiBUaGUgY2FjaGUgaXMgc3RvcmVkIGluIGEgbWFwIGJ5IElELCBRdWVyeU5hbWUsIGFuZCBEaXNwbGF5TmFtZS5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbFtdfSBBbiBhcnJheSBvZiBEYXRhU291cmNlUXVlcnlNb2RlbCBvYmplY3RzLlxyXG4gICAqL1xyXG4gIGRhdGFTb3VyY2VRdWVyaWVzKCk6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgYWxsRFNRcyBpcyBlbXB0eSBvciB1bmRlZmluZWRcclxuICAgIGlmICghdGhpcy5hbGxEU1FzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHRoZSByYXcgcXVlcmllcyB0byBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZXNcclxuICAgICAgdGhpcy5hbGxEU1FzID0gKHRoaXMucmF3Py5xdWVyaWVzID8/IFtdKS5tYXAoKGRzcTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbW9kZWwgPSBuZXcgRGF0YVNvdXJjZVF1ZXJ5TW9kZWwoZHNxLCB0aGlzLCB0aGlzLm1ldGFkYXRhSGVscGVyKTtcclxuICAgICAgICAvLyBDYWNoZSB0aGUgRGF0YVNvdXJjZVF1ZXJ5IGluIGEgbWFwIGJ5IElELCBRdWVyeU5hbWUsIGFuZCBEaXNwbGF5TmFtZVxyXG4gICAgICAgIHRoaXMuZHNxTWFwLnNldChkc3E/LnF1ZXJ5SWQ/LnRvTG93ZXJDYXNlKCksIG1vZGVsKTtcclxuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5xdWVyeU5hbWUsIG1vZGVsKTtcclxuICAgICAgICB0aGlzLmRzcU1hcC5zZXQoZHNxPy5kaXNwbGF5TmFtZSwgbW9kZWwpO1xyXG4gICAgICAgIHJldHVybiBtb2RlbDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5hbGxEU1FzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZGF0YSBzb3VyY2UgcXVlcnkgYnkgaXRzIElEIG9yIG5hbWUuXHJcbiAgICogSWYgdGhlIHF1ZXJ5IGlzIGNhY2hlZCwgaXQgcmV0dXJucyBpdCBmcm9tIHRoZSBjYWNoZS5cclxuICAgKiBPdGhlcndpc2UsIGl0IHNlYXJjaGVzIHRocm91Z2ggYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkT3JOYW1lIC0gVGhlIElEIG9yIG5hbWUgb2YgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRvIHJldHJpZXZlLlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZH0gLSBUaGUgZGF0YSBzb3VyY2UgcXVlcnkgbW9kZWwgaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWQuXHJcbiAgICovXHJcbiAgZGF0YVNvdXJjZVF1ZXJ5KGlkT3JOYW1lOiBzdHJpbmcpOiBEYXRhU291cmNlUXVlcnlNb2RlbCB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyBFbnN1cmUgYWxsIGRhdGEgc291cmNlIHF1ZXJpZXMgYXJlIGxvYWRlZCBhbmQgY2FjaGVkXHJcbiAgICB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGlzIGF2YWlsYWJsZSBpbiB0aGUgY2FjaGUgbWFwXHJcbiAgICBpZiAodGhpcy5kc3FNYXAuaGFzKGlkT3JOYW1lKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5kc3FNYXAuZ2V0KGlkT3JOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDb252ZXJ0IHRoZSBpZE9yTmFtZSB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoXHJcbiAgICBjb25zdCBpZExvd2VyID0gaWRPck5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAvLyBGaW5kIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSBieSBtYXRjaGluZyBRdWVyeU5hbWUgb3IgRGlzcGxheU5hbWUsIGNhc2UtaW5zZW5zaXRpdmVseVxyXG4gICAgcmV0dXJuIHRoaXMuYWxsRFNRcz8uZmluZChcclxuICAgICAgZHNxID0+IGRzcS5JRD8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlciB8fCBkc3EuUXVlcnlOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBpZExvd2VyIHx8IGRzcS5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gaWRMb3dlclxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzIHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqIFRoZSBmaWx0ZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZWFjaCBkYXRhIHNvdXJjZSBxdWVyeSBhcyBhbiBhcmd1bWVudC5cclxuICAgKiBJZiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IGlzIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuXHJcbiAgICogXHJcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZmlsdGVyRm4gLSBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBkYXRhIHNvdXJjZSBxdWVyaWVzLlxyXG4gICAqIEByZXR1cm5zIHtEYXRhU291cmNlUXVlcnlNb2RlbFtdfSAtIFRoZSBhcnJheSBvZiBkYXRhIHNvdXJjZSBxdWVyaWVzIHRoYXQgc2F0aXNmeSB0aGUgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIGZpbmREYXRhU291cmNlUXVlcmllcyhmaWx0ZXJGbjogKGRzcTogRGF0YVNvdXJjZVF1ZXJ5TW9kZWwpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCkuZmlsdGVyKGZpbHRlckZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgZ2l2ZW4gdGVybSBpbiB0aGUgZmllbGRzIGFuZCBkYXRhIHNvdXJjZSBxdWVyaWVzIG9mIHRoaXMgQXBwT2JqZWN0LlxyXG4gICAqIFRoZSBzZWFyY2ggaXMgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgcGVyZm9ybWVkIG9uIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxyXG4gICAqICAgLSBGaWVsZCBuYW1lIGFuZCBkZXNjcmlwdGlvblxyXG4gICAqICAgLSBEYXRhIHNvdXJjZSBxdWVyeSBuYW1lLCBkaXNwbGF5IG5hbWUsIGFuZCBkZXNjcmlwdGlvblxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIC0gVGhlIHNlYXJjaCB0ZXJtIHRvIHNlYXJjaCBmb3IuXHJcbiAgICogQHJldHVybnMge3sgZmllbGRzOiBBcHBGaWVsZE1vZGVsW107IGRzcXM6IERhdGFTb3VyY2VRdWVyeU1vZGVsW10gfX0gLSBBbiBvYmplY3Qgd2l0aCB0aGUgc2VhcmNoIHJlc3VsdHMuXHJcbiAgICogICBUaGUgYGZpZWxkc2AgcHJvcGVydHkgY29udGFpbnMgYW4gYXJyYXkgb2YgQXBwRmllbGRNb2RlbCBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCB0ZXJtLlxyXG4gICAqICAgVGhlIGBkc3FzYCBwcm9wZXJ0eSBjb250YWlucyBhbiBhcnJheSBvZiBEYXRhU291cmNlUXVlcnlNb2RlbCBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCB0ZXJtLlxyXG4gICAqL1xyXG4gIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiB7IGZpZWxkczogQXBwRmllbGRNb2RlbFtdOyBkc3FzOiBEYXRhU291cmNlUXVlcnlNb2RlbFtdIH0ge1xyXG4gICAgLy8gU2VhcmNoIGZvciB0aGUgdGVybSBpbiB0aGUgZmllbGRzXHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcygpLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5zZWFyY2godGVybSkpO1xyXG5cclxuICAgIC8vIFNlYXJjaCBmb3IgdGhlIHRlcm0gaW4gdGhlIGRhdGEgc291cmNlIHF1ZXJpZXNcclxuICAgIGNvbnN0IGRzcXMgPSB0aGlzLmRhdGFTb3VyY2VRdWVyaWVzKCkuZmlsdGVyKGRzcSA9PiBkc3Euc2VhcmNoKHRlcm0pKTtcclxuXHJcbiAgICAvLyBSZXR1cm4gdGhlIHNlYXJjaCByZXN1bHRzXHJcbiAgICByZXR1cm4geyBmaWVsZHMsIGRzcXMgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG9iamVjdCB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICogVGhpcyBlbnN1cmVzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBjb2RlIGV4cGVjdGluZyB0aGUgb2xkIGZvcm1hdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSBkYXRhIGluIG9sZCBBUEkgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgSUQ6IHRoaXMuSUQsXHJcbiAgICAgIE9iamVjdE5hbWU6IHRoaXMuT2JqZWN0TmFtZSxcclxuICAgICAgRGlzcGxheU5hbWU6IHRoaXMuRGlzcGxheU5hbWUsXHJcbiAgICAgIERlc2NyaXB0aW9uOiB0aGlzLkRlc2NyaXB0aW9uLFxyXG4gICAgICBTeXN0ZW1EQlRhYmxlTmFtZTogdGhpcy5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgSXNTeXN0ZW06IHRoaXMuSXNTeXN0ZW0sXHJcbiAgICAgIElzVmlzaWJsZTogdGhpcy5Jc1Zpc2libGUsXHJcbiAgICAgIElzRGVwcmVjYXRlZDogdGhpcy5Jc0RlcHJlY2F0ZWQsXHJcbiAgICAgIElzU3VwcG9ydEJsdWVQcmludDogdGhpcy5Jc1N1cHBvcnRCbHVlUHJpbnQsXHJcbiAgICAgIElzTG9jYXRpb25UcmFja2luZzogdGhpcy5Jc0xvY2F0aW9uVHJhY2tpbmcsXHJcbiAgICAgIE9iamVjdFR5cGU6IHRoaXMuT2JqZWN0VHlwZSxcclxuICAgICAgRGVwbG95bWVudFN0YXR1czogdGhpcy5EZXBsb3ltZW50U3RhdHVzLFxyXG4gICAgICBDcmVhdGlvblR5cGU6IHRoaXMuQ3JlYXRpb25UeXBlLFxyXG4gICAgICBBbGxvd1ZlcnNpb25pbmc6IHRoaXMuQWxsb3dWZXJzaW9uaW5nLFxyXG4gICAgICBFbmFibGVUcmFja2luZzogdGhpcy5FbmFibGVUcmFja2luZyxcclxuICAgICAgQWxsb3dTZWFyY2hhYmxlOiB0aGlzLkFsbG93U2VhcmNoYWJsZSxcclxuICAgICAgQWxsb3dSZXBvcnRzOiB0aGlzLkFsbG93UmVwb3J0cyxcclxuICAgICAgQWxsb3dBY3Rpdml0aWVzOiB0aGlzLkFsbG93QWN0aXZpdGllcyxcclxuICAgICAgQWxsb3dTaGFyaW5nOiB0aGlzLkFsbG93U2hhcmluZyxcclxuICAgICAgQWxsb3dTb2Z0RGVsZXRlOiB0aGlzLkFsbG93U29mdERlbGV0ZSxcclxuICAgICAgSXNSZXBsaWNhdGlvbk5lZWRlZDogdGhpcy5Jc1JlcGxpY2F0aW9uTmVlZGVkLFxyXG4gICAgICBJc0NhY2hlRW5hYmxlOiB0aGlzLklzQ2FjaGVFbmFibGUsXHJcbiAgICAgIENhY2hlVHRsOiB0aGlzLkNhY2hlVHRsLFxyXG4gICAgICBBcHBPYmplY3RDb25maWd1cmF0aW9uOiB0aGlzLkFwcE9iamVjdENvbmZpZ3VyYXRpb24sXHJcbiAgICAgIENSVURBcHBPYmplY3RJZDogdGhpcy5DUlVEQXBwT2JqZWN0SWQsXHJcbiAgICAgIENvbm5lY3Rpb25JZDogdGhpcy5Db25uZWN0aW9uSWQsXHJcbiAgICAgIElzU3VwcG9ydExheW91dDogdGhpcy5Jc1N1cHBvcnRMYXlvdXQsXHJcbiAgICAgIEFjY2Vzc0xpc3Q6IHRoaXMuQWNjZXNzTGlzdCxcclxuICAgICAgUmVzb3VyY2VzOiB0aGlzLlJlc291cmNlcyxcclxuICAgICAgQ2hpbGRSZWxhdGlvblNoaXBzOiB0aGlzLkNoaWxkUmVsYXRpb25TaGlwcyxcclxuICAgICAgRmllbGRzOiB0aGlzLmZpZWxkcygpLm1hcChmID0+IGYudG9KU09OKCkpLFxyXG4gICAgICBEYXRhU291cmNlUXVlcmllczogdGhpcy5kYXRhU291cmNlUXVlcmllcygpLm1hcChkc3EgPT4gZHNxLnRvSlNPTigpKVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -2,19 +2,19 @@ export class AppScreenModel {
2
2
  constructor(raw) {
3
3
  this.raw = raw;
4
4
  this.parsedScreenConfiguration = null;
5
- this.ID = raw?.ID;
6
- this.Name = raw?.Name;
7
- this.Description = raw?.Description;
8
- this.ScreenType = raw?.ScreenType;
9
- this.DataSourceQuery = raw?.DataSourceQuery;
10
- this.Container = raw?.Container;
11
- this.ScreenConfiguration = raw?.ScreenConfiguration;
5
+ this.ID = raw?.screenId;
6
+ this.Name = raw?.screenName;
7
+ this.Description = raw?.description;
8
+ this.ScreenType = raw?.screenType;
9
+ this.DataSourceQuery = raw?.queryId;
10
+ this.Container = null;
11
+ this.ScreenConfiguration = raw?.screenConfiguration;
12
12
  this.AppId = raw?.AppId;
13
13
  this.RecordId = raw?.RecordId;
14
14
  this.IsSystemRecord = raw?.IsSystemRecord;
15
15
  try {
16
- if (typeof raw?.ScreenConfiguration === 'string' && raw?.ScreenConfiguration?.includes('{')) {
17
- this.parsedScreenConfiguration = JSON.parse(raw.ScreenConfiguration);
16
+ if (typeof raw?.screenConfiguration === 'string' && raw?.screenConfiguration?.includes('{')) {
17
+ this.parsedScreenConfiguration = JSON.parse(raw.screenConfiguration);
18
18
  }
19
19
  }
20
20
  catch (e) {
@@ -44,12 +44,23 @@ export class AppScreenModel {
44
44
  (this.Name && this.Name?.toLowerCase()?.includes(lower)));
45
45
  }
46
46
  /**
47
- * Converts the current object to a JSON object.
47
+ * Converts the model to JSON in the old API format (PascalCase).
48
48
  *
49
- * @returns A JSON representation of the current object.
49
+ * @returns A JSON representation in old format.
50
50
  */
51
51
  toJSON() {
52
- return this.raw;
52
+ return {
53
+ ID: this.ID,
54
+ Name: this.Name,
55
+ Description: this.Description,
56
+ ScreenType: this.ScreenType,
57
+ DataSourceQuery: this.DataSourceQuery,
58
+ Container: this.Container,
59
+ ScreenConfiguration: this.ScreenConfiguration,
60
+ AppId: this.AppId,
61
+ RecordId: this.RecordId,
62
+ IsSystemRecord: this.IsSystemRecord
63
+ };
53
64
  }
54
65
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNjcmVlbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLXNjcmVlbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sY0FBYztJQWF2QixZQUFvQixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUZuQiw4QkFBeUIsR0FBUSxJQUFJLENBQUM7UUFHM0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLGVBQWUsQ0FBQztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQztRQUNwRCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsR0FBRyxFQUFFLGNBQWMsQ0FBQztRQUUxQyxJQUFJLENBQUM7WUFDRCxJQUFJLE9BQU8sR0FBRyxFQUFFLG1CQUFtQixLQUFLLFFBQVEsSUFBSSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFGLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0I7UUFDZCxxREFBcUQ7UUFDckQscUVBQXFFO1FBQ3JFLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLElBQVk7UUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsT0FBTyxPQUFPO1FBQ1YsZUFBZTtRQUNmLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxpQkFBaUI7WUFDakIsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzNELENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDRixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NyZWVuVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9jb21tb24uZW51bVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFwcFNjcmVlbk1vZGVsIHtcclxuICAgIHJlYWRvbmx5IElEOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBOYW1lOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgU2NyZWVuVHlwZTogU2NyZWVuVHlwZTtcclxuICAgIHJlYWRvbmx5IERhdGFTb3VyY2VRdWVyeTogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgQ29udGFpbmVyOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcmVhZG9ubHkgU2NyZWVuQ29uZmlndXJhdGlvbjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgQXBwSWQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IFJlY29yZElkOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBJc1N5c3RlbVJlY29yZDogYm9vbGVhbjtcclxuICAgIHJlYWRvbmx5IHBhcnNlZFNjcmVlbkNvbmZpZ3VyYXRpb246IGFueSA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByYXc6IGFueSkge1xyXG4gICAgICAgIHRoaXMuSUQgPSByYXc/LklEO1xyXG4gICAgICAgIHRoaXMuTmFtZSA9IHJhdz8uTmFtZTtcclxuICAgICAgICB0aGlzLkRlc2NyaXB0aW9uID0gcmF3Py5EZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLlNjcmVlblR5cGUgPSByYXc/LlNjcmVlblR5cGU7XHJcbiAgICAgICAgdGhpcy5EYXRhU291cmNlUXVlcnkgPSByYXc/LkRhdGFTb3VyY2VRdWVyeTtcclxuICAgICAgICB0aGlzLkNvbnRhaW5lciA9IHJhdz8uQ29udGFpbmVyO1xyXG4gICAgICAgIHRoaXMuU2NyZWVuQ29uZmlndXJhdGlvbiA9IHJhdz8uU2NyZWVuQ29uZmlndXJhdGlvbjtcclxuICAgICAgICB0aGlzLkFwcElkID0gcmF3Py5BcHBJZDtcclxuICAgICAgICB0aGlzLlJlY29yZElkID0gcmF3Py5SZWNvcmRJZDtcclxuICAgICAgICB0aGlzLklzU3lzdGVtUmVjb3JkID0gcmF3Py5Jc1N5c3RlbVJlY29yZDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByYXc/LlNjcmVlbkNvbmZpZ3VyYXRpb24gPT09ICdzdHJpbmcnICYmIHJhdz8uU2NyZWVuQ29uZmlndXJhdGlvbj8uaW5jbHVkZXMoJ3snKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZWRTY3JlZW5Db25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShyYXcuU2NyZWVuQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU2NyZWVuQ29uZmlndXJhdGlvbjonLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwIHNjcmVlbiBoYXMgYSB2YWxpZCBkYXRhIHNvdXJjZSBxdWVyeVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwIHNjcmVlbiBoYXMgYSB2YWxpZCBkYXRhIHNvdXJjZSBxdWVyeVxyXG4gICAgICovXHJcbiAgICBoYXNEYXRhU291cmNlUXVlcnkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIERhdGFTb3VyY2VRdWVyeSBwcm9wZXJ0eSBpcyBwb3B1bGF0ZWRcclxuICAgICAgICAvLyBhbmQgaXMgbm90IHRoZSBkZWZhdWx0IEdVSUQgKDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMClcclxuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLkRhdGFTb3VyY2VRdWVyeSAmJiB0aGlzLkRhdGFTb3VyY2VRdWVyeSAhPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VhcmNoZXMgZm9yIHRoZSBnaXZlbiB0ZXJtIGluIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IGFwcCBzY3JlZW5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIFRoZSBzZWFyY2ggdGVybVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBsb3dlciA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gQm9vbGVhbihcclxuICAgICAgICAgICAgLy8gU2VhcmNoIGluIElEXHJcbiAgICAgICAgICAgICh0aGlzLklEICYmIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGxvd2VyKSkgfHxcclxuICAgICAgICAgICAgLy8gU2VhcmNoIGluIE5hbWVcclxuICAgICAgICAgICAgKHRoaXMuTmFtZSAmJiB0aGlzLk5hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGxvd2VyKSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIGN1cnJlbnQgb2JqZWN0IHRvIGEgSlNPTiBvYmplY3QuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgdG9KU09OKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNjcmVlbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBwLXNjcmVlbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sY0FBYztJQWF2QixZQUFvQixHQUFRO1FBQVIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUZuQiw4QkFBeUIsR0FBUSxJQUFJLENBQUM7UUFHM0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLFVBQVUsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxXQUFXLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsVUFBVSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsR0FBRyxFQUFFLG1CQUFtQixDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRSxRQUFRLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsY0FBYyxDQUFDO1FBRTFDLElBQUksQ0FBQztZQUNELElBQUksT0FBTyxHQUFHLEVBQUUsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUYsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNkLHFEQUFxRDtRQUNyRCxxRUFBcUU7UUFDckUsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLHNDQUFzQyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsSUFBWTtRQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxPQUFPLE9BQU87UUFDVixlQUFlO1FBQ2YsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELGlCQUFpQjtZQUNqQixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDM0QsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTTtRQUNGLE9BQU87WUFDSCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtZQUM3QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztTQUN0QyxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NyZWVuVHlwZSB9IGZyb20gXCIuLi9lbnVtcy9jb21tb24uZW51bVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFwcFNjcmVlbk1vZGVsIHtcclxuICAgIHJlYWRvbmx5IElEOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBOYW1lOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgU2NyZWVuVHlwZTogU2NyZWVuVHlwZTtcclxuICAgIHJlYWRvbmx5IERhdGFTb3VyY2VRdWVyeTogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgQ29udGFpbmVyOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcmVhZG9ubHkgU2NyZWVuQ29uZmlndXJhdGlvbjogc3RyaW5nO1xyXG4gICAgcmVhZG9ubHkgQXBwSWQ6IHN0cmluZztcclxuICAgIHJlYWRvbmx5IFJlY29yZElkOiBzdHJpbmc7XHJcbiAgICByZWFkb25seSBJc1N5c3RlbVJlY29yZDogYm9vbGVhbjtcclxuICAgIHJlYWRvbmx5IHBhcnNlZFNjcmVlbkNvbmZpZ3VyYXRpb246IGFueSA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByYXc6IGFueSkge1xyXG4gICAgICAgIHRoaXMuSUQgPSByYXc/LnNjcmVlbklkO1xyXG4gICAgICAgIHRoaXMuTmFtZSA9IHJhdz8uc2NyZWVuTmFtZTtcclxuICAgICAgICB0aGlzLkRlc2NyaXB0aW9uID0gcmF3Py5kZXNjcmlwdGlvbjtcclxuICAgICAgICB0aGlzLlNjcmVlblR5cGUgPSByYXc/LnNjcmVlblR5cGU7XHJcbiAgICAgICAgdGhpcy5EYXRhU291cmNlUXVlcnkgPSByYXc/LnF1ZXJ5SWQ7XHJcbiAgICAgICAgdGhpcy5Db250YWluZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU2NyZWVuQ29uZmlndXJhdGlvbiA9IHJhdz8uc2NyZWVuQ29uZmlndXJhdGlvbjtcclxuICAgICAgICB0aGlzLkFwcElkID0gcmF3Py5BcHBJZDtcclxuICAgICAgICB0aGlzLlJlY29yZElkID0gcmF3Py5SZWNvcmRJZDtcclxuICAgICAgICB0aGlzLklzU3lzdGVtUmVjb3JkID0gcmF3Py5Jc1N5c3RlbVJlY29yZDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiByYXc/LnNjcmVlbkNvbmZpZ3VyYXRpb24gPT09ICdzdHJpbmcnICYmIHJhdz8uc2NyZWVuQ29uZmlndXJhdGlvbj8uaW5jbHVkZXMoJ3snKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJzZWRTY3JlZW5Db25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShyYXcuc2NyZWVuQ29uZmlndXJhdGlvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU2NyZWVuQ29uZmlndXJhdGlvbjonLCBlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwIHNjcmVlbiBoYXMgYSB2YWxpZCBkYXRhIHNvdXJjZSBxdWVyeVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGN1cnJlbnQgYXBwIHNjcmVlbiBoYXMgYSB2YWxpZCBkYXRhIHNvdXJjZSBxdWVyeVxyXG4gICAgICovXHJcbiAgICBoYXNEYXRhU291cmNlUXVlcnkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIERhdGFTb3VyY2VRdWVyeSBwcm9wZXJ0eSBpcyBwb3B1bGF0ZWRcclxuICAgICAgICAvLyBhbmQgaXMgbm90IHRoZSBkZWZhdWx0IEdVSUQgKDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMClcclxuICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLkRhdGFTb3VyY2VRdWVyeSAmJiB0aGlzLkRhdGFTb3VyY2VRdWVyeSAhPT0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VhcmNoZXMgZm9yIHRoZSBnaXZlbiB0ZXJtIGluIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBjdXJyZW50IGFwcCBzY3JlZW5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXJtIFRoZSBzZWFyY2ggdGVybVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICAgKi9cclxuICAgIHNlYXJjaCh0ZXJtOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBsb3dlciA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gQm9vbGVhbihcclxuICAgICAgICAgICAgLy8gU2VhcmNoIGluIElEXHJcbiAgICAgICAgICAgICh0aGlzLklEICYmIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGxvd2VyKSkgfHxcclxuICAgICAgICAgICAgLy8gU2VhcmNoIGluIE5hbWVcclxuICAgICAgICAgICAgKHRoaXMuTmFtZSAmJiB0aGlzLk5hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGxvd2VyKSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIG1vZGVsIHRvIEpTT04gaW4gdGhlIG9sZCBBUEkgZm9ybWF0IChQYXNjYWxDYXNlKS5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBBIEpTT04gcmVwcmVzZW50YXRpb24gaW4gb2xkIGZvcm1hdC5cclxuICAgICAqL1xyXG4gICAgdG9KU09OKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgSUQ6IHRoaXMuSUQsXHJcbiAgICAgICAgICAgIE5hbWU6IHRoaXMuTmFtZSxcclxuICAgICAgICAgICAgRGVzY3JpcHRpb246IHRoaXMuRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIFNjcmVlblR5cGU6IHRoaXMuU2NyZWVuVHlwZSxcclxuICAgICAgICAgICAgRGF0YVNvdXJjZVF1ZXJ5OiB0aGlzLkRhdGFTb3VyY2VRdWVyeSxcclxuICAgICAgICAgICAgQ29udGFpbmVyOiB0aGlzLkNvbnRhaW5lcixcclxuICAgICAgICAgICAgU2NyZWVuQ29uZmlndXJhdGlvbjogdGhpcy5TY3JlZW5Db25maWd1cmF0aW9uLFxyXG4gICAgICAgICAgICBBcHBJZDogdGhpcy5BcHBJZCxcclxuICAgICAgICAgICAgUmVjb3JkSWQ6IHRoaXMuUmVjb3JkSWQsXHJcbiAgICAgICAgICAgIElzU3lzdGVtUmVjb3JkOiB0aGlzLklzU3lzdGVtUmVjb3JkXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { DataSourceQueryFieldType } from '../enums/dsq.enum';
1
2
  import { FilterModel } from './filter.model';
2
3
  import { ParameterModel } from './parameter.model';
3
4
  import { SortModel } from './sort.model';
@@ -10,33 +11,51 @@ export class DataSourceQueryModel {
10
11
  this.cachedParameters = [];
11
12
  this.cachedFilters = [];
12
13
  this.cachedSorts = [];
13
- this.ID = raw.ID;
14
- this.ObjectID = raw.ObjectID;
15
- this.ObjectID_Tosave = raw.ObjectID_Tosave;
16
- this.QueryName = raw.QueryName;
17
- this.DisplayName = raw.DisplayName;
18
- this.FilterLogic = raw.FilterLogic;
14
+ this.parsedConfiguration = null;
15
+ this.ID = raw?.queryId;
16
+ this.ObjectID = parentAppObject?.ID;
17
+ this.ObjectID_Tosave = raw?.ObjectID_Tosave;
18
+ this.QueryName = raw?.queryName;
19
+ this.DisplayName = raw?.queryName;
20
+ this.parsedConfiguration = this.parseConfiguration(raw?.configurations);
21
+ this.FilterLogic = this.parsedConfiguration?.Filters?.FilterLogic ?? null;
22
+ }
23
+ parseConfiguration(config) {
24
+ try {
25
+ return typeof config === 'string' ? JSON.parse(config) : (config ?? {});
26
+ }
27
+ catch {
28
+ return {};
29
+ }
19
30
  }
20
31
  /**
21
32
  * Gets the fields for the data source query. The fields are enriched with the corresponding `AppFieldModel` objects.
33
+ * Handles both old format (array of objects) and new format (array of field ID strings).
22
34
  * @returns {DataSourceQueries_Fields[]} The array of enriched fields.
23
35
  */
24
36
  fields() {
25
37
  if (!this.enrichedFields?.length) {
26
- const rawFields = this.raw?.Fields;
38
+ const rawFields = this.parsedConfiguration?.SelectedFields;
27
39
  if (rawFields?.length) {
28
- // Enrich the fields by mapping each field to the corresponding `AppFieldModel` object.
29
- this.enrichedFields = rawFields.map((field) => {
40
+ this.enrichedFields = rawFields.map((field, index) => {
41
+ // Get the field ID - either from string directly or from object property
42
+ const fieldId = field;
30
43
  let fieldModel;
31
44
  // First try to find the field in the parent object
32
- fieldModel = this.parentAppObject.field(field.AppFieldID);
45
+ fieldModel = this.parentAppObject?.field(fieldId);
33
46
  // If not found and metadataHelper is available, search across all objects
34
47
  if (!fieldModel && this.metadataHelper) {
35
- fieldModel = this.metadataHelper.getFieldByIdOrName(field.AppFieldID);
48
+ fieldModel = this.metadataHelper.getFieldByIdOrName(fieldId);
36
49
  }
50
+ // Build the enriched field object
51
+ // New format: construct the full object from field model
37
52
  return {
38
- ...field,
39
- // The `Field` property contains the corresponding `AppFieldModel` object.
53
+ ID: this.ID + '_' + fieldModel?.ID,
54
+ AppFieldID: fieldModel?.ID,
55
+ SeqNo: index + 1,
56
+ FieldType: field.includes('.') ? DataSourceQueryFieldType.LookupField : DataSourceQueryFieldType.EntityField,
57
+ FieldDetails: field,
58
+ LookupDetails: field,
40
59
  Field: fieldModel
41
60
  };
42
61
  });
@@ -63,9 +82,9 @@ export class DataSourceQueryModel {
63
82
  */
64
83
  parameters() {
65
84
  // Check if parameters have already been cached
66
- if (!this.cachedParameters) {
85
+ if (!this.cachedParameters?.length) {
67
86
  // Map raw parameters to ParameterModel instances and cache them
68
- this.cachedParameters = (this.raw?.Parameters || []).map((p) => new ParameterModel(p));
87
+ this.cachedParameters = (this.parsedConfiguration?.Parameters || []).map((p) => new ParameterModel(p));
69
88
  }
70
89
  return this.cachedParameters;
71
90
  }
@@ -91,9 +110,9 @@ export class DataSourceQueryModel {
91
110
  */
92
111
  filters() {
93
112
  // Check if filters have already been cached
94
- if (!this.cachedFilters) {
113
+ if (!this.cachedFilters?.length) {
95
114
  // Map raw filters to FilterModel instances and cache them
96
- this.cachedFilters = (this.raw.Filters?.Filters || []).map((f) => new FilterModel(f));
115
+ this.cachedFilters = (this.parsedConfiguration?.Filters?.Filters || []).map((f) => new FilterModel(f));
97
116
  }
98
117
  return this.cachedFilters;
99
118
  }
@@ -103,9 +122,9 @@ export class DataSourceQueryModel {
103
122
  */
104
123
  sorts() {
105
124
  // Check if sorts have already been cached
106
- if (!this.cachedSorts) {
125
+ if (!this.cachedSorts?.length) {
107
126
  // Map raw sorts to SortModel instances and cache them
108
- this.cachedSorts = (this.raw.Sort || []).map((s) => new SortModel(s));
127
+ this.cachedSorts = (this.parsedConfiguration?.Sort || []).map((s) => new SortModel(s));
109
128
  }
110
129
  // Return the cached sorts
111
130
  return this.cachedSorts;
@@ -123,11 +142,26 @@ export class DataSourceQueryModel {
123
142
  this.DisplayName?.toLowerCase().includes(searchTerm));
124
143
  }
125
144
  /**
126
- * Converts the DataSourceQueryModel instance to a JSON representation.
127
- * @returns {any} The raw data in JSON format.
145
+ * Converts the DataSourceQueryModel instance to JSON in the old API format (PascalCase).
146
+ * This ensures backward compatibility with code expecting the old format.
147
+ *
148
+ * @returns {any} The data in old API format.
128
149
  */
129
150
  toJSON() {
130
- return this.raw;
151
+ return {
152
+ ID: this.ID,
153
+ ObjectID: this.ObjectID,
154
+ ObjectID_Tosave: this.ObjectID_Tosave,
155
+ QueryName: this.QueryName,
156
+ DisplayName: this.DisplayName,
157
+ Fields: this.fields(),
158
+ Filters: {
159
+ Filters: this.filters().map(f => f.toJSON()),
160
+ FilterLogic: this.FilterLogic
161
+ },
162
+ Sort: this.sorts().map(s => s.toJSON()),
163
+ Parameters: this.parameters().map(p => p.toJSON())
164
+ };
131
165
  }
132
166
  }
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0IsRUFDaEMsY0FBOEI7UUFGckIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBUmhDLG1CQUFjLEdBQStCLEVBQUUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFPcEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07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QUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLHNEQUFzRDtZQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFZO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxPQUFPLENBQ0wsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUNsRCxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5pbXBvcnQgeyBBcHBPYmplY3RNb2RlbCB9IGZyb20gJy4vYXBwLW9iamVjdC5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkcyB9IGZyb20gJy4vZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzcyc7XHJcbmltcG9ydCB7IEZpbHRlck1vZGVsIH0gZnJvbSAnLi9maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJNb2RlbCB9IGZyb20gJy4vcGFyYW1ldGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydE1vZGVsIH0gZnJvbSAnLi9zb3J0Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlUXVlcnlNb2RlbCB7XHJcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICByZWFkb25seSBPYmplY3RJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IE9iamVjdElEX1Rvc2F2ZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IFF1ZXJ5TmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IERpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRmlsdGVyTG9naWM6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHByaXZhdGUgZW5yaWNoZWRGaWVsZHM6IERhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRQYXJhbWV0ZXJzOiBQYXJhbWV0ZXJNb2RlbFtdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRGaWx0ZXJzOiBGaWx0ZXJNb2RlbFtdID0gW107XHJcbiAgcHJpdmF0ZSBjYWNoZWRTb3J0czogU29ydE1vZGVsW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxyXG4gICAgcmVhZG9ubHkgcGFyZW50QXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCxcclxuICAgIHByaXZhdGUgbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLklEID0gcmF3LklEO1xyXG4gICAgdGhpcy5PYmplY3RJRCA9IHJhdy5PYmplY3RJRDtcclxuICAgIHRoaXMuT2JqZWN0SURfVG9zYXZlID0gcmF3Lk9iamVjdElEX1Rvc2F2ZTtcclxuICAgIHRoaXMuUXVlcnlOYW1lID0gcmF3LlF1ZXJ5TmFtZTtcclxuICAgIHRoaXMuRGlzcGxheU5hbWUgPSByYXcuRGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLkZpbHRlckxvZ2ljID0gcmF3LkZpbHRlckxvZ2ljO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgZmllbGRzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuIFRoZSBmaWVsZHMgYXJlIGVucmljaGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdHMuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZW5yaWNoZWQgZmllbGRzLlxyXG4gICAqL1xyXG4gIGZpZWxkcygpOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICBpZiAoIXRoaXMuZW5yaWNoZWRGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnJhdz8uRmllbGRzO1xyXG4gICAgICBpZiAocmF3RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAvLyBFbnJpY2ggdGhlIGZpZWxkcyBieSBtYXBwaW5nIGVhY2ggZmllbGQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdC5cclxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgbGV0IGZpZWxkTW9kZWw7XHJcblxyXG4gICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGZpZWxkIGluIHRoZSBwYXJlbnQgb2JqZWN0XHJcbiAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5wYXJlbnRBcHBPYmplY3QuZmllbGQoZmllbGQuQXBwRmllbGRJRCk7XHJcblxyXG4gICAgICAgICAgLy8gSWYgbm90IGZvdW5kIGFuZCBtZXRhZGF0YUhlbHBlciBpcyBhdmFpbGFibGUsIHNlYXJjaCBhY3Jvc3MgYWxsIG9iamVjdHNcclxuICAgICAgICAgIGlmICghZmllbGRNb2RlbCAmJiB0aGlzLm1ldGFkYXRhSGVscGVyKSB7XHJcbiAgICAgICAgICAgIGZpZWxkTW9kZWwgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEZpZWxkQnlJZE9yTmFtZShmaWVsZC5BcHBGaWVsZElEKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5maWVsZCxcclxuICAgICAgICAgICAgLy8gVGhlIGBGaWVsZGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGNvcnJlc3BvbmRpbmcgYEFwcEZpZWxkTW9kZWxgIG9iamVjdC5cclxuICAgICAgICAgICAgRmllbGQ6IGZpZWxkTW9kZWxcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZmllbGRzLCByZXR1cm4gYW4gZW1wdHkgYXJyYXkuXHJcbiAgICAgICAgdGhpcy5lbnJpY2hlZEZpZWxkcyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGVucmljaGVkIGZpZWxkcy5cclxuICAgIHJldHVybiB0aGlzLmVucmljaGVkRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5IHRoYXQgc2F0aXNmeSB0aGUgZ2l2ZW4gZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZpbHRlckZuIFRoZSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGZpZWxkcy5cclxuICAgKiBAcmV0dXJucyB7RGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW119IFRoZSBhcnJheSBvZiBmaWVsZHMgdGhhdCBzYXRpc2Z5IHRoZSBmaWx0ZXIgZnVuY3Rpb24uXHJcbiAgICovXHJcbiAgZmluZEZpZWxkcyhmaWx0ZXJGbjogKGZpZWxkOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHMpID0+IGJvb2xlYW4pOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZHMoKS5maWx0ZXIoZmlsdGVyRm4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIFBhcmFtZXRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBwYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgcGFyYW1ldGVycyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRQYXJhbWV0ZXJzKSB7XHJcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRQYXJhbWV0ZXJzID0gKHRoaXMucmF3Py5QYXJhbWV0ZXJzIHx8IFtdKS5tYXAoKHA6IGFueSkgPT4gbmV3IFBhcmFtZXRlck1vZGVsKHApKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhY2hlZFBhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIG1hbmRhdG9yeSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBtYW5kYXRvcnkgUGFyYW1ldGVyTW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIG1hbmRhdG9yeVBhcmFtZXRlcnMoKTogUGFyYW1ldGVyTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbWV0ZXJzKCkuZmlsdGVyKHAgPT4gcC5Jc01hbmRhdG9yeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaW5kcyBhIHBhcmFtZXRlciBieSBpdHMgbmFtZSAoY2FzZS1pbnNlbnNpdGl2ZSkuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB0byBmaW5kLlxyXG4gICAqIEByZXR1cm5zIHtQYXJhbWV0ZXJNb2RlbCB8IHVuZGVmaW5lZH0gVGhlIHBhcmFtZXRlciBtb2RlbCBpbnN0YW5jZSBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZC5cclxuICAgKi9cclxuICBwYXJhbWV0ZXIobmFtZTogc3RyaW5nKTogUGFyYW1ldGVyTW9kZWwgfCB1bmRlZmluZWQge1xyXG4gICAgY29uc3QgbmFtZUxvd2VyID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbmQocCA9PiBwLlBhcmFtZXRlck5hbWU/LnRvTG93ZXJDYXNlKCkgPT09IG5hbWVMb3dlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgZmlsdGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIHtGaWx0ZXJNb2RlbFtdfSBUaGUgYXJyYXkgb2YgRmlsdGVyTW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIGZpbHRlcnMoKTogRmlsdGVyTW9kZWxbXSB7XHJcbiAgICAvLyBDaGVjayBpZiBmaWx0ZXJzIGhhdmUgYWxyZWFkeSBiZWVuIGNhY2hlZFxyXG4gICAgaWYgKCF0aGlzLmNhY2hlZEZpbHRlcnMpIHtcclxuICAgICAgLy8gTWFwIHJhdyBmaWx0ZXJzIHRvIEZpbHRlck1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxyXG4gICAgICB0aGlzLmNhY2hlZEZpbHRlcnMgPSAodGhpcy5yYXcuRmlsdGVycz8uRmlsdGVycyB8fCBbXSkubWFwKChmOiBhbnkpID0+IG5ldyBGaWx0ZXJNb2RlbChmKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZWRGaWx0ZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIHNvcnRzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1NvcnRNb2RlbFtdfSBUaGUgYXJyYXkgb2YgU29ydE1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBzb3J0cygpOiBTb3J0TW9kZWxbXSB7XHJcbiAgICAvLyBDaGVjayBpZiBzb3J0cyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRTb3J0cykge1xyXG4gICAgICAvLyBNYXAgcmF3IHNvcnRzIHRvIFNvcnRNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRTb3J0cyA9ICh0aGlzLnJhdy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCBzb3J0c1xyXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHRlcm0gaXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIGZpZWxkcyBvZiB0aGVcclxuICAgKiBjdXJyZW50IGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICovXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5RdWVyeU5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZSB0byBhIEpTT04gcmVwcmVzZW50YXRpb24uXHJcbiAgICogQHJldHVybnMge2FueX0gVGhlIHJhdyBkYXRhIGluIEpTT04gZm9ybWF0LlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMucmF3O1xyXG4gIH1cclxufSJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcXVlcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSTdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLFlBQ21CLEdBQVEsRUFDaEIsZUFBK0IsRUFDaEMsY0FBOEI7UUFGckIsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDaEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVGhDLG1CQUFjLEdBQStCLEVBQUUsQ0FBQztRQUNoRCxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3hDLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFDOUIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBT3RDLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsRUFBRSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsZUFBZSxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDbEMs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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbkQsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VRdWVyeUZpZWxkVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9tZXRhLWRhdGEuaGVscGVycyc7XHJcbmltcG9ydCB7IEFwcE9iamVjdE1vZGVsIH0gZnJvbSAnLi9hcHAtb2JqZWN0Lm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzJztcclxuaW1wb3J0IHsgRmlsdGVyTW9kZWwgfSBmcm9tICcuL2ZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFBhcmFtZXRlck1vZGVsIH0gZnJvbSAnLi9wYXJhbWV0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTb3J0TW9kZWwgfSBmcm9tICcuL3NvcnQubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VRdWVyeU1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IE9iamVjdElEOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgT2JqZWN0SURfVG9zYXZlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgUXVlcnlOYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgRGlzcGxheU5hbWU6IHN0cmluZztcclxuICByZWFkb25seSBGaWx0ZXJMb2dpYzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgcHJpdmF0ZSBlbnJpY2hlZEZpZWxkczogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZFBhcmFtZXRlcnM6IFBhcmFtZXRlck1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZEZpbHRlcnM6IEZpbHRlck1vZGVsW10gPSBbXTtcclxuICBwcml2YXRlIGNhY2hlZFNvcnRzOiBTb3J0TW9kZWxbXSA9IFtdO1xyXG4gIHByaXZhdGUgcGFyc2VkQ29uZmlndXJhdGlvbjogYW55ID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55LFxyXG4gICAgcmVhZG9ubHkgcGFyZW50QXBwT2JqZWN0OiBBcHBPYmplY3RNb2RlbCxcclxuICAgIHByaXZhdGUgbWV0YWRhdGFIZWxwZXI6IE1ldGFkYXRhSGVscGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLklEID0gcmF3Py5xdWVyeUlkO1xyXG4gICAgdGhpcy5PYmplY3RJRCA9IHBhcmVudEFwcE9iamVjdD8uSUQ7XHJcbiAgICB0aGlzLk9iamVjdElEX1Rvc2F2ZSA9IHJhdz8uT2JqZWN0SURfVG9zYXZlO1xyXG4gICAgdGhpcy5RdWVyeU5hbWUgPSByYXc/LnF1ZXJ5TmFtZTtcclxuICAgIHRoaXMuRGlzcGxheU5hbWUgPSByYXc/LnF1ZXJ5TmFtZTtcclxuICAgIHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbiA9IHRoaXMucGFyc2VDb25maWd1cmF0aW9uKHJhdz8uY29uZmlndXJhdGlvbnMpO1xyXG4gICAgdGhpcy5GaWx0ZXJMb2dpYyA9IHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbj8uRmlsdGVycz8uRmlsdGVyTG9naWMgPz8gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFyc2VDb25maWd1cmF0aW9uKGNvbmZpZzogYW55KTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoY29uZmlnKSA6IChjb25maWcgPz8ge30pO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGZpZWxkcyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LiBUaGUgZmllbGRzIGFyZSBlbnJpY2hlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGBBcHBGaWVsZE1vZGVsYCBvYmplY3RzLlxyXG4gICAqIEhhbmRsZXMgYm90aCBvbGQgZm9ybWF0IChhcnJheSBvZiBvYmplY3RzKSBhbmQgbmV3IGZvcm1hdCAoYXJyYXkgb2YgZmllbGQgSUQgc3RyaW5ncykuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZW5yaWNoZWQgZmllbGRzLlxyXG4gICAqL1xyXG4gIGZpZWxkcygpOiBEYXRhU291cmNlUXVlcmllc19GaWVsZHNbXSB7XHJcbiAgICBpZiAoIXRoaXMuZW5yaWNoZWRGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCByYXdGaWVsZHMgPSB0aGlzLnBhcnNlZENvbmZpZ3VyYXRpb24/LlNlbGVjdGVkRmllbGRzO1xyXG4gICAgICBpZiAocmF3RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLmVucmljaGVkRmllbGRzID0gcmF3RmllbGRzLm1hcCgoZmllbGQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgLy8gR2V0IHRoZSBmaWVsZCBJRCAtIGVpdGhlciBmcm9tIHN0cmluZyBkaXJlY3RseSBvciBmcm9tIG9iamVjdCBwcm9wZXJ0eVxyXG4gICAgICAgICAgY29uc3QgZmllbGRJZCA9IGZpZWxkO1xyXG5cclxuICAgICAgICAgIGxldCBmaWVsZE1vZGVsO1xyXG4gICAgICAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGZpZWxkIGluIHRoZSBwYXJlbnQgb2JqZWN0XHJcbiAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5wYXJlbnRBcHBPYmplY3Q/LmZpZWxkKGZpZWxkSWQpO1xyXG5cclxuICAgICAgICAgIC8vIElmIG5vdCBmb3VuZCBhbmQgbWV0YWRhdGFIZWxwZXIgaXMgYXZhaWxhYmxlLCBzZWFyY2ggYWNyb3NzIGFsbCBvYmplY3RzXHJcbiAgICAgICAgICBpZiAoIWZpZWxkTW9kZWwgJiYgdGhpcy5tZXRhZGF0YUhlbHBlcikge1xyXG4gICAgICAgICAgICBmaWVsZE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRGaWVsZEJ5SWRPck5hbWUoZmllbGRJZCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQnVpbGQgdGhlIGVucmljaGVkIGZpZWxkIG9iamVjdFxyXG4gICAgICAgICAgLy8gTmV3IGZvcm1hdDogY29uc3RydWN0IHRoZSBmdWxsIG9iamVjdCBmcm9tIGZpZWxkIG1vZGVsXHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBJRDogdGhpcy5JRCArICdfJyArIGZpZWxkTW9kZWw/LklELFxyXG4gICAgICAgICAgICBBcHBGaWVsZElEOiBmaWVsZE1vZGVsPy5JRCxcclxuICAgICAgICAgICAgU2VxTm86IGluZGV4ICsgMSxcclxuICAgICAgICAgICAgRmllbGRUeXBlOiBmaWVsZC5pbmNsdWRlcygnLicpID8gRGF0YVNvdXJjZVF1ZXJ5RmllbGRUeXBlLkxvb2t1cEZpZWxkIDogRGF0YVNvdXJjZVF1ZXJ5RmllbGRUeXBlLkVudGl0eUZpZWxkLFxyXG4gICAgICAgICAgICBGaWVsZERldGFpbHM6IGZpZWxkLFxyXG4gICAgICAgICAgICBMb29rdXBEZXRhaWxzOiBmaWVsZCxcclxuICAgICAgICAgICAgRmllbGQ6IGZpZWxkTW9kZWxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGZpZWxkcywgcmV0dXJuIGFuIGVtcHR5IGFycmF5LlxyXG4gICAgICAgIHRoaXMuZW5yaWNoZWRGaWVsZHMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gUmV0dXJuIHRoZSBlbnJpY2hlZCBmaWVsZHMuXHJcbiAgICByZXR1cm4gdGhpcy5lbnJpY2hlZEZpZWxkcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbmRzIGFuZCByZXR1cm5zIHRoZSBmaWVsZHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeSB0aGF0IHNhdGlzZnkgdGhlIGdpdmVuIGZpbHRlciBmdW5jdGlvbi5cclxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBmaWx0ZXJGbiBUaGUgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBmaWVsZHMuXHJcbiAgICogQHJldHVybnMge0RhdGFTb3VyY2VRdWVyaWVzX0ZpZWxkc1tdfSBUaGUgYXJyYXkgb2YgZmllbGRzIHRoYXQgc2F0aXNmeSB0aGUgZmlsdGVyIGZ1bmN0aW9uLlxyXG4gICAqL1xyXG4gIGZpbmRGaWVsZHMoZmlsdGVyRm46IChmaWVsZDogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzKSA9PiBib29sZWFuKTogRGF0YVNvdXJjZVF1ZXJpZXNfRmllbGRzW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZmllbGRzKCkuZmlsdGVyKGZpbHRlckZuKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbmQgY2FjaGVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGF0YSBzb3VyY2UgcXVlcnkuXHJcbiAgICogQHJldHVybnMge1BhcmFtZXRlck1vZGVsW119IFRoZSBhcnJheSBvZiBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMuXHJcbiAgICovXHJcbiAgcGFyYW1ldGVycygpOiBQYXJhbWV0ZXJNb2RlbFtdIHtcclxuICAgIC8vIENoZWNrIGlmIHBhcmFtZXRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4gY2FjaGVkXHJcbiAgICBpZiAoIXRoaXMuY2FjaGVkUGFyYW1ldGVycz8ubGVuZ3RoKSB7XHJcbiAgICAgIC8vIE1hcCByYXcgcGFyYW1ldGVycyB0byBQYXJhbWV0ZXJNb2RlbCBpbnN0YW5jZXMgYW5kIGNhY2hlIHRoZW1cclxuICAgICAgdGhpcy5jYWNoZWRQYXJhbWV0ZXJzID0gKHRoaXMucGFyc2VkQ29uZmlndXJhdGlvbj8uUGFyYW1ldGVycyB8fCBbXSkubWFwKChwOiBhbnkpID0+IG5ldyBQYXJhbWV0ZXJNb2RlbChwKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5jYWNoZWRQYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBtYW5kYXRvcnkgcGFyYW1ldGVycyBmb3IgdGhlIGRhdGEgc291cmNlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIHtQYXJhbWV0ZXJNb2RlbFtdfSBUaGUgYXJyYXkgb2YgbWFuZGF0b3J5IFBhcmFtZXRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBtYW5kYXRvcnlQYXJhbWV0ZXJzKCk6IFBhcmFtZXRlck1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1ldGVycygpLmZpbHRlcihwID0+IHAuSXNNYW5kYXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmluZHMgYSBwYXJhbWV0ZXIgYnkgaXRzIG5hbWUgKGNhc2UtaW5zZW5zaXRpdmUpLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgdG8gZmluZC5cclxuICAgKiBAcmV0dXJucyB7UGFyYW1ldGVyTW9kZWwgfCB1bmRlZmluZWR9IFRoZSBwYXJhbWV0ZXIgbW9kZWwgaW5zdGFuY2UgaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWQuXHJcbiAgICovXHJcbiAgcGFyYW1ldGVyKG5hbWU6IHN0cmluZyk6IFBhcmFtZXRlck1vZGVsIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IG5hbWVMb3dlciA9IG5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiB0aGlzLnBhcmFtZXRlcnMoKS5maW5kKHAgPT4gcC5QYXJhbWV0ZXJOYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lTG93ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFuZCBjYWNoZXMgdGhlIGZpbHRlcnMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7RmlsdGVyTW9kZWxbXX0gVGhlIGFycmF5IG9mIEZpbHRlck1vZGVsIGluc3RhbmNlcy5cclxuICAgKi9cclxuICBmaWx0ZXJzKCk6IEZpbHRlck1vZGVsW10ge1xyXG4gICAgLy8gQ2hlY2sgaWYgZmlsdGVycyBoYXZlIGFscmVhZHkgYmVlbiBjYWNoZWRcclxuICAgIGlmICghdGhpcy5jYWNoZWRGaWx0ZXJzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHJhdyBmaWx0ZXJzIHRvIEZpbHRlck1vZGVsIGluc3RhbmNlcyBhbmQgY2FjaGUgdGhlbVxyXG4gICAgICB0aGlzLmNhY2hlZEZpbHRlcnMgPSAodGhpcy5wYXJzZWRDb25maWd1cmF0aW9uPy5GaWx0ZXJzPy5GaWx0ZXJzIHx8IFtdKS5tYXAoKGY6IGFueSkgPT4gbmV3IEZpbHRlck1vZGVsKGYpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmNhY2hlZEZpbHRlcnM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYW5kIGNhY2hlcyB0aGUgc29ydHMgZm9yIHRoZSBkYXRhIHNvdXJjZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyB7U29ydE1vZGVsW119IFRoZSBhcnJheSBvZiBTb3J0TW9kZWwgaW5zdGFuY2VzLlxyXG4gICAqL1xyXG4gIHNvcnRzKCk6IFNvcnRNb2RlbFtdIHtcclxuICAgIC8vIENoZWNrIGlmIHNvcnRzIGhhdmUgYWxyZWFkeSBiZWVuIGNhY2hlZFxyXG4gICAgaWYgKCF0aGlzLmNhY2hlZFNvcnRzPy5sZW5ndGgpIHtcclxuICAgICAgLy8gTWFwIHJhdyBzb3J0cyB0byBTb3J0TW9kZWwgaW5zdGFuY2VzIGFuZCBjYWNoZSB0aGVtXHJcbiAgICAgIHRoaXMuY2FjaGVkU29ydHMgPSAodGhpcy5wYXJzZWRDb25maWd1cmF0aW9uPy5Tb3J0IHx8IFtdKS5tYXAoKHM6IGFueSkgPT4gbmV3IFNvcnRNb2RlbChzKSk7XHJcbiAgICB9XHJcbiAgICAvLyBSZXR1cm4gdGhlIGNhY2hlZCBzb3J0c1xyXG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkU29ydHM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gc2VhcmNoIHRlcm0gaXMgcHJlc2VudCBpbiBhbnkgb2YgdGhlIGZpZWxkcyBvZiB0aGVcclxuICAgKiBjdXJyZW50IGRhdGEgc291cmNlIHF1ZXJ5XHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRlcm0gVGhlIHNlYXJjaCB0ZXJtXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHNlYXJjaCB0ZXJtIGlzIHByZXNlbnQgaW4gYW55IGZpZWxkXHJcbiAgICovXHJcbiAgc2VhcmNoKHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IHRlcm0udG9Mb3dlckNhc2UoKTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuSUQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5RdWVyeU5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkgfHxcclxuICAgICAgdGhpcy5EaXNwbGF5TmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBEYXRhU291cmNlUXVlcnlNb2RlbCBpbnN0YW5jZSB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICogVGhpcyBlbnN1cmVzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBjb2RlIGV4cGVjdGluZyB0aGUgb2xkIGZvcm1hdC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHthbnl9IFRoZSBkYXRhIGluIG9sZCBBUEkgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHRvSlNPTigpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgSUQ6IHRoaXMuSUQsXHJcbiAgICAgIE9iamVjdElEOiB0aGlzLk9iamVjdElELFxyXG4gICAgICBPYmplY3RJRF9Ub3NhdmU6IHRoaXMuT2JqZWN0SURfVG9zYXZlLFxyXG4gICAgICBRdWVyeU5hbWU6IHRoaXMuUXVlcnlOYW1lLFxyXG4gICAgICBEaXNwbGF5TmFtZTogdGhpcy5EaXNwbGF5TmFtZSxcclxuICAgICAgRmllbGRzOiB0aGlzLmZpZWxkcygpLFxyXG4gICAgICBGaWx0ZXJzOiB7XHJcbiAgICAgICAgRmlsdGVyczogdGhpcy5maWx0ZXJzKCkubWFwKGYgPT4gZi50b0pTT04oKSksXHJcbiAgICAgICAgRmlsdGVyTG9naWM6IHRoaXMuRmlsdGVyTG9naWNcclxuICAgICAgfSxcclxuICAgICAgU29ydDogdGhpcy5zb3J0cygpLm1hcChzID0+IHMudG9KU09OKCkpLFxyXG4gICAgICBQYXJhbWV0ZXJzOiB0aGlzLnBhcmFtZXRlcnMoKS5tYXAocCA9PiBwLnRvSlNPTigpKVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -1,24 +1,35 @@
1
1
  export class FilterModel {
2
2
  constructor(raw) {
3
3
  this.raw = raw;
4
- this.ID = raw?.ID;
5
- this.ConjuctionClause = raw?.ConjuctionClause;
6
- this.RelationalOperator = raw?.RelationalOperator;
4
+ this.ID = raw?.Id;
5
+ this.ConjuctionClause = raw?.Conjunction;
6
+ this.RelationalOperator = raw?.Operator;
7
7
  this.ValueType = raw?.ValueType;
8
- this.value = raw?.value;
8
+ this.value = raw?.Value;
9
9
  this.Sequence = raw?.Sequence;
10
- this.GroupID = raw?.GroupID;
10
+ this.GroupID = raw?.GroupId;
11
11
  this.LookupDetail = raw?.LookupDetail;
12
12
  this.FieldType = raw?.FieldType;
13
- this.FieldID = raw?.FieldID;
13
+ this.FieldID = raw?.Id;
14
14
  }
15
15
  /**
16
- * Converts the current object to a JSON object.
16
+ * Converts the model to JSON in the old API format (PascalCase).
17
17
  *
18
- * @returns A JSON representation of the current object.
18
+ * @returns A JSON representation in old format.
19
19
  */
20
20
  toJSON() {
21
- return this.raw;
21
+ return {
22
+ ID: this.ID,
23
+ ConjuctionClause: this.ConjuctionClause,
24
+ RelationalOperator: this.RelationalOperator,
25
+ ValueType: this.ValueType,
26
+ value: this.value,
27
+ Sequence: this.Sequence,
28
+ GroupID: this.GroupID,
29
+ LookupDetail: this.LookupDetail,
30
+ FieldType: this.FieldType,
31
+ FieldID: this.FieldID
32
+ };
22
33
  }
23
34
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7UUFDOUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLEVBQUUsWUFBWSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmp1Y3Rpb25DbGF1c2UsIERhdGFTb3VyY2VRdWVyeUZpbHRlckZpZWxkVHlwZSwgRmlsdGVyVmFsdWVUeXBlLCBSZWxhdGlvbmFsT3BlcmF0b3IgfSBmcm9tIFwiLi4vZW51bXMvZHNxLmVudW1cIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJNb2RlbCB7XHJcbiAgcmVhZG9ubHkgSUQ6IHN0cmluZztcclxuICByZWFkb25seSBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlO1xyXG4gIHJlYWRvbmx5IFJlbGF0aW9uYWxPcGVyYXRvcjogUmVsYXRpb25hbE9wZXJhdG9yO1xyXG4gIHJlYWRvbmx5IFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlO1xyXG4gIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgU2VxdWVuY2U6IG51bWJlcjtcclxuICByZWFkb25seSBHcm91cElEOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgTG9va3VwRGV0YWlsOiBzdHJpbmcgfCBudWxsO1xyXG4gIHJlYWRvbmx5IEZpZWxkVHlwZTogRGF0YVNvdXJjZVF1ZXJ5RmlsdGVyRmllbGRUeXBlO1xyXG4gIHJlYWRvbmx5IEZpZWxkSUQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByYXc6IGFueSkge1xyXG4gICAgdGhpcy5JRCA9IHJhdz8uSUQ7XHJcbiAgICB0aGlzLkNvbmp1Y3Rpb25DbGF1c2UgPSByYXc/LkNvbmp1Y3Rpb25DbGF1c2U7XHJcbiAgICB0aGlzLlJlbGF0aW9uYWxPcGVyYXRvciA9IHJhdz8uUmVsYXRpb25hbE9wZXJhdG9yO1xyXG4gICAgdGhpcy5WYWx1ZVR5cGUgPSByYXc/LlZhbHVlVHlwZTtcclxuICAgIHRoaXMudmFsdWUgPSByYXc/LnZhbHVlO1xyXG4gICAgdGhpcy5TZXF1ZW5jZSA9IHJhdz8uU2VxdWVuY2U7XHJcbiAgICB0aGlzLkdyb3VwSUQgPSByYXc/Lkdyb3VwSUQ7XHJcbiAgICB0aGlzLkxvb2t1cERldGFpbCA9IHJhdz8uTG9va3VwRGV0YWlsO1xyXG4gICAgdGhpcy5GaWVsZFR5cGUgPSByYXc/LkZpZWxkVHlwZTtcclxuICAgIHRoaXMuRmllbGRJRCA9IHJhdz8uRmllbGRJRDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IG9iamVjdCB0byBhIEpTT04gb2JqZWN0LlxyXG4gICAqXHJcbiAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjdXJyZW50IG9iamVjdC5cclxuICAgKi9cclxuICB0b0pTT04oKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLnJhdztcclxuICB9XHJcbn0iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9maWx0ZXIubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFdBQVc7SUFZdEIsWUFBNkIsR0FBUTtRQUFSLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFDbkMsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLE9BQU8sQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxZQUFZLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU07UUFDSixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uanVjdGlvbkNsYXVzZSwgRGF0YVNvdXJjZVF1ZXJ5RmlsdGVyRmllbGRUeXBlLCBGaWx0ZXJWYWx1ZVR5cGUsIFJlbGF0aW9uYWxPcGVyYXRvciB9IGZyb20gXCIuLi9lbnVtcy9kc3EuZW51bVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlck1vZGVsIHtcclxuICByZWFkb25seSBJRDogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2U7XHJcbiAgcmVhZG9ubHkgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3I7XHJcbiAgcmVhZG9ubHkgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGU7XHJcbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcclxuICByZWFkb25seSBTZXF1ZW5jZTogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IEdyb3VwSUQ6IG51bWJlcjtcclxuICByZWFkb25seSBMb29rdXBEZXRhaWw6IHN0cmluZyB8IG51bGw7XHJcbiAgcmVhZG9ubHkgRmllbGRUeXBlOiBEYXRhU291cmNlUXVlcnlGaWx0ZXJGaWVsZFR5cGU7XHJcbiAgcmVhZG9ubHkgRmllbGRJRDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJhdzogYW55KSB7XHJcbiAgICB0aGlzLklEID0gcmF3Py5JZDtcclxuICAgIHRoaXMuQ29uanVjdGlvbkNsYXVzZSA9IHJhdz8uQ29uanVuY3Rpb247XHJcbiAgICB0aGlzLlJlbGF0aW9uYWxPcGVyYXRvciA9IHJhdz8uT3BlcmF0b3I7XHJcbiAgICB0aGlzLlZhbHVlVHlwZSA9IHJhdz8uVmFsdWVUeXBlO1xyXG4gICAgdGhpcy52YWx1ZSA9IHJhdz8uVmFsdWU7XHJcbiAgICB0aGlzLlNlcXVlbmNlID0gcmF3Py5TZXF1ZW5jZTtcclxuICAgIHRoaXMuR3JvdXBJRCA9IHJhdz8uR3JvdXBJZDtcclxuICAgIHRoaXMuTG9va3VwRGV0YWlsID0gcmF3Py5Mb29rdXBEZXRhaWw7XHJcbiAgICB0aGlzLkZpZWxkVHlwZSA9IHJhdz8uRmllbGRUeXBlO1xyXG4gICAgdGhpcy5GaWVsZElEID0gcmF3Py5JZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIHRoZSBtb2RlbCB0byBKU09OIGluIHRoZSBvbGQgQVBJIGZvcm1hdCAoUGFzY2FsQ2FzZSkuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyBBIEpTT04gcmVwcmVzZW50YXRpb24gaW4gb2xkIGZvcm1hdC5cclxuICAgKi9cclxuICB0b0pTT04oKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIElEOiB0aGlzLklELFxyXG4gICAgICBDb25qdWN0aW9uQ2xhdXNlOiB0aGlzLkNvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgICAgIFJlbGF0aW9uYWxPcGVyYXRvcjogdGhpcy5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgIFZhbHVlVHlwZTogdGhpcy5WYWx1ZVR5cGUsXHJcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxyXG4gICAgICBTZXF1ZW5jZTogdGhpcy5TZXF1ZW5jZSxcclxuICAgICAgR3JvdXBJRDogdGhpcy5Hcm91cElELFxyXG4gICAgICBMb29rdXBEZXRhaWw6IHRoaXMuTG9va3VwRGV0YWlsLFxyXG4gICAgICBGaWVsZFR5cGU6IHRoaXMuRmllbGRUeXBlLFxyXG4gICAgICBGaWVsZElEOiB0aGlzLkZpZWxkSURcclxuICAgIH07XHJcbiAgfVxyXG59Il19