@mediusinc/mng-commons 5.3.0-rc.2 → 5.3.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/core/data-list/data-list.model.d.ts +1 -1
  2. package/core/data-providers/lookup.data-provider.d.ts +5 -5
  3. package/core/descriptors/lookup.descriptor.d.ts +3 -3
  4. package/core/descriptors/table.descriptor.d.ts +1 -1
  5. package/esm2022/core/data-list/data-list-params-helpers.mjs +1 -1
  6. package/esm2022/core/data-list/data-list.model.mjs +1 -1
  7. package/esm2022/core/data-providers/lookup.data-provider.mjs +1 -1
  8. package/esm2022/core/descriptors/lookup.descriptor.mjs +1 -1
  9. package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
  10. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +60 -2
  11. package/esm2022/filter/descriptors/filter.descriptor.mjs +118 -8
  12. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +17 -6
  13. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -1
  14. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +1 -1
  15. package/esm2022/form/components/dropdown/dropdown.component.mjs +3 -3
  16. package/esm2022/model/helpers/model.mjs +1 -1
  17. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +16 -7
  18. package/esm2022/table/api/descriptors/column.descriptor.mjs +125 -4
  19. package/esm2022/table/api/descriptors/sort.descriptor.mjs +23 -1
  20. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +1 -1
  21. package/esm2022/table/api/descriptors/table.descriptor.mjs +435 -44
  22. package/esm2022/table/api/helpers/table-data-provider-descriptor-convert.mjs +7 -0
  23. package/esm2022/table/api/index.mjs +3 -1
  24. package/esm2022/table/api/models/row-expandable-component.model.mjs +2 -0
  25. package/esm2022/table/api/models/table-columns.model.mjs +1 -1
  26. package/esm2022/table/components/column-value/column-value.component.mjs +3 -3
  27. package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +3 -3
  28. package/esm2022/table/components/table/table.component.mjs +6 -6
  29. package/esm2022/tableview/action/components/action/action.component.mjs +3 -3
  30. package/esm2022/tableview/action/components/table/action-table.component.mjs +3 -3
  31. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +6 -6
  32. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +2 -4
  33. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +1 -1
  34. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +14 -1
  35. package/esm2022/tableview/api/editor/models/field-image-preview.model.mjs +2 -0
  36. package/esm2022/tableview/api/index.mjs +3 -1
  37. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +16 -7
  38. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +1 -1
  39. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +5 -5
  40. package/esm2022/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.mjs +7 -0
  41. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
  42. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +3 -3
  43. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +3 -3
  44. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +9 -3
  45. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +3 -3
  46. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -3
  47. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +3 -3
  48. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  49. package/fesm2022/mediusinc-mng-commons-filter.mjs +176 -8
  50. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  51. package/fesm2022/mediusinc-mng-commons-form-api.mjs +16 -5
  52. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  53. package/fesm2022/mediusinc-mng-commons-form.mjs +2 -2
  54. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  55. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  56. package/fesm2022/mediusinc-mng-commons-table-api.mjs +602 -53
  57. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  58. package/fesm2022/mediusinc-mng-commons-table.mjs +9 -9
  59. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  60. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +45 -19
  61. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  62. package/fesm2022/mediusinc-mng-commons-tableview.mjs +23 -18
  63. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  64. package/filter/descriptors/filter-lookup.descriptor.d.ts +70 -12
  65. package/filter/descriptors/filter.descriptor.d.ts +116 -5
  66. package/form/api/data-providers/lookup-data-provider.factory.d.ts +16 -12
  67. package/form/api/data-providers/lookup.data-provider.d.ts +5 -5
  68. package/form/components/autocomplete/autocomplete.component.d.ts +1 -1
  69. package/form/components/dropdown/dropdown.component.d.ts +1 -1
  70. package/model/helpers/model.d.ts +1 -1
  71. package/package.json +7 -7
  72. package/table/api/data-providers/table-data-provider.factory.d.ts +9 -5
  73. package/table/api/descriptors/column.descriptor.d.ts +126 -5
  74. package/table/api/descriptors/sort.descriptor.d.ts +22 -0
  75. package/table/api/descriptors/table-descriptor.factory.d.ts +8 -4
  76. package/table/api/descriptors/table.descriptor.d.ts +429 -28
  77. package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +20 -0
  78. package/table/api/index.d.ts +2 -0
  79. package/table/api/models/row-expandable-component.model.d.ts +4 -0
  80. package/table/api/models/table-columns.model.d.ts +6 -6
  81. package/table/components/column-filter/column-filter.component.d.ts +1 -1
  82. package/table/components/filter/filter-form/filter-form.component.d.ts +1 -1
  83. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +1 -1
  84. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +11 -11
  85. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +5 -5
  86. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +12 -12
  87. package/tableview/api/editor/descriptors/field.descriptor.d.ts +10 -0
  88. package/tableview/api/editor/models/field-image-preview.model.d.ts +4 -0
  89. package/tableview/api/index.d.ts +2 -0
  90. package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +9 -5
  91. package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +10 -6
  92. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +17 -17
  93. package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +20 -0
  94. package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +1 -0
  95. package/version-info.json +5 -5
@@ -119,9 +119,10 @@ export class ColumnDescriptor {
119
119
  }
120
120
  /**
121
121
  * Converts column to given type with additional arguments
122
- * @param type column type enum
123
- * @param displayType column display type
124
- * @param args any additional arguments for column (optional)
122
+ *
123
+ * @param type Column type enum.
124
+ * @param displayType Column display type
125
+ * @param args Any additional arguments that might be needed for specific target type.
125
126
  */
126
127
  asType(type, displayType, ...args) {
127
128
  switch (type) {
@@ -140,6 +141,11 @@ export class ColumnDescriptor {
140
141
  return this;
141
142
  }
142
143
  }
144
+ /**
145
+ * Set column display as number.
146
+ *
147
+ * @param opts Options for number display.
148
+ */
143
149
  asNumber(opts) {
144
150
  this._columnType = ColumnTypeEnum.Number;
145
151
  this._columnDisplayType = ColumnDisplayTypeEnum.Number;
@@ -150,12 +156,24 @@ export class ColumnDescriptor {
150
156
  this._locale = opts?.locale;
151
157
  return this;
152
158
  }
159
+ /**
160
+ * Set column display as currency.
161
+ *
162
+ * @param opts Options for currency display.
163
+ */
153
164
  asCurrency(opts) {
154
165
  return this.asCurrencyUnsafe({
155
166
  ...opts,
156
167
  currencyProperty: opts?.currencyProperty ? opts.currencyProperty : undefined
157
168
  });
158
169
  }
170
+ /**
171
+ * Set column display as currency.
172
+ *
173
+ * This function is UNSAFE!
174
+ *
175
+ * @param opts Options for currency display.
176
+ */
159
177
  asCurrencyUnsafe(opts) {
160
178
  this._columnType = ColumnTypeEnum.Number;
161
179
  this._columnDisplayType = ColumnDisplayTypeEnum.Currency;
@@ -169,12 +187,24 @@ export class ColumnDescriptor {
169
187
  this._locale = opts?.locale;
170
188
  return this;
171
189
  }
190
+ /**
191
+ * Set column display as date.
192
+ *
193
+ * @param displayFormat Date display format (in Angular date formatting).
194
+ */
172
195
  asDate(displayFormat = 'dd.MM.yyyy') {
173
196
  this._columnType = ColumnTypeEnum.Date;
174
197
  this._columnDisplayType = ColumnDisplayTypeEnum.Date;
175
198
  this._displayFormat = displayFormat;
176
199
  return this;
177
200
  }
201
+ /**
202
+ * Set column display as boolean.
203
+ *
204
+ * @param yes Translation key for true value.
205
+ * @param no Translation key for false value.
206
+ * @param asIcon Use true/false texts as icon.
207
+ */
178
208
  asBoolean(yes, no, asIcon = false) {
179
209
  this._columnType = ColumnTypeEnum.Boolean;
180
210
  this._columnDisplayType = ColumnDisplayTypeEnum.Boolean;
@@ -183,38 +213,76 @@ export class ColumnDescriptor {
183
213
  this._booleanNo = no;
184
214
  return this;
185
215
  }
216
+ /**
217
+ * Set column display as enum.
218
+ *
219
+ * @param enumDesc Enum descriptor for value display.
220
+ */
186
221
  asEnumUnsafe(enumDesc) {
187
222
  this._columnType = ColumnTypeEnum.Enum;
188
223
  this._columnDisplayType = ColumnDisplayTypeEnum.Enum;
189
224
  this._enum = enumDesc;
190
225
  return this;
191
226
  }
227
+ /**
228
+ * Set column display with custom component.
229
+ *
230
+ * @param customComponentType Component type to be used for display. Must implement {IColumnValueComponent}.
231
+ */
192
232
  asCustomComponent(customComponentType) {
193
233
  this._columnType = ColumnTypeEnum.Custom;
194
234
  this._columnDisplayType = ColumnDisplayTypeEnum.Component;
195
235
  this._customComponentType = customComponentType;
196
236
  return this;
197
237
  }
238
+ /**
239
+ * Sets columns display as HTML using Angular innerHTML.
240
+ */
198
241
  asHtml() {
199
242
  this._columnDisplayType = ColumnDisplayTypeEnum.Html;
200
243
  return this;
201
244
  }
245
+ /**
246
+ * Sets the class names for the column.
247
+ *
248
+ * @param className - The class name for the element column.
249
+ * @param headerClassName - The class name for the header element of the column.
250
+ * @param classNameMapFn - A function to return class name based on the current class name and row item value.
251
+ */
202
252
  withClassName(className, headerClassName, classNameMapFn) {
203
253
  this._className = className ?? '';
204
254
  this._headerClassName = headerClassName ?? '';
205
255
  this._classNameMapFn = classNameMapFn;
206
256
  return this;
207
257
  }
258
+ /**
259
+ * Sets the width for the column.
260
+ *
261
+ * @param width - The desired width in percents (relative to table width).
262
+ * @param minWidth - The minimum width of column in pixels.
263
+ * @param maxWidth - The maximum width of column in pixels.
264
+ */
208
265
  withWidth(width, minWidth, maxWidth) {
209
266
  this._width = width ?? null;
210
267
  this._minWidth = minWidth ?? null;
211
268
  this._maxWidth = maxWidth ?? null;
212
269
  return this;
213
270
  }
271
+ /**
272
+ * Sets the title for the column. If title is undefined, then the title will be calculated based on table model (i18nBase) and column property.
273
+ *
274
+ * @param title - The title of the column.
275
+ */
214
276
  withTitle(title) {
215
277
  this._title = title;
216
278
  return this;
217
279
  }
280
+ /**
281
+ * Enables button that copies column value to the clipboard.
282
+ *
283
+ * @param hasCopyToClipboard - Flag to enable/disable the feature.
284
+ * @param clipboardValueGetter - Optional getter function to adjust the value to be copied to clipboard.
285
+ */
218
286
  withCopyToClipboard(hasCopyToClipboard = true, clipboardValueGetter) {
219
287
  this._hasCopyToClipboard = hasCopyToClipboard;
220
288
  if (clipboardValueGetter) {
@@ -222,31 +290,81 @@ export class ColumnDescriptor {
222
290
  }
223
291
  return this;
224
292
  }
293
+ /**
294
+ * Sets the template for displaying value.
295
+ *
296
+ * Use `{{}}` syntax for string interpolation within template.
297
+ * Use `item` key to access value of row item.
298
+ *
299
+ * Example interpolates row item's title within some text:
300
+ * ```
301
+ * This template shows {{item.title}} value in column.
302
+ * ```
303
+ *
304
+ * @param {string} template - The template to set.
305
+ *
306
+ * @usageNotes
307
+ * Display item's title property within some text:
308
+ *
309
+ * ```
310
+ * This template shows {{item.title}} value in column.
311
+ * ```
312
+ */
225
313
  withTemplate(template) {
226
314
  this._template = template;
227
315
  return this;
228
316
  }
317
+ /**
318
+ * Sets the getter function for adjusting the column value for display.
319
+ *
320
+ * @param {GetterFn<ColumnValue, TableModel>} getter - The getter function to be used.
321
+ */
229
322
  withGetter(getter) {
230
323
  this._getter = getter;
231
324
  return this;
232
325
  }
326
+ /**
327
+ * Show text in multiple lines (useful for displaying of long texts).
328
+ *
329
+ * @param isMultiline Enables/disabled the feature.
330
+ */
233
331
  withMultiline(isMultiline = true) {
234
332
  this._isMultiline = isMultiline;
235
333
  return this;
236
334
  }
335
+ /**
336
+ * Shows the whole display value as text (usefule when display values are expected to be to long and/or are overflown).
337
+ *
338
+ * @param valueAsTooltip Enables/disabled the feature.
339
+ */
237
340
  withValueAsTooltip(valueAsTooltip = true) {
238
341
  this._hasValueAsTooltip = valueAsTooltip;
239
342
  return this;
240
343
  }
344
+ /**
345
+ * Enables ordering of column.
346
+ *
347
+ * @param isReorderable Flag to enable/disable reordering.
348
+ */
241
349
  withReorderable(isReorderable = true) {
242
350
  this._isReorderable = isReorderable;
243
351
  return this;
244
352
  }
353
+ /**
354
+ * Enables toggling column visibility.
355
+ *
356
+ * @param isReorderable Flag to enable/disable visibility toggle.
357
+ */
245
358
  withToggleable(isToggleable = true, isVisible = true) {
246
359
  this._isToggleable = isToggleable;
247
360
  this._isVisible = isVisible;
248
361
  return this;
249
362
  }
363
+ /**
364
+ * Enables localization of column by displaying flag if the column value is localized (or just displaying default fallback text).
365
+ *
366
+ * @param existsProperty Property to mark
367
+ */
250
368
  localized(existsProperty) {
251
369
  if (existsProperty) {
252
370
  this._localizationExistsProperty = existsProperty;
@@ -256,6 +374,9 @@ export class ColumnDescriptor {
256
374
  }
257
375
  return this;
258
376
  }
377
+ /**
378
+ * Copies current descriptor to a new instance.
379
+ */
259
380
  copy() {
260
381
  const descriptor = new ColumnDescriptor(this._property);
261
382
  this.copyFieldsTo(descriptor);
@@ -346,4 +467,4 @@ export class ColumnDynamicDescriptor extends ColumnDescriptor {
346
467
  return descriptor;
347
468
  }
348
469
  }
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90YWJsZS9hcGkvc3JjL2Rlc2NyaXB0b3JzL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRWpGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQXFCN0UsTUFBTSxPQUFPLGdCQUFnQjtJQW1EekIsWUFBWSxRQUFnQjtRQWpEcEIsZ0JBQVcsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNwRCx1QkFBa0IsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBUXpFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVuQyxvQkFBb0I7UUFDWixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTFCLFVBQVU7UUFDRixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUt4QyxvQkFBb0I7UUFDWixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVkvQixVQUFVO1FBQ0Ysd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDLGVBQWU7UUFDUCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUl6QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcs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QixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksY0FBYyxDQUFDLFVBQW1CO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNhLElBQUk7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0dldHRlckZufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7Y29sdW1uVG9EYXRlTnVtYmVyT3JCb29sZWFufSBmcm9tICcuLi9oZWxwZXJzL2NsYXNzLWF0dHJpYnV0ZS1jb252ZXJ0ZXInO1xuaW1wb3J0IHtJQ29sdW1uVmFsdWVDb21wb25lbnR9IGZyb20gJy4uL21vZGVscy9jb2x1bW4tdmFsdWUubW9kZWwnO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW0sIENvbHVtblR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ29sdW1uQ3VycmVuY3lPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7XG4gICAgY3VycmVuY3lQcm9wZXJ0eT86IFByb3BlcnR5O1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xufSAmIENvbHVtbk51bWJlckZyYWN0aW9uT3B0c1R5cGUgJlxuICAgIENvbHVtbkxvY2FsZU9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5OdW1iZXJPcHRzVHlwZSA9IENvbHVtbk51bWJlckZyYWN0aW9uT3B0c1R5cGUgJiBDb2x1bW5Mb2NhbGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTnVtYmVyRnJhY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBtaW5JbnRlZ2VyRGlnaXRzPzogbnVtYmVyO1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTG9jYWxlT3B0c1R5cGUgPSB7XG4gICAgbG9jYWxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3Byb3BlcnR5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY29sdW1uVHlwZTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5TdHJpbmc7XG4gICAgcHJpdmF0ZSBfY29sdW1uRGlzcGxheVR5cGU6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5TdHJpbmc7XG4gICAgcHJvdGVjdGVkIF90aXRsZT86IHN0cmluZztcblxuICAgIC8vIHZhbHVlIGRpc3BsYXlcbiAgICBwcml2YXRlIF9kaXNwbGF5Rm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF90ZW1wbGF0ZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9nZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD47XG4gICAgcHJpdmF0ZSBfaXNNdWx0aWxpbmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYXNWYWx1ZUFzVG9vbHRpcCA9IGZhbHNlO1xuXG4gICAgLy8gY29sdW1uIHZpc2liaWxpdHlcbiAgICBwcml2YXRlIF9pc1Jlb3JkZXJhYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNUb2dnbGVhYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIC8vIHN0eWxpbmdcbiAgICBwcml2YXRlIF9oZWFkZXJDbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF9jbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF9jbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUYWJsZU1vZGVsKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21pbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9tYXhXaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBlbnVtIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2VudW0/OiBFbnVtRGVzY3JpcHRvcjxhbnk+O1xuXG4gICAgLy8gYm9vbGVhbiBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9ib29sZWFuQXNJY29uID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfYm9vbGVhblllcz86IHN0cmluZztcbiAgICBwcml2YXRlIF9ib29sZWFuTm8/OiBzdHJpbmc7XG5cbiAgICAvLyBjdXJyZW5jeSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9jdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lQcm9wZXJ0eT86IHN0cmluZztcbiAgICBwcml2YXRlIF9jdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJztcblxuICAgIC8vIGN1c3RvbSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9jdXN0b21Db21wb25lbnRUeXBlPzogVHlwZTxJQ29sdW1uVmFsdWVDb21wb25lbnQ8Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWwsIENvbHVtbk1vZGVsPj47XG5cbiAgICAvLyBoZWxwZXJzXG4gICAgcHJpdmF0ZSBfaGFzQ29weVRvQ2xpcGJvYXJkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfY2xpcGJvYXJkVmFsdWVHZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD47XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICBwcml2YXRlIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5IGFzIHN0cmluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uRGlzcGxheVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNwbGF5Rm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWVNYXBGbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZU1hcEZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuQXNJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ZZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuWWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbk5vKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbk5vO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeUNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeUNvZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0NvcHlUb0NsaXBib2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsaXBib2FyZFZhbHVlR2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xpcGJvYXJkVmFsdWVHZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNNdWx0aWxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc011bHRpbGluZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1ZhbHVlQXNUb29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Jlb3JkZXJhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVG9nZ2xlYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGNvbHVtbiB0byBnaXZlbiB0eXBlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBAcGFyYW0gdHlwZSBjb2x1bW4gdHlwZSBlbnVtXG4gICAgICogQHBhcmFtIGRpc3BsYXlUeXBlIGNvbHVtbiBkaXNwbGF5IHR5cGVcbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGNvbHVtbiAob3B0aW9uYWwpXG4gICAgICovXG4gICAgcHVibGljIGFzVHlwZSh0eXBlOiBDb2x1bW5UeXBlRW51bSwgZGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3kgPyB0aGlzLmFzQ3VycmVuY3koLi4uYXJncykgOiB0aGlzLmFzTnVtYmVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQm9vbGVhbiguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRGF0ZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0RhdGUoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNFbnVtVW5zYWZlKGFyZ3NbMF0gYXMgRW51bURlc2NyaXB0b3I8YW55Pik7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0N1c3RvbUNvbXBvbmVudChhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc051bWJlcihvcHRzPzogQ29sdW1uTnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1cnJlbmN5KG9wdHM/OiBDb2x1bW5DdXJyZW5jeU9wdHNUeXBlPGtleW9mIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoe1xuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgIGN1cnJlbmN5UHJvcGVydHk6IG9wdHM/LmN1cnJlbmN5UHJvcGVydHkgPyAob3B0cy5jdXJyZW5jeVByb3BlcnR5IGFzIHN0cmluZykgOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IENvbHVtbkN1cnJlbmN5T3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5Q29kZSA9IG9wdHM/LmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeVByb3BlcnR5ID0gb3B0cz8uY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gb3B0cz8uY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0RhdGUoZGlzcGxheUZvcm1hdCA9ICdkZC5NTS55eXl5Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0Jvb2xlYW4oeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5Bc0ljb24gPSBhc0ljb247XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ZZXMgPSB5ZXM7XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ObyA9IG5vO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNFbnVtVW5zYWZlKGVudW1EZXNjOiBFbnVtRGVzY3JpcHRvcjxhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9lbnVtID0gZW51bURlc2M7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1c3RvbUNvbXBvbmVudChjdXN0b21Db21wb25lbnRUeXBlOiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbCwgQ29sdW1uTW9kZWw+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Db21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSBjdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNIdG1sKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5IdG1sO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShjbGFzc05hbWU/OiBzdHJpbmcsIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZywgY2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVGFibGVNb2RlbCkgPT4gc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lID8/ICcnO1xuICAgICAgICB0aGlzLl9jbGFzc05hbWVNYXBGbiA9IGNsYXNzTmFtZU1hcEZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29weVRvQ2xpcGJvYXJkKGhhc0NvcHlUb0NsaXBib2FyZCA9IHRydWUsIGNsaXBib2FyZFZhbHVlR2V0dGVyPzogR2V0dGVyRm48Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZCA9IGhhc0NvcHlUb0NsaXBib2FyZDtcblxuICAgICAgICBpZiAoY2xpcGJvYXJkVmFsdWVHZXR0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaXBib2FyZFZhbHVlR2V0dGVyID0gY2xpcGJvYXJkVmFsdWVHZXR0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRlbXBsYXRlKHRlbXBsYXRlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhHZXR0ZXIoZ2V0dGVyPzogR2V0dGVyRm48Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2dldHRlciA9IGdldHRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhNdWx0aWxpbmUoaXNNdWx0aWxpbmUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzTXVsdGlsaW5lID0gaXNNdWx0aWxpbmU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVmFsdWVBc1Rvb2x0aXAodmFsdWVBc1Rvb2x0aXAgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1ZhbHVlQXNUb29sdGlwID0gdmFsdWVBc1Rvb2x0aXA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVvcmRlcmFibGUoaXNSZW9yZGVyYWJsZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNSZW9yZGVyYWJsZSA9IGlzUmVvcmRlcmFibGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVG9nZ2xlYWJsZShpc1RvZ2dsZWFibGUgPSB0cnVlLCBpc1Zpc2libGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVG9nZ2xlYWJsZSA9IGlzVG9nZ2xlYWJsZTtcbiAgICAgICAgdGhpcy5faXNWaXNpYmxlID0gaXNWaXNpYmxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkKGV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmIChleGlzdHNQcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBleGlzdHNQcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ID0gYCR7dGhpcy5fcHJvcGVydHl9TG9jYWxpemVkYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsLCBDb2x1bW5WYWx1ZT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKG9iajogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KSB7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9jb2x1bW5UeXBlID0gdGhpcy5fY29sdW1uVHlwZTtcbiAgICAgICAgb2JqLl9jb2x1bW5EaXNwbGF5VHlwZSA9IHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlO1xuICAgICAgICBvYmouX2VudW0gPSB0aGlzLl9lbnVtO1xuICAgICAgICBvYmouX2Jvb2xlYW5Bc0ljb24gPSB0aGlzLl9ib29sZWFuQXNJY29uO1xuICAgICAgICBvYmouX2Jvb2xlYW5ZZXMgPSB0aGlzLl9ib29sZWFuWWVzO1xuICAgICAgICBvYmouX2Jvb2xlYW5ObyA9IHRoaXMuX2Jvb2xlYW5ObztcbiAgICAgICAgb2JqLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIG9iai5fY3VycmVuY3lDb2RlID0gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICBvYmouX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeVByb3BlcnR5ID0gdGhpcy5fY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9kaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgb2JqLl9oZWFkZXJDbGFzc05hbWUgPSB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBvYmouX2NsYXNzTmFtZU1hcEZuID0gdGhpcy5fY2xhc3NOYW1lTWFwRm47XG4gICAgICAgIG9iai5fd2lkdGggPSB0aGlzLl93aWR0aDtcbiAgICAgICAgb2JqLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBvYmouX21heFdpZHRoID0gdGhpcy5fbWF4V2lkdGg7XG4gICAgICAgIG9iai5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIG9iai5faGFzQ29weVRvQ2xpcGJvYXJkID0gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgICAgICBvYmouX3RlbXBsYXRlID0gdGhpcy5fdGVtcGxhdGU7XG4gICAgICAgIG9iai5fZ2V0dGVyID0gdGhpcy5fZ2V0dGVyO1xuICAgICAgICBvYmouX2lzTXVsdGlsaW5lID0gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgICAgIG9iai5faGFzVmFsdWVBc1Rvb2x0aXAgPSB0aGlzLl9oYXNWYWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgb2JqLl9pc1Jlb3JkZXJhYmxlID0gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICAgICAgb2JqLl9pc1RvZ2dsZWFibGUgPSB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgICAgIG9iai5faXNWaXNpYmxlID0gdGhpcy5faXNWaXNpYmxlO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBfdmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgICAvLyBwcml2YXRlIF9maWx0ZXJTdGF0dXM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZpc2liaWxpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmlsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY29sdW1uJ3MgdGl0bGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdGl0bGUgdGl0bGUgdG8gYmUgc2V0XG4gICAgICogQHBhcmFtIG92ZXJyaWRlIHNob3VsZCBjb2x1bW4gdGl0bGUgaWYgYWxsIHJlYWR5IHNldD9cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcsIG92ZXJyaWRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RpdGxlID09IG51bGwgfHwgb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBhdXRvbWF0aWMgdHlwZSBhbmQgcmV0dXJucyB0aGlzIGNvbHVtblxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQXV0b21hdGljVHlwZSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGNvbHVtblRvRGF0ZU51bWJlck9yQm9vbGVhbih0aGlzLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBzdGF0ZSBmb3IgY29sdW1uIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHZpc2liaWxpdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFZpc2liaWxpdHkodmlzaWJpbGl0eTogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl92aXNpYmlsaXR5ID0gdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHkgb2YgY29sdW1uIGR5bmFtaWMgZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl92aXNpYmlsaXR5ID0gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQ29sdW1uRGVzY3JpcHRvcigpOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgYW55PiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
470
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90YWJsZS9hcGkvc3JjL2Rlc2NyaXB0b3JzL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRWpGLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQXFCN0UsTUFBTSxPQUFPLGdCQUFnQjtJQW1EekIsWUFBWSxRQUFnQjtRQWpEcEIsZ0JBQVcsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNwRCx1QkFBa0IsR0FBMEIscUJBQXFCLENBQUMsTUFBTSxDQUFDO1FBUXpFLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUVuQyxvQkFBb0I7UUFDWixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRTFCLFVBQVU7UUFDRixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUt4QyxvQkFBb0I7UUFDWixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQVkvQixVQUFVO1FBQ0Ysd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDLGVBQWU7UUFDUCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUl6QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQVcs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b3JlJztcblxuaW1wb3J0IHtHZXR0ZXJGbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7RW51bURlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge2NvbHVtblRvRGF0ZU51bWJlck9yQm9vbGVhbn0gZnJvbSAnLi4vaGVscGVycy9jbGFzcy1hdHRyaWJ1dGUtY29udmVydGVyJztcbmltcG9ydCB7SUNvbHVtblZhbHVlQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvY29sdW1uLXZhbHVlLm1vZGVsJztcbmltcG9ydCB7Q29sdW1uRGlzcGxheVR5cGVFbnVtLCBDb2x1bW5UeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIENvbHVtbkN1cnJlbmN5T3B0c1R5cGU8UHJvcGVydHkgPSBzdHJpbmc+ID0ge1xuICAgIGN1cnJlbmN5UHJvcGVydHk/OiBQcm9wZXJ0eTtcbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJztcbn0gJiBDb2x1bW5OdW1iZXJGcmFjdGlvbk9wdHNUeXBlICZcbiAgICBDb2x1bW5Mb2NhbGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTnVtYmVyT3B0c1R5cGUgPSBDb2x1bW5OdW1iZXJGcmFjdGlvbk9wdHNUeXBlICYgQ29sdW1uTG9jYWxlT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIENvbHVtbk51bWJlckZyYWN0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluSW50ZWdlckRpZ2l0cz86IG51bWJlcjtcbiAgICBtaW5GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgICBtYXhGcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtbkxvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsLCBDb2x1bW5WYWx1ZSA9IENvbHVtbk1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2NvbHVtblR5cGU6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uU3RyaW5nO1xuICAgIHByaXZhdGUgX2NvbHVtbkRpc3BsYXlUeXBlOiBDb2x1bW5EaXNwbGF5VHlwZUVudW0gPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uU3RyaW5nO1xuICAgIHByb3RlY3RlZCBfdGl0bGU/OiBzdHJpbmc7XG5cbiAgICAvLyB2YWx1ZSBkaXNwbGF5XG4gICAgcHJpdmF0ZSBfZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZ2V0dGVyPzogR2V0dGVyRm48Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWw+O1xuICAgIHByaXZhdGUgX2lzTXVsdGlsaW5lID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaGFzVmFsdWVBc1Rvb2x0aXAgPSBmYWxzZTtcblxuICAgIC8vIGNvbHVtbiB2aXNpYmlsaXR5XG4gICAgcHJpdmF0ZSBfaXNSZW9yZGVyYWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVG9nZ2xlYWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVmlzaWJsZSA9IHRydWU7XG5cbiAgICAvLyBzdHlsaW5nXG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVGFibGVNb2RlbCkgPT4gc3RyaW5nO1xuICAgIHByaXZhdGUgX3dpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9taW5XaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbWF4V2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gZW51bSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9lbnVtPzogRW51bURlc2NyaXB0b3I8YW55PjtcblxuICAgIC8vIGJvb2xlYW4gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfYm9vbGVhbkFzSWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5ZZXM/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYm9vbGVhbk5vPzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZSc7XG5cbiAgICAvLyBjdXN0b20gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50VHlwZT86IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PENvbHVtblZhbHVlLCBUYWJsZU1vZGVsLCBDb2x1bW5Nb2RlbD4+O1xuXG4gICAgLy8gaGVscGVyc1xuICAgIHByaXZhdGUgX2hhc0NvcHlUb0NsaXBib2FyZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2NsaXBib2FyZFZhbHVlR2V0dGVyPzogR2V0dGVyRm48Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWw+O1xuXG4gICAgLy8gbG9jYWxpemF0aW9uXG4gICAgcHJpdmF0ZSBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbkRpc3BsYXlUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uRGlzcGxheVR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzcGxheUZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGVhZGVyQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lTWFwRm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWVNYXBGbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtaW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbldpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhXaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbkFzSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5Bc0ljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuWWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhblllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ObygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5ObztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lDb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lEaXNwbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDb3B5VG9DbGlwYm9hcmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGlwYm9hcmRWYWx1ZUdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaXBib2FyZFZhbHVlR2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldHRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTXVsdGlsaW5lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNWYWx1ZUFzVG9vbHRpcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1ZhbHVlQXNUb29sdGlwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNSZW9yZGVyYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVvcmRlcmFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1RvZ2dsZWFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Zpc2libGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBjb2x1bW4gdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSBDb2x1bW4gdHlwZSBlbnVtLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5VHlwZSBDb2x1bW4gZGlzcGxheSB0eXBlXG4gICAgICogQHBhcmFtIGFyZ3MgQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIHRoYXQgbWlnaHQgYmUgbmVlZGVkIGZvciBzcGVjaWZpYyB0YXJnZXQgdHlwZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXNUeXBlKHR5cGU6IENvbHVtblR5cGVFbnVtLCBkaXNwbGF5VHlwZT86IENvbHVtbkRpc3BsYXlUeXBlRW51bSwgLi4uYXJnczogYW55W10pOiB0aGlzIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlzcGxheVR5cGUgPT09IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeSA/IHRoaXMuYXNDdXJyZW5jeSguLi5hcmdzKSA6IHRoaXMuYXNOdW1iZXIoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNCb29sZWFuKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5EYXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRGF0ZSguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRW51bTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0VudW1VbnNhZmUoYXJnc1swXSBhcyBFbnVtRGVzY3JpcHRvcjxhbnk+KTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQ3VzdG9tQ29tcG9uZW50KGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5TdHJpbmc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGNvbHVtbiBkaXNwbGF5IGFzIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIE9wdGlvbnMgZm9yIG51bWJlciBkaXNwbGF5LlxuICAgICAqL1xuICAgIHB1YmxpYyBhc051bWJlcihvcHRzPzogQ29sdW1uTnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBjb2x1bW4gZGlzcGxheSBhcyBjdXJyZW5jeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIE9wdGlvbnMgZm9yIGN1cnJlbmN5IGRpc3BsYXkuXG4gICAgICovXG4gICAgcHVibGljIGFzQ3VycmVuY3kob3B0cz86IENvbHVtbkN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXJyZW5jeVVuc2FmZSh7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY3VycmVuY3lQcm9wZXJ0eTogb3B0cz8uY3VycmVuY3lQcm9wZXJ0eSA/IChvcHRzLmN1cnJlbmN5UHJvcGVydHkgYXMgc3RyaW5nKSA6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgY29sdW1uIGRpc3BsYXkgYXMgY3VycmVuY3kuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIFVOU0FGRSFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIE9wdGlvbnMgZm9yIGN1cnJlbmN5IGRpc3BsYXkuXG4gICAgICovXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IENvbHVtbkN1cnJlbmN5T3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5Q29kZSA9IG9wdHM/LmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeVByb3BlcnR5ID0gb3B0cz8uY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gb3B0cz8uY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBjb2x1bW4gZGlzcGxheSBhcyBkYXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpc3BsYXlGb3JtYXQgRGF0ZSBkaXNwbGF5IGZvcm1hdCAoaW4gQW5ndWxhciBkYXRlIGZvcm1hdHRpbmcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc0RhdGUoZGlzcGxheUZvcm1hdCA9ICdkZC5NTS55eXl5Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBjb2x1bW4gZGlzcGxheSBhcyBib29sZWFuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHllcyBUcmFuc2xhdGlvbiBrZXkgZm9yIHRydWUgdmFsdWUuXG4gICAgICogQHBhcmFtIG5vIFRyYW5zbGF0aW9uIGtleSBmb3IgZmFsc2UgdmFsdWUuXG4gICAgICogQHBhcmFtIGFzSWNvbiBVc2UgdHJ1ZS9mYWxzZSB0ZXh0cyBhcyBpY29uLlxuICAgICAqL1xuICAgIHB1YmxpYyBhc0Jvb2xlYW4oeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5Bc0ljb24gPSBhc0ljb247XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ZZXMgPSB5ZXM7XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ObyA9IG5vO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgY29sdW1uIGRpc3BsYXkgYXMgZW51bS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBlbnVtRGVzYyBFbnVtIGRlc2NyaXB0b3IgZm9yIHZhbHVlIGRpc3BsYXkuXG4gICAgICovXG4gICAgcHVibGljIGFzRW51bVVuc2FmZShlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fZW51bSA9IGVudW1EZXNjO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgY29sdW1uIGRpc3BsYXkgd2l0aCBjdXN0b20gY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1c3RvbUNvbXBvbmVudFR5cGUgQ29tcG9uZW50IHR5cGUgdG8gYmUgdXNlZCBmb3IgZGlzcGxheS4gTXVzdCBpbXBsZW1lbnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudFR5cGU6IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PENvbHVtblZhbHVlLCBUYWJsZU1vZGVsLCBDb2x1bW5Nb2RlbD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5DdXN0b207XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IGN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgY29sdW1ucyBkaXNwbGF5IGFzIEhUTUwgdXNpbmcgQW5ndWxhciBpbm5lckhUTUwuXG4gICAgICovXG4gICAgcHVibGljIGFzSHRtbCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uSHRtbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY2xhc3MgbmFtZXMgZm9yIHRoZSBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgZm9yIHRoZSBlbGVtZW50IGNvbHVtbi5cbiAgICAgKiBAcGFyYW0gaGVhZGVyQ2xhc3NOYW1lIC0gVGhlIGNsYXNzIG5hbWUgZm9yIHRoZSBoZWFkZXIgZWxlbWVudCBvZiB0aGUgY29sdW1uLlxuICAgICAqIEBwYXJhbSBjbGFzc05hbWVNYXBGbiAtIEEgZnVuY3Rpb24gdG8gcmV0dXJuIGNsYXNzIG5hbWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgY2xhc3MgbmFtZSBhbmQgcm93IGl0ZW0gdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDbGFzc05hbWUoY2xhc3NOYW1lPzogc3RyaW5nLCBoZWFkZXJDbGFzc05hbWU/OiBzdHJpbmcsIGNsYXNzTmFtZU1hcEZuPzogKGNsYXNzTmFtZT86IHN0cmluZywgaXRlbT86IFRhYmxlTW9kZWwpID0+IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWUgPz8gJyc7XG4gICAgICAgIHRoaXMuX2hlYWRlckNsYXNzTmFtZSA9IGhlYWRlckNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lTWFwRm4gPSBjbGFzc05hbWVNYXBGbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgd2lkdGggZm9yIHRoZSBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gd2lkdGggLSBUaGUgZGVzaXJlZCB3aWR0aCBpbiBwZXJjZW50cyAocmVsYXRpdmUgdG8gdGFibGUgd2lkdGgpLlxuICAgICAqIEBwYXJhbSBtaW5XaWR0aCAtIFRoZSBtaW5pbXVtIHdpZHRoIG9mIGNvbHVtbiBpbiBwaXhlbHMuXG4gICAgICogQHBhcmFtIG1heFdpZHRoIC0gVGhlIG1heGltdW0gd2lkdGggb2YgY29sdW1uIGluIHBpeGVscy5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGl0bGUgZm9yIHRoZSBjb2x1bW4uIElmIHRpdGxlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdGl0bGUgd2lsbCBiZSBjYWxjdWxhdGVkIGJhc2VkIG9uIHRhYmxlIG1vZGVsIChpMThuQmFzZSkgYW5kIGNvbHVtbiBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgY29sdW1uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBidXR0b24gdGhhdCBjb3BpZXMgY29sdW1uIHZhbHVlIHRvIHRoZSBjbGlwYm9hcmQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaGFzQ29weVRvQ2xpcGJvYXJkIC0gRmxhZyB0byBlbmFibGUvZGlzYWJsZSB0aGUgZmVhdHVyZS5cbiAgICAgKiBAcGFyYW0gY2xpcGJvYXJkVmFsdWVHZXR0ZXIgLSBPcHRpb25hbCBnZXR0ZXIgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSB2YWx1ZSB0byBiZSBjb3BpZWQgdG8gY2xpcGJvYXJkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29weVRvQ2xpcGJvYXJkKGhhc0NvcHlUb0NsaXBib2FyZCA9IHRydWUsIGNsaXBib2FyZFZhbHVlR2V0dGVyPzogR2V0dGVyRm48Q29sdW1uVmFsdWUsIFRhYmxlTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZCA9IGhhc0NvcHlUb0NsaXBib2FyZDtcblxuICAgICAgICBpZiAoY2xpcGJvYXJkVmFsdWVHZXR0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2NsaXBib2FyZFZhbHVlR2V0dGVyID0gY2xpcGJvYXJkVmFsdWVHZXR0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0ZW1wbGF0ZSBmb3IgZGlzcGxheWluZyB2YWx1ZS5cbiAgICAgKlxuICAgICAqIFVzZSBge3t9fWAgc3ludGF4IGZvciBzdHJpbmcgaW50ZXJwb2xhdGlvbiB3aXRoaW4gdGVtcGxhdGUuXG4gICAgICogVXNlIGBpdGVtYCBrZXkgdG8gYWNjZXNzIHZhbHVlIG9mIHJvdyBpdGVtLlxuICAgICAqXG4gICAgICogRXhhbXBsZSBpbnRlcnBvbGF0ZXMgcm93IGl0ZW0ncyB0aXRsZSB3aXRoaW4gc29tZSB0ZXh0OlxuICAgICAqIGBgYFxuICAgICAqIFRoaXMgdGVtcGxhdGUgc2hvd3Mge3tpdGVtLnRpdGxlfX0gdmFsdWUgaW4gY29sdW1uLlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIHRlbXBsYXRlIHRvIHNldC5cbiAgICAgKlxuICAgICAqIEB1c2FnZU5vdGVzXG4gICAgICogRGlzcGxheSBpdGVtJ3MgdGl0bGUgcHJvcGVydHkgd2l0aGluIHNvbWUgdGV4dDpcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqIFRoaXMgdGVtcGxhdGUgc2hvd3Mge3tpdGVtLnRpdGxlfX0gdmFsdWUgaW4gY29sdW1uLlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGFkanVzdGluZyB0aGUgY29sdW1uIHZhbHVlIGZvciBkaXNwbGF5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD59IGdldHRlciAtIFRoZSBnZXR0ZXIgZnVuY3Rpb24gdG8gYmUgdXNlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEdldHRlcihnZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZ2V0dGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRleHQgaW4gbXVsdGlwbGUgbGluZXMgKHVzZWZ1bCBmb3IgZGlzcGxheWluZyBvZiBsb25nIHRleHRzKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc011bHRpbGluZSBFbmFibGVzL2Rpc2FibGVkIHRoZSBmZWF0dXJlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTXVsdGlsaW5lKGlzTXVsdGlsaW5lID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc011bHRpbGluZSA9IGlzTXVsdGlsaW5lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgd2hvbGUgZGlzcGxheSB2YWx1ZSBhcyB0ZXh0ICh1c2VmdWxlIHdoZW4gZGlzcGxheSB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIGJlIHRvIGxvbmcgYW5kL29yIGFyZSBvdmVyZmxvd24pLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlQXNUb29sdGlwIEVuYWJsZXMvZGlzYWJsZWQgdGhlIGZlYXR1cmUuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhWYWx1ZUFzVG9vbHRpcCh2YWx1ZUFzVG9vbHRpcCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXAgPSB2YWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyBvcmRlcmluZyBvZiBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXNSZW9yZGVyYWJsZSBGbGFnIHRvIGVuYWJsZS9kaXNhYmxlIHJlb3JkZXJpbmcuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSZW9yZGVyYWJsZShpc1Jlb3JkZXJhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Jlb3JkZXJhYmxlID0gaXNSZW9yZGVyYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0b2dnbGluZyBjb2x1bW4gdmlzaWJpbGl0eS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpc1Jlb3JkZXJhYmxlIEZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgdmlzaWJpbGl0eSB0b2dnbGUuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUb2dnbGVhYmxlKGlzVG9nZ2xlYWJsZSA9IHRydWUsIGlzVmlzaWJsZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNUb2dnbGVhYmxlID0gaXNUb2dnbGVhYmxlO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMgbG9jYWxpemF0aW9uIG9mIGNvbHVtbiBieSBkaXNwbGF5aW5nIGZsYWcgaWYgdGhlIGNvbHVtbiB2YWx1ZSBpcyBsb2NhbGl6ZWQgKG9yIGp1c3QgZGlzcGxheWluZyBkZWZhdWx0IGZhbGxiYWNrIHRleHQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGV4aXN0c1Byb3BlcnR5IFByb3BlcnR5IHRvIG1hcmtcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9jYWxpemVkKGV4aXN0c1Byb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbCk6IHRoaXMge1xuICAgICAgICBpZiAoZXhpc3RzUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ID0gZXhpc3RzUHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBgJHt0aGlzLl9wcm9wZXJ0eX1Mb2NhbGl6ZWRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBjdXJyZW50IGRlc2NyaXB0b3IgdG8gYSBuZXcgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGNvcHkoKTogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsLCBDb2x1bW5WYWx1ZT4odGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlPikge1xuICAgICAgICBvYmouX3RpdGxlID0gdGhpcy5fdGl0bGU7XG4gICAgICAgIG9iai5fY29sdW1uVHlwZSA9IHRoaXMuX2NvbHVtblR5cGU7XG4gICAgICAgIG9iai5fY29sdW1uRGlzcGxheVR5cGUgPSB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICAgICAgb2JqLl9lbnVtID0gdGhpcy5fZW51bTtcbiAgICAgICAgb2JqLl9ib29sZWFuQXNJY29uID0gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICAgICAgb2JqLl9ib29sZWFuWWVzID0gdGhpcy5fYm9vbGVhblllcztcbiAgICAgICAgb2JqLl9ib29sZWFuTm8gPSB0aGlzLl9ib29sZWFuTm87XG4gICAgICAgIG9iai5fbG9jYWxlID0gdGhpcy5fbG9jYWxlO1xuICAgICAgICBvYmouX2N1cnJlbmN5Q29kZSA9IHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIG9iai5fY3VycmVuY3lQcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5UHJvcGVydHk7XG4gICAgICAgIG9iai5fZGlzcGxheUZvcm1hdCA9IHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG4gICAgICAgIG9iai5faGVhZGVyQ2xhc3NOYW1lID0gdGhpcy5faGVhZGVyQ2xhc3NOYW1lO1xuICAgICAgICBvYmouX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9jbGFzc05hbWVNYXBGbiA9IHRoaXMuX2NsYXNzTmFtZU1hcEZuO1xuICAgICAgICBvYmouX3dpZHRoID0gdGhpcy5fd2lkdGg7XG4gICAgICAgIG9iai5fbWluV2lkdGggPSB0aGlzLl9taW5XaWR0aDtcbiAgICAgICAgb2JqLl9tYXhXaWR0aCA9IHRoaXMuX21heFdpZHRoO1xuICAgICAgICBvYmouX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBvYmouX2hhc0NvcHlUb0NsaXBib2FyZCA9IHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZDtcbiAgICAgICAgb2JqLl90ZW1wbGF0ZSA9IHRoaXMuX3RlbXBsYXRlO1xuICAgICAgICBvYmouX2dldHRlciA9IHRoaXMuX2dldHRlcjtcbiAgICAgICAgb2JqLl9pc011bHRpbGluZSA9IHRoaXMuX2lzTXVsdGlsaW5lO1xuICAgICAgICBvYmouX2hhc1ZhbHVlQXNUb29sdGlwID0gdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXA7XG4gICAgICAgIG9iai5faXNSZW9yZGVyYWJsZSA9IHRoaXMuX2lzUmVvcmRlcmFibGU7XG4gICAgICAgIG9iai5faXNUb2dnbGVhYmxlID0gdGhpcy5faXNUb2dnbGVhYmxlO1xuICAgICAgICBvYmouX2lzVmlzaWJsZSA9IHRoaXMuX2lzVmlzaWJsZTtcbiAgICAgICAgb2JqLl9pc0xvY2FsaXplZCA9IHRoaXMuX2lzTG9jYWxpemVkO1xuICAgICAgICBvYmouX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ID0gdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3IgZXh0ZW5kcyBDb2x1bW5EZXNjcmlwdG9yPGFueSwgYW55PiB7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF90aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgX3Zpc2liaWxpdHkgPSB0cnVlO1xuXG4gICAgLy8gcHJpdmF0ZSBfZmlsdGVyU3RhdHVzO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2aXNpYmlsaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGNvbHVtbidzIHRpdGxlIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHRpdGxlIHRpdGxlIHRvIGJlIHNldFxuICAgICAqIEBwYXJhbSBvdmVycmlkZSBzaG91bGQgY29sdW1uIHRpdGxlIGlmIGFsbCByZWFkeSBzZXQ/XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nLCBvdmVycmlkZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl90aXRsZSA9PSBudWxsIHx8IG92ZXJyaWRlKSB7XG4gICAgICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgYXV0b21hdGljIHR5cGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEF1dG9tYXRpY1R5cGUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBjb2x1bW5Ub0RhdGVOdW1iZXJPckJvb2xlYW4odGhpcywgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIHZpc2liaWxpdHkgc3RhdGUgZm9yIGNvbHVtbiBhbmQgcmV0dXJucyB0aGlzIGNvbHVtblxuICAgICAqIEBwYXJhbSB2aXNpYmlsaXR5XG4gICAgICovXG4gICAgcHVibGljIHdpdGhWaXNpYmlsaXR5KHZpc2liaWxpdHk6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdmlzaWJpbGl0eSA9IHZpc2liaWxpdHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZGVlcCBjb3B5IG9mIGNvbHVtbiBkeW5hbWljIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgY29weSgpOiBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3IodGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fdmlzaWJpbGl0eSA9IHRoaXMuX3Zpc2liaWxpdHk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0NvbHVtbkRlc2NyaXB0b3IoKTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkRlc2NyaXB0b3IodGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
@@ -21,19 +21,41 @@ export class SortDescriptor {
21
21
  get defaultOrder() {
22
22
  return this._defaultOrder;
23
23
  }
24
+ /**
25
+ * Shows sort on column for giver property.
26
+ *
27
+ * @param property Column property.
28
+ */
24
29
  withShowOnColumn(property) {
25
30
  return this.withShowOnColumnUnsafe(property);
26
31
  }
32
+ /**
33
+ * Shows sort on column for giver property.
34
+ *
35
+ * This function is UNSAFE!
36
+ *
37
+ * @param property Column property.
38
+ */
27
39
  withShowOnColumnUnsafe(property) {
28
40
  this._showOnColumn = property;
29
41
  return this;
30
42
  }
43
+ /**
44
+ * Sets the default sort for this descriptor.
45
+ *
46
+ * @param {boolean} enabled - Enables/disables the feature. Default is true.
47
+ * @param {boolean} [ascending] - If the sort is ascending. Default is true.
48
+ * @param {number} [order] - Order index in case of multiple default sorts.
49
+ */
31
50
  withDefaultSort(enabled = true, ascending, order) {
32
51
  this._defaultIsEnabled = enabled;
33
52
  this._defaultIsAscending = ascending ?? true;
34
53
  this._defaultOrder = order;
35
54
  return this;
36
55
  }
56
+ /**
57
+ * Copies current descriptor to a new instance.
58
+ */
37
59
  copy() {
38
60
  const descriptor = new SortDescriptor(this._property);
39
61
  descriptor._defaultIsEnabled = this._defaultIsEnabled;
@@ -42,4 +64,4 @@ export class SortDescriptor {
42
64
  return descriptor;
43
65
  }
44
66
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGUvYXBpL3NyYy9kZXNjcmlwdG9ycy9zb3J0LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFRdkIsWUFBWSxRQUFnQjtRQUpsQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsd0JBQW1CLEdBQWEsU0FBUyxDQUFDO1FBQzFDLGtCQUFhLEdBQVksU0FBUyxDQUFDO1FBR3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBMEI7UUFDOUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBa0IsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxRQUFnQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBbUIsRUFBRSxLQUFjO1FBQ3RFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLElBQUk7UUFDUCxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBYSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxVQUFVLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELFVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3Nob3dPbkNvbHVtbjogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0SXNFbmFibGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0SXNBc2NlbmRpbmc/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE9yZGVyPzogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICB0aGlzLl9zaG93T25Db2x1bW4gPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaG93T25Db2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93T25Db2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0SXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdElzRW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRJc0FzY2VuZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRJc0FzY2VuZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRPcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRPcmRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNob3dPbkNvbHVtbihwcm9wZXJ0eToga2V5b2YgVGFibGVNb2RlbCk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU2hvd09uQ29sdW1uVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zaG93T25Db2x1bW4gPSBwcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydChlbmFibGVkID0gdHJ1ZSwgYXNjZW5kaW5nPzogYm9vbGVhbiwgb3JkZXI/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVmYXVsdElzRW5hYmxlZCA9IGVuYWJsZWQ7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRJc0FzY2VuZGluZyA9IGFzY2VuZGluZyA/PyB0cnVlO1xuICAgICAgICB0aGlzLl9kZWZhdWx0T3JkZXIgPSBvcmRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHkoKTogU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFNvcnREZXNjcmlwdG9yPFRhYmxlTW9kZWw+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdElzRW5hYmxlZCA9IHRoaXMuX2RlZmF1bHRJc0VuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRJc0FzY2VuZGluZyA9IHRoaXMuX2RlZmF1bHRJc0FzY2VuZGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdE9yZGVyID0gdGhpcy5fZGVmYXVsdE9yZGVyO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGUvYXBpL3NyYy9kZXNjcmlwdG9ycy9zb3J0LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFRdkIsWUFBWSxRQUFnQjtRQUpsQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsd0JBQW1CLEdBQWEsU0FBUyxDQUFDO1FBQzFDLGtCQUFhLEdBQVksU0FBUyxDQUFDO1FBR3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGdCQUFnQixDQUFDLFFBQTBCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQWtCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksc0JBQXNCLENBQUMsUUFBZ0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLGVBQWUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLFNBQW1CLEVBQUUsS0FBYztRQUN0RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLElBQUksSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDUCxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBYSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxVQUFVLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELFVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3Nob3dPbkNvbHVtbjogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0SXNFbmFibGVkID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0SXNBc2NlbmRpbmc/OiBib29sZWFuID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdE9yZGVyPzogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3RydWN0b3IocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9wcm9wZXJ0eSA9IHByb3BlcnR5O1xuICAgICAgICB0aGlzLl9zaG93T25Db2x1bW4gPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzaG93T25Db2x1bW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93T25Db2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0SXNFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdElzRW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRJc0FzY2VuZGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRJc0FzY2VuZGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRPcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRPcmRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyBzb3J0IG9uIGNvbHVtbiBmb3IgZ2l2ZXIgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgQ29sdW1uIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoU2hvd09uQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyBzb3J0IG9uIGNvbHVtbiBmb3IgZ2l2ZXIgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIFVOU0FGRSFcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBDb2x1bW4gcHJvcGVydHkuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zaG93T25Db2x1bW4gPSBwcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZGVmYXVsdCBzb3J0IGZvciB0aGlzIGRlc2NyaXB0b3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZWQgLSBFbmFibGVzL2Rpc2FibGVzIHRoZSBmZWF0dXJlLiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbYXNjZW5kaW5nXSAtIElmIHRoZSBzb3J0IGlzIGFzY2VuZGluZy4gRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbb3JkZXJdIC0gT3JkZXIgaW5kZXggaW4gY2FzZSBvZiBtdWx0aXBsZSBkZWZhdWx0IHNvcnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQoZW5hYmxlZCA9IHRydWUsIGFzY2VuZGluZz86IGJvb2xlYW4sIG9yZGVyPzogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRJc0VuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9kZWZhdWx0SXNBc2NlbmRpbmcgPSBhc2NlbmRpbmcgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9yZGVyID0gb3JkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBjdXJyZW50IGRlc2NyaXB0b3IgdG8gYSBuZXcgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIGNvcHkoKTogU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFNvcnREZXNjcmlwdG9yPFRhYmxlTW9kZWw+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdElzRW5hYmxlZCA9IHRoaXMuX2RlZmF1bHRJc0VuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRJc0FzY2VuZGluZyA9IHRoaXMuX2RlZmF1bHRJc0FzY2VuZGluZztcbiAgICAgICAgZGVzY3JpcHRvci5fZGVmYXVsdE9yZGVyID0gdGhpcy5fZGVmYXVsdE9yZGVyO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
@@ -86,4 +86,4 @@ export function tableDynamicDescriptor(modelOrOpts) {
86
86
  ? new TableDynamicDescriptorInst(modelOrOpts)
87
87
  : new TableDynamicDescriptorInst(new ModelDescriptor(undefined, modelOrOpts?.id, modelOrOpts?.title, modelOrOpts?.i18nBase));
88
88
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGUvYXBpL3NyYy9kZXNjcmlwdG9ycy90YWJsZS1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBNkIsY0FBYyxFQUFFLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXRGLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5GLE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUF3QjtJQUN6RDtRQUNJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUNoQixVQUE2QixFQUM3QixhQUFnQyxFQUNoQyxXQUF5QztRQUV6QyxPQUFPLGVBQWUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FDbkIsSUFBMkIsRUFDM0IsVUFBNkIsRUFDN0IsYUFBZ0MsRUFDaEMsV0FBeUM7UUFFekMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQW1FLEtBQWtDO1FBQ3hILE9BQU8sSUFBSSxtQkFBbUIsQ0FBNkIsS0FBSyxDQUFDLENBQUM7SUFDdEUs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QXVFO0lBQzFHLE9BQU8sV0FBVyxZQUFZLGVBQWU7UUFDekMsQ0FBQyxDQUFDLElBQUksMEJBQTBCLENBQUMsV0FBVyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLElBQUksZUFBZSxDQUFNLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFlLEVBQUUsV0FBVyxFQUFFLFFBQWtCLENBQUMsQ0FBQyxDQUFDO0FBQ3hLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3JDcmVhdGVPcHRzLCBUeXBlRGVzY3JpcHRvciwgbW9kZWx9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge2dldFRhYmxlQ2xhc3NBdHRyaWJ1dGVEZWZ9IGZyb20gJy4uL2hlbHBlcnMvY2xhc3MtYXR0cmlidXRlLWNvbnZlcnRlcic7XG5pbXBvcnQge3Vwc2VydFRhYmxlQ29sdW1uRnJvbUF0dHJpYnV0ZURlZn0gZnJvbSAnLi4vaGVscGVycy90YWJsZS1kZXNjcmlwdG9yLWhlbHBlcnMnO1xuaW1wb3J0IHtUYWJsZUNsYXNzQXR0cmlidXRlRGVmfSBmcm9tICcuLi9tb2RlbHMvY2xhc3MtdGFibGUtYXR0cmlidXRlLm1vZGVsJztcbmltcG9ydCB7VGFibGVEZXNjcmlwdG9ySW5zdCwgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3R9IGZyb20gJy4vdGFibGUuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZURlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIobW9kZWwoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4oXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbCxcbiAgICAgICAgaTE4bkJhc2VLZXk/OiBzdHJpbmcgfCBDbGFzc1R5cGU8dW5rbm93bj5cbiAgICApOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgICAgIHJldHVybiB0YWJsZURlc2NyaXB0b3Ioe2lkOiBpZFByb3BlcnR5LCB0aXRsZTogdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2U6IGkxOG5CYXNlS2V5fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3M8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxUYWJsZU1vZGVsPixcbiAgICAgICAgaWRQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsXG4gICAgICAgIHRpdGxlUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICBpMThuQmFzZUtleT86IENsYXNzVHlwZTx1bmtub3duPiB8IHN0cmluZ1xuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgcmV0dXJuIHRhYmxlRGVzY3JpcHRvckZyb21DbGFzcyh0eXBlLCB7aWQ6IGlkUHJvcGVydHksIHRpdGxlOiB0aXRsZVByb3BlcnR5LCBpMThuQmFzZTogaTE4bkJhc2VLZXl9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbDxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPFRhYmxlTW9kZWw+KTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgZGVzY3JpcHRvciBiYXNlZCBvbiB0eXBlIGF0dHJpYnV0ZSBkZWZpbml0aW9uXG4gICAgICogQHBhcmFtIHR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzc1dpdGhBdXRvQXR0cnNEZWY8VGFibGVNb2RlbD4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxUYWJsZU1vZGVsPixcbiAgICAgICAgaWRQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsXG4gICAgICAgIHRpdGxlUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsXG4gICAgKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0YWJsZURlc2NyaXB0b3JGcm9tQ2xhc3NBdHRyc0RlZih0eXBlLCB1bmRlZmluZWQsIHtpZDogaWRQcm9wZXJ0eSwgdGl0bGU6IHRpdGxlUHJvcGVydHl9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgZGVzY3JpcHRvciBiYXNlIG9uIGdpdmVuIGF0dHJpYnV0ZSBkZWZpbml0aW9uXG4gICAgICogQHBhcmFtIHR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgZnJvbSB3aGljaCBkZXNjcmlwdG9yIGlzIGdlbmVyYXRlZFxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzc1dpdGhDdXN0b21BdHRyc0RlZjxUYWJsZU1vZGVsPihcbiAgICAgICAgdHlwZTogQ2xhc3NUeXBlPFRhYmxlTW9kZWw+LFxuICAgICAgICBhdHRyaWJ1dGVzOiBUYWJsZUNsYXNzQXR0cmlidXRlRGVmW10sXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbFxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGFibGVEZXNjcmlwdG9yRnJvbUNsYXNzQXR0cnNEZWYodHlwZSwgYXR0cmlidXRlcywge2lkOiBpZFByb3BlcnR5LCB0aXRsZTogdGl0bGVQcm9wZXJ0eX0pO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8VGFibGVNb2RlbD4gPSBNb2RlbERlc2NyaXB0b3JDcmVhdGVPcHRzPFRhYmxlTW9kZWw+O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KCk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRGVzY3JpcHRvcjxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICBvcHRzOiBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxUYWJsZU1vZGVsPlxuKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz47XG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD5cbik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRGVzY3JpcHRvcjxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICB0eXBlOiBUeXBlRGVzY3JpcHRvcjxUYWJsZU1vZGVsPixcbiAgICBvcHRzPzogVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8VGFibGVNb2RlbD5cbik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRGVzY3JpcHRvcjxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICB0eXBlT3JNb2RlbE9yQ2xhc3NPck9wdHM/OiBUeXBlRGVzY3JpcHRvcjxUYWJsZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPiB8IFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxUYWJsZU1vZGVsPlxuKSB7XG4gICAgaWYgKHR5cGVPck1vZGVsT3JDbGFzc09yT3B0cyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4obW9kZWw8VGFibGVNb2RlbD4oKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlT3JNb2RlbE9yQ2xhc3NPck9wdHMgaW5zdGFuY2VvZiBUeXBlRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsPFRhYmxlTW9kZWw+KChvcHRzIGFzIFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWw+IHwgdW5kZWZpbmVkKSA/PyB7fSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9yTW9kZWxPckNsYXNzT3JPcHRzIGluc3RhbmNlb2YgTW9kZWxEZXNjcmlwdG9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4odHlwZU9yTW9kZWxPckNsYXNzT3JPcHRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGlzIGNvdWxkIGhhdmUgYXV0b0dlbmVyYXRlZCBpZiBtb2RlbCBkZXNjcmlwdG9yIGlzIGNsYXNzXG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4obW9kZWw8VGFibGVNb2RlbD4odHlwZU9yTW9kZWxPckNsYXNzT3JPcHRzKSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yRnJvbUNsYXNzPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgIHR5cGU6IENsYXNzVHlwZTxUYWJsZU1vZGVsPixcbiAgICBvcHRzPzogVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8VGFibGVNb2RlbD5cbik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsPFRhYmxlTW9kZWw+KHR5cGUgYXMgQ2xhc3NUeXBlPFRhYmxlTW9kZWw+LCBvcHRzKSk7XG59XG5cbi8qKlxuICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZWQgb24gdHlwZSBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICogQHBhcmFtIHR5cGUgY2xhc3MgdHlwZVxuICogQHBhcmFtIGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZURlc2NyaXB0b3JGcm9tQ2xhc3NBdHRyc0RlZjxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICB0eXBlOiBDbGFzc1R5cGU8VGFibGVNb2RlbD4sXG4gICAgYXR0cmlidXRlcz86IFRhYmxlQ2xhc3NBdHRyaWJ1dGVEZWZbXSxcbiAgICBvcHRzPzogVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8VGFibGVNb2RlbD5cbik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsKHR5cGUsIG9wdHMpLCB0cnVlKTtcbiAgICAoYXR0cmlidXRlcyA/PyBnZXRUYWJsZUNsYXNzQXR0cmlidXRlRGVmKHR5cGUpKVxuICAgICAgICAuZmlsdGVyKGF0dHIgPT4gIWF0dHIudHlwZS5pbmNsdWRlcygnU2V0JykgJiYgIWF0dHIudHlwZS5pbmNsdWRlcygnQXJyYXknKSlcbiAgICAgICAgLmZvckVhY2goYXR0ciA9PiB1cHNlcnRUYWJsZUNvbHVtbkZyb21BdHRyaWJ1dGVEZWYoZGVzY3JpcHRvciwgYXR0cikpO1xuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKE1vZGVsRGVzY3JpcHRvci5jcmVhdGUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgaTE4bkJhc2VLZXk/OiBzdHJpbmcgfCBDbGFzc1R5cGU8YW55Pik6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0IHtcbiAgICAgICAgcmV0dXJuIHRhYmxlRHluYW1pY0Rlc2NyaXB0b3Ioe1xuICAgICAgICAgICAgaWQ6IGlkUHJvcGVydHksXG4gICAgICAgICAgICB0aXRsZTogdGl0bGVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGkxOG5CYXNlOiBpMThuQmFzZUtleVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbChtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4pOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCB7XG4gICAgICAgIHJldHVybiB0YWJsZUR5bmFtaWNEZXNjcmlwdG9yKG1vZGVsKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZUR5bmFtaWNEZXNjcmlwdG9yKG1vZGVsT3JPcHRzPzogTW9kZWxEZXNjcmlwdG9yPGFueT4gfCBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxhbnk+KTogVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3Qge1xuICAgIHJldHVybiBtb2RlbE9yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvclxuICAgICAgICA/IG5ldyBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdChtb2RlbE9yT3B0cylcbiAgICAgICAgOiBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QobmV3IE1vZGVsRGVzY3JpcHRvcjxhbnk+KHVuZGVmaW5lZCwgbW9kZWxPck9wdHM/LmlkIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LnRpdGxlIGFzIHN0cmluZywgbW9kZWxPck9wdHM/LmkxOG5CYXNlIGFzIHN0cmluZykpO1xufVxuIl19
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGFibGUvYXBpL3NyYy9kZXNjcmlwdG9ycy90YWJsZS1kZXNjcmlwdG9yLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLGVBQWUsRUFBNkIsY0FBYyxFQUFFLEtBQUssRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRS9HLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRXRGLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRW5GLE1BQU0sT0FBTyxlQUFnQixTQUFRLG1CQUF3QjtJQUN6RDtRQUNJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUNoQixVQUE2QixFQUM3QixhQUFnQyxFQUNoQyxXQUF5QztRQUV6QyxPQUFPLGVBQWUsQ0FBQyxFQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FDbkIsSUFBMkIsRUFDM0IsVUFBNkIsRUFDN0IsYUFBZ0MsRUFDaEMsV0FBeUM7UUFFekMsT0FBTyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsRUFBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQW1FLEtBQWtDO1FBQ3hILE9BQU8sSUFBSSxtQkFBbUIsQ0FBNkIsS0FBSyxDQUFDLENBQUM7SUFDdEUs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QUF1RTtJQUMxRyxPQUFPLFdBQVcsWUFBWSxlQUFlO1FBQ3pDLENBQUMsQ0FBQyxJQUFJLDBCQUEwQixDQUFDLFdBQVcsQ0FBQztRQUM3QyxDQUFDLENBQUMsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLGVBQWUsQ0FBTSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQVksRUFBRSxXQUFXLEVBQUUsS0FBZSxFQUFFLFdBQVcsRUFBRSxRQUFrQixDQUFDLENBQUMsQ0FBQztBQUN4SyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yQ3JlYXRlT3B0cywgVHlwZURlc2NyaXB0b3IsIG1vZGVsfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtnZXRUYWJsZUNsYXNzQXR0cmlidXRlRGVmfSBmcm9tICcuLi9oZWxwZXJzL2NsYXNzLWF0dHJpYnV0ZS1jb252ZXJ0ZXInO1xuaW1wb3J0IHt1cHNlcnRUYWJsZUNvbHVtbkZyb21BdHRyaWJ1dGVEZWZ9IGZyb20gJy4uL2hlbHBlcnMvdGFibGUtZGVzY3JpcHRvci1oZWxwZXJzJztcbmltcG9ydCB7VGFibGVDbGFzc0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzLXRhYmxlLWF0dHJpYnV0ZS5tb2RlbCc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvckluc3QsIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL3RhYmxlLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgY2xhc3MgVGFibGVEZXNjcmlwdG9yIGV4dGVuZHMgVGFibGVEZXNjcmlwdG9ySW5zdDxhbnk+IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKG1vZGVsKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgICAgICBpZFByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbCxcbiAgICAgICAgdGl0bGVQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsXG4gICAgICAgIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPHVua25vd24+XG4gICAgKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ge1xuICAgICAgICByZXR1cm4gdGFibGVEZXNjcmlwdG9yKHtpZDogaWRQcm9wZXJ0eSwgdGl0bGU6IHRpdGxlUHJvcGVydHksIGkxOG5CYXNlOiBpMThuQmFzZUtleX0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNsYXNzPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgICAgICB0eXBlOiBDbGFzc1R5cGU8VGFibGVNb2RlbD4sXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbCxcbiAgICAgICAgaTE4bkJhc2VLZXk/OiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmdcbiAgICApOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgICAgIHJldHVybiB0YWJsZURlc2NyaXB0b3JGcm9tQ2xhc3ModHlwZSwge2lkOiBpZFByb3BlcnR5LCB0aXRsZTogdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2U6IGkxOG5CYXNlS2V5fSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWw8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZWQgb24gdHlwZSBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSB0eXBlIGNsYXNzIHR5cGVcbiAgICAgKiBAcGFyYW0gaWRQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3NXaXRoQXV0b0F0dHJzRGVmPFRhYmxlTW9kZWw+KFxuICAgICAgICB0eXBlOiBDbGFzc1R5cGU8VGFibGVNb2RlbD4sXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbFxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gdGFibGVEZXNjcmlwdG9yRnJvbUNsYXNzQXR0cnNEZWYodHlwZSwgdW5kZWZpbmVkLCB7aWQ6IGlkUHJvcGVydHksIHRpdGxlOiB0aXRsZVByb3BlcnR5fSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZSBvbiBnaXZlbiBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSB0eXBlIGNsYXNzIHR5cGVcbiAgICAgKiBAcGFyYW0gYXR0cmlidXRlcyBhdHRyaWJ1dGVzIGZyb20gd2hpY2ggZGVzY3JpcHRvciBpcyBnZW5lcmF0ZWRcbiAgICAgKiBAcGFyYW0gaWRQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3NXaXRoQ3VzdG9tQXR0cnNEZWY8VGFibGVNb2RlbD4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxUYWJsZU1vZGVsPixcbiAgICAgICAgYXR0cmlidXRlczogVGFibGVDbGFzc0F0dHJpYnV0ZURlZltdLFxuICAgICAgICBpZFByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbCxcbiAgICAgICAgdGl0bGVQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWxcbiAgICApOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIHRhYmxlRGVzY3JpcHRvckZyb21DbGFzc0F0dHJzRGVmKHR5cGUsIGF0dHJpYnV0ZXMsIHtpZDogaWRQcm9wZXJ0eSwgdGl0bGU6IHRpdGxlUHJvcGVydHl9KTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlRGVzY3JpcHRvclNvcnRzRmlsdGVyc0NyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+ID0ge1xuICAgIGZpbHRlcnNUeXBlPzogVHlwZURlc2NyaXB0b3I8RmlsdGVycz47XG4gICAgc29ydHNUeXBlPzogVHlwZURlc2NyaXB0b3I8U29ydHM+O1xufTtcblxuZXhwb3J0IHR5cGUgVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4gPSBUYWJsZURlc2NyaXB0b3JTb3J0c0ZpbHRlcnNDcmVhdGVPcHRzVHlwZTxcbiAgICBUYWJsZU1vZGVsLFxuICAgIFNvcnRzLFxuICAgIEZpbHRlcnNcbj4gJlxuICAgIE1vZGVsRGVzY3JpcHRvckNyZWF0ZU9wdHM8VGFibGVNb2RlbD47XG5cbmV4cG9ydCBmdW5jdGlvbiB0YWJsZURlc2NyaXB0b3I8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4oKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz47XG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgIG9wdHM6IFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPlxuKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz47XG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxlRGVzY3JpcHRvclNvcnRzRmlsdGVyc0NyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPlxuKTogVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz47XG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yPFRhYmxlTW9kZWwsIFNvcnRzID0ga2V5b2YgVGFibGVNb2RlbCwgRmlsdGVycyA9IGtleW9mIFRhYmxlTW9kZWw+KFxuICAgIHR5cGU6IFR5cGVEZXNjcmlwdG9yPFRhYmxlTW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz5cbik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+O1xuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRGVzY3JpcHRvcjxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICB0eXBlT3JNb2RlbE9yQ2xhc3NPck9wdHM/OiBUeXBlRGVzY3JpcHRvcjxUYWJsZU1vZGVsPiB8IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPiB8IFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWw+LFxuICAgIG9wdHM/OiBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz5cbikge1xuICAgIGlmICh0eXBlT3JNb2RlbE9yQ2xhc3NPck9wdHMgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsPFRhYmxlTW9kZWw+KCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZU9yTW9kZWxPckNsYXNzT3JPcHRzIGluc3RhbmNlb2YgVHlwZURlc2NyaXB0b3IpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbDxUYWJsZU1vZGVsPigob3B0cyBhcyBUYWJsZURlc2NyaXB0b3JDcmVhdGVPcHRzVHlwZTxUYWJsZU1vZGVsPiB8IHVuZGVmaW5lZCkgPz8ge30pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVPck1vZGVsT3JDbGFzc09yT3B0cyBpbnN0YW5jZW9mIE1vZGVsRGVzY3JpcHRvcikge1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KHR5cGVPck1vZGVsT3JDbGFzc09yT3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcyBjb3VsZCBoYXZlIGF1dG9HZW5lcmF0ZWQgaWYgbW9kZWwgZGVzY3JpcHRvciBpcyBjbGFzc1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+KG1vZGVsPFRhYmxlTW9kZWw+KHR5cGVPck1vZGVsT3JDbGFzc09yT3B0cykpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhYmxlRGVzY3JpcHRvckZyb21DbGFzczxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICB0eXBlOiBDbGFzc1R5cGU8VGFibGVNb2RlbD4sXG4gICAgb3B0cz86IFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWw+XG4pOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbDxUYWJsZU1vZGVsPih0eXBlIGFzIENsYXNzVHlwZTxUYWJsZU1vZGVsPiwgb3B0cykpO1xufVxuXG4vKipcbiAqIGdlbmVyYXRlcyBkZXNjcmlwdG9yIGJhc2VkIG9uIHR5cGUgYXR0cmlidXRlIGRlZmluaXRpb25cbiAqIEBwYXJhbSB0eXBlIGNsYXNzIHR5cGVcbiAqIEBwYXJhbSBhdHRyaWJ1dGVzXG4gKiBAcGFyYW0gb3B0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdGFibGVEZXNjcmlwdG9yRnJvbUNsYXNzQXR0cnNEZWY8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4oXG4gICAgdHlwZTogQ2xhc3NUeXBlPFRhYmxlTW9kZWw+LFxuICAgIGF0dHJpYnV0ZXM/OiBUYWJsZUNsYXNzQXR0cmlidXRlRGVmW10sXG4gICAgb3B0cz86IFRhYmxlRGVzY3JpcHRvckNyZWF0ZU9wdHNUeXBlPFRhYmxlTW9kZWw+XG4pOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbCh0eXBlLCBvcHRzKSwgdHJ1ZSk7XG4gICAgKGF0dHJpYnV0ZXMgPz8gZ2V0VGFibGVDbGFzc0F0dHJpYnV0ZURlZih0eXBlKSlcbiAgICAgICAgLmZpbHRlcihhdHRyID0+ICFhdHRyLnR5cGUuaW5jbHVkZXMoJ1NldCcpICYmICFhdHRyLnR5cGUuaW5jbHVkZXMoJ0FycmF5JykpXG4gICAgICAgIC5mb3JFYWNoKGF0dHIgPT4gdXBzZXJ0VGFibGVDb2x1bW5Gcm9tQXR0cmlidXRlRGVmKGRlc2NyaXB0b3IsIGF0dHIpKTtcbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihNb2RlbERlc2NyaXB0b3IuY3JlYXRlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPGFueT4pOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCB7XG4gICAgICAgIHJldHVybiB0YWJsZUR5bmFtaWNEZXNjcmlwdG9yKHtcbiAgICAgICAgICAgIGlkOiBpZFByb3BlcnR5LFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlUHJvcGVydHksXG4gICAgICAgICAgICBpMThuQmFzZTogaTE4bkJhc2VLZXlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWwobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+KTogVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3Qge1xuICAgICAgICByZXR1cm4gdGFibGVEeW5hbWljRGVzY3JpcHRvcihtb2RlbCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFibGVEeW5hbWljRGVzY3JpcHRvcihtb2RlbE9yT3B0cz86IE1vZGVsRGVzY3JpcHRvcjxhbnk+IHwgVGFibGVEZXNjcmlwdG9yQ3JlYXRlT3B0c1R5cGU8YW55Pik6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0IHtcbiAgICByZXR1cm4gbW9kZWxPck9wdHMgaW5zdGFuY2VvZiBNb2RlbERlc2NyaXB0b3JcbiAgICAgICAgPyBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QobW9kZWxPck9wdHMpXG4gICAgICAgIDogbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KG5ldyBNb2RlbERlc2NyaXB0b3I8YW55Pih1bmRlZmluZWQsIG1vZGVsT3JPcHRzPy5pZCBhcyBzdHJpbmcsIG1vZGVsT3JPcHRzPy50aXRsZSBhcyBzdHJpbmcsIG1vZGVsT3JPcHRzPy5pMThuQmFzZSBhcyBzdHJpbmcpKTtcbn1cbiJdfQ==