turbogui-angular 13.0.0 → 13.0.2

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 (34) hide show
  1. package/esm2022/main/controller/dialog.service.mjs +65 -58
  2. package/esm2022/main/controller/http.service.mjs +2 -2
  3. package/esm2022/main/view/components/dialog-base/dialog-base.component.mjs +16 -1
  4. package/esm2022/main/view/components/dialog-date-selection/dialog-date-selection.component.mjs +5 -17
  5. package/esm2022/main/view/components/dialog-error/dialog-error.component.mjs +5 -5
  6. package/esm2022/main/view/components/dialog-multiple-option/dialog-multiple-option.component.mjs +5 -5
  7. package/esm2022/main/view/components/dialog-single-option/dialog-single-option.component.mjs +5 -5
  8. package/esm2022/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.mjs +5 -5
  9. package/esm2022/main/view/components/dialog-two-option/dialog-two-option.component.mjs +5 -5
  10. package/esm2022/public_api.mjs +2 -2
  11. package/fesm2022/turbogui-angular.mjs +99 -103
  12. package/fesm2022/turbogui-angular.mjs.map +1 -1
  13. package/main/controller/dialog.service.d.ts +43 -23
  14. package/main/controller/dialog.service.d.ts.map +1 -1
  15. package/main/view/components/dialog-base/dialog-base.component.d.ts +14 -0
  16. package/main/view/components/dialog-base/dialog-base.component.d.ts.map +1 -1
  17. package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts +4 -5
  18. package/main/view/components/dialog-date-selection/dialog-date-selection.component.d.ts.map +1 -1
  19. package/main/view/components/dialog-error/dialog-error.component.d.ts +4 -4
  20. package/main/view/components/dialog-error/dialog-error.component.d.ts.map +1 -1
  21. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts +4 -4
  22. package/main/view/components/dialog-multiple-option/dialog-multiple-option.component.d.ts.map +1 -1
  23. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts +4 -4
  24. package/main/view/components/dialog-single-option/dialog-single-option.component.d.ts.map +1 -1
  25. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts +4 -4
  26. package/main/view/components/dialog-single-selection-list/dialog-single-selection-list.component.d.ts.map +1 -1
  27. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts +4 -4
  28. package/main/view/components/dialog-two-option/dialog-two-option.component.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +1 -1
  31. package/public_api.d.ts.map +1 -1
  32. package/esm2022/main/view/components/dialog-options-base/dialog-options-base.component.mjs +0 -15
  33. package/main/view/components/dialog-options-base/dialog-options-base.component.d.ts +0 -15
  34. package/main/view/components/dialog-options-base/dialog-options-base.component.d.ts.map +0 -1
@@ -216,68 +216,64 @@ export class DialogService {
216
216
  }
217
217
  /**
218
218
  * Show a dialog with one or more options that can be used to close it. We can use any of the predefined dialog types that are bundled with
219
- * this library or extend DialogOptionsBaseComponent to create our own custom ones.
219
+ * this library or extend DialogBaseComponent to create our own custom ones.
220
220
  *
221
- * @param width Specify the css value for the maximum width the dialog will have. As the dialog is responsive, the value will be automatically
222
- reduced if the available screen is not enough, and will reach the desired value otherwise. Note that height will be adapted to the contents
223
- of the dialog and cannot be specified here. We can set a pixels, % or any other css accepted value. For example: '400px', '50%', etc.
224
- * @param texts A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should
225
- * be placed first, subtitle second and so (Each dialog may accept different number of texts).
226
- * @param options A list of strings that will be used as button captions for each one of the accepted dialog options
227
- * @param dialogComponentClass A class for a component that extends DialogOptionsBaseComponent, which will be the
228
- * dialog visual element that is shown to the user.
229
- * @param callback A function that will be called after the dialog is closed and will receive an object with the numeric index and value for
230
- * the option that's been selected by the user. if no option was selected, the value will be -1
231
- * @param modal True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
232
- * by the user by clicking outside it
233
- * @param maxWidth Defines the maximum width that the dialog will have regarding the viewport. We can specify it in % or vw, just like is done in
234
- * css. By default it is defined as 96vw, which will fit 96% of the viewport on small devices
221
+ * @param dialogComponentClass A class for a component that extends DialogBaseComponent, which will be the dialog that is shown to the user.
222
+ * @param properties An object containing the different visual and textual options that this dialog allows:
223
+ * - width: Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
224
+ * reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
225
+ * %, vh, vw, or any other. For example: '400px', '50%', etc.
226
+ * - maxWidth: Defines the maximum width that the dialog will have regarding the viewport. We can specify it in % or vw, just like is done in
227
+ * css. By default it is defined as 96vw, which will fit 96% of the viewport on small devices
228
+ * - height: TODO docs
229
+ * - maxHeight: TODO docs
230
+ * - modal: True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
231
+ * by the user clicking outside it
232
+ * - texts: A list with strings containing the dialog texts, sorted by importance. When dialog has a title, this should
233
+ * be placed first, subtitle second and so (Each dialog may accept different number of texts).
234
+ * - options: A list of strings that will be used as button captions for each one of the accepted dialog options
235
+ *
236
+ * @param callback A function that will be called after the dialog is closed and will receive a selection object with the numeric index and value for
237
+ * the option that's been selected by the user. if no option was selected, index will be -1 and value null
235
238
  */
236
- addDialog(dialogComponentClass, options, callback = null) {
239
+ addDialog(dialogComponentClass, properties, callback = null) {
237
240
  if (!this._isEnabled) {
238
241
  return;
239
242
  }
240
- // Set the default values for all non specified visual options
241
- options.width = options.hasOwnProperty('width') ? options.width : "50%";
242
- options.maxWidth = options.hasOwnProperty('maxWidth') ? options.maxWidth : "96vw";
243
- options.height = options.hasOwnProperty('height') ? options.height : "50%";
244
- options.maxHeight = options.hasOwnProperty('maxHeight') ? options.maxHeight : "92vw";
245
- options.modal = options.hasOwnProperty('modal') ? options.modal : true;
246
- options.texts = options.hasOwnProperty('texts') ? options.texts : [];
247
- options.captions = options.hasOwnProperty('captions') ? options.captions : [];
243
+ // Set the default values for non specified properties
244
+ properties.modal = properties.modal ?? true;
245
+ properties.texts = properties.texts ?? [];
246
+ properties.options = properties.options ?? [];
248
247
  // Generate a string to uniquely identify this dialog on the list of active dialogs
249
- const dialogHash = options.texts.join('') + options.captions.join('') + dialogComponentClass.name;
248
+ const dialogHash = properties.texts.join('') + properties.options.join('') + dialogComponentClass.name;
250
249
  // identical dialogs won't be allowed at the same time
251
250
  if (this._activeDialogs.includes(dialogHash)) {
252
251
  return;
253
252
  }
254
253
  const dialogRef = this.matDialog.open(dialogComponentClass, {
255
- width: options.width,
256
- maxWidth: options.maxWidth,
257
- disableClose: options.modal,
254
+ width: properties.width ?? "50%",
255
+ maxWidth: properties.maxWidth ?? "96vw",
256
+ disableClose: properties.modal,
258
257
  autoFocus: false,
259
- closeOnNavigation: !options.modal,
260
- data: { texts: options.texts, options: options.captions }
258
+ closeOnNavigation: !properties.modal,
259
+ data: { texts: properties.texts, options: properties.options }
261
260
  });
262
261
  this._activeDialogs.push(dialogHash);
263
262
  this._activeDialogInstances.push(dialogRef);
264
- dialogRef.beforeClosed().subscribe((selectedOptionIndex) => {
263
+ dialogRef.beforeClosed().subscribe((selection) => {
265
264
  this._activeDialogs = ArrayUtils.removeElement(this._activeDialogs, dialogHash);
266
265
  this._activeDialogInstances = ArrayUtils.removeElement(this._activeDialogInstances, dialogRef);
267
- if (!NumericUtils.isInteger(selectedOptionIndex)) {
268
- if (options.modal) {
269
- throw new Error(`dialogRef.close() expects int value`);
270
- }
271
- else {
272
- selectedOptionIndex = -1;
273
- }
266
+ if (!properties.modal && selection === undefined) {
267
+ selection = { index: -1 };
268
+ }
269
+ else if (!NumericUtils.isInteger(selection.index)) {
270
+ throw new Error(`closeDialog() expects index to be an integer`);
274
271
  }
275
272
  if (callback !== null) {
276
- let selectedOption = { index: selectedOptionIndex, value: '' };
277
- if (selectedOptionIndex >= 0) {
278
- selectedOption.value = options.captions[selectedOptionIndex];
273
+ if (selection.index >= 0 && selection.value === null) {
274
+ selection.value = properties.options[selection.index];
279
275
  }
280
- callback(selectedOption);
276
+ callback(selection);
281
277
  }
282
278
  });
283
279
  }
@@ -291,29 +287,40 @@ export class DialogService {
291
287
  return;
292
288
  }
293
289
  for (const dialogRef of this._activeDialogInstances) {
294
- dialogRef.close(-1);
290
+ dialogRef.close({ index: -1 });
295
291
  }
296
292
  this._activeDialogs = [];
297
293
  this._activeDialogInstances = [];
298
294
  }
299
- addDateSelectionDialog(options, title, callback) {
295
+ /**
296
+ * Show a dialog with a calendar to let the user pick a date.
297
+ *
298
+ * @param properties An object containing the different visual and textual options that this dialog allows:
299
+ * - width: Specify the css value for the default dialog width. As the dialog is responsive, the value will be automatically
300
+ * reduced if the available screen is not enough, and will reach the desired value otherwise. We can set any css unit like pixels,
301
+ * %, vh, vw, or any other. For example: '400px', '50%', etc.
302
+ * - maxWidth: Defines the maximum width that the dialog will have regarding the viewport. We can specify it in % or vw, just like is done in
303
+ * css. By default it is defined as 96vw, which will fit 96% of the viewport on small devices
304
+ * - height: TODO docs
305
+ * - maxHeight: TODO docs
306
+ * - modal: True (default) if selecting an option is mandatory to close the dialog, false if the dialog can be closed
307
+ * by the user clicking outside it
308
+ * - title: An optional dialog title
309
+ * @param callback A function to be called after the dialog is closed. It will receive a Date() object selected by the user or null if no selection happened
310
+ */
311
+ addDateSelectionDialog(properties, callback) {
300
312
  if (!this._isEnabled) {
301
313
  return;
302
314
  }
303
315
  this.addDialog(DialogDateSelectionComponent, {
304
- width: options.width,
305
- maxWidth: options.maxWidth,
306
- height: options.height,
307
- maxHeight: options.maxHeight,
308
- modal: options.modal,
309
- texts: [title]
310
- }, (selectedOption) => {
311
- if (selectedOption.index < 0) {
312
- callback(null);
313
- }
314
- else {
315
- callback(selectedOption.value);
316
- }
316
+ width: properties.width ?? "50%",
317
+ maxWidth: properties.maxWidth ?? "96vw",
318
+ height: properties.height ?? "50%",
319
+ maxHeight: properties.maxHeight ?? "92vw",
320
+ modal: properties.modal ?? false,
321
+ texts: [properties.title ?? '']
322
+ }, (selection) => {
323
+ callback(selection.index === -1 ? null : selection.value);
317
324
  });
318
325
  }
319
326
  /**
@@ -353,4 +360,4 @@ export class DialogService {
353
360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogService, decorators: [{
354
361
  type: Injectable
355
362
  }], ctorParameters: () => [{ type: i0.RendererFactory2 }, { type: i1.MatSnackBar }, { type: i2.MatDialog }, { type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }] });
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBbUYsTUFBTSxlQUFlLENBQUM7QUFHbEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUd2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQUd4SDs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBeUZ0QixZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUpsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7UUFDSyxxQkFBZ0IsR0FBbUQsSUFBSSxDQUFDO1FBR2hGOztXQUVHO1FBQ0ssd0JBQW1CLEdBQTJCLElBQUksQ0FBQztRQUczRDs7V0FFRztRQUNLLHVC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Qyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEVBQUU7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs4R0EzZVEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQXJyYXlVdGlscywgTnVtZXJpY1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgVHlwZSwgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLW9wdGlvbnMtYmFzZS9kaWFsb2ctb3B0aW9ucy1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0Jhc2VDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWJhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlhbG9nRGF0ZVNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24vZGlhbG9nLWRhdGUtc2VsZWN0aW9uLmNvbXBvbmVudCc7XG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIHRoZSBhcHBsaWNhdGlvbiBtb2RhbCBhbmQgbm9uIG1vZGFsIGZsb2F0aW5nIGVsZW1lbnRzXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEaWFsb2dTZXJ2aWNlIHtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIHRvIG1vZGlmeSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBzaG93biBieSBkZWZhdWx0IGJ5IHRoZSBhZGRNb2RhbEJ1c3lTdGF0ZSgpIG1ldGhvZC5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIHRoaXMuYWRkTW9kYWxCdXN5U3RhdGUoKVxyXG4gICAgICovXHJcbiAgICBjdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzczogVHlwZTxCdXN5U3RhdGVCYXNlQ29tcG9uZW50PiA9IEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hlY2sgcHVibGljIGdldHRlciBmb3IgZG9jc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc0VuYWJsZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBtYWluIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgYnVzeSBzdGF0ZSB0aGF0IGJsb2NrcyBhbGwgdXNlciBpbnRlcmFjdGlvblxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Nob3dpbmdCdXN5U3RhdGUgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kYWwgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBpbml0aWFsaXplZCBvbmx5IHRoZSBmaXJzdCB0aW1lIGl0IGlzIGNhbGxlZC5cclxuICAgICAqXHJcbiAgICAgKiAoVG8gYXBwZW5kIHRoZSBidXN5IHN0YXRlIGR5bmFtaWNhbGx5LCB3ZSB1c2UgdGhlIFBvcnRhbCBjb25jZXB0IGZyb20gdGhlIGFuZ3VsYXIgbWF0ZXJpYWwgbGlicmFyeSlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY29tcG9uZW50UG9ydGFsOiBDb21wb25lbnRQb3J0YWw8QnVzeVN0YXRlQmFzZUNvbXBvbmVudD4gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgbW9kYWwgYnVzeSBzdGF0ZSBjb250YWluZXIgd2hlcmUgdGhlIGNvbXBvbmVudCB3aWxsIGJlIGFkZGVkXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21vZGFsQnVzeVN0YXRlSG9zdDogRG9tUG9ydGFsT3V0bGV0IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIG1hbmFnZXIgaXMgY3VycmVudGx5IHNob3dpbmcgYSBzbmFja2JhciBlbGVtZW50IG9yIG5vdFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pc1Nob3dpbmdTbmFja0JhciA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRhaW5zIGEgbGlzdCBvZiB0aGUgZGlhbG9ncyB0aGF0IGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci5cclxuICAgICAqIEVhY2ggaXRlbSBpbiB0aGlzIGxpc3QgaXMgYSBoYXNoIHRoYXQgaXMgY29tcHV0ZWQgd2hlbiBkaWFsb2cgaXMgY3JlYXRlZCB0byB1bmlxdWVseSBpZGVudGlmeSBpdC5cclxuICAgICAqXHJcbiAgICAgKiBFbXB0eSBsaXN0IG1lYW5zIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FjdGl2ZURpYWxvZ3M6IHN0cmluZ1tdID0gW107XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbnMgYSBsaXN0IHdpdGggYWxsIHRoZSBNYXREaWFsb2cgaW5zdGFuY2VzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyLlxyXG4gICAgICogVGhlIGxpc3QgdXNlcyB0aGUgc2FtZSBvcmRlciBhcyB0aGUgbGlzdCBvZiBfYWN0aXZlRGlhbG9ncyBoYXNoIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hY3RpdmVEaWFsb2dJbnN0YW5jZXM6IE1hdERpYWxvZ1JlZjxEaWFsb2dCYXNlQ29tcG9uZW50PltdID0gW107XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVXNlZCB0byBzdG9yZSB0aGUgaW5pdGlhbGl6ZWQgUmVuZGVyZXIgMiBpbnN0YW5jZSB0aGF0IGlzIHVzZWQgYnkgdGhpcyBjbGFzc1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSB3aW5kb3cgYmVmb3JldW5sb2FkIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIGRvY3VtZW50IGtleWRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50S2V5ZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQgbW91c2Vkb3duIGV2ZW50IGxpc3RlbmVyIG9uY2Ugbm90IHVzZWQgYW55bW9yZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQgcG9pbnRlcmRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbjogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0U25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvblJlZjogQXBwbGljYXRpb25SZWYsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoaXMgZGlhbG9nIHNlcnZpY2UgaXMgZW5hYmxlZCBvciBub3QuIElmIGRpYWxvZyBzZXJ2aWNlIGlzIGRpc2FibGVkLCBub25lIG9mIGl0J3MgZmVhdHVyZXMgd2lsbCB3b3JrXHJcbiAgICAgKiBUaGlzIGlzIHVzZWQgdG8gYmxvY2sgYWxsIGRpYWxvZyBmZWF0dXJlcyBub3JtYWxseSB3aGVuIHNodXR0aW5nIGRvd24gdGhlIGFwcGxpY2F0aW9uXHJcbiAgICAgKlxyXG4gICAgICogVXNlIHdpdGggY2F1dGlvbi4gV2hlbiB0aGlzIGlzIHNldCB0byBmYWxzZSwgZGlhbG9nIHNlcnZpY2Ugc3RvcHMgd29ya2luZy5cclxuICAgICAqL1xyXG4gICAgc2V0IGlzRW5hYmxlZCh2OiBib29sZWFuKSB7XHJcblxyXG4gICAgICAgIGlmICh2ID09PSB0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZCA9IHY7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW5hYmxlcyBhIHdhcm5pbmcgdGhhdCB3aWxsIGJlIHNob3duIHRvIHRoZSB1c2VyIHdoZW4gaGUvc2hlIHRyaWVzIHRvIGNsb3NlIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgICAqIFRoaXMgd2FybmluZyB3aWxsIHByb21wdCB0aGUgdXNlciB0byBjb250aW51ZSB3aXRoIHRoZSBleGl0IHByb2Nlc3Mgb3IgY2FuY2VsIGl0LlxyXG4gICAgICogVGhlIHNwZWNpZmljIHRleHRzIG9mIHRoaXMgbWVzc2FnZSBhcmUgYSBnZW5lcmljIG9uZXMgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLlxyXG4gICAgICpcclxuICAgICAqIElNUE9SVEFOVDogVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIG1haW4gYXBwbGljYXRpb24gaGFzIGJlZW4gaW5pdGlhbGl6ZWQgaW4gb3JkZXIgdG8gd29yayxcclxuICAgICAqIG90aGVyd2lzZSBpdCB3aWxsIGRvIG5vdGhpbmcuXHJcbiAgICAgKi9cclxuICAgIGFkZENsb3NlQXBwbGljYXRpb25XYXJuaW5nKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAnYmVmb3JldW5sb2FkJyxcclxuICAgICAgICAgICAgICAgIChldmVudCkgPT4gZXZlbnQucmV0dXJuVmFsdWUgPSB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVtb3ZlIHRoZSBjbG9zZSBhcHBsaWNhdGlvbiB3YXJuaW5nIG1lc3NhZ2UgaWYgcHJldmlvdXNseSBhc3NpZ25lZFxyXG4gICAgICovXHJcbiAgICByZW1vdmVDbG9zZUFwcGxpY2F0aW9uV2FybmluZygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIENoYW5nZSB0aGUgYXBwbGljYXRpb24gdmlzdWFsIGFwcGVhcmFuY2Ugc28gdGhlIHVzZXIgcGVyY2VpdmVzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzXHJcbiAgICAgKiBjdXJyZW50bHkgYnVzeS4gV2hpbGUgbW9kYWwgYnVzeSBzdGF0ZSBpcyBlbmFibGVkLCBubyB1c2VyIGlucHV0IGlzIHBvc3NpYmxlIG5laXRoZXIgdmlhXHJcbiAgICAgKiBrZXlib2FyZCwgbW91c2Ugb3IgdG91Y2guIFVzZSB0aGlzIHN0YXRlIHdoZW4gcGVyZm9ybWluZyBzZXJ2ZXIgcmVxdWVzdHMgb3Igb3BlcmF0aW9ucyB0aGF0XHJcbiAgICAgKiBtdXN0IGJsb2NrIHRoZSB1c2VyIGludGVyYWN0aW9uIHdpdGggdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAgICpcclxuICAgICAqIE5vdGU6IFdlIGNhbiBtb2RpZnkgdGhlIGJ1c3kgc3RhdGUgY29tcG9uZW50IHRoYXQgaXMgc2hvd24gYnkgdGhpcyBtZXRob2QuIFRvIGRvIGl0LCB3ZSBtdXN0XHJcbiAgICAgKiBzZXQgdGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzcyBwcm9wZXJ0eSB3aXRoIG91ciBvd24gY3VzdG9tIGJ1c3kgc3RhdGUgY29tcG9uZW50IGNsYXNzLiAoV2UgY2FuIGRvIGl0IGF0XHJcbiAgICAgKiBvdXIgbWFpbiBhcHBsaWNhdGlvbiBjb21wb25lbnQgY29uc3RydWN0b3IgZm9yIGV4YW1wbGUpLiBPdXIgY3VzdG9tIGNvbXBvbmVudCBtdXN0IGV4dGVuZCB0aGVcclxuICAgICAqIEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQgb25lIHRvIGFkZCBpdHMgb3duIHZpc3VhbCBhcHBlYXJhbmNlLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgdGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzc1xyXG4gICAgICovXHJcbiAgICBhZGRNb2RhbEJ1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9kaXNhYmxlVXNlckludGVyYWN0aW9uKCk7XHJcblxyXG4gICAgICAgIC8vIER5bmFtaWNhbGx5IGNyZWF0ZSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgcmVmZXJlbmNlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UG9ydGFsID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jb21wb25lbnRQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuY3VzdG9tQnVzeVN0YXRlQ29tcG9uZW50Q2xhc3MpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgUG9ydGFsSG9zdCB3aXRoIGRvY3VtZW50LmJvZHkgYXMgaXRzIGFuY2hvciBlbGVtZW50XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCA9IG5ldyBEb21Qb3J0YWxPdXRsZXQoXHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgKHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCBhcyBEb21Qb3J0YWxPdXRsZXQpLmF0dGFjaCh0aGlzLl9jb21wb25lbnRQb3J0YWwpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbGxzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgbG9ja2VkIGluIGEgbW9kYWwgYnVzeSBzdGF0ZSAoY2F1c2VkIGJ5IGFuIGFkZE1vZGFsQnVzeVN0YXRlKCkgY2FsbClcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2hvd2luZ0J1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGFwcGxpY2F0aW9uIGJ1c3kgc3RhdGUgYW5kIHJlc3RvcmUgaXQgYmFjayB0byBub3JtYWwgdXNlciBpbnRlcmFjdGlvblxyXG4gICAgICovXHJcbiAgICByZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQgfHwgIXRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvbmVudFBvcnRhbCAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgKHRoaXMuX21vZGFsQnVzeVN0YXRlSG9zdCBhcyBEb21Qb3J0YWxPdXRsZXQpLmRldGFjaCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fZW5hYmxlVXNlckludGVyYWN0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogVE9ETyAtIGFkYXB0IGZyb20gVFMgdmVyc2lvblxyXG4gICAgICovXHJcbiAgICBhZGRUb29sVGlwKCkge1xyXG5cclxuICAgICAgICAvLyBUT0RPIC0gYWRhcHQgZnJvbSBUUyB2ZXJzaW9uXHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIG5vbiBtb2RhbCBzbmFja2JhciBub3RpZmljYXRpb24gdG8gdGhlIHVzZXIgKE9ubHkgb25lIHNuYWNrLWJhciBjYW4gZXZlciBiZSBvcGVuZWQgYXQgdGhlIHNhbWUgdGltZSkuXHJcbiAgICAgKlxyXG4gICAgICogU25hY2tiYXJzIGluZm9ybSB1c2VycyBvZiBhIHByb2Nlc3MgdGhhdCBhbiBhcHAgaGFzIHBlcmZvcm1lZCBvciB3aWxsIHBlcmZvcm0uIFRoZXkgYXBwZWFyIHRlbXBvcmFyaWx5LCB0b3dhcmRzIHRoZSBib3R0b20gb3IgdG9wIG9mIHRoZSBzY3JlZW4uXHJcbiAgICAgKiBUaGV5IHNob3VsZG7igJl0IGludGVycnVwdCB0aGUgdXNlciBleHBlcmllbmNlLCBhbmQgdGhleSBkb27igJl0IHJlcXVpcmUgdXNlciBpbnB1dCB0byBkaXNhcHBlYXIuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBBIE1hdFNuYWNrQmFyQ29uZmlnIGluc3RhbmNlIHdpdGggdGhlIGN1c3RvbWl6YXRpb25zIHdlIHdhbnQgZm9yIHRoaXMgc25hY2tiYXJcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHNob3cgb24gdGhlIHNuYWNrYmFyXHJcbiAgICAgKiBAcGFyYW0gYWN0aW9uIElmIG5vdCBlbXB0eSwgdGhlIHRleHQgdG8gcGxhY2Ugb24gdGhlIHNuYWNrYmFyIGNvbmZpcm1hdGlvbiBidXR0b25cclxuICAgICAqIEBwYXJhbSBhY3Rpb25DYWxsYmFjayBBIG1ldGhvZCB0byBleGVjdXRlIG9uY2UgdGhlIHVzZXIgY2xpY2tzIGludG8gdGhlIGFjdGlvbiBidXR0b24uXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiB2b2lkXHJcbiAgICAgKi9cclxuICAgIGFkZFNuYWNrQmFyKGNvbmZpZzogTWF0U25hY2tCYXJDb25maWcsIG1lc3NhZ2U6IHN0cmluZywgYWN0aW9uID0gJycsIGFjdGlvbkNhbGxiYWNrOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyeWluZyB0byBzaG93IGEgc25hY2tiYXIgd2hpbGUgYW5vdGhlciBvbmUgaXMgc3RpbGwgdmlzaWJsZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nU25hY2tCYXIgPSB0cnVlO1xyXG5cclxuICAgICAgICBjb25zdCBzbmFja0JhclJlZiA9IHRoaXMubWF0U25hY2tCYXIub3BlbihtZXNzYWdlLCBhY3Rpb24gPT09ICcnID8gdW5kZWZpbmVkIDogYWN0aW9uLCBjb25maWcpO1xyXG5cclxuICAgICAgICBpZiAoYWN0aW9uQ2FsbGJhY2sgIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHNuYWNrQmFyUmVmLm9uQWN0aW9uKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBhY3Rpb25DYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBzaG93aW5nIGEgc25hY2tiYXIgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIGdldCBpc1Nob3dpbmdTbmFja0JhcigpIHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcmNlIHRoZSByZW1vdmFsIG9mIHRoZSBzbmFjayBiYXIgZGlhbG9nIGlmIGl0IGV4aXN0cy5cclxuICAgICAqXHJcbiAgICAgKiBJZiBubyBzbmFja2JhciBpcyBjdXJyZW50bHkgdmlzaWJsZSwgdGhpcyBtZXRob2Qgd2lsbCBkbyBub3RoaW5nXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZVNuYWNrQmFyKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCAhdGhpcy5faXNTaG93aW5nU25hY2tCYXIpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubWF0U25hY2tCYXIuZGlzbWlzcygpO1xyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdTbmFja0JhciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNob3cgYSBkaWFsb2cgd2l0aCBvbmUgb3IgbW9yZSBvcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2xvc2UgaXQuIFdlIGNhbiB1c2UgYW55IG9mIHRoZSBwcmVkZWZpbmVkIGRpYWxvZyB0eXBlcyB0aGF0IGFyZSBidW5kbGVkIHdpdGhcclxuICAgICAqIHRoaXMgbGlicmFyeSBvciBleHRlbmQgRGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQgdG8gY3JlYXRlIG91ciBvd24gY3VzdG9tIG9uZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHdpZHRoIFNwZWNpZnkgdGhlIGNzcyB2YWx1ZSBmb3IgdGhlIG1heGltdW0gd2lkdGggdGhlIGRpYWxvZyB3aWxsIGhhdmUuIEFzIHRoZSBkaWFsb2cgaXMgcmVzcG9uc2l2ZSwgdGhlIHZhbHVlIHdpbGwgYmUgYXV0b21hdGljYWxseVxyXG4gICAgICAgICAgICAgIHJlZHVjZWQgaWYgdGhlIGF2YWlsYWJsZSBzY3JlZW4gaXMgbm90IGVub3VnaCwgYW5kIHdpbGwgcmVhY2ggdGhlIGRlc2lyZWQgdmFsdWUgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgaGVpZ2h0IHdpbGwgYmUgYWRhcHRlZCB0byB0aGUgY29udGVudHNcclxuICAgICAgICAgICAgICBvZiB0aGUgZGlhbG9nIGFuZCBjYW5ub3QgYmUgc3BlY2lmaWVkIGhlcmUuIFdlIGNhbiBzZXQgYSBwaXhlbHMsICUgb3IgYW55IG90aGVyIGNzcyBhY2NlcHRlZCB2YWx1ZS4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiBAcGFyYW0gdGV4dHMgQSBsaXN0IHdpdGggc3RyaW5ncyBjb250YWluaW5nIHRoZSBkaWFsb2cgdGV4dHMsIHNvcnRlZCBieSBpbXBvcnRhbmNlLiBXaGVuIGRpYWxvZyBoYXMgYSB0aXRsZSwgdGhpcyBzaG91bGRcclxuICAgICAqICAgICAgICBiZSBwbGFjZWQgZmlyc3QsIHN1YnRpdGxlIHNlY29uZCBhbmQgc28gKEVhY2ggZGlhbG9nIG1heSBhY2NlcHQgZGlmZmVyZW50IG51bWJlciBvZiB0ZXh0cykuXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBBIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgYmUgdXNlZCBhcyBidXR0b24gY2FwdGlvbnMgZm9yIGVhY2ggb25lIG9mIHRoZSBhY2NlcHRlZCBkaWFsb2cgb3B0aW9uc1xyXG4gICAgICogQHBhcmFtIGRpYWxvZ0NvbXBvbmVudENsYXNzIEEgY2xhc3MgZm9yIGEgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCwgd2hpY2ggd2lsbCBiZSB0aGVcclxuICAgICAqICAgICAgICBkaWFsb2cgdmlzdWFsIGVsZW1lbnQgdGhhdCBpcyBzaG93biB0byB0aGUgdXNlci5cclxuICAgICAqIEBwYXJhbSBjYWxsYmFjayBBIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRpYWxvZyBpcyBjbG9zZWQgYW5kIHdpbGwgcmVjZWl2ZSBhbiBvYmplY3Qgd2l0aCB0aGUgbnVtZXJpYyBpbmRleCBhbmQgdmFsdWUgZm9yXHJcbiAgICAgKiAgICAgICAgdGhlIG9wdGlvbiB0aGF0J3MgYmVlbiBzZWxlY3RlZCBieSB0aGUgdXNlci4gaWYgbm8gb3B0aW9uIHdhcyBzZWxlY3RlZCwgdGhlIHZhbHVlIHdpbGwgYmUgLTFcclxuICAgICAqIEBwYXJhbSBtb2RhbCBUcnVlIChkZWZhdWx0KSBpZiBzZWxlY3RpbmcgYW4gb3B0aW9uIGlzIG1hbmRhdG9yeSB0byBjbG9zZSB0aGUgZGlhbG9nLCBmYWxzZSBpZiB0aGUgZGlhbG9nIGNhbiBiZSBjbG9zZWRcclxuICAgICAqICAgICAgICBieSB0aGUgdXNlciBieSBjbGlja2luZyBvdXRzaWRlIGl0IFxyXG4gICAgICogQHBhcmFtIG1heFdpZHRoIERlZmluZXMgdGhlIG1heGltdW0gd2lkdGggdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSByZWdhcmRpbmcgdGhlIHZpZXdwb3J0LiBXZSBjYW4gc3BlY2lmeSBpdCBpbiAlIG9yIHZ3LCBqdXN0IGxpa2UgaXMgZG9uZSBpblxyXG4gICAgICogICAgICAgIGNzcy4gQnkgZGVmYXVsdCBpdCBpcyBkZWZpbmVkIGFzIDk2dncsIHdoaWNoIHdpbGwgZml0IDk2JSBvZiB0aGUgdmlld3BvcnQgb24gc21hbGwgZGV2aWNlc1xyXG4gICAgICovXHJcbiAgICBhZGREaWFsb2coZGlhbG9nQ29tcG9uZW50Q2xhc3M6IFR5cGU8RGlhbG9nT3B0aW9uc0Jhc2VDb21wb25lbnQ+LFxyXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHt3aWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0Pzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RhbD86IGJvb2xlYW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzPzogc3RyaW5nW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb25zPzogc3RyaW5nW119LCBcclxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbCB8ICgoc2VsZWN0ZWRPcHRpb246IHtpbmRleDpudW1iZXIsIHZhbHVlOiBhbnl9KSA9PiB2b2lkKSA9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gU2V0IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgYWxsIG5vbiBzcGVjaWZpZWQgdmlzdWFsIG9wdGlvbnNcclxuICAgICAgICBvcHRpb25zLndpZHRoID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnd2lkdGgnKSA/IG9wdGlvbnMud2lkdGggOiBcIjUwJVwiO1xyXG4gICAgICAgIG9wdGlvbnMubWF4V2lkdGggPSBvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXhXaWR0aCcpID8gb3B0aW9ucy5tYXhXaWR0aCA6IFwiOTZ2d1wiO1xyXG4gICAgICAgIG9wdGlvbnMuaGVpZ2h0ID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnaGVpZ2h0JykgPyBvcHRpb25zLmhlaWdodCA6IFwiNTAlXCI7XHJcbiAgICAgICAgb3B0aW9ucy5tYXhIZWlnaHQgPSBvcHRpb25zLmhhc093blByb3BlcnR5KCdtYXhIZWlnaHQnKSA/IG9wdGlvbnMubWF4SGVpZ2h0IDogXCI5MnZ3XCI7XHJcbiAgICAgICAgb3B0aW9ucy5tb2RhbCA9IG9wdGlvbnMuaGFzT3duUHJvcGVydHkoJ21vZGFsJykgPyBvcHRpb25zLm1vZGFsIDogdHJ1ZTtcclxuICAgICAgICBvcHRpb25zLnRleHRzID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgndGV4dHMnKSA/IG9wdGlvbnMudGV4dHMgOiBbXTtcclxuICAgICAgICBvcHRpb25zLmNhcHRpb25zID0gb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgnY2FwdGlvbnMnKSA/IG9wdGlvbnMuY2FwdGlvbnMgOiBbXTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgYSBzdHJpbmcgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBkaWFsb2cgb24gdGhlIGxpc3Qgb2YgYWN0aXZlIGRpYWxvZ3NcclxuICAgICAgICBjb25zdCBkaWFsb2dIYXNoID0gb3B0aW9ucy50ZXh0cyEuam9pbignJykgKyBvcHRpb25zLmNhcHRpb25zIS5qb2luKCcnKSArIGRpYWxvZ0NvbXBvbmVudENsYXNzLm5hbWU7XHJcblxyXG4gICAgICAgIC8vIGlkZW50aWNhbCBkaWFsb2dzIHdvbid0IGJlIGFsbG93ZWQgYXQgdGhlIHNhbWUgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVEaWFsb2dzLmluY2x1ZGVzKGRpYWxvZ0hhc2gpKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGRpYWxvZ0NvbXBvbmVudENsYXNzLCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBvcHRpb25zLndpZHRoLFxyXG4gICAgICAgICAgICBtYXhXaWR0aDogb3B0aW9ucy5tYXhXaWR0aCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiBvcHRpb25zLm1vZGFsLFxyXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogIW9wdGlvbnMubW9kYWwsXHJcbiAgICAgICAgICAgIGRhdGE6IHsgdGV4dHM6IG9wdGlvbnMudGV4dHMsIG9wdGlvbnM6IG9wdGlvbnMuY2FwdGlvbnMgfVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ3MucHVzaChkaWFsb2dIYXNoKTtcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMucHVzaChkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChzZWxlY3RlZE9wdGlvbkluZGV4OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ3MgPSBBcnJheVV0aWxzLnJlbW92ZUVsZW1lbnQodGhpcy5fYWN0aXZlRGlhbG9ncywgZGlhbG9nSGFzaCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcyA9IEFycmF5VXRpbHMucmVtb3ZlRWxlbWVudCh0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMsIGRpYWxvZ1JlZik7XHJcblxyXG4gICAgICAgICAgICBpZiAoIU51bWVyaWNVdGlscy5pc0ludGVnZXIoc2VsZWN0ZWRPcHRpb25JbmRleCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihvcHRpb25zLm1vZGFsKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGRpYWxvZ1JlZi5jbG9zZSgpIGV4cGVjdHMgaW50IHZhbHVlYCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25JbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9uID0ge2luZGV4OiBzZWxlY3RlZE9wdGlvbkluZGV4LCB2YWx1ZTogJyd9O1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihzZWxlY3RlZE9wdGlvbkluZGV4ID49IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9uLnZhbHVlID0gb3B0aW9ucy5jYXB0aW9ucyFbc2VsZWN0ZWRPcHRpb25JbmRleF07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKGNhbGxiYWNrIGFzICgoc2VsZWN0ZWRPcHRpb246IHtpbmRleDpudW1iZXIsIHZhbHVlOiBzdHJpbmd9KSA9PiB2b2lkKSkoc2VsZWN0ZWRPcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JjZSB0aGUgcmVtb3ZhbCBvZiBhbGwgdGhlIGRpYWxvZ3MgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUuXHJcbiAgICAgKlxyXG4gICAgICogSWYgbm8gZGlhbG9ncyBhcmUgY3VycmVudGx5IHZpc2libGUsIHRoaXMgbWV0aG9kIHdpbGwgZG8gbm90aGluZ1xyXG4gICAgICovXHJcbiAgICByZW1vdmVBbGxEaWFsb2dzKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBkaWFsb2dSZWYgb2YgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzKSB7XHJcblxyXG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoLTEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gW107XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgYWRkRGF0ZVNlbGVjdGlvbkRpYWxvZyhvcHRpb25zOiB7d2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGFsPzogYm9vbGVhbn0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAoKHNlbGVjdGVkRGF0ZTogbnVsbCB8IERhdGUpID0+IHZvaWQpKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuYWRkRGlhbG9nKERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpZHRoOiBvcHRpb25zLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IG9wdGlvbnMubWF4V2lkdGgsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IG9wdGlvbnMuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBvcHRpb25zLm1heEhlaWdodCxcclxuICAgICAgICAgICAgICAgIG1vZGFsOiBvcHRpb25zLm1vZGFsLFxyXG4gICAgICAgICAgICAgICAgdGV4dHM6IFt0aXRsZV0gICBcclxuICAgICAgICAgICAgfSwoc2VsZWN0ZWRPcHRpb24pID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihzZWxlY3RlZE9wdGlvbi5pbmRleCA8IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzZWxlY3RlZE9wdGlvbi52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmxvY2sgYWxsIHRoZSB1c2VyIGludGVyYWN0aW9ucyB3aXRoIHRoZSBhcHBsaWNhdGlvbiAoa2V5Ym9hcmQsIHRvdWNoLCBtb3VzZSwgLi4uKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kaXNhYmxlVXNlckludGVyYWN0aW9uKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdrZXlkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZWRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdwb2ludGVyZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlc3RvcmUgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHRoYXQgd2VyZSBwcmV2aW91c2x5IGRpc2FibGVkIHdpdGggX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24gbWV0aG9kXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2VuYWJsZVVzZXJJbnRlcmFjdGlvbigpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRNb3VzZWRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbigpO1xyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dXJib2d1aS1hbmd1bGFyL3NyYy9tYWluL2NvbnRyb2xsZXIvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUFRLFVBQVUsRUFBbUYsTUFBTSxlQUFlLENBQUM7QUFHbEksT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQUd4SDs7R0FFRztBQUVILE1BQU0sT0FBTyxhQUFhO0lBeUZ0QixZQUFZLGVBQWlDLEVBQ2hCLFdBQXdCLEVBQ3hCLFNBQW9CLEVBQ3BCLFFBQWtCLEVBQ2xCLGNBQThCLEVBQzlCLHdCQUFrRDtRQUpsRCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUEzRi9FOzs7O1dBSUc7UUFDSCxrQ0FBNkIsR0FBaUMsc0JBQXNCLENBQUM7UUFHckY7O1dBRUc7UUFDSyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRzFCOztXQUVHO1FBQ0ssd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR3BDOzs7O1dBSUc7UUFDSyxxQkFBZ0IsR0FBbUQsSUFBSSxDQUFDO1FBR2hGOztXQUVHO1FBQ0ssd0JBQW1CLEdBQTJCLElBQUksQ0FBQztRQUczRDs7V0FFRztRQUNLLHVC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UyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztTQUN2SDtRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7U0FDM0g7SUFDTCxDQUFDO0lBR0Q7O09BRUc7SUFDSyxzQkFBc0I7UUFFMUIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssSUFBSSxFQUFFO1lBRXhDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDeEM7UUFFRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsS0FBSyxJQUFJLEVBQUU7WUFFMUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztTQUMxQztRQUVELElBQUksSUFBSSxDQUFDLDRCQUE0QixLQUFLLElBQUksRUFBRTtZQUU1QyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs4R0E5ZVEsYUFBYTtrSEFBYixhQUFhOzsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQXJyYXlVdGlscywgTnVtZXJpY1V0aWxzIH0gZnJvbSAndHVyYm9jb21tb25zLXRzJztcclxuaW1wb3J0IHsgVHlwZSwgSW5qZWN0YWJsZSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBJbmplY3RvciwgQXBwbGljYXRpb25SZWYsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciwgTWF0U25hY2tCYXJDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBCdXN5U3RhdGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2J1c3ktc3RhdGUtYmFzZS9idXN5LXN0YXRlLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBEb21Qb3J0YWxPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXcvY29tcG9uZW50cy9kaWFsb2ctYmFzZS9kaWFsb2ctYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEaWFsb2dEYXRlU2VsZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50JztcblxyXG5cclxuLyoqXHJcbiAqIE1hbmFnZXMgdGhlIGFwcGxpY2F0aW9uIG1vZGFsIGFuZCBub24gbW9kYWwgZmxvYXRpbmcgZWxlbWVudHNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1NlcnZpY2Uge1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVzZWQgdG8gbW9kaWZ5IHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIHNob3duIGJ5IGRlZmF1bHQgYnkgdGhlIGFkZE1vZGFsQnVzeVN0YXRlKCkgbWV0aG9kLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgdGhpcy5hZGRNb2RhbEJ1c3lTdGF0ZSgpXHJcbiAgICAgKi9cclxuICAgIGN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzOiBUeXBlPEJ1c3lTdGF0ZUJhc2VDb21wb25lbnQ+ID0gQnVzeVN0YXRlQmFzZUNvbXBvbmVudDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDaGVjayBwdWJsaWMgZ2V0dGVyIGZvciBkb2NzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzRW5hYmxlZCA9IHRydWU7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIG1haW4gYXBwbGljYXRpb24gaXMgY3VycmVudGx5IHNob3dpbmcgYSBidXN5IHN0YXRlIHRoYXQgYmxvY2tzIGFsbCB1c2VyIGludGVyYWN0aW9uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RhbCBidXN5IHN0YXRlIGNvbXBvbmVudCB0aGF0IGlzIGluaXRpYWxpemVkIG9ubHkgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLlxyXG4gICAgICpcclxuICAgICAqIChUbyBhcHBlbmQgdGhlIGJ1c3kgc3RhdGUgZHluYW1pY2FsbHksIHdlIHVzZSB0aGUgUG9ydGFsIGNvbmNlcHQgZnJvbSB0aGUgYW5ndWxhciBtYXRlcmlhbCBsaWJyYXJ5KVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9jb21wb25lbnRQb3J0YWw6IENvbXBvbmVudFBvcnRhbDxCdXN5U3RhdGVCYXNlQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBtb2RhbCBidXN5IHN0YXRlIGNvbnRhaW5lciB3aGVyZSB0aGUgY29tcG9uZW50IHdpbGwgYmUgYWRkZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbW9kYWxCdXN5U3RhdGVIb3N0OiBEb21Qb3J0YWxPdXRsZXQgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgbWFuYWdlciBpcyBjdXJyZW50bHkgc2hvd2luZyBhIHNuYWNrYmFyIGVsZW1lbnQgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lzU2hvd2luZ1NuYWNrQmFyID0gZmFsc2U7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udGFpbnMgYSBsaXN0IG9mIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSB1c2VyLlxyXG4gICAgICogRWFjaCBpdGVtIGluIHRoaXMgbGlzdCBpcyBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCB3aGVuIGRpYWxvZyBpcyBjcmVhdGVkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGl0LlxyXG4gICAgICpcclxuICAgICAqIEVtcHR5IGxpc3QgbWVhbnMgbm8gZGlhbG9ncyBhcmUgY3VycmVudGx5IHZpc2libGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWN0aXZlRGlhbG9nczogc3RyaW5nW10gPSBbXTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250YWlucyBhIGxpc3Qgd2l0aCBhbGwgdGhlIE1hdERpYWxvZyBpbnN0YW5jZXMgdGhhdCBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBUaGUgbGlzdCB1c2VzIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBsaXN0IG9mIF9hY3RpdmVEaWFsb2dzIGhhc2ggdmFsdWVzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FjdGl2ZURpYWxvZ0luc3RhbmNlczogTWF0RGlhbG9nUmVmPERpYWxvZ0Jhc2VDb21wb25lbnQ+W10gPSBbXTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VkIHRvIHN0b3JlIHRoZSBpbml0aWFsaXplZCBSZW5kZXJlciAyIGluc3RhbmNlIHRoYXQgaXMgdXNlZCBieSB0aGlzIGNsYXNzXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjI7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZWxldGUgdGhlIHdpbmRvdyBiZWZvcmV1bmxvYWQgZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBpcyB1c2VkIHRvIGRlbGV0ZSB0aGUgZG9jdW1lbnQga2V5ZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRLZXlkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBtb3VzZWRvd24gZXZlbnQgbGlzdGVuZXIgb25jZSBub3QgdXNlZCBhbnltb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW46ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZGVsZXRlIHRoZSBkb2N1bWVudCBwb2ludGVyZG93biBldmVudCBsaXN0ZW5lciBvbmNlIG5vdCB1c2VkIGFueW1vcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtYXRTbmFja0JhcjogTWF0U25hY2tCYXIsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIpIHtcclxuXHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhpcyBkaWFsb2cgc2VydmljZSBpcyBlbmFibGVkIG9yIG5vdC4gSWYgZGlhbG9nIHNlcnZpY2UgaXMgZGlzYWJsZWQsIG5vbmUgb2YgaXQncyBmZWF0dXJlcyB3aWxsIHdvcmtcclxuICAgICAqIFRoaXMgaXMgdXNlZCB0byBibG9jayBhbGwgZGlhbG9nIGZlYXR1cmVzIG5vcm1hbGx5IHdoZW4gc2h1dHRpbmcgZG93biB0aGUgYXBwbGljYXRpb25cclxuICAgICAqXHJcbiAgICAgKiBVc2Ugd2l0aCBjYXV0aW9uLiBXaGVuIHRoaXMgaXMgc2V0IHRvIGZhbHNlLCBkaWFsb2cgc2VydmljZSBzdG9wcyB3b3JraW5nLlxyXG4gICAgICovXHJcbiAgICBzZXQgaXNFbmFibGVkKHY6IGJvb2xlYW4pIHtcclxuXHJcbiAgICAgICAgaWYgKHYgPT09IHRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5faXNFbmFibGVkID0gdjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzIGEgd2FybmluZyB0aGF0IHdpbGwgYmUgc2hvd24gdG8gdGhlIHVzZXIgd2hlbiBoZS9zaGUgdHJpZXMgdG8gY2xvc2UgdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAgICogVGhpcyB3YXJuaW5nIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIGNvbnRpbnVlIHdpdGggdGhlIGV4aXQgcHJvY2VzcyBvciBjYW5jZWwgaXQuXHJcbiAgICAgKiBUaGUgc3BlY2lmaWMgdGV4dHMgb2YgdGhpcyBtZXNzYWdlIGFyZSBhIGdlbmVyaWMgb25lcyBhbmQgY2Fubm90IGJlIGNoYW5nZWQuXHJcbiAgICAgKlxyXG4gICAgICogSU1QT1JUQU5UOiBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgbWFpbiBhcHBsaWNhdGlvbiBoYXMgYmVlbiBpbml0aWFsaXplZCBpbiBvcmRlciB0byB3b3JrLFxyXG4gICAgICogb3RoZXJ3aXNlIGl0IHdpbGwgZG8gbm90aGluZy5cclxuICAgICAqL1xyXG4gICAgYWRkQ2xvc2VBcHBsaWNhdGlvbldhcm5pbmcoKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl93aW5kb3dCZWZvcmVVbmxvYWRVbkxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ3dpbmRvdycsICdiZWZvcmV1bmxvYWQnLFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50KSA9PiBldmVudC5yZXR1cm5WYWx1ZSA9IHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmUgdGhlIGNsb3NlIGFwcGxpY2F0aW9uIHdhcm5pbmcgbWVzc2FnZSBpZiBwcmV2aW91c2x5IGFzc2lnbmVkXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUNsb3NlQXBwbGljYXRpb25XYXJuaW5nKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fd2luZG93QmVmb3JlVW5sb2FkVW5MaXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3dpbmRvd0JlZm9yZVVubG9hZFVuTGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2hhbmdlIHRoZSBhcHBsaWNhdGlvbiB2aXN1YWwgYXBwZWFyYW5jZSBzbyB0aGUgdXNlciBwZXJjZWl2ZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gaXNcclxuICAgICAqIGN1cnJlbnRseSBidXN5LiBXaGlsZSBtb2RhbCBidXN5IHN0YXRlIGlzIGVuYWJsZWQsIG5vIHVzZXIgaW5wdXQgaXMgcG9zc2libGUgbmVpdGhlciB2aWFcclxuICAgICAqIGtleWJvYXJkLCBtb3VzZSBvciB0b3VjaC4gVXNlIHRoaXMgc3RhdGUgd2hlbiBwZXJmb3JtaW5nIHNlcnZlciByZXF1ZXN0cyBvciBvcGVyYXRpb25zIHRoYXRcclxuICAgICAqIG11c3QgYmxvY2sgdGhlIHVzZXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgYXBwbGljYXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogTm90ZTogV2UgY2FuIG1vZGlmeSB0aGUgYnVzeSBzdGF0ZSBjb21wb25lbnQgdGhhdCBpcyBzaG93biBieSB0aGlzIG1ldGhvZC4gVG8gZG8gaXQsIHdlIG11c3RcclxuICAgICAqIHNldCB0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzIHByb3BlcnR5IHdpdGggb3VyIG93biBjdXN0b20gYnVzeSBzdGF0ZSBjb21wb25lbnQgY2xhc3MuIChXZSBjYW4gZG8gaXQgYXRcclxuICAgICAqIG91ciBtYWluIGFwcGxpY2F0aW9uIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBmb3IgZXhhbXBsZSkuIE91ciBjdXN0b20gY29tcG9uZW50IG11c3QgZXh0ZW5kIHRoZVxyXG4gICAgICogQnVzeVN0YXRlQmFzZUNvbXBvbmVudCBvbmUgdG8gYWRkIGl0cyBvd24gdmlzdWFsIGFwcGVhcmFuY2UuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSB0aGlzLmN1c3RvbUJ1c3lTdGF0ZUNvbXBvbmVudENsYXNzXHJcbiAgICAgKi9cclxuICAgIGFkZE1vZGFsQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCB0aGlzLl9pc1Nob3dpbmdCdXN5U3RhdGUpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24oKTtcclxuXHJcbiAgICAgICAgLy8gRHluYW1pY2FsbHkgY3JlYXRlIHRoZSBidXN5IHN0YXRlIGNvbXBvbmVudCByZWZlcmVuY2UgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9jb21wb25lbnRQb3J0YWwgPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5jdXN0b21CdXN5U3RhdGVDb21wb25lbnRDbGFzcyk7XHJcblxyXG4gICAgICAgICAgICAvLyBDcmVhdGUgYSBQb3J0YWxIb3N0IHdpdGggZG9jdW1lbnQuYm9keSBhcyBpdHMgYW5jaG9yIGVsZW1lbnRcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmplY3Rvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAodGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0IGFzIERvbVBvcnRhbE91dGxldCkuYXR0YWNoKHRoaXMuX2NvbXBvbmVudFBvcnRhbCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ0J1c3lTdGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVsbHMgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGN1cnJlbnRseSBsb2NrZWQgaW4gYSBtb2RhbCBidXN5IHN0YXRlIChjYXVzZWQgYnkgYW4gYWRkTW9kYWxCdXN5U3RhdGUoKSBjYWxsKVxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaG93aW5nQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSB0aGUgYXBwbGljYXRpb24gYnVzeSBzdGF0ZSBhbmQgcmVzdG9yZSBpdCBiYWNrIHRvIG5vcm1hbCB1c2VyIGludGVyYWN0aW9uXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZU1vZGFsQnVzeVN0YXRlKCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCB8fCAhdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fY29tcG9uZW50UG9ydGFsICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAodGhpcy5fbW9kYWxCdXN5U3RhdGVIb3N0IGFzIERvbVBvcnRhbE91dGxldCkuZGV0YWNoKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9lbmFibGVVc2VySW50ZXJhY3Rpb24oKTtcclxuXHJcbiAgICAgICAgdGhpcy5faXNTaG93aW5nQnVzeVN0YXRlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUT0RPIC0gYWRhcHQgZnJvbSBUUyB2ZXJzaW9uXHJcbiAgICAgKi9cclxuICAgIGFkZFRvb2xUaXAoKSB7XHJcblxyXG4gICAgICAgIC8vIFRPRE8gLSBhZGFwdCBmcm9tIFRTIHZlcnNpb25cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgbm9uIG1vZGFsIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB0byB0aGUgdXNlciAoT25seSBvbmUgc25hY2stYmFyIGNhbiBldmVyIGJlIG9wZW5lZCBhdCB0aGUgc2FtZSB0aW1lKS5cclxuICAgICAqXHJcbiAgICAgKiBTbmFja2JhcnMgaW5mb3JtIHVzZXJzIG9mIGEgcHJvY2VzcyB0aGF0IGFuIGFwcCBoYXMgcGVyZm9ybWVkIG9yIHdpbGwgcGVyZm9ybS4gVGhleSBhcHBlYXIgdGVtcG9yYXJpbHksIHRvd2FyZHMgdGhlIGJvdHRvbSBvciB0b3Agb2YgdGhlIHNjcmVlbi5cclxuICAgICAqIFRoZXkgc2hvdWxkbuKAmXQgaW50ZXJydXB0IHRoZSB1c2VyIGV4cGVyaWVuY2UsIGFuZCB0aGV5IGRvbuKAmXQgcmVxdWlyZSB1c2VyIGlucHV0IHRvIGRpc2FwcGVhci5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIEEgTWF0U25hY2tCYXJDb25maWcgaW5zdGFuY2Ugd2l0aCB0aGUgY3VzdG9taXphdGlvbnMgd2Ugd2FudCBmb3IgdGhpcyBzbmFja2JhclxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gc2hvdyBvbiB0aGUgc25hY2tiYXJcclxuICAgICAqIEBwYXJhbSBhY3Rpb24gSWYgbm90IGVtcHR5LCB0aGUgdGV4dCB0byBwbGFjZSBvbiB0aGUgc25hY2tiYXIgY29uZmlybWF0aW9uIGJ1dHRvblxyXG4gICAgICogQHBhcmFtIGFjdGlvbkNhbGxiYWNrIEEgbWV0aG9kIHRvIGV4ZWN1dGUgb25jZSB0aGUgdXNlciBjbGlja3MgaW50byB0aGUgYWN0aW9uIGJ1dHRvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHZvaWRcclxuICAgICAqL1xyXG4gICAgYWRkU25hY2tCYXIoY29uZmlnOiBNYXRTbmFja0JhckNvbmZpZywgbWVzc2FnZTogc3RyaW5nLCBhY3Rpb24gPSAnJywgYWN0aW9uQ2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5faXNTaG93aW5nU25hY2tCYXIpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJ5aW5nIHRvIHNob3cgYSBzbmFja2JhciB3aGlsZSBhbm90aGVyIG9uZSBpcyBzdGlsbCB2aXNpYmxlJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9pc1Nob3dpbmdTbmFja0JhciA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IHNuYWNrQmFyUmVmID0gdGhpcy5tYXRTbmFja0Jhci5vcGVuKG1lc3NhZ2UsIGFjdGlvbiA9PT0gJycgPyB1bmRlZmluZWQgOiBhY3Rpb24sIGNvbmZpZyk7XHJcblxyXG4gICAgICAgIGlmIChhY3Rpb25DYWxsYmFjayAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgc25hY2tCYXJSZWYub25BY3Rpb24oKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIGFjdGlvbkNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZWxscyBpZiB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IHNob3dpbmcgYSBzbmFja2JhciBvciBub3RcclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2hvd2luZ1NuYWNrQmFyKCkge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93aW5nU25hY2tCYXI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgdGhlIHNuYWNrIGJhciBkaWFsb2cgaWYgaXQgZXhpc3RzLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIHNuYWNrYmFyIGlzIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlU25hY2tCYXIoKSB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5faXNFbmFibGVkIHx8ICF0aGlzLl9pc1Nob3dpbmdTbmFja0Jhcikge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5kaXNtaXNzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2lzU2hvd2luZ1NuYWNrQmFyID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2hvdyBhIGRpYWxvZyB3aXRoIG9uZSBvciBtb3JlIG9wdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBjbG9zZSBpdC4gV2UgY2FuIHVzZSBhbnkgb2YgdGhlIHByZWRlZmluZWQgZGlhbG9nIHR5cGVzIHRoYXQgYXJlIGJ1bmRsZWQgd2l0aFxyXG4gICAgICogdGhpcyBsaWJyYXJ5IG9yIGV4dGVuZCBEaWFsb2dCYXNlQ29tcG9uZW50IHRvIGNyZWF0ZSBvdXIgb3duIGN1c3RvbSBvbmVzLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkaWFsb2dDb21wb25lbnRDbGFzcyBBIGNsYXNzIGZvciBhIGNvbXBvbmVudCB0aGF0IGV4dGVuZHMgRGlhbG9nQmFzZUNvbXBvbmVudCwgd2hpY2ggd2lsbCBiZSB0aGUgZGlhbG9nIHRoYXQgaXMgc2hvd24gdG8gdGhlIHVzZXIuXHJcbiAgICAgKiBAcGFyYW0gcHJvcGVydGllcyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgZGlmZmVyZW50IHZpc3VhbCBhbmQgdGV4dHVhbCBvcHRpb25zIHRoYXQgdGhpcyBkaWFsb2cgYWxsb3dzOlxyXG4gICAgICogICAgICAgICAgICAtIHdpZHRoOiBTcGVjaWZ5IHRoZSBjc3MgdmFsdWUgZm9yIHRoZSBkZWZhdWx0IGRpYWxvZyB3aWR0aC4gQXMgdGhlIGRpYWxvZyBpcyByZXNwb25zaXZlLCB0aGUgdmFsdWUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XHJcbiAgICAgKiAgICAgICAgICAgICAgcmVkdWNlZCBpZiB0aGUgYXZhaWxhYmxlIHNjcmVlbiBpcyBub3QgZW5vdWdoLCBhbmQgd2lsbCByZWFjaCB0aGUgZGVzaXJlZCB2YWx1ZSBvdGhlcndpc2UuIFdlIGNhbiBzZXQgYW55IGNzcyB1bml0IGxpa2UgcGl4ZWxzLCBcclxuICAgICAqICAgICAgICAgICAgICAlLCB2aCwgdncsIG9yIGFueSBvdGhlci4gRm9yIGV4YW1wbGU6ICc0MDBweCcsICc1MCUnLCBldGMuXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4V2lkdGg6IERlZmluZXMgdGhlIG1heGltdW0gd2lkdGggdGhhdCB0aGUgZGlhbG9nIHdpbGwgaGF2ZSByZWdhcmRpbmcgdGhlIHZpZXdwb3J0LiBXZSBjYW4gc3BlY2lmeSBpdCBpbiAlIG9yIHZ3LCBqdXN0IGxpa2UgaXMgZG9uZSBpblxyXG4gICAgICogICAgICAgICAgICAgIGNzcy4gQnkgZGVmYXVsdCBpdCBpcyBkZWZpbmVkIGFzIDk2dncsIHdoaWNoIHdpbGwgZml0IDk2JSBvZiB0aGUgdmlld3BvcnQgb24gc21hbGwgZGV2aWNlc1xyXG4gICAgICogICAgICAgICAgICAtIGhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbWF4SGVpZ2h0OiBUT0RPIGRvY3NcclxuICAgICAqICAgICAgICAgICAgLSBtb2RhbDogVHJ1ZSAoZGVmYXVsdCkgaWYgc2VsZWN0aW5nIGFuIG9wdGlvbiBpcyBtYW5kYXRvcnkgdG8gY2xvc2UgdGhlIGRpYWxvZywgZmFsc2UgaWYgdGhlIGRpYWxvZyBjYW4gYmUgY2xvc2VkXHJcbiAgICAgKiAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgY2xpY2tpbmcgb3V0c2lkZSBpdCBcclxuICAgICAqICAgICAgICAgICAgLSB0ZXh0czogQSBsaXN0IHdpdGggc3RyaW5ncyBjb250YWluaW5nIHRoZSBkaWFsb2cgdGV4dHMsIHNvcnRlZCBieSBpbXBvcnRhbmNlLiBXaGVuIGRpYWxvZyBoYXMgYSB0aXRsZSwgdGhpcyBzaG91bGRcclxuICAgICAqICAgICAgICAgICAgICBiZSBwbGFjZWQgZmlyc3QsIHN1YnRpdGxlIHNlY29uZCBhbmQgc28gKEVhY2ggZGlhbG9nIG1heSBhY2NlcHQgZGlmZmVyZW50IG51bWJlciBvZiB0ZXh0cykuXHJcbiAgICAgKiAgICAgICAgICAgIC0gb3B0aW9uczogQSBsaXN0IG9mIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYnV0dG9uIGNhcHRpb25zIGZvciBlYWNoIG9uZSBvZiB0aGUgYWNjZXB0ZWQgZGlhbG9nIG9wdGlvbnNcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBhZnRlciB0aGUgZGlhbG9nIGlzIGNsb3NlZCBhbmQgd2lsbCByZWNlaXZlIGEgc2VsZWN0aW9uIG9iamVjdCB3aXRoIHRoZSBudW1lcmljIGluZGV4IGFuZCB2YWx1ZSBmb3JcclxuICAgICAqICAgICAgICB0aGUgb3B0aW9uIHRoYXQncyBiZWVuIHNlbGVjdGVkIGJ5IHRoZSB1c2VyLiBpZiBubyBvcHRpb24gd2FzIHNlbGVjdGVkLCBpbmRleCB3aWxsIGJlIC0xIGFuZCB2YWx1ZSBudWxsXHJcbiAgICAgKi9cclxuICAgIGFkZERpYWxvZyhkaWFsb2dDb21wb25lbnRDbGFzczogVHlwZTxEaWFsb2dCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7d2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodD86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWw/OiBib29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0cz86IHN0cmluZ1tdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogc3RyaW5nW119LCBcclxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbCB8ICgoc2VsZWN0aW9uOiB7aW5kZXg6bnVtYmVyLCB2YWx1ZT86IGFueX0pID0+IHZvaWQpID0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2lzRW5hYmxlZCkge1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBub24gc3BlY2lmaWVkIHByb3BlcnRpZXNcclxuICAgICAgICBwcm9wZXJ0aWVzLm1vZGFsID0gcHJvcGVydGllcy5tb2RhbCA/PyB0cnVlO1xyXG4gICAgICAgIHByb3BlcnRpZXMudGV4dHMgPSBwcm9wZXJ0aWVzLnRleHRzID8/IFtdO1xyXG4gICAgICAgIHByb3BlcnRpZXMub3B0aW9ucyA9IHByb3BlcnRpZXMub3B0aW9ucyA/PyBbXTtcclxuXHJcbiAgICAgICAgLy8gR2VuZXJhdGUgYSBzdHJpbmcgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhpcyBkaWFsb2cgb24gdGhlIGxpc3Qgb2YgYWN0aXZlIGRpYWxvZ3NcclxuICAgICAgICBjb25zdCBkaWFsb2dIYXNoID0gcHJvcGVydGllcy50ZXh0cy5qb2luKCcnKSArIHByb3BlcnRpZXMub3B0aW9ucy5qb2luKCcnKSArIGRpYWxvZ0NvbXBvbmVudENsYXNzLm5hbWU7XHJcblxyXG4gICAgICAgIC8vIGlkZW50aWNhbCBkaWFsb2dzIHdvbid0IGJlIGFsbG93ZWQgYXQgdGhlIHNhbWUgdGltZVxyXG4gICAgICAgIGlmICh0aGlzLl9hY3RpdmVEaWFsb2dzLmluY2x1ZGVzKGRpYWxvZ0hhc2gpKSB7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLm1hdERpYWxvZy5vcGVuKGRpYWxvZ0NvbXBvbmVudENsYXNzLCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBwcm9wZXJ0aWVzLndpZHRoID8/IFwiNTAlXCIsXHJcbiAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHByb3BlcnRpZXMubW9kYWwsXHJcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiAhcHJvcGVydGllcy5tb2RhbCxcclxuICAgICAgICAgICAgZGF0YTogeyB0ZXh0czogcHJvcGVydGllcy50ZXh0cywgb3B0aW9uczogcHJvcGVydGllcy5vcHRpb25zIH1cclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzLnB1c2goZGlhbG9nSGFzaCk7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLnB1c2goZGlhbG9nUmVmKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmLmJlZm9yZUNsb3NlZCgpLnN1YnNjcmliZSgoc2VsZWN0aW9uOntpbmRleDpudW1iZXIsIHZhbHVlPzphbnl9KSA9PiB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gQXJyYXlVdGlscy5yZW1vdmVFbGVtZW50KHRoaXMuX2FjdGl2ZURpYWxvZ3MsIGRpYWxvZ0hhc2gpO1xyXG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dJbnN0YW5jZXMgPSBBcnJheVV0aWxzLnJlbW92ZUVsZW1lbnQodGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzLCBkaWFsb2dSZWYpO1xyXG5cclxuICAgICAgICAgICAgaWYoIXByb3BlcnRpZXMubW9kYWwgJiYgc2VsZWN0aW9uID09PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgaW5kZXg6IC0xIH07XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9ZWxzZSBpZiAoIU51bWVyaWNVdGlscy5pc0ludGVnZXIoc2VsZWN0aW9uLmluZGV4KSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2xvc2VEaWFsb2coKSBleHBlY3RzIGluZGV4IHRvIGJlIGFuIGludGVnZXJgKTsgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYoc2VsZWN0aW9uLmluZGV4ID49IDAgJiYgc2VsZWN0aW9uLnZhbHVlID09PSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24udmFsdWUgPSBwcm9wZXJ0aWVzLm9wdGlvbnMhW3NlbGVjdGlvbi5pbmRleF07XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgKGNhbGxiYWNrIGFzICgoc2VsZWN0aW9uOntpbmRleDpudW1iZXIsIHZhbHVlPzphbnl9KSA9PiB2b2lkKSkoc2VsZWN0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgdGhlIHJlbW92YWwgb2YgYWxsIHRoZSBkaWFsb2dzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlLlxyXG4gICAgICpcclxuICAgICAqIElmIG5vIGRpYWxvZ3MgYXJlIGN1cnJlbnRseSB2aXNpYmxlLCB0aGlzIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmdcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlQWxsRGlhbG9ncygpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgZGlhbG9nUmVmIG9mIHRoaXMuX2FjdGl2ZURpYWxvZ0luc3RhbmNlcykge1xyXG5cclxuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKHtpbmRleDotMX0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9hY3RpdmVEaWFsb2dzID0gW107XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlRGlhbG9nSW5zdGFuY2VzID0gW107XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBTaG93IGEgZGlhbG9nIHdpdGggYSBjYWxlbmRhciB0byBsZXQgdGhlIHVzZXIgcGljayBhIGRhdGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHByb3BlcnRpZXMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRpZmZlcmVudCB2aXN1YWwgYW5kIHRleHR1YWwgb3B0aW9ucyB0aGF0IHRoaXMgZGlhbG9nIGFsbG93czpcclxuICAgICAqICAgICAgICAgICAgLSB3aWR0aDogU3BlY2lmeSB0aGUgY3NzIHZhbHVlIGZvciB0aGUgZGVmYXVsdCBkaWFsb2cgd2lkdGguIEFzIHRoZSBkaWFsb2cgaXMgcmVzcG9uc2l2ZSwgdGhlIHZhbHVlIHdpbGwgYmUgYXV0b21hdGljYWxseVxyXG4gICAgICogICAgICAgICAgICAgIHJlZHVjZWQgaWYgdGhlIGF2YWlsYWJsZSBzY3JlZW4gaXMgbm90IGVub3VnaCwgYW5kIHdpbGwgcmVhY2ggdGhlIGRlc2lyZWQgdmFsdWUgb3RoZXJ3aXNlLiBXZSBjYW4gc2V0IGFueSBjc3MgdW5pdCBsaWtlIHBpeGVscywgXHJcbiAgICAgKiAgICAgICAgICAgICAgJSwgdmgsIHZ3LCBvciBhbnkgb3RoZXIuIEZvciBleGFtcGxlOiAnNDAwcHgnLCAnNTAlJywgZXRjLlxyXG4gICAgICogICAgICAgICAgICAtIG1heFdpZHRoOiBEZWZpbmVzIHRoZSBtYXhpbXVtIHdpZHRoIHRoYXQgdGhlIGRpYWxvZyB3aWxsIGhhdmUgcmVnYXJkaW5nIHRoZSB2aWV3cG9ydC4gV2UgY2FuIHNwZWNpZnkgaXQgaW4gJSBvciB2dywganVzdCBsaWtlIGlzIGRvbmUgaW5cclxuICAgICAqICAgICAgICAgICAgICBjc3MuIEJ5IGRlZmF1bHQgaXQgaXMgZGVmaW5lZCBhcyA5NnZ3LCB3aGljaCB3aWxsIGZpdCA5NiUgb2YgdGhlIHZpZXdwb3J0IG9uIHNtYWxsIGRldmljZXNcclxuICAgICAqICAgICAgICAgICAgLSBoZWlnaHQ6IFRPRE8gZG9jc1xyXG4gICAgICogICAgICAgICAgICAtIG1heEhlaWdodDogVE9ETyBkb2NzXHJcbiAgICAgKiAgICAgICAgICAgIC0gbW9kYWw6IFRydWUgKGRlZmF1bHQpIGlmIHNlbGVjdGluZyBhbiBvcHRpb24gaXMgbWFuZGF0b3J5IHRvIGNsb3NlIHRoZSBkaWFsb2csIGZhbHNlIGlmIHRoZSBkaWFsb2cgY2FuIGJlIGNsb3NlZFxyXG4gICAgICogICAgICAgICAgICAgIGJ5IHRoZSB1c2VyIGNsaWNraW5nIG91dHNpZGUgaXQgXHJcbiAgICAgKiAgICAgICAgICAgIC0gdGl0bGU6IEFuIG9wdGlvbmFsIGRpYWxvZyB0aXRsZVxyXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIEEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIHRoZSBkaWFsb2cgaXMgY2xvc2VkLiBJdCB3aWxsIHJlY2VpdmUgYSBEYXRlKCkgb2JqZWN0IHNlbGVjdGVkIGJ5IHRoZSB1c2VyIG9yIG51bGwgaWYgbm8gc2VsZWN0aW9uIGhhcHBlbmVkXHJcbiAgICAgKi9cclxuICAgIGFkZERhdGVTZWxlY3Rpb25EaWFsb2cocHJvcGVydGllczoge3dpZHRoPzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ/OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbD86IGJvb2xlYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPzogc3RyaW5nfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6ICgoc2VsZWN0ZWREYXRlOiBudWxsIHwgRGF0ZSkgPT4gdm9pZCkpIHtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGREaWFsb2coRGlhbG9nRGF0ZVNlbGVjdGlvbkNvbXBvbmVudCxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHByb3BlcnRpZXMud2lkdGggPz8gXCI1MCVcIixcclxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBwcm9wZXJ0aWVzLm1heFdpZHRoID8/IFwiOTZ2d1wiLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBwcm9wZXJ0aWVzLmhlaWdodCA/PyBcIjUwJVwiLFxyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBwcm9wZXJ0aWVzLm1heEhlaWdodCA/PyBcIjkydndcIixcclxuICAgICAgICAgICAgICAgIG1vZGFsOiBwcm9wZXJ0aWVzLm1vZGFsID8/IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdGV4dHM6IFtwcm9wZXJ0aWVzLnRpdGxlID8/ICcnXSAgIFxyXG4gICAgICAgICAgICB9LChzZWxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soc2VsZWN0aW9uLmluZGV4ID09PSAtMSA/IG51bGwgOiAoc2VsZWN0aW9uLnZhbHVlIGFzIERhdGUpKTsgIFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCbG9jayBhbGwgdGhlIHVzZXIgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGFwcGxpY2F0aW9uIChrZXlib2FyZCwgdG91Y2gsIG1vdXNlLCAuLi4pXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2Rpc2FibGVVc2VySW50ZXJhY3Rpb24oKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudEtleWRvd25Vbmxpc3RlbiA9PT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2tleWRvd24nLCAoZXZlbnQpID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ21vdXNlZG93bicsIChldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuID09PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudFBvaW50ZXJkb3duVW5saXN0ZW4gPSB0aGlzLl9yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ3BvaW50ZXJkb3duJywgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdG9yZSB0aGUgdXNlciBpbnRlcmFjdGlvbnMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZGlzYWJsZWQgd2l0aCBfZGlzYWJsZVVzZXJJbnRlcmFjdGlvbiBtZXRob2RcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZW5hYmxlVXNlckludGVyYWN0aW9uKCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fZG9jdW1lbnRLZXlkb3duVW5saXN0ZW4gIT09IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50S2V5ZG93blVubGlzdGVuID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuICE9PSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kb2N1bWVudE1vdXNlZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX2RvY3VtZW50UG9pbnRlcmRvd25Vbmxpc3RlbiAhPT0gbnVsbCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fZG9jdW1lbnRQb2ludGVyZG93blVubGlzdGVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY3VtZW50TW91c2Vkb3duVW5saXN0ZW4gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -55,7 +55,7 @@ export class HTTPService extends HTTPManager {
55
55
  this.dialogService.addDialog(DialogErrorComponent, {
56
56
  width: '600px',
57
57
  texts: ['Error: ' + result.code, errorMsg],
58
- captions: ['Ok']
58
+ options: ['Ok']
59
59
  });
60
60
  }
61
61
  }
@@ -71,4 +71,4 @@ export class HTTPService extends HTTPManager {
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: HTTPService, decorators: [{
72
72
  type: Injectable
73
73
  }], ctorParameters: () => [{ type: i1.DialogService }] });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBRzlGOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDOzs7T0FHRzthQUNhLHdCQUFtQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUc1RDs7O09BR0c7YUFDYSwyQkFBc0IsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEI7SUFHbEUsWUFBbUIsYUFBNEI7UUFFM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHL0MsQ0FBQztJQUdEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsUUFBeUUsRUFDekUsbUJBQThJLElBQUksRUFDbEosbUJBQW1GLElBQUksRUFDdkYsVUFBZ0csRUFBRTtRQUV0RyxJQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBRTFDLElBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBRXBELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QztZQUVELElBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBQztnQkFFckUsS0FBSSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUM7b0JBRXRCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQzt3QkFFZCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUUxRCxJQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7NEJBRTdCLFFBQVEsR0FBRywyREFBMkQsQ0FBQzt5QkFDMUU7d0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQzdDOzRCQUNJLEtBQUssRUFBQyxPQUFPOzRCQUNiLEtBQUssRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzs0QkFDMUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNuQixDQUFDLENBQUM7cUJBQ1Y7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQTdFUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhUVFBNYW5hZ2VyLCBIVFRQTWFuYWdlckJhc2VSZXF1ZXN0LCBTdHJpbmdVdGlscyB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIGFwcGxpY2F0aW9uIGh0dHAgY29tbXVuaWNhdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlIGV4dGVuZHMgSFRUUE1hbmFnZXIge1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogZXhlY3V0ZSgpIG1ldGhvZCBvcHRpb24gdGhhdCB0ZWxscyB0aGUgc2VydmljZSB0byBhdm9pZCBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2Ugd2l0aCBhIG1vZGFsIGJ1c3kgc3RhdGUgd2hpbGUgdGhlIHJlcXVlc3RzIHRoYXQgYXJlXHJcbiAgICAgKiBsYXVuY2hlZCBieSB0aGUgZXhlY3V0ZSBtZXRob2QgYXJlIHJ1bm5pbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZWFkb25seSBOT19NT0RBTF9CVVNZX1NUQVRFID0gJ05PX01PREFMX0JVU1lfU1RBVEUnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIGV4ZWN1dGUoKSBtZXRob2Qgb3B0aW9uIHRoYXQgdGVsbHMgdGhlIHNlcnZpY2UgdG8gc2tpcCBzaG93aW5nIGFuIGVycm9yIGRpYWxvZyB3aGVuIGEgcmVxdWVzdCBmYWlscy4gV2Ugbm9ybWFsbHkgdXNlIHRoaXMgdG8gaGFuZGxlIHRoZVxyXG4gICAgICogZXJyb3JzIGJ5IG91cnNlbHZlcyBvciBpZiB3ZSB3YW50IHRvIGhpZGUgdGhlIGVycm9yIGRpYWxvZyBmb3IgYSBzcGVjaWZpYyByZXF1ZXN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRV9FUlJPUl9IQU5ETElORyA9ICdESVNBQkxFX0VSUk9SX0hBTkRMSU5HJztcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgc3VwZXIodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2FtZSBtZXRob2QgYXMgSFRUUE1hbmFnZXIuZXhlY3V0ZSBidXQgd2l0aCB0aGUgYWJpbGl0eSB0byBlbmFibGUgc2V2ZXJhbCBvcHRpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGlzIHNlcnZpY2U6XHJcbiAgICAgKlxyXG4gICAgICogLSBIVFRQU2VydmljZS5OT19NT0RBTF9CVVNZX1NUQVRFIFRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGxvY2tpbmcgdGhlIFVJIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHJ1bm5pbmdcclxuICAgICAqIC0gSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORyBUbyBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBzaG93aW5nIGEgZGV0YWlsZWQgZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBIVFRQTWFuYWdlci5leGVjdXRlKClcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZShyZXF1ZXN0czogc3RyaW5nfHN0cmluZ1tdfEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3R8SFRUUE1hbmFnZXJCYXNlUmVxdWVzdFtdLFxyXG4gICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrOiAoKHJlc3VsdHM6IHt1cmw6c3RyaW5nLCByZXNwb25zZTphbnksIGlzRXJyb3I6Ym9vbGVhbiwgZXJyb3JNc2c6c3RyaW5nLCBjb2RlOm51bWJlcn1bXSwgYW55RXJyb3I6Ym9vbGVhbikgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcclxuICAgICAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogbnVsbCB8ICgoY29tcGxldGVkVXJsOiBzdHJpbmcsIHRvdGFsUmVxdWVzdHM6IG51bWJlcikgPT4gdm9pZCkgPSBudWxsLFxyXG4gICAgICAgICAgICBvcHRpb25zOiAodHlwZW9mIEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEV8dHlwZW9mIEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpW10gPSBbXSl7XHJcbiAgICBcclxuICAgICAgICBpZihvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURSkgPCAwKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShyZXF1ZXN0cywgKHJlc3VsdHMsIGFueUVycm9yKSA9PiB7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEUpIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZigob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpIDwgMCkgJiYgYW55RXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IHJlc3VsdCBvZiByZXN1bHRzKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQuaXNFcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSByZXN1bHQuZXJyb3JNc2cgKyAnXFxuXFxuJyArIHJlc3VsdC5yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKFN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3JNc2cpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1zZyA9ICdVbmtub3duIGVycm9yLiBNYWtlIHN1cmUgSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUnOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGREaWFsb2coRGlhbG9nRXJyb3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6JzYwMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogWydFcnJvcjogJyArIHJlc3VsdC5jb2RlLCBlcnJvck1zZ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbnM6IFsnT2snXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7ICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmKGZpbmlzaGVkQ2FsbGJhY2sgIT09IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrKHJlc3VsdHMsIGFueUVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgfSwgcHJvZ3Jlc3NDYWxsYmFjayk7XHJcbiAgICB9XHJcbn1cclxuIl19
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi9jb250cm9sbGVyL2h0dHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUEwQixXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVuRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7O0FBRzlGOztHQUVHO0FBRUgsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDOzs7T0FHRzthQUNhLHdCQUFtQixHQUFHLHFCQUFxQixBQUF4QixDQUF5QjtJQUc1RDs7O09BR0c7YUFDYSwyQkFBc0IsR0FBRyx3QkFBd0IsQUFBM0IsQ0FBNEI7SUFHbEUsWUFBbUIsYUFBNEI7UUFFM0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRkcsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHL0MsQ0FBQztJQUdEOzs7Ozs7O09BT0c7SUFDSCxPQUFPLENBQUMsUUFBeUUsRUFDekUsbUJBQThJLElBQUksRUFDbEosbUJBQW1GLElBQUksRUFDdkYsVUFBZ0csRUFBRTtRQUV0RyxJQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBRXJELElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUN6QztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBRTFDLElBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEVBQUM7Z0JBRXBELElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM3QztZQUVELElBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBQztnQkFFckUsS0FBSSxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUM7b0JBRXRCLElBQUcsTUFBTSxDQUFDLE9BQU8sRUFBQzt3QkFFZCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUUxRCxJQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUM7NEJBRTdCLFFBQVEsR0FBRywyREFBMkQsQ0FBQzt5QkFDMUU7d0JBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQzdDOzRCQUNJLEtBQUssRUFBQyxPQUFPOzRCQUNiLEtBQUssRUFBRSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQzs0QkFDMUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNsQixDQUFDLENBQUM7cUJBQ1Y7aUJBQ0o7YUFDSjtZQUVELElBQUcsZ0JBQWdCLEtBQUssSUFBSSxFQUFDO2dCQUV6QixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFFSixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQixDQUFDOzhHQTdFUSxXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEhUVFBNYW5hZ2VyLCBIVFRQTWFuYWdlckJhc2VSZXF1ZXN0LCBTdHJpbmdVdGlscyB9IGZyb20gJ3R1cmJvY29tbW9ucy10cyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhbG9nRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBNYW5hZ2VzIGFwcGxpY2F0aW9uIGh0dHAgY29tbXVuaWNhdGlvbnNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEhUVFBTZXJ2aWNlIGV4dGVuZHMgSFRUUE1hbmFnZXIge1xyXG4gICAgXHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogZXhlY3V0ZSgpIG1ldGhvZCBvcHRpb24gdGhhdCB0ZWxscyB0aGUgc2VydmljZSB0byBhdm9pZCBibG9ja2luZyB0aGUgdXNlciBpbnRlcmZhY2Ugd2l0aCBhIG1vZGFsIGJ1c3kgc3RhdGUgd2hpbGUgdGhlIHJlcXVlc3RzIHRoYXQgYXJlXHJcbiAgICAgKiBsYXVuY2hlZCBieSB0aGUgZXhlY3V0ZSBtZXRob2QgYXJlIHJ1bm5pbmcuXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyByZWFkb25seSBOT19NT0RBTF9CVVNZX1NUQVRFID0gJ05PX01PREFMX0JVU1lfU1RBVEUnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIGV4ZWN1dGUoKSBtZXRob2Qgb3B0aW9uIHRoYXQgdGVsbHMgdGhlIHNlcnZpY2UgdG8gc2tpcCBzaG93aW5nIGFuIGVycm9yIGRpYWxvZyB3aGVuIGEgcmVxdWVzdCBmYWlscy4gV2Ugbm9ybWFsbHkgdXNlIHRoaXMgdG8gaGFuZGxlIHRoZVxyXG4gICAgICogZXJyb3JzIGJ5IG91cnNlbHZlcyBvciBpZiB3ZSB3YW50IHRvIGhpZGUgdGhlIGVycm9yIGRpYWxvZyBmb3IgYSBzcGVjaWZpYyByZXF1ZXN0LlxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRV9FUlJPUl9IQU5ETElORyA9ICdESVNBQkxFX0VSUk9SX0hBTkRMSU5HJztcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgc3VwZXIodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2FtZSBtZXRob2QgYXMgSFRUUE1hbmFnZXIuZXhlY3V0ZSBidXQgd2l0aCB0aGUgYWJpbGl0eSB0byBlbmFibGUgc2V2ZXJhbCBvcHRpb25zIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGlzIHNlcnZpY2U6XHJcbiAgICAgKlxyXG4gICAgICogLSBIVFRQU2VydmljZS5OT19NT0RBTF9CVVNZX1NUQVRFIFRvIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIGxvY2tpbmcgdGhlIFVJIHdoaWxlIHRoZSByZXF1ZXN0IGlzIHJ1bm5pbmdcclxuICAgICAqIC0gSFRUUFNlcnZpY2UuRElTQUJMRV9FUlJPUl9IQU5ETElORyBUbyBwcmV2ZW50IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBzaG93aW5nIGEgZGV0YWlsZWQgZXJyb3IgZGlhbG9nIHdoZW4gYSByZXF1ZXN0IGZhaWxzXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBIVFRQTWFuYWdlci5leGVjdXRlKClcclxuICAgICAqL1xyXG4gICAgZXhlY3V0ZShyZXF1ZXN0czogc3RyaW5nfHN0cmluZ1tdfEhUVFBNYW5hZ2VyQmFzZVJlcXVlc3R8SFRUUE1hbmFnZXJCYXNlUmVxdWVzdFtdLFxyXG4gICAgICAgICAgICBmaW5pc2hlZENhbGxiYWNrOiAoKHJlc3VsdHM6IHt1cmw6c3RyaW5nLCByZXNwb25zZTphbnksIGlzRXJyb3I6Ym9vbGVhbiwgZXJyb3JNc2c6c3RyaW5nLCBjb2RlOm51bWJlcn1bXSwgYW55RXJyb3I6Ym9vbGVhbikgPT4gdm9pZCkgfCBudWxsID0gbnVsbCxcclxuICAgICAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjazogbnVsbCB8ICgoY29tcGxldGVkVXJsOiBzdHJpbmcsIHRvdGFsUmVxdWVzdHM6IG51bWJlcikgPT4gdm9pZCkgPSBudWxsLFxyXG4gICAgICAgICAgICBvcHRpb25zOiAodHlwZW9mIEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEV8dHlwZW9mIEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpW10gPSBbXSl7XHJcbiAgICBcclxuICAgICAgICBpZihvcHRpb25zLmluZGV4T2YoSFRUUFNlcnZpY2UuTk9fTU9EQUxfQlVTWV9TVEFURSkgPCAwKXtcclxuICAgICAgICAgICBcclxuICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuYWRkTW9kYWxCdXN5U3RhdGUoKTsgXHJcbiAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShyZXF1ZXN0cywgKHJlc3VsdHMsIGFueUVycm9yKSA9PiB7IFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLk5PX01PREFMX0JVU1lfU1RBVEUpIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5yZW1vdmVNb2RhbEJ1c3lTdGF0ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZigob3B0aW9ucy5pbmRleE9mKEhUVFBTZXJ2aWNlLkRJU0FCTEVfRVJST1JfSEFORExJTkcpIDwgMCkgJiYgYW55RXJyb3Ipe1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBmb3IobGV0IHJlc3VsdCBvZiByZXN1bHRzKXtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQuaXNFcnJvcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JNc2cgPSByZXN1bHQuZXJyb3JNc2cgKyAnXFxuXFxuJyArIHJlc3VsdC5yZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKFN0cmluZ1V0aWxzLmlzRW1wdHkoZXJyb3JNc2cpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1zZyA9ICdVbmtub3duIGVycm9yLiBNYWtlIHN1cmUgSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBhdmFpbGFibGUnOyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5hZGREaWFsb2coRGlhbG9nRXJyb3JDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6JzYwMHB4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0czogWydFcnJvcjogJyArIHJlc3VsdC5jb2RlLCBlcnJvck1zZ10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogWydPayddXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYoZmluaXNoZWRDYWxsYmFjayAhPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2socmVzdWx0cywgYW55RXJyb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICB9LCBwcm9ncmVzc0NhbGxiYWNrKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -10,5 +10,20 @@
10
10
  * This is the base class for all the dialog components that can be loaded by the dialog service class
11
11
  */
12
12
  export class DialogBaseComponent {
13
+ /**
14
+ * Method to be called by the dialogs that extend this base component when they want to close themselves.
15
+ * It will perform the close of that dialog and also send an object to the addDialog() callback with the index and value
16
+ * that the user may have selected.
17
+ *
18
+ * @param dialogRef The reference to the dialogRef object that is available at the extended dialog component. It is
19
+ * required to perform the closing operation
20
+ * @param index The numeric index of the user option selection. It will be specific for each dialog and it's different available options
21
+ * @param value Any value that may be provided to the callback regarding the user selected option.
22
+ *
23
+ * @return void
24
+ */
25
+ closeDialog(dialogRef, index, value = null) {
26
+ dialogRef.close({ index: index, value: value });
27
+ }
13
28
  }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWJhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFHSDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0NBRXhDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuXHJcbi8qKlxyXG4gKiBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgdGhlIGRpYWxvZyBjb21wb25lbnRzIHRoYXQgY2FuIGJlIGxvYWRlZCBieSB0aGUgZGlhbG9nIHNlcnZpY2UgY2xhc3NcclxuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFsb2dCYXNlQ29tcG9uZW50IHtcclxuXHJcbn1cclxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWJhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFNSDs7R0FFRztBQUNILE1BQU0sT0FBZ0IsbUJBQW1CO0lBR3JDOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsV0FBVyxDQUFDLFNBQTRDLEVBQUUsS0FBWSxFQUFFLFFBQVksSUFBSTtRQUVwRixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5cclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcblxyXG4vKipcclxuICogVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsIHRoZSBkaWFsb2cgY29tcG9uZW50cyB0aGF0IGNhbiBiZSBsb2FkZWQgYnkgdGhlIGRpYWxvZyBzZXJ2aWNlIGNsYXNzXHJcbiAqL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGlhbG9nQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0byBiZSBjYWxsZWQgYnkgdGhlIGRpYWxvZ3MgdGhhdCBleHRlbmQgdGhpcyBiYXNlIGNvbXBvbmVudCB3aGVuIHRoZXkgd2FudCB0byBjbG9zZSB0aGVtc2VsdmVzLlxyXG4gICAgICogSXQgd2lsbCBwZXJmb3JtIHRoZSBjbG9zZSBvZiB0aGF0IGRpYWxvZyBhbmQgYWxzbyBzZW5kIGFuIG9iamVjdCB0byB0aGUgYWRkRGlhbG9nKCkgY2FsbGJhY2sgd2l0aCB0aGUgaW5kZXggYW5kIHZhbHVlXHJcbiAgICAgKiB0aGF0IHRoZSB1c2VyIG1heSBoYXZlIHNlbGVjdGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkaWFsb2dSZWYgVGhlIHJlZmVyZW5jZSB0byB0aGUgZGlhbG9nUmVmIG9iamVjdCB0aGF0IGlzIGF2YWlsYWJsZSBhdCB0aGUgZXh0ZW5kZWQgZGlhbG9nIGNvbXBvbmVudC4gSXQgaXMgXHJcbiAgICAgKiAgICAgICAgcmVxdWlyZWQgdG8gcGVyZm9ybSB0aGUgY2xvc2luZyBvcGVyYXRpb25cclxuICAgICAqIEBwYXJhbSBpbmRleCBUaGUgbnVtZXJpYyBpbmRleCBvZiB0aGUgdXNlciBvcHRpb24gc2VsZWN0aW9uLiBJdCB3aWxsIGJlIHNwZWNpZmljIGZvciBlYWNoIGRpYWxvZyBhbmQgaXQncyBkaWZmZXJlbnQgYXZhaWxhYmxlIG9wdGlvbnNcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBBbnkgdmFsdWUgdGhhdCBtYXkgYmUgcHJvdmlkZWQgdG8gdGhlIGNhbGxiYWNrIHJlZ2FyZGluZyB0aGUgdXNlciBzZWxlY3RlZCBvcHRpb24uXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiB2b2lkXHJcbiAgICAgKi9cclxuICAgIGNsb3NlRGlhbG9nKGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ0Jhc2VDb21wb25lbnQ+LCBpbmRleDpudW1iZXIsIHZhbHVlOmFueSA9IG51bGwpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIGRpYWxvZ1JlZi5jbG9zZSh7aW5kZXg6IGluZGV4LCB2YWx1ZTogdmFsdWV9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -8,39 +8,27 @@
8
8
  */
9
9
  import { Component, Inject } from '@angular/core';
10
10
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
- import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
11
+ import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/material/dialog";
14
14
  import * as i2 from "@angular/material/datepicker";
15
15
  /**
16
16
  * A dialog component with a calendar that allows us to select a single date value
17
17
  */
18
- export class DialogDateSelectionComponent extends DialogOptionsBaseComponent {
18
+ export class DialogDateSelectionComponent extends DialogBaseComponent {
19
19
  constructor(dialogRef, data) {
20
20
  super();
21
21
  this.dialogRef = dialogRef;
22
22
  this.data = data;
23
- // if (data.texts.length < 1) {
24
- //
25
- // throw new Error('DialogErrorComponent expects 2 texts: The title and optionally a description');
26
- // }
27
- //
28
- // if (data.options.length !== 1) {
29
- //
30
- // throw new Error('DialogErrorComponent expects only one option');
31
- // }
32
- }
33
- onDateSelected(event) {
34
- alert(`Selected: ${event}`);
35
23
  }
36
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogDateSelectionComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
37
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogDateSelectionComponent, selector: "tg-dialog-date-selection", usesInheritance: true, ngImport: i0, template: "<h2>{{data.texts[0]}}</h2>\r\n\r\n<mat-calendar #calendar\r\n (selectedChange)=\"onDateSelected($event)\">\r\n</mat-calendar>", styles: [":host{position:relative;min-height:300px}h1{margin-top:0;margin-bottom:25px;width:82%}\n"], dependencies: [{ kind: "component", type: i2.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }] }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogDateSelectionComponent, selector: "tg-dialog-date-selection", usesInheritance: true, ngImport: i0, template: "<h2>{{data.texts[0]}}</h2>\r\n\r\n<mat-calendar #calendar\r\n (selectedChange)=\"closeDialog(dialogRef, 0, $event)\">\r\n</mat-calendar>", styles: [":host{position:relative;min-height:300px}h1{margin-top:0;margin-bottom:25px;width:82%}\n"], dependencies: [{ kind: "component", type: i2.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }] }); }
38
26
  }
39
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogDateSelectionComponent, decorators: [{
40
28
  type: Component,
41
- args: [{ selector: 'tg-dialog-date-selection', template: "<h2>{{data.texts[0]}}</h2>\r\n\r\n<mat-calendar #calendar\r\n (selectedChange)=\"onDateSelected($event)\">\r\n</mat-calendar>", styles: [":host{position:relative;min-height:300px}h1{margin-top:0;margin-bottom:25px;width:82%}\n"] }]
29
+ args: [{ selector: 'tg-dialog-date-selection', template: "<h2>{{data.texts[0]}}</h2>\r\n\r\n<mat-calendar #calendar\r\n (selectedChange)=\"closeDialog(dialogRef, 0, $event)\">\r\n</mat-calendar>", styles: [":host{position:relative;min-height:300px}h1{margin-top:0;margin-bottom:25px;width:82%}\n"] }]
42
30
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
43
31
  type: Inject,
44
32
  args: [MAT_DIALOG_DATA]
45
33
  }] }] });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGUtc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtc2VsZWN0aW9uL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7OztBQUVsRzs7R0FFRztBQVFILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSwwQkFBMEI7SUFNeEUsWUFBbUIsU0FBbUQsRUFDMUIsSUFBUztRQUVqRCxLQUFLLEVBQUUsQ0FBQztRQUhPLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQUs7UUFJekQsc0NBQXNDO1FBQ3RDLEVBQUU7UUFDRiw4R0FBOEc7UUFDOUcsV0FBVztRQUNYLEVBQUU7UUFDRiwwQ0FBMEM7UUFDMUMsRUFBRTtRQUNGLDhFQUE4RTtRQUM5RSxXQUFXO0lBQ1AsQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFTO1FBQ3BCLEtBQUssQ0FBQyxhQUFhLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQzs4R0F6QlEsNEJBQTRCLDhDQU9qQixlQUFlO2tHQVAxQiw0QkFBNEIsdUZDdkJ6QyxrSUFJZTs7MkZEbUJGLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSwwQkFBMEI7OzBCQWFyQixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHVyYm9HVUkgaXMgQSBsaWJyYXJ5IHRoYXQgaGVscHMgd2l0aCB0aGUgbW9zdCBjb21tb24gYW5kIGdlbmVyaWMgVUkgZWxlbWVudHMgYW5kIGZ1bmN0aW9uYWxpdGllc1xyXG4gKlxyXG4gKiBXZWJzaXRlIDogLT4gaHR0cDovL3d3dy50dXJib2d1aS5vcmdcclxuICogTGljZW5zZSA6IC0+IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogTGljZW5zZSBVcmwgOiAtPiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICogQ29weVJpZ2h0IDogLT4gQ29weXJpZ2h0IDIwMTggRWRlcnRvbmUgQWR2YW5kZWQgU29sdXRpb25zLiBodHRwczovL3d3dy5lZGVydG9uZS5jb21cclxuICovXHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nLW9wdGlvbnMtYmFzZS9kaWFsb2ctb3B0aW9ucy1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdpdGggYSBjYWxlbmRhciB0aGF0IGFsbG93cyB1cyB0byBzZWxlY3QgYSBzaW5nbGUgZGF0ZSB2YWx1ZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Zy1kaWFsb2ctZGF0ZS1zZWxlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gICAgXHJcbiAgICBzZWxlY3RlZERhdGU6RGF0ZTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PixcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBcclxuLy8gICAgICAgIGlmIChkYXRhLnRleHRzLmxlbmd0aCA8IDEpIHtcclxuLy9cclxuLy8gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ0Vycm9yQ29tcG9uZW50IGV4cGVjdHMgMiB0ZXh0czogVGhlIHRpdGxlIGFuZCBvcHRpb25hbGx5IGEgZGVzY3JpcHRpb24nKTtcclxuLy8gICAgICAgIH1cclxuLy9cclxuLy8gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoICE9PSAxKSB7XHJcbi8vXHJcbi8vICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWFsb2dFcnJvckNvbXBvbmVudCBleHBlY3RzIG9ubHkgb25lIG9wdGlvbicpO1xyXG4vLyAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuICAgIG9uRGF0ZVNlbGVjdGVkKGV2ZW50OmFueSl7XHJcbiAgICAgICAgYWxlcnQoYFNlbGVjdGVkOiAke2V2ZW50fWApO1xyXG4gICAgfVxyXG59XHJcbiIsIjxoMj57e2RhdGEudGV4dHNbMF19fTwvaDI+XHJcblxyXG48bWF0LWNhbGVuZGFyICNjYWxlbmRhclxyXG4gICAgKHNlbGVjdGVkQ2hhbmdlKT1cIm9uRGF0ZVNlbGVjdGVkKCRldmVudClcIj5cclxuPC9tYXQtY2FsZW5kYXI+Il19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWRhdGUtc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWRhdGUtc2VsZWN0aW9uL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQUUzRTs7R0FFRztBQVFILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxtQkFBbUI7SUFNakUsWUFBbUIsU0FBNEMsRUFDbkIsSUFBUztRQUVqRCxLQUFLLEVBQUUsQ0FBQztRQUhPLGNBQVMsR0FBVCxTQUFTLENBQW1DO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQUs7SUFHckQsQ0FBQzs4R0FWUSw0QkFBNEIsOENBT2pCLGVBQWU7a0dBUDFCLDRCQUE0Qix1RkN2QnpDLDZJQUllOzsyRkRtQkYsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDBCQUEwQjs7MEJBYXJCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBUdXJib0dVSSBpcyBBIGxpYnJhcnkgdGhhdCBoZWxwcyB3aXRoIHRoZSBtb3N0IGNvbW1vbiBhbmQgZ2VuZXJpYyBVSSBlbGVtZW50cyBhbmQgZnVuY3Rpb25hbGl0aWVzXHJcbiAqXHJcbiAqIFdlYnNpdGUgOiAtPiBodHRwOi8vd3d3LnR1cmJvZ3VpLm9yZ1xyXG4gKiBMaWNlbnNlIDogLT4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBMaWNlbnNlIFVybCA6IC0+IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKiBDb3B5UmlnaHQgOiAtPiBDb3B5cmlnaHQgMjAxOCBFZGVydG9uZSBBZHZhbmRlZCBTb2x1dGlvbnMuIGh0dHBzOi8vd3d3LmVkZXJ0b25lLmNvbVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgRGlhbG9nQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1iYXNlL2RpYWxvZy1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdpdGggYSBjYWxlbmRhciB0aGF0IGFsbG93cyB1cyB0byBzZWxlY3QgYSBzaW5nbGUgZGF0ZSB2YWx1ZVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Zy1kaWFsb2ctZGF0ZS1zZWxlY3Rpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctZGF0ZS1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1kYXRlLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ0RhdGVTZWxlY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBEaWFsb2dCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgICBcclxuICAgIHNlbGVjdGVkRGF0ZTpEYXRlO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGlhbG9nQmFzZUNvbXBvbmVudD4sXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGgyPnt7ZGF0YS50ZXh0c1swXX19PC9oMj5cclxuXHJcbjxtYXQtY2FsZW5kYXIgI2NhbGVuZGFyXHJcbiAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiY2xvc2VEaWFsb2coZGlhbG9nUmVmLCAwLCAkZXZlbnQpXCI+XHJcbjwvbWF0LWNhbGVuZGFyPiJdfQ==
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import { Component, Inject } from '@angular/core';
10
10
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
11
- import { DialogOptionsBaseComponent } from '../dialog-options-base/dialog-options-base.component';
11
+ import { DialogBaseComponent } from '../dialog-base/dialog-base.component';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@angular/material/dialog";
14
14
  import * as i2 from "@angular/material/button";
@@ -16,7 +16,7 @@ import * as i3 from "@angular/common";
16
16
  /**
17
17
  * A dialog component with a single option button, to be used for error notifications
18
18
  */
19
- export class DialogErrorComponent extends DialogOptionsBaseComponent {
19
+ export class DialogErrorComponent extends DialogBaseComponent {
20
20
  constructor(dialogRef, data) {
21
21
  super();
22
22
  this.dialogRef = dialogRef;
@@ -29,13 +29,13 @@ export class DialogErrorComponent extends DialogOptionsBaseComponent {
29
29
  }
30
30
  }
31
31
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogErrorComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogErrorComponent, selector: "tg-dialog-error", usesInheritance: true, ngImport: i0, template: "<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{position:relative;min-height:300px}.titleAndIconContainer{display:flex;flex-direction:row;align-items:center}h3{margin-top:0;margin-bottom:25px;width:82%}svg{width:18%;height:auto}p{margin-bottom:52px}button{float:right;width:50%;min-width:50px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: DialogErrorComponent, selector: "tg-dialog-error", usesInheritance: true, ngImport: i0, template: "<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"closeDialog(dialogRef, 0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{position:relative;min-height:300px}.titleAndIconContainer{display:flex;flex-direction:row;align-items:center}h3{margin-top:0;margin-bottom:25px;width:82%}svg{width:18%;height:auto}p{margin-bottom:52px}button{float:right;width:50%;min-width:50px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
33
33
  }
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogErrorComponent, decorators: [{
35
35
  type: Component,
36
- args: [{ selector: 'tg-dialog-error', template: "<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"dialogRef.close(0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{position:relative;min-height:300px}.titleAndIconContainer{display:flex;flex-direction:row;align-items:center}h3{margin-top:0;margin-bottom:25px;width:82%}svg{width:18%;height:auto}p{margin-bottom:52px}button{float:right;width:50%;min-width:50px}\n"] }]
36
+ args: [{ selector: 'tg-dialog-error', template: "<div class=\"titleAndIconContainer\">\r\n <h3>\r\n {{data.texts[0]}}\r\n </h3>\r\n \r\n <!-- error icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\"/>\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" fill=\"#ff0000\" />\r\n </svg>\r\n \r\n</div>\r\n\r\n<p *ngIf=\"data.texts.length > 1\">\r\n {{data.texts[1]}}\r\n</p>\r\n\r\n<button mat-raised-button color=\"warn\"\r\n (click)=\"closeDialog(dialogRef, 0)\">\r\n \r\n {{data.options[0]}}\r\n \r\n</button>", styles: [":host{position:relative;min-height:300px}.titleAndIconContainer{display:flex;flex-direction:row;align-items:center}h3{margin-top:0;margin-bottom:25px;width:82%}svg{width:18%;height:auto}p{margin-bottom:52px}button{float:right;width:50%;min-width:50px}\n"] }]
37
37
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
38
38
  type: Inject,
39
39
  args: [MAT_DIALOG_DATA]
40
40
  }] }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1lcnJvci9kaWFsb2ctZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7QUFHbEc7O0dBRUc7QUFRSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsMEJBQTBCO0lBRWhFLFlBQW1CLFNBQW1ELEVBQWtDLElBQVM7UUFFN0csS0FBSyxFQUFFLENBQUM7UUFGTyxjQUFTLEdBQVQsU0FBUyxDQUEwQztRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBSTdHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXZCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNuRztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTNCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztTQUNuRTtJQUNMLENBQUM7OEdBZlEsb0JBQW9CLDhDQUVtRCxlQUFlO2tHQUZ0RixvQkFBb0IsOEVDeEJqQywrcEJBc0JTOzsyRkRFSSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzswQkFRZ0QsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZy1vcHRpb25zLWJhc2UvZGlhbG9nLW9wdGlvbnMtYmFzZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBIGRpYWxvZyBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBvcHRpb24gYnV0dG9uLCB0byBiZSB1c2VkIGZvciBlcnJvciBub3RpZmljYXRpb25zXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RnLWRpYWxvZy1lcnJvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RpYWxvZy1lcnJvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlhbG9nLWVycm9yLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nRXJyb3JDb21wb25lbnQgZXh0ZW5kcyBEaWFsb2dPcHRpb25zQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ09wdGlvbnNCYXNlQ29tcG9uZW50PiwgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoZGF0YS50ZXh0cy5sZW5ndGggPCAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ0Vycm9yQ29tcG9uZW50IGV4cGVjdHMgMiB0ZXh0czogVGhlIHRpdGxlIGFuZCBvcHRpb25hbGx5IGEgZGVzY3JpcHRpb24nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkYXRhLm9wdGlvbnMubGVuZ3RoICE9PSAxKSB7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RpYWxvZ0Vycm9yQ29tcG9uZW50IGV4cGVjdHMgb25seSBvbmUgb3B0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0aXRsZUFuZEljb25Db250YWluZXJcIj5cclxuICAgIDxoMz5cclxuICAgICAgICB7e2RhdGEudGV4dHNbMF19fVxyXG4gICAgPC9oMz5cclxuICAgIFxyXG4gICAgPCEtLSBlcnJvciBpY29uIC0tPlxyXG4gICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNFwiPlxyXG4gICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIi8+XHJcbiAgICAgICAgPHBhdGggZD1cIk0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2elwiIGZpbGw9XCIjZmYwMDAwXCIgLz5cclxuICAgIDwvc3ZnPlxyXG4gICAgXHJcbjwvZGl2PlxyXG5cclxuPHAgKm5nSWY9XCJkYXRhLnRleHRzLmxlbmd0aCA+IDFcIj5cclxuICAgIHt7ZGF0YS50ZXh0c1sxXX19XHJcbjwvcD5cclxuXHJcbjxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoMClcIj5cclxuICAgIFxyXG4gICAge3tkYXRhLm9wdGlvbnNbMF19fVxyXG4gICAgXHJcbjwvYnV0dG9uPiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1cmJvZ3VpLWFuZ3VsYXIvc3JjL21haW4vdmlldy9jb21wb25lbnRzL2RpYWxvZy1lcnJvci9kaWFsb2ctZXJyb3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVyYm9ndWktYW5ndWxhci9zcmMvbWFpbi92aWV3L2NvbXBvbmVudHMvZGlhbG9nLWVycm9yL2RpYWxvZy1lcnJvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7QUFHM0U7O0dBRUc7QUFRSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBRXpELFlBQW1CLFNBQTRDLEVBQWtDLElBQVM7UUFFdEcsS0FBSyxFQUFFLENBQUM7UUFGTyxjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBSXRHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBRXZCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQztTQUNuRztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTNCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztTQUNuRTtJQUNMLENBQUM7OEdBZlEsb0JBQW9CLDhDQUU0QyxlQUFlO2tHQUYvRSxvQkFBb0IsOEVDeEJqQyxzcUJBc0JTOzsyRkRFSSxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzswQkFReUMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFR1cmJvR1VJIGlzIEEgbGlicmFyeSB0aGF0IGhlbHBzIHdpdGggdGhlIG1vc3QgY29tbW9uIGFuZCBnZW5lcmljIFVJIGVsZW1lbnRzIGFuZCBmdW5jdGlvbmFsaXRpZXNcclxuICpcclxuICogV2Vic2l0ZSA6IC0+IGh0dHA6Ly93d3cudHVyYm9ndWkub3JnXHJcbiAqIExpY2Vuc2UgOiAtPiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXHJcbiAqIExpY2Vuc2UgVXJsIDogLT4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqIENvcHlSaWdodCA6IC0+IENvcHlyaWdodCAyMDE4IEVkZXJ0b25lIEFkdmFuZGVkIFNvbHV0aW9ucy4gaHR0cHM6Ly93d3cuZWRlcnRvbmUuY29tXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBEaWFsb2dCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZGlhbG9nLWJhc2UvZGlhbG9nLWJhc2UuY29tcG9uZW50JztcclxuXHJcblxyXG4vKipcclxuICogQSBkaWFsb2cgY29tcG9uZW50IHdpdGggYSBzaW5nbGUgb3B0aW9uIGJ1dHRvbiwgdG8gYmUgdXNlZCBmb3IgZXJyb3Igbm90aWZpY2F0aW9uc1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Zy1kaWFsb2ctZXJyb3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctZXJyb3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RpYWxvZy1lcnJvci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ0Vycm9yQ29tcG9uZW50IGV4dGVuZHMgRGlhbG9nQmFzZUNvbXBvbmVudCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ0Jhc2VDb21wb25lbnQ+LCBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSkge1xyXG5cclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChkYXRhLnRleHRzLmxlbmd0aCA8IDEpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nRXJyb3JDb21wb25lbnQgZXhwZWN0cyAyIHRleHRzOiBUaGUgdGl0bGUgYW5kIG9wdGlvbmFsbHkgYSBkZXNjcmlwdGlvbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGEub3B0aW9ucy5sZW5ndGggIT09IDEpIHtcclxuXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRGlhbG9nRXJyb3JDb21wb25lbnQgZXhwZWN0cyBvbmx5IG9uZSBvcHRpb24nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRpdGxlQW5kSWNvbkNvbnRhaW5lclwiPlxyXG4gICAgPGgzPlxyXG4gICAgICAgIHt7ZGF0YS50ZXh0c1swXX19XHJcbiAgICA8L2gzPlxyXG4gICAgXHJcbiAgICA8IS0tIGVycm9yIGljb24gLS0+XHJcbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0XCI+XHJcbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiLz5cclxuICAgICAgICA8cGF0aCBkPVwiTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTVoLTJ2LTJoMnYyem0wLTRoLTJWN2gydjZ6XCIgZmlsbD1cIiNmZjAwMDBcIiAvPlxyXG4gICAgPC9zdmc+XHJcbiAgICBcclxuPC9kaXY+XHJcblxyXG48cCAqbmdJZj1cImRhdGEudGV4dHMubGVuZ3RoID4gMVwiPlxyXG4gICAge3tkYXRhLnRleHRzWzFdfX1cclxuPC9wPlxyXG5cclxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIlxyXG4gICAgKGNsaWNrKT1cImNsb3NlRGlhbG9nKGRpYWxvZ1JlZiwgMClcIj5cclxuICAgIFxyXG4gICAge3tkYXRhLm9wdGlvbnNbMF19fVxyXG4gICAgXHJcbjwvYnV0dG9uPiJdfQ==