ngx-material-entity 16.0.3 → 16.0.5

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 (76) hide show
  1. package/classes/base.builder.d.ts +6 -1
  2. package/components/confirm-dialog/confirm-dialog-data.builder.d.ts +2 -1
  3. package/components/confirm-dialog/confirm-dialog.component.d.ts +3 -1
  4. package/components/edit-page/edit-page.component.d.ts +3 -1
  5. package/components/edit-page/page-edit-data.builder.d.ts +2 -1
  6. package/components/input/array/array-date-input/array-date-input.component.d.ts +7 -1
  7. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +6 -1
  8. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +6 -1
  9. package/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.d.ts +4 -0
  10. package/components/input/date/date-range-input/date-range-input.component.d.ts +3 -0
  11. package/components/input/date/date-time-input/date-time-input.component.d.ts +3 -0
  12. package/components/input/input.component.d.ts +9 -2
  13. package/components/input/input.module.d.ts +3 -1
  14. package/components/input/relations/references-many-input/references-many-input.component.d.ts +3 -1
  15. package/components/table/create-dialog/create-dialog-data.builder.d.ts +2 -1
  16. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +2 -1
  17. package/components/table/create-dialog/create-entity-dialog.component.d.ts +3 -1
  18. package/components/table/edit-dialog/edit-data.builder.d.ts +5 -3
  19. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +3 -1
  20. package/components/table/edit-dialog/edit-entity.builder.d.ts +2 -1
  21. package/components/table/table-data.builder.d.ts +9 -5
  22. package/components/table/table.component.d.ts +3 -1
  23. package/decorators/array/array-decorator-internal.data.d.ts +8 -7
  24. package/decorators/boolean/boolean-decorator-internal.data.d.ts +2 -1
  25. package/decorators/date/date-decorator-internal.data.d.ts +3 -2
  26. package/decorators/has-many/has-many-decorator-internal.data.d.ts +2 -1
  27. package/decorators/references-many/references-many-decorator-internal.data.d.ts +2 -1
  28. package/default-global-configuration-values.d.ts +6 -0
  29. package/directives/tooltip.directive.d.ts +0 -1
  30. package/esm2022/classes/base.builder.mjs +9 -3
  31. package/esm2022/components/confirm-dialog/confirm-dialog-data.builder.mjs +7 -5
  32. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +13 -7
  33. package/esm2022/components/edit-page/edit-page.component.mjs +22 -16
  34. package/esm2022/components/edit-page/page-edit-data.builder.mjs +9 -9
  35. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +33 -13
  36. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +29 -12
  37. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +32 -15
  38. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +18 -4
  39. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +16 -4
  40. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +17 -5
  41. package/esm2022/components/input/input.component.mjs +89 -60
  42. package/esm2022/components/input/input.module.mjs +11 -4
  43. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +15 -5
  44. package/esm2022/components/table/create-dialog/create-dialog-data.builder.mjs +10 -8
  45. package/esm2022/components/table/create-dialog/create-entity-dialog-data.builder.mjs +5 -4
  46. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +15 -9
  47. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +35 -21
  48. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +21 -13
  49. package/esm2022/components/table/edit-dialog/edit-entity.builder.mjs +4 -4
  50. package/esm2022/components/table/table-data.builder.mjs +54 -30
  51. package/esm2022/components/table/table.component.mjs +18 -12
  52. package/esm2022/decorators/array/array-decorator-internal.data.mjs +42 -43
  53. package/esm2022/decorators/array/array.decorator.mjs +8 -7
  54. package/esm2022/decorators/base/property-decorator-internal.data.mjs +4 -4
  55. package/esm2022/decorators/boolean/boolean-decorator-internal.data.mjs +5 -4
  56. package/esm2022/decorators/boolean/boolean.decorator.mjs +3 -2
  57. package/esm2022/decorators/date/date-decorator-internal.data.mjs +7 -6
  58. package/esm2022/decorators/date/date.decorator.mjs +4 -3
  59. package/esm2022/decorators/has-many/has-many-decorator-internal.data.mjs +4 -4
  60. package/esm2022/decorators/has-many/has-many.decorator.mjs +3 -2
  61. package/esm2022/decorators/references-many/references-many-decorator-internal.data.mjs +7 -6
  62. package/esm2022/decorators/references-many/references-many.decorator.mjs +3 -2
  63. package/esm2022/default-global-configuration-values.mjs +89 -0
  64. package/esm2022/directives/tooltip.directive.mjs +5 -11
  65. package/esm2022/functions/get-config-value.function.mjs +15 -0
  66. package/esm2022/functions/get-validation-errors-tooltip-content.function.ts.mjs +4 -8
  67. package/esm2022/global-configuration-values.mjs +10 -0
  68. package/esm2022/public-api.mjs +3 -1
  69. package/esm2022/utilities/entity.utilities.mjs +1 -23
  70. package/fesm2022/ngx-material-entity.mjs +1380 -1142
  71. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  72. package/functions/get-config-value.function.d.ts +8 -0
  73. package/global-configuration-values.d.ts +216 -0
  74. package/package.json +1 -1
  75. package/public-api.d.ts +1 -0
  76. package/utilities/entity.utilities.d.ts +0 -7
@@ -1,3 +1,4 @@
1
+ import { NgxGlobalDefaultValues } from '../../global-configuration-values';
1
2
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
2
3
  import { CheckboxBooleanDecoratorConfig, DropdownBooleanDecoratorConfig, ToggleBooleanDecoratorConfig } from './boolean-decorator.data';
3
4
  /**
@@ -7,7 +8,7 @@ export declare class DropdownBooleanDecoratorConfigInternal extends PropertyDeco
7
8
  displayStyle: 'dropdown';
8
9
  dropdownTrue: string;
9
10
  dropdownFalse: string;
10
- constructor(data: DropdownBooleanDecoratorConfig);
11
+ constructor(data: DropdownBooleanDecoratorConfig, globalConfig: NgxGlobalDefaultValues);
11
12
  }
12
13
  /**
13
14
  * The internal CheckboxBooleanDecoratorConfig. Sets default values.
@@ -1,5 +1,6 @@
1
1
  import { Time } from '@angular/common';
2
2
  import { DateFilterFn } from '@angular/material/datepicker';
3
+ import { NgxGlobalDefaultValues } from '../../global-configuration-values';
3
4
  import { DropdownValue } from '../base/dropdown-value.interface';
4
5
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
5
6
  import { DateRange, DateRangeDateDecoratorConfig, DateTimeDateDecoratorConfig, DefaultDateDecoratorConfig } from './date-decorator.data';
@@ -25,7 +26,7 @@ export declare class DateRangeDateDecoratorConfigInternal extends PropertyDecora
25
26
  filter?: DateFilterFn<Date>;
26
27
  placeholderStart: string;
27
28
  placeholderEnd: string;
28
- constructor(data: DateRangeDateDecoratorConfig);
29
+ constructor(data: DateRangeDateDecoratorConfig, globalConfig: NgxGlobalDefaultValues);
29
30
  }
30
31
  /**
31
32
  * The internal DateTimeDateDecoratorConfig. Sets default values.
@@ -40,5 +41,5 @@ export declare class DateTimeDateDecoratorConfigInternal extends PropertyDecorat
40
41
  minTime?: (date?: Date) => Time;
41
42
  maxTime?: (date?: Date) => Time;
42
43
  filterTime?: ((time: Time) => boolean) | (() => boolean);
43
- constructor(data: DateTimeDateDecoratorConfig);
44
+ constructor(data: DateTimeDateDecoratorConfig, globalConfig: NgxGlobalDefaultValues);
44
45
  }
@@ -1,6 +1,7 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { BaseEntityType } from '../../classes/entity.model';
3
3
  import { TableDataInternal } from '../../components/table/table-data.builder';
4
+ import { NgxGlobalDefaultValues } from '../../global-configuration-values';
4
5
  import { EntityService } from '../../services/entity.service';
5
6
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
6
7
  import { HasManyDecoratorConfig } from './has-many-decorator.data';
@@ -13,5 +14,5 @@ export declare class HasManyDecoratorConfigInternal<EntityType extends BaseEntit
13
14
  RelatedEntityServiceClass: new (httpClient: HttpClient) => EntityService<RelatedBaseEntityType>;
14
15
  createBaseUrl: (baseEntity: RelatedBaseEntityType, metadata: HasManyDecoratorConfig<EntityType, RelatedBaseEntityType>) => string;
15
16
  readBaseUrl: (baseEntity: RelatedBaseEntityType, metadata: HasManyDecoratorConfig<EntityType, RelatedBaseEntityType>) => string;
16
- constructor(data: HasManyDecoratorConfig<EntityType, RelatedBaseEntityType>);
17
+ constructor(data: HasManyDecoratorConfig<EntityType, RelatedBaseEntityType>, globalConfig: NgxGlobalDefaultValues);
17
18
  }
@@ -1,5 +1,6 @@
1
1
  import { BaseEntityType } from '../../classes/entity.model';
2
2
  import { DisplayColumn } from '../../components/table/table-data';
3
+ import { NgxGlobalDefaultValues } from '../../global-configuration-values';
3
4
  import { DropdownValue } from '../base/dropdown-value.interface';
4
5
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
5
6
  import { ReferencesManyDecoratorConfig } from './references-many-decorator.data';
@@ -16,7 +17,7 @@ export declare class ReferencesManyDecoratorConfigInternal<EntityType extends Ba
16
17
  dropdownLabel: string;
17
18
  addAll: boolean;
18
19
  addAllButtonLabel: string;
19
- constructor(data: ReferencesManyDecoratorConfig<EntityType>);
20
+ constructor(data: ReferencesManyDecoratorConfig<EntityType>, globalConfig: NgxGlobalDefaultValues);
20
21
  }
21
22
  /**
22
23
  * The default function to use when trying to get the referenced entity for the given id.
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { NgxGlobalDefaultValues } from './global-configuration-values';
3
+ export declare const defaultGlobalDefaults: NgxGlobalDefaultValues;
4
+ export declare const CONFIG_NEEDS_UPDATE_KEY: string;
5
+ export declare const needsUpdateGlobalDefaults: NgxGlobalDefaultValues;
6
+ export declare const NGX_INTERNAL_GLOBAL_DEFAULT_VALUES: InjectionToken<NgxGlobalDefaultValues>;
@@ -11,7 +11,6 @@ export declare class TooltipDirective implements OnDestroy {
11
11
  */
12
12
  tooltip: string;
13
13
  private tooltipElement?;
14
- private isTooltipVisible;
15
14
  private closeListeners;
16
15
  constructor(el: ElementRef, renderer: Renderer2);
17
16
  /**
@@ -1,10 +1,16 @@
1
+ import { CONFIG_NEEDS_UPDATE_KEY } from '../default-global-configuration-values';
1
2
  /**
2
3
  * The abstract BaseBuilder class.
3
4
  */
4
5
  export class BaseBuilder {
5
6
  data;
6
7
  inputData;
7
- constructor(data) {
8
+ /**
9
+ * The global configuration, is used for providing default values to fallback to.
10
+ */
11
+ globalConfig;
12
+ constructor(globalConfig, data) {
13
+ this.globalConfig = globalConfig;
8
14
  this.validateInput(data);
9
15
  this.inputData = data;
10
16
  this.data = this.generateBaseData(data);
@@ -27,7 +33,7 @@ export class BaseBuilder {
27
33
  * @returns The Builder.
28
34
  */
29
35
  withDefault(key, value) {
30
- if (this.inputData == null || this.inputData[key] == null) {
36
+ if (this.inputData == null || this.inputData[key] == null || this.inputData[key] === CONFIG_NEEDS_UPDATE_KEY) {
31
37
  this.data[key] = value;
32
38
  }
33
39
  return this;
@@ -41,4 +47,4 @@ export class BaseBuilder {
41
47
  return this.data;
42
48
  }
43
49
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9iYXNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFFWixJQUFJLENBQWU7SUFDbkIsU0FBUyxDQUFhO0lBRXZDLFlBQXNCLElBQWdCO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQVVEOzs7O09BSUc7SUFDSCw2REFBNkQ7SUFDbkQsYUFBYSxDQUFDLElBQWdCO1FBQ3BDLG9DQUFvQztJQUN4QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEdBQW9CLEVBQUUsS0FBdUQ7UUFDckYsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXNDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUgfSBmcm9tICcuL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGFic3RyYWN0IEJhc2VCdWlsZGVyIGNsYXNzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUJ1aWxkZXI8SW50ZXJuYWxUeXBlIGV4dGVuZHMgSW5wdXRUeXBlLCBJbnB1dFR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxJbnB1dFR5cGU+PiB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGE6IEludGVybmFsVHlwZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YT86IElucHV0VHlwZTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihkYXRhPzogSW5wdXRUeXBlKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dChkYXRhKTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmdlbmVyYXRlQmFzZURhdGEoZGF0YSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyB0aGUgaW50ZXJuYWwgZGF0YSBmcm9tIHRoZSBnaXZlbiB1c2VyIGlucHV0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGlucHV0IGZyb20gdGhlIHVzZXIuXG4gICAgICogQHJldHVybnMgVGhlIGludGVybmFsIGRhdGEuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdlbmVyYXRlQmFzZURhdGEoZGF0YT86IElucHV0VHlwZSk6IEludGVybmFsVHlwZTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gdmFsaWRhdGUgdGhlIHVzZXIgaW5wdXQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgLSBUaGUgdXNlciBpbnB1dC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRlSW5wdXQoZGF0YT86IElucHV0VHlwZSk6IHZvaWQge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCBubyB2YWxpZGF0aW9uIGlzIGRvbmVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGtleSBpZiBubyB1c2VyIHZhbHVlIHdhcyBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCB3aGVuIG5vdGhpbmcgd2FzIHByb3ZpZGVkLlxuICAgICAqIEByZXR1cm5zIFRoZSBCdWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0KGtleToga2V5b2YgSW5wdXRUeXBlLCB2YWx1ZTogT21pdDxJbnRlcm5hbFR5cGVba2V5b2YgSW5wdXRUeXBlXSwgJ3VuZGVmaW5lZCc+KTogQmFzZUJ1aWxkZXI8SW50ZXJuYWxUeXBlLCBJbnB1dFR5cGU+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRhID09IG51bGwgfHwgdGhpcy5pbnB1dERhdGFba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlIGFzIEludGVybmFsVHlwZVtrZXlvZiBJbnB1dFR5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB1c2VkIHRvIGdldCB0aGUgZmluYWwgYnVpbGQgdmFsdWUgYWZ0ZXIgYXBwbHlpbmcgYWxsIGNoYWluaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGJ1aWxkIHZhbHVlLlxuICAgICAqL1xuICAgIGdldFJlc3VsdCgpOiBJbnRlcm5hbFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cbn0iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9iYXNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFJakY7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLFdBQVc7SUFFWixJQUFJLENBQWU7SUFDbkIsU0FBUyxDQUFhO0lBQ3ZDOztPQUVHO0lBQ2dCLFlBQVksQ0FBeUI7SUFFeEQsWUFBc0IsWUFBb0MsRUFBRSxJQUFnQjtRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFVRDs7OztPQUlHO0lBQ0gsNkRBQTZEO0lBQ25ELGFBQWEsQ0FBQyxJQUFnQjtRQUNwQyxvQ0FBb0M7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxHQUFvQixFQUFFLEtBQXVEO1FBQ3JGLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyx1QkFBdUIsRUFBRTtZQUMxRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQXNDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09ORklHX05FRURTX1VQREFURV9LRVkgfSBmcm9tICcuLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlIH0gZnJvbSAnLi9lbnRpdHkubW9kZWwnO1xuXG4vKipcbiAqIFRoZSBhYnN0cmFjdCBCYXNlQnVpbGRlciBjbGFzcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VCdWlsZGVyPEludGVybmFsVHlwZSBleHRlbmRzIElucHV0VHlwZSwgSW5wdXRUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8SW5wdXRUeXBlPj4ge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhOiBJbnRlcm5hbFR5cGU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dERhdGE/OiBJbnB1dFR5cGU7XG4gICAgLyoqXG4gICAgICogVGhlIGdsb2JhbCBjb25maWd1cmF0aW9uLCBpcyB1c2VkIGZvciBwcm92aWRpbmcgZGVmYXVsdCB2YWx1ZXMgdG8gZmFsbGJhY2sgdG8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlcztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihnbG9iYWxDb25maWc6IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMsIGRhdGE/OiBJbnB1dFR5cGUpIHtcbiAgICAgICAgdGhpcy5nbG9iYWxDb25maWcgPSBnbG9iYWxDb25maWc7XG4gICAgICAgIHRoaXMudmFsaWRhdGVJbnB1dChkYXRhKTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmdlbmVyYXRlQmFzZURhdGEoZGF0YSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyB0aGUgaW50ZXJuYWwgZGF0YSBmcm9tIHRoZSBnaXZlbiB1c2VyIGlucHV0cy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGlucHV0IGZyb20gdGhlIHVzZXIuXG4gICAgICogQHJldHVybnMgVGhlIGludGVybmFsIGRhdGEuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdlbmVyYXRlQmFzZURhdGEoZGF0YT86IElucHV0VHlwZSk6IEludGVybmFsVHlwZTtcblxuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gdmFsaWRhdGUgdGhlIHVzZXIgaW5wdXQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGEgLSBUaGUgdXNlciBpbnB1dC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRlSW5wdXQoZGF0YT86IElucHV0VHlwZSk6IHZvaWQge1xuICAgICAgICAvLyBCeSBkZWZhdWx0LCBubyB2YWxpZGF0aW9uIGlzIGRvbmVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGtleSBpZiBubyB1c2VyIHZhbHVlIHdhcyBwcm92aWRlZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IuXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCB3aGVuIG5vdGhpbmcgd2FzIHByb3ZpZGVkLlxuICAgICAqIEByZXR1cm5zIFRoZSBCdWlsZGVyLlxuICAgICAqL1xuICAgIHdpdGhEZWZhdWx0KGtleToga2V5b2YgSW5wdXRUeXBlLCB2YWx1ZTogT21pdDxJbnRlcm5hbFR5cGVba2V5b2YgSW5wdXRUeXBlXSwgJ3VuZGVmaW5lZCc+KTogQmFzZUJ1aWxkZXI8SW50ZXJuYWxUeXBlLCBJbnB1dFR5cGU+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRhID09IG51bGwgfHwgdGhpcy5pbnB1dERhdGFba2V5XSA9PSBudWxsIHx8IHRoaXMuaW5wdXREYXRhW2tleV0gPT09IENPTkZJR19ORUVEU19VUERBVEVfS0VZKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlIGFzIEludGVybmFsVHlwZVtrZXlvZiBJbnB1dFR5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB1c2VkIHRvIGdldCB0aGUgZmluYWwgYnVpbGQgdmFsdWUgYWZ0ZXIgYXBwbHlpbmcgYWxsIGNoYWluaW5nLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGJ1aWxkIHZhbHVlLlxuICAgICAqL1xuICAgIGdldFJlc3VsdCgpOiBJbnRlcm5hbFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgIH1cbn0iXX0=
@@ -1,4 +1,6 @@
1
1
  import { BaseBuilder } from '../../classes/base.builder';
2
+ import { CONFIG_NEEDS_UPDATE_KEY } from '../../default-global-configuration-values';
3
+ import { getConfigValue } from '../../functions/get-config-value.function';
2
4
  /**
3
5
  * The internal ConfirmDialogData. Requires all default values the user can leave out.
4
6
  */
@@ -31,12 +33,12 @@ export class ConfirmDialogDataInternal {
31
33
  * The Builder for the ConfirmDialogData. Sets default values.
32
34
  */
33
35
  export class ConfirmDialogDataBuilder extends BaseBuilder {
34
- constructor(data) {
35
- super(data);
36
+ constructor(globalConfig, data) {
37
+ super(globalConfig, data);
36
38
  }
37
39
  // eslint-disable-next-line jsdoc/require-jsdoc
38
40
  generateBaseData(data) {
39
- return new ConfirmDialogDataInternal(data?.text ?? ['Do you really want to do this?'], data?.type ?? 'default', data?.confirmButtonLabel ?? 'Confirm', data?.cancelButtonLabel ?? 'Cancel', data?.title ?? 'Confirmation', data?.requireConfirmation ?? false, data?.confirmationText);
41
+ return new ConfirmDialogDataInternal(getConfigValue(this.globalConfig.defaultConfirmDialogText, data?.text), data?.type ?? 'default', getConfigValue(this.globalConfig.confirmLabel, data?.confirmButtonLabel), getConfigValue(this.globalConfig.cancelLabel, data?.cancelButtonLabel), getConfigValue(this.globalConfig.defaultConfirmDialogTitle, data?.title), data?.requireConfirmation ?? false, data?.confirmationText);
40
42
  }
41
43
  // eslint-disable-next-line jsdoc/require-jsdoc
42
44
  validateInput(data) {
@@ -50,9 +52,9 @@ export class ConfirmDialogDataBuilder extends BaseBuilder {
50
52
  if (data.requireConfirmation !== true && data.confirmationText) {
51
53
  throw new Error('The "confirmationText" will never be shown because "requireConfirmation" is not set to true');
52
54
  }
53
- if (data.type === 'info-only' && data.cancelButtonLabel) {
55
+ if (data.type === 'info-only' && data.cancelButtonLabel && data.cancelButtonLabel !== CONFIG_NEEDS_UPDATE_KEY) {
54
56
  throw new Error('The "cancelButtonLabel" will never be shown because "type" is set to "info-only"');
55
57
  }
56
58
  }
57
59
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3pEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQywrQ0FBK0M7SUFDL0MsSUFBSSxDQUFXO0lBQ2YsK0NBQStDO0lBQy9DLElBQUksQ0FBcUI7SUFDekIsK0NBQStDO0lBQy9DLGtCQUFrQixDQUFTO0lBQzNCLCtDQUErQztJQUMvQyxpQkFBaUIsQ0FBUztJQUMxQiwrQ0FBK0M7SUFDL0MsS0FBSyxDQUFTO0lBQ2QsK0NBQStDO0lBQy9DLG1CQUFtQixDQUFVO0lBQzdCLCtDQUErQztJQUMvQyxnQkFBZ0IsQ0FBVTtJQUUxQixZQUNJLElBQWMsRUFDZCxJQUF3QixFQUN4QixrQkFBMEIsRUFDMUIsaUJBQXlCLEVBQ3pCLEtBQWEsRUFDYixtQkFBNEIsRUFDNUIsZ0JBQXlCO1FBRXpCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxXQUF5RDtJQUVuRyxZQUFZLElBQXdCO1FBQ2hDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsK0NBQStDO0lBQzVCLGdCQUFnQixDQUFDLElBQXdCO1FBQ3hELE9BQU8sSUFBSSx5QkFBeUIsQ0FDaEMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEVBQ2hELElBQUksRUFBRSxJQUFJLElBQUksU0FBUyxFQUN2QixJQUFJLEVBQUUsa0JBQWtCLElBQUksU0FBUyxFQUNyQyxJQUFJLEVBQUUsaUJBQWlCLElBQUksUUFBUSxFQUNuQyxJQUFJLEVBQUUsS0FBSyxJQUFJLGNBQWMsRUFDN0IsSUFBSSxFQUFFLG1CQUFtQixJQUFJLEtBQUssRUFDbEMsSUFBSSxFQUFFLGdCQUFnQixDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVELCtDQUErQztJQUM1QixhQUFhLENBQUMsSUFBd0I7UUFDckQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3RCxtQ0FBbUM7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtSEFBbUgsQ0FBQyxDQUFDO1NBQ3hJO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLDZGQUE2RixDQUFDLENBQUM7U0FDbEg7UUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLGtGQUFrRixDQUFDLENBQUM7U0FDdkc7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvYmFzZS5idWlsZGVyJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhLCBDb25maXJtRGlhbG9nVHlwZXMgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBDb25maXJtRGlhbG9nRGF0YS4gUmVxdWlyZXMgYWxsIGRlZmF1bHQgdmFsdWVzIHRoZSB1c2VyIGNhbiBsZWF2ZSBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIGltcGxlbWVudHMgQ29uZmlybURpYWxvZ0RhdGEge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgdGV4dDogc3RyaW5nW107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0eXBlOiBDb25maXJtRGlhbG9nVHlwZXM7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjb25maXJtQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcmVxdWlyZUNvbmZpcm1hdGlvbjogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNvbmZpcm1hdGlvblRleHQ/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdGV4dDogc3RyaW5nW10sXG4gICAgICAgIHR5cGU6IENvbmZpcm1EaWFsb2dUeXBlcyxcbiAgICAgICAgY29uZmlybUJ1dHRvbkxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBzdHJpbmcsXG4gICAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICAgIHJlcXVpcmVDb25maXJtYXRpb246IGJvb2xlYW4sXG4gICAgICAgIGNvbmZpcm1hdGlvblRleHQ/OiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5jb25maXJtQnV0dG9uTGFiZWwgPSBjb25maXJtQnV0dG9uTGFiZWw7XG4gICAgICAgIHRoaXMuY2FuY2VsQnV0dG9uTGFiZWwgPSBjYW5jZWxCdXR0b25MYWJlbDtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLnJlcXVpcmVDb25maXJtYXRpb24gPSByZXF1aXJlQ29uZmlybWF0aW9uO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblRleHQgPSBjb25maXJtYXRpb25UZXh0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIENvbmZpcm1EaWFsb2dEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXI8Q29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCwgQ29uZmlybURpYWxvZ0RhdGE+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBDb25maXJtRGlhbG9nRGF0YSkge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE/OiBDb25maXJtRGlhbG9nRGF0YSk6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwoXG4gICAgICAgICAgICBkYXRhPy50ZXh0ID8/IFsnRG8geW91IHJlYWxseSB3YW50IHRvIGRvIHRoaXM/J10sXG4gICAgICAgICAgICBkYXRhPy50eXBlID8/ICdkZWZhdWx0JyxcbiAgICAgICAgICAgIGRhdGE/LmNvbmZpcm1CdXR0b25MYWJlbCA/PyAnQ29uZmlybScsXG4gICAgICAgICAgICBkYXRhPy5jYW5jZWxCdXR0b25MYWJlbCA/PyAnQ2FuY2VsJyxcbiAgICAgICAgICAgIGRhdGE/LnRpdGxlID8/ICdDb25maXJtYXRpb24nLFxuICAgICAgICAgICAgZGF0YT8ucmVxdWlyZUNvbmZpcm1hdGlvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE/LmNvbmZpcm1hdGlvblRleHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE/OiBDb25maXJtRGlhbG9nRGF0YSk6IHZvaWQge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uID09PSB0cnVlICYmICFkYXRhLmNvbmZpcm1hdGlvblRleHQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImNvbmZpcm1hdGlvblRleHRcIi4gWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSB3aGVuIFwicmVxdWlyZUNvbmZpcm1hdGlvblwiIGlzIGZhbHNlLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gIT09IHRydWUgJiYgZGF0YS5jb25maXJtYXRpb25UZXh0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBcImNvbmZpcm1hdGlvblRleHRcIiB3aWxsIG5ldmVyIGJlIHNob3duIGJlY2F1c2UgXCJyZXF1aXJlQ29uZmlybWF0aW9uXCIgaXMgbm90IHNldCB0byB0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ2luZm8tb25seScgJiYgZGF0YS5jYW5jZWxCdXR0b25MYWJlbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgXCJjYW5jZWxCdXR0b25MYWJlbFwiIHdpbGwgbmV2ZXIgYmUgc2hvd24gYmVjYXVzZSBcInR5cGVcIiBpcyBzZXQgdG8gXCJpbmZvLW9ubHlcIicpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkzRTs7R0FFRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUFDbEMsK0NBQStDO0lBQy9DLElBQUksQ0FBVztJQUNmLCtDQUErQztJQUMvQyxJQUFJLENBQXFCO0lBQ3pCLCtDQUErQztJQUMvQyxrQkFBa0IsQ0FBUztJQUMzQiwrQ0FBK0M7SUFDL0MsaUJBQWlCLENBQVM7SUFDMUIsK0NBQStDO0lBQy9DLEtBQUssQ0FBUztJQUNkLCtDQUErQztJQUMvQyxtQkFBbUIsQ0FBVTtJQUM3QiwrQ0FBK0M7SUFDL0MsZ0JBQWdCLENBQVU7SUFFMUIsWUFDSSxJQUFjLEVBQ2QsSUFBd0IsRUFDeEIsa0JBQTBCLEVBQzFCLGlCQUF5QixFQUN6QixLQUFhLEVBQ2IsbUJBQTRCLEVBQzVCLGdCQUF5QjtRQUV6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7SUFDN0MsQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsV0FBeUQ7SUFFbkcsWUFBWSxZQUFvQyxFQUFFLElBQXdCO1FBQ3RFLEtBQUssQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELCtDQUErQztJQUM1QixnQkFBZ0IsQ0FBQyxJQUF3QjtRQUN4RCxPQUFPLElBQUkseUJBQXlCLENBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFDdEUsSUFBSSxFQUFFLElBQUksSUFBSSxTQUFTLEVBQ3ZCLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsa0JBQWtCLENBQUMsRUFDeEUsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxFQUN0RSxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQ3hFLElBQUksRUFBRSxtQkFBbUIsSUFBSSxLQUFLLEVBQ2xDLElBQUksRUFBRSxnQkFBZ0IsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFRCwrQ0FBK0M7SUFDNUIsYUFBYSxDQUFDLElBQXdCO1FBQ3JELElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDUCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0QsbUNBQW1DO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUhBQW1ILENBQUMsQ0FBQztTQUN4STtRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RkFBNkYsQ0FBQyxDQUFDO1NBQ2xIO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLHVCQUF1QixFQUFFO1lBQzNHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztTQUN2RztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlLmJ1aWxkZXInO1xuaW1wb3J0IHsgQ09ORklHX05FRURTX1VQREFURV9LRVkgfSBmcm9tICcuLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBnZXRDb25maWdWYWx1ZSB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtY29uZmlnLXZhbHVlLmZ1bmN0aW9uJztcbmltcG9ydCB7IE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEsIENvbmZpcm1EaWFsb2dUeXBlcyB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YSc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIENvbmZpcm1EaWFsb2dEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgaW1wbGVtZW50cyBDb25maXJtRGlhbG9nRGF0YSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0ZXh0OiBzdHJpbmdbXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHR5cGU6IENvbmZpcm1EaWFsb2dUeXBlcztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNvbmZpcm1CdXR0b25MYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICByZXF1aXJlQ29uZmlybWF0aW9uOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY29uZmlybWF0aW9uVGV4dD86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICB0ZXh0OiBzdHJpbmdbXSxcbiAgICAgICAgdHlwZTogQ29uZmlybURpYWxvZ1R5cGVzLFxuICAgICAgICBjb25maXJtQnV0dG9uTGFiZWw6IHN0cmluZyxcbiAgICAgICAgY2FuY2VsQnV0dG9uTGFiZWw6IHN0cmluZyxcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgcmVxdWlyZUNvbmZpcm1hdGlvbjogYm9vbGVhbixcbiAgICAgICAgY29uZmlybWF0aW9uVGV4dD86IHN0cmluZ1xuICAgICkge1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmNvbmZpcm1CdXR0b25MYWJlbCA9IGNvbmZpcm1CdXR0b25MYWJlbDtcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25MYWJlbCA9IGNhbmNlbEJ1dHRvbkxhYmVsO1xuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMucmVxdWlyZUNvbmZpcm1hdGlvbiA9IHJlcXVpcmVDb25maXJtYXRpb247XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uVGV4dCA9IGNvbmZpcm1hdGlvblRleHQ7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBCdWlsZGVyIGZvciB0aGUgQ29uZmlybURpYWxvZ0RhdGEuIFNldHMgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlcjxDb25maXJtRGlhbG9nRGF0YUludGVybmFsLCBDb25maXJtRGlhbG9nRGF0YT4ge1xuXG4gICAgY29uc3RydWN0b3IoZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzLCBkYXRhPzogQ29uZmlybURpYWxvZ0RhdGEpIHtcbiAgICAgICAgc3VwZXIoZ2xvYmFsQ29uZmlnLCBkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE/OiBDb25maXJtRGlhbG9nRGF0YSk6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwoXG4gICAgICAgICAgICBnZXRDb25maWdWYWx1ZSh0aGlzLmdsb2JhbENvbmZpZy5kZWZhdWx0Q29uZmlybURpYWxvZ1RleHQsIGRhdGE/LnRleHQpLFxuICAgICAgICAgICAgZGF0YT8udHlwZSA/PyAnZGVmYXVsdCcsXG4gICAgICAgICAgICBnZXRDb25maWdWYWx1ZSh0aGlzLmdsb2JhbENvbmZpZy5jb25maXJtTGFiZWwsIGRhdGE/LmNvbmZpcm1CdXR0b25MYWJlbCksXG4gICAgICAgICAgICBnZXRDb25maWdWYWx1ZSh0aGlzLmdsb2JhbENvbmZpZy5jYW5jZWxMYWJlbCwgZGF0YT8uY2FuY2VsQnV0dG9uTGFiZWwpLFxuICAgICAgICAgICAgZ2V0Q29uZmlnVmFsdWUodGhpcy5nbG9iYWxDb25maWcuZGVmYXVsdENvbmZpcm1EaWFsb2dUaXRsZSwgZGF0YT8udGl0bGUpLFxuICAgICAgICAgICAgZGF0YT8ucmVxdWlyZUNvbmZpcm1hdGlvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE/LmNvbmZpcm1hdGlvblRleHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE/OiBDb25maXJtRGlhbG9nRGF0YSk6IHZvaWQge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uID09PSB0cnVlICYmICFkYXRhLmNvbmZpcm1hdGlvblRleHQpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImNvbmZpcm1hdGlvblRleHRcIi4gWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSB3aGVuIFwicmVxdWlyZUNvbmZpcm1hdGlvblwiIGlzIGZhbHNlLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gIT09IHRydWUgJiYgZGF0YS5jb25maXJtYXRpb25UZXh0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBcImNvbmZpcm1hdGlvblRleHRcIiB3aWxsIG5ldmVyIGJlIHNob3duIGJlY2F1c2UgXCJyZXF1aXJlQ29uZmlybWF0aW9uXCIgaXMgbm90IHNldCB0byB0cnVlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gJ2luZm8tb25seScgJiYgZGF0YS5jYW5jZWxCdXR0b25MYWJlbCAmJiBkYXRhLmNhbmNlbEJ1dHRvbkxhYmVsICE9PSBDT05GSUdfTkVFRFNfVVBEQVRFX0tFWSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgXCJjYW5jZWxCdXR0b25MYWJlbFwiIHdpbGwgbmV2ZXIgYmUgc2hvd24gYmVjYXVzZSBcInR5cGVcIiBpcyBzZXQgdG8gXCJpbmZvLW9ubHlcIicpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
@@ -1,10 +1,11 @@
1
+ import { NgFor, NgIf } from '@angular/common';
1
2
  import { Component, Inject } from '@angular/core';
2
- import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
3
- import { ConfirmDialogDataBuilder } from './confirm-dialog-data.builder';
4
3
  import { FormsModule } from '@angular/forms';
5
4
  import { MatButtonModule } from '@angular/material/button';
6
5
  import { MatCheckboxModule } from '@angular/material/checkbox';
7
- import { NgFor, NgIf } from '@angular/common';
6
+ import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
7
+ import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../default-global-configuration-values';
8
+ import { ConfirmDialogDataBuilder } from './confirm-dialog-data.builder';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "@angular/material/dialog";
10
11
  import * as i2 from "@angular/forms";
@@ -18,14 +19,16 @@ import * as i4 from "@angular/material/button";
18
19
  export class NgxMatEntityConfirmDialogComponent {
19
20
  dialogRef;
20
21
  inputData;
22
+ globalConfig;
21
23
  confirm = false;
22
24
  data;
23
- constructor(dialogRef, inputData) {
25
+ constructor(dialogRef, inputData, globalConfig) {
24
26
  this.dialogRef = dialogRef;
25
27
  this.inputData = inputData;
28
+ this.globalConfig = globalConfig;
26
29
  }
27
30
  ngOnInit() {
28
- this.data = new ConfirmDialogDataBuilder(this.inputData).getResult();
31
+ this.data = new ConfirmDialogDataBuilder(this.globalConfig, this.inputData).getResult();
29
32
  this.dialogRef.disableClose = true;
30
33
  }
31
34
  /**
@@ -40,7 +43,7 @@ export class NgxMatEntityConfirmDialogComponent {
40
43
  cancel() {
41
44
  this.dialogRef.close(false);
42
45
  }
43
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: NGX_INTERNAL_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
44
47
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "<h2 mat-dialog-title *ngIf=\"data.title\">{{data.title}}</h2>\n\n<mat-dialog-content>\n <p *ngFor=\"let paragraph of data.text\">{{paragraph}}</p>\n <div *ngIf=\"data.requireConfirmation\" class=\"checkbox-wrapper\">\n <mat-checkbox [(ngModel)]=\"confirm\" name=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button type=\"button\" *ngIf=\"data.type === 'delete'\" mat-raised-button color=\"warn\" (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'delete'\" mat-raised-button (click)=\"confirmAction()\" [disabled]=\"data.requireConfirmation && !confirm\" class=\"confirm-button\">\n {{data.confirmButtonLabel}}\n </button>\n <button type=\"button\" *ngIf=\"data.type !== 'info-only'\" mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}mat-dialog-actions{justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
45
48
  }
46
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
@@ -56,5 +59,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
56
59
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
57
60
  type: Inject,
58
61
  args: [MAT_DIALOG_DATA]
62
+ }] }, { type: undefined, decorators: [{
63
+ type: Inject,
64
+ args: [NGX_INTERNAL_GLOBAL_DEFAULT_VALUES]
59
65
  }] }]; } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUU5Qzs7OztHQUlHO0FBZUgsTUFBTSxPQUFPLGtDQUFrQztJQU90QjtJQUVBO0lBUHJCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFFekIsSUFBSSxDQUE2QjtJQUVqQyxZQUNxQixTQUEyRCxFQUUzRCxTQUE0QjtRQUY1QixjQUFTLEdBQVQsU0FBUyxDQUFrRDtRQUUzRCxjQUFTLEdBQVQsU0FBUyxDQUFtQjtJQUM5QyxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDckUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0E3QlEsa0NBQWtDLDhDQVEvQixlQUFlOzJGQVJsQixrQ0FBa0MseUZDNUIvQyxrbENBcUJxQiw2TUREYixJQUFJLDZGQUNKLEtBQUssa0hBQ0wsZUFBZSx5YkFDZixXQUFXLDhWQUNYLGlCQUFpQixnTEFDakIsZUFBZTs7MkZBR1Ysa0NBQWtDO2tCQWQ5QyxTQUFTOytCQUNJLCtCQUErQixjQUc3QixJQUFJLFdBQ1A7d0JBQ0wsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxpQkFBaUI7d0JBQ2pCLGVBQWU7cUJBQ2xCOzswQkFVSSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIFRoZSBEaWFsb2cgdXNlZCB3aGVuZXZlciBjb25maXJtYXRpb24gYnkgdGhlIHVzZXIgaXMgcmVxdWlyZWQgKGUuZy4gV2hlbiB0aGUgdXNlciB0cmllcyB0byBkZWxldGUgYW4gZW50aXR5KS5cbiAqXG4gKiBDYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi4gQ3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIFwiQ29uZmlybURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBjb25maXJtOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBkYXRhITogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dERhdGE6IENvbmZpcm1EaWFsb2dEYXRhXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5pbnB1dERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGlhbG9nIHdpdGggdHJ1ZSB0byBzaWduYWwgdGhhdCB0aGUgYWN0aW9uIHNob3VsZCBiZSBydW4uXG4gICAgICovXG4gICAgY29uZmlybUFjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgfVxufSIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlICpuZ0lmPVwiZGF0YS50aXRsZVwiPnt7ZGF0YS50aXRsZX19PC9oMj5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICA8cCAqbmdGb3I9XCJsZXQgcGFyYWdyYXBoIG9mIGRhdGEudGV4dFwiPnt7cGFyYWdyYXBofX08L3A+XG4gICAgPGRpdiAqbmdJZj1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvblwiIGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICA8bWF0LWNoZWNrYm94IFsobmdNb2RlbCldPVwiY29uZmlybVwiIG5hbWU9XCJjb25maXJtXCI+XG4gICAgICAgICAgICB7e2RhdGEuY29uZmlybWF0aW9uVGV4dH19XG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLnR5cGUgPT09ICdkZWxldGUnXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImNvbmZpcm1BY3Rpb24oKVwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiBjbGFzcz1cImNvbmZpcm0tYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS50eXBlICE9PSAnZGVsZXRlJ1wiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uICYmICFjb25maXJtXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiPlxuICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEudHlwZSAhPT0gJ2luZm8tb25seSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgICAge3tkYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUcvRixPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQUVwRzs7OztHQUlHO0FBZUgsTUFBTSxPQUFPLGtDQUFrQztJQU90QjtJQUVBO0lBRUU7SUFUdkIsT0FBTyxHQUFZLEtBQUssQ0FBQztJQUV6QixJQUFJLENBQTZCO0lBRWpDLFlBQ3FCLFNBQTJELEVBRTNELFNBQTRCLEVBRTFCLFlBQW9DO1FBSnRDLGNBQVMsR0FBVCxTQUFTLENBQWtEO1FBRTNELGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBRTFCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtJQUN4RCxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO3VHQS9CUSxrQ0FBa0MsOENBUS9CLGVBQWUsYUFFZixrQ0FBa0M7MkZBVnJDLGtDQUFrQyx5RkM5Qi9DLGtsQ0FxQnFCLDZNRENiLElBQUksNkZBQ0osS0FBSyxrSEFDTCxlQUFlLHliQUNmLFdBQVcsOFZBQ1gsaUJBQWlCLGdMQUNqQixlQUFlOzsyRkFHVixrQ0FBa0M7a0JBZDlDLFNBQVM7K0JBQ0ksK0JBQStCLGNBRzdCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsZUFBZTtxQkFDbEI7OzBCQVVJLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE5HWF9JTlRFUk5BTF9HTE9CQUxfREVGQVVMVF9WQUxVRVMgfSBmcm9tICcuLi8uLi9kZWZhdWx0LWdsb2JhbC1jb25maWd1cmF0aW9uLXZhbHVlcyc7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBUaGUgRGlhbG9nIHVzZWQgd2hlbmV2ZXIgY29uZmlybWF0aW9uIGJ5IHRoZSB1c2VyIGlzIHJlcXVpcmVkIChlLmcuIFdoZW4gdGhlIHVzZXIgdHJpZXMgdG8gZGVsZXRlIGFuIGVudGl0eSkuXG4gKlxuICogQ2FuIGJlIGN1c3RvbWl6ZWQgd2l0aCB0aGUgTUFUX0RJQUxPR19EQVRBIFwiaW5wdXREYXRhXCIuIEN1c3RvbWl6YXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCBpbiBcIkNvbmZpcm1EaWFsb2dEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktY29uZmlybS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgY29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZGF0YSE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXREYXRhOiBDb25maXJtRGlhbG9nRGF0YSxcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMuaW5wdXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZyB3aXRoIHRydWUgdG8gc2lnbmFsIHRoYXQgdGhlIGFjdGlvbiBzaG91bGQgYmUgcnVuLlxuICAgICAqL1xuICAgIGNvbmZpcm1BY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICAgIH1cbn0iLCI8aDIgbWF0LWRpYWxvZy10aXRsZSAqbmdJZj1cImRhdGEudGl0bGVcIj57e2RhdGEudGl0bGV9fTwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPHAgKm5nRm9yPVwibGV0IHBhcmFncmFwaCBvZiBkYXRhLnRleHRcIj57e3BhcmFncmFwaH19PC9wPlxuICAgIDxkaXYgKm5nSWY9XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb25cIiBjbGFzcz1cImNoZWNrYm94LXdyYXBwZXJcIj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImNvbmZpcm1cIiBuYW1lPVwiY29uZmlybVwiPlxuICAgICAgICAgICAge3tkYXRhLmNvbmZpcm1hdGlvblRleHR9fVxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGF0YS50eXBlID09PSAnZGVsZXRlJ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIiBbZGlzYWJsZWRdPVwiZGF0YS5yZXF1aXJlQ29uZmlybWF0aW9uICYmICFjb25maXJtXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiPlxuICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRhdGEudHlwZSAhPT0gJ2RlbGV0ZSdcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIGNsYXNzPVwiY29uZmlybS1idXR0b25cIj5cbiAgICAgICAge3tkYXRhLmNvbmZpcm1CdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkYXRhLnR5cGUgIT09ICdpbmZvLW9ubHknXCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5jYW5jZWxCdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz4iXX0=
@@ -9,6 +9,7 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
9
9
  import { MatTabsModule } from '@angular/material/tabs';
10
10
  import { ActivatedRoute } from '@angular/router';
11
11
  import { first, map } from 'rxjs';
12
+ import { NGX_INTERNAL_GLOBAL_DEFAULT_VALUES } from '../../default-global-configuration-values';
12
13
  import { LodashUtilities } from '../../encapsulation/lodash.utilities';
13
14
  import { getValidationErrorsTooltipContent } from '../../functions/get-validation-errors-tooltip-content.function.ts';
14
15
  import { EntityService } from '../../services/entity.service';
@@ -61,6 +62,7 @@ export class NgxMatEntityEditPageComponent {
61
62
  http;
62
63
  el;
63
64
  renderer;
65
+ globalConfig;
64
66
  EntityUtilities = EntityUtilities;
65
67
  entityTabs;
66
68
  entity;
@@ -77,7 +79,7 @@ export class NgxMatEntityEditPageComponent {
77
79
  get hasUnsavedChanges() {
78
80
  return this.isEntityDirty && this.data.editData.unsavedChangesRequireConfirmDialog;
79
81
  }
80
- constructor(dialog, location, route, injector, entityService, EntityClass, inputData, http, el, renderer) {
82
+ constructor(dialog, location, route, injector, entityService, EntityClass, inputData, http, el, renderer, globalConfig) {
81
83
  this.dialog = dialog;
82
84
  this.location = location;
83
85
  this.route = route;
@@ -88,6 +90,7 @@ export class NgxMatEntityEditPageComponent {
88
90
  this.http = http;
89
91
  this.el = el;
90
92
  this.renderer = renderer;
93
+ this.globalConfig = globalConfig;
91
94
  }
92
95
  /**
93
96
  * Checks if the input with the given key is readonly.
@@ -102,7 +105,7 @@ export class NgxMatEntityEditPageComponent {
102
105
  });
103
106
  }
104
107
  async ngOnInit() {
105
- this.data = new PageEditDataBuilder(this.inputData).getResult();
108
+ this.data = new PageEditDataBuilder(this.inputData, this.globalConfig).getResult();
106
109
  if (this.data == null) {
107
110
  this.confirmNavigateBack();
108
111
  throw new Error('No edit data was provided for "NGX_EDIT_DATA". You need to provide a value in your routes providers array.');
@@ -176,10 +179,11 @@ export class NgxMatEntityEditPageComponent {
176
179
  this.confirmEdit();
177
180
  return;
178
181
  }
179
- const dialogData = new ConfirmDialogDataBuilder(this.data.editData.confirmEditDialogData)
180
- .withDefault('text', ['Do you really want to save all changes?'])
181
- .withDefault('confirmButtonLabel', 'Save')
182
- .withDefault('title', 'Edit')
182
+ // eslint-disable-next-line max-len
183
+ const dialogData = new ConfirmDialogDataBuilder(this.globalConfig, this.data.editData.confirmEditDialogData)
184
+ .withDefault('text', this.globalConfig.confirmSaveText)
185
+ .withDefault('confirmButtonLabel', this.globalConfig.saveLabel)
186
+ .withDefault('title', this.globalConfig.editLabel)
183
187
  .getResult();
184
188
  const dialogRef = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
185
189
  data: dialogData,
@@ -204,11 +208,12 @@ export class NgxMatEntityEditPageComponent {
204
208
  this.confirmDelete();
205
209
  return;
206
210
  }
207
- const dialogData = new ConfirmDialogDataBuilder(this.data.editData.confirmDeleteDialogData)
208
- .withDefault('text', ['Do you really want to delete this entity?'])
211
+ // eslint-disable-next-line max-len
212
+ const dialogData = new ConfirmDialogDataBuilder(this.globalConfig, this.data.editData.confirmDeleteDialogData)
213
+ .withDefault('text', this.globalConfig.confirmDeleteText)
209
214
  .withDefault('type', 'delete')
210
- .withDefault('confirmButtonLabel', 'Delete')
211
- .withDefault('title', 'Delete')
215
+ .withDefault('confirmButtonLabel', this.globalConfig.deleteLabel)
216
+ .withDefault('title', this.globalConfig.deleteLabel)
212
217
  .getResult();
213
218
  const dialogRef = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
214
219
  data: dialogData,
@@ -296,11 +301,9 @@ export class NgxMatEntityEditPageComponent {
296
301
  * @returns Whether or not the Action can be used.
297
302
  */
298
303
  editActionDisabled(action) {
299
- return this.injector.runInContext(() => {
300
- return !action.enabled(this.entityPriorChanges);
301
- });
304
+ return runInInjectionContext(this.injector, () => !action.enabled(this.entityPriorChanges));
302
305
  }
303
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityEditPageComponent, deps: [{ token: i1.MatDialog }, { token: i2.Location }, { token: i3.ActivatedRoute }, { token: i0.EnvironmentInjector }, { token: NGX_EDIT_DATA_ENTITY_SERVICE }, { token: NGX_EDIT_DATA_ENTITY }, { token: NGX_EDIT_DATA }, { token: i4.HttpClient }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
306
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityEditPageComponent, deps: [{ token: i1.MatDialog }, { token: i2.Location }, { token: i3.ActivatedRoute }, { token: i0.EnvironmentInjector }, { token: NGX_EDIT_DATA_ENTITY_SERVICE }, { token: NGX_EDIT_DATA_ENTITY }, { token: NGX_EDIT_DATA }, { token: i4.HttpClient }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: NGX_INTERNAL_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
304
307
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: NgxMatEntityEditPageComponent, isStandalone: true, selector: "ngx-mat-entity-edit-page", host: { listeners: { "window:scroll": "onScroll()", "window:beforeunload": "canDeactivate()" } }, ngImport: i0, template: "<div *ngIf=\"!entityTabs && data.displayLoadingSpinner\" class=\"container\">\n <br>\n <mat-spinner></mat-spinner>\n <br>\n</div>\n\n<div *ngIf=\"entityTabs\" class=\"container\">\n <br>\n\n <!------------>\n <!-- Header -->\n <!------------>\n <div class=\"header\">\n <div class=\"save-cancel-container\">\n <button type=\"button\" [class.unsavedChanges]=\"hasUnsavedChanges\" mat-raised-button (click)=\"navigateBack()\" class=\"back-button\" tabindex=\"-1\">\n <i class=\"fas fa-chevron-left\"></i>\n {{data.editData.cancelButtonLabel}}\n <i class=\"fas fa-warning\" *ngIf=\"hasUnsavedChanges\"></i>\n </button>\n </div>\n <div class=\"actions-container\">\n <button *ngIf=\"data.editData.actions.length\" type=\"button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.editData.actionsLabel}}\n </button>\n <mat-menu #menu=\"matMenu\">\n <button type=\"button\" *ngFor=\"let action of data.editData.actions\" [disabled]=\"editActionDisabled(action)\" (click)=\"runEditAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n \n <button type=\"button\" *ngIf=\"allowDelete\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editData.deleteButtonLabel}}\n </button>\n </div>\n </div>\n\n <h1>{{data.editData.title(entityPriorChanges)}}</h1>\n\n <!----------->\n <!-- Input -->\n <!----------->\n <form>\n <mat-tab-group *ngIf=\"entityTabs.length > 1\" preserveContent>\n <mat-tab *ngFor=\"let tab of entityTabs\" [label]=\"tab.tabName\">\n <div class=\"row\" *ngFor=\"let row of tab.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly(key)\"\n >\n </ngx-mat-entity-input>\n </div>\n </mat-tab>\n </mat-tab-group>\n \n <div *ngIf=\"entityTabs.length <= 1\">\n <span class=\"no-entity-tabs\" *ngIf=\"!entityTabs.length\">\n ERROR: No Inputs. Did you correctly assign all values in the model constructor?\n </span>\n <div class=\"row\" *ngFor=\"let row of entityTabs[0]?.rows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{EntityUtilities.getWidth(entity, key, 'lg')}} col-md-{{EntityUtilities.getWidth(entity, key, 'md')}} col-sm-{{EntityUtilities.getWidth(entity, key, 'sm')}}\"\n (inputChangeEvent)=\"checkEntity()\"\n [isReadOnly]=\"isReadOnly(key)\"\n >\n </ngx-mat-entity-input>\n </div>\n </div>\n\n <div class=\"bottom-row-container\">\n <div class=\"bottom-row container\" style=\"margin-top: 10px;\">\n <button type=\"submit\" (click)=\"edit()\" mat-raised-button\n [disabled]=\"isEntityReadOnly || !isEntityValid || !isEntityDirty\"\n [matBadge]=\"validationErrors.length\"\n [matBadgeHidden]=\"!validationErrors.length\"\n matBadgeColor=\"warn\"\n >\n {{data.editData.confirmButtonLabel}}\n </button>\n <ngx-mat-entity-tooltip *ngIf=\"validationErrors.length\" [tooltipContent]=\"tooltipContent\"></ngx-mat-entity-tooltip>\n </div>\n </div>\n </form>\n\n <br>\n</div>", styles: ["h1{text-align:center}mat-spinner{margin:10px auto}.fa-warning{color:orange}.bottom-row{display:flex;align-items:center;column-gap:10px}.fixed{position:fixed;bottom:0;left:0;right:0;width:100%;z-index:1000;padding:8px 20px;background-color:#fff}.no-entity-tabs{padding:10px;background-color:red;color:#f5f5f5}.header{display:flex;margin-bottom:5px;gap:10px;flex-wrap:wrap}.header button{min-width:150px}.header .save-cancel-container{display:flex;justify-content:flex-start;align-items:center;column-gap:10px;width:calc(50% - 10px)}.header .actions-container{display:flex;justify-content:flex-end;gap:10px;width:calc(50% - 10px)}.unsavedChanges{background-color:#ffe48d}@media (max-width: 800px){.header{margin-bottom:10px;gap:15px}.header button{min-width:0px;width:50%}.header .save-cancel-container,.header .actions-container{width:100%;gap:15px}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i6.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: NgxMatEntityInputModule }, { kind: "component", type: i7.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit", "validEmpty", "isReadOnly"], outputs: ["inputChangeEvent"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i10.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: TooltipComponent, selector: "ngx-mat-entity-tooltip", inputs: ["tooltipContent"] }] });
305
308
  }
306
309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: NgxMatEntityEditPageComponent, decorators: [{
@@ -325,11 +328,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
325
328
  }] }, { type: undefined, decorators: [{
326
329
  type: Inject,
327
330
  args: [NGX_EDIT_DATA]
328
- }] }, { type: i4.HttpClient }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onScroll: [{
331
+ }] }, { type: i4.HttpClient }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
332
+ type: Inject,
333
+ args: [NGX_INTERNAL_GLOBAL_DEFAULT_VALUES]
334
+ }] }]; }, propDecorators: { onScroll: [{
329
335
  type: HostListener,
330
336
  args: ['window:scroll']
331
337
  }], canDeactivate: [{
332
338
  type: HostListener,
333
339
  args: ['window:beforeunload']
334
340
  }] } });
335
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvZWRpdC1wYWdlL2VkaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2VkaXQtcGFnZS9lZGl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxD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QyxlQUFlO2dCQTZCN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uSW5pdCwgUmVuZGVyZXIyLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vZW5jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IGdldFZhbGlkYXRpb25FcnJvcnNUb29sdGlwQ29udGVudCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9nZXQtdmFsaWRhdGlvbi1lcnJvcnMtdG9vbHRpcC1jb250ZW50LmZ1bmN0aW9uLnRzJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlUYWIsIEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy92YWxpZGF0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5tb2R1bGUnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbkludGVybmFsIH0gZnJvbSAnLi4vdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuLi90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kYXRhJztcbmltcG9ydCB7IEVkaXREYXRhIH0gZnJvbSAnLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlRWRpdERhdGFCdWlsZGVyLCBQYWdlRWRpdERhdGFJbnRlcm5hbCB9IGZyb20gJy4vcGFnZS1lZGl0LWRhdGEuYnVpbGRlcic7XG5cbi8qKlxuICogVGhlIGRhdGEgdGhhdCBuZWVkcyB0byBiZSBwcm92aWRlZCBmb3IgYSByb3V0ZSB0byBiZSBhYmxlIHRvIGVkaXQgYSBlbnRpdHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5leHBvcnQgdHlwZSBQYWdlRWRpdERhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IE9taXQ8RWRpdEVudGl0eURhdGE8RW50aXR5VHlwZT4sICdlbnRpdHknIHwgJ0VudGl0eVNlcnZpY2VDbGFzcyc+ICYge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgYSBsb2FkaW5nIHNwaW5uZXIgd2hpbGUgdGhlIGVudGl0eSBmb3IgdGhlIHBhZ2UgaXMgbG9hZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdCBwYWdlLlxuICAgICAqL1xuICAgIGVkaXREYXRhPzogRWRpdERhdGE8RW50aXR5VHlwZT4gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPEVudGl0eVNlcnZpY2U8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5U2VydmljZTxhbnk+PignTkdYX0VESVRfREFUQV9FTlRJVFlfU0VSVklDRScpO1xuLyoqXG4gKiBUaGUgZW50aXR5IGNsYXNzIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9FRElUX0RBVEFfRU5USVRZOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5Q2xhc3NOZXdhYmxlPGFueT4+KCdOR1hfRURJVF9EQVRBX0VOVElUWScpO1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGVkaXQgcGFnZSByb3V0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBOiBJbmplY3Rpb25Ub2tlbjxQYWdlRWRpdERhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUVkaXREYXRhPGFueT4+KCdOR1hfRURJVF9EQVRBJyk7XG5cbi8qKlxuICogQSBnZW5lcmljIHBhZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGVkaXQgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktZWRpdC1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUVkaXRQYWdlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgRW50aXR5VXRpbGl0aWVzOiB0eXBlb2YgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgZW50aXR5VGFicyE6IEVudGl0eVRhYjxFbnRpdHlUeXBlPltdO1xuXG4gICAgZW50aXR5ITogRW50aXR5VHlwZTtcbiAgICBlbnRpdHlQcmlvckNoYW5nZXMhOiBFbnRpdHlUeXBlO1xuXG4gICAgZGF0YSE6IFBhZ2VFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICBpc0VudGl0eVZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBpc0VudGl0eURpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgdG9vbHRpcENvbnRlbnQ6IHN0cmluZyA9ICcnO1xuXG4gICAgaXNFbnRpdHlSZWFkT25seSE6IGJvb2xlYW47XG4gICAgYWxsb3dEZWxldGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpbkNvbmZpcm1OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbnRpdHlEaXJ0eSAmJiB0aGlzLmRhdGEuZWRpdERhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UpXG4gICAgICAgIHJlYWRvbmx5IGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIEBJbmplY3QoTkdYX0VESVRfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfRURJVF9EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGlucHV0IHdpdGggdGhlIGdpdmVuIGtleSBpcyByZWFkb25seS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IGZvciB0aGUgaW5wdXQgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIGlucHV0IGZvciB0aGUga2V5IGlzIHJlYWQgb25seS5cbiAgICAgKi9cbiAgICBpc1JlYWRPbmx5KGtleToga2V5b2YgRW50aXR5VHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFkYXRhOiBQcm9wZXJ0eURlY29yYXRvckNvbmZpZ0ludGVybmFsPHVua25vd24+ID0gRW50aXR5VXRpbGl0aWVzLmdldFByb3BlcnR5TWV0YWRhdGEodGhpcy5lbnRpdHksIGtleSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc0VudGl0eVJlYWRPbmx5IHx8IG1ldGFkYXRhLmlzUmVhZE9ubHkodGhpcy5lbnRpdHkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFBhZ2VFZGl0RGF0YUJ1aWxkZXIodGhpcy5pbnB1dERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBlZGl0IGRhdGEgd2FzIHByb3ZpZGVkIGZvciBcIk5HWF9FRElUX0RBVEFcIi4gWW91IG5lZWQgdG8gcHJvdmlkZSBhIHZhbHVlIGluIHlvdXIgcm91dGVzIHByb3ZpZGVycyBhcnJheS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlkOiBFbnRpdHlUeXBlW2tleW9mIEVudGl0eVR5cGVdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXTtcbiAgICAgICAgY29uc3QgZm91bmRFbnRpdHk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIGlmIChmb3VuZEVudGl0eSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgZW50aXR5IHdpdGggaWQgJHtpZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW50aXR5ID0gbmV3IHRoaXMuRW50aXR5Q2xhc3MoZm91bmRFbnRpdHkpO1xuICAgICAgICB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5lbnRpdHkpO1xuXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRW50aXR5UmVhZE9ubHkgPSAhdGhpcy5kYXRhLmFsbG93VXBkYXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSB0aGlzLmRhdGEuYWxsb3dEZWxldGUodGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5lbnRpdHksIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrT2Zmc2V0KCksIDEpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgYm90dG9tIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGZpeGVkLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrT2Zmc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja09mZnNldCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWTogbnVtYmVyID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVJvdzogSFRNTEVsZW1lbnQgfCBudWxsID0gKHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignLmJvdHRvbS1yb3cnKTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdy1jb250YWluZXInKTtcblxuICAgICAgICBpZiAoYm90dG9tUm93ICYmIGJvdHRvbVJvd0NvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0OiBudW1iZXIgPSBib3R0b21Sb3dDb250YWluZXIub2Zmc2V0VG9wO1xuICAgICAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0OiBudW1iZXIgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChzY3JvbGxZICsgd2luZG93SGVpZ2h0ID49IGJvdHRvbVJvd0NvbnRhaW5lck9mZnNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHBhZ2UgY2FuIGJlIGxlZnQgd2l0aG91dCBjb25maXJtYXRpb24gKG9mIHVuc2F2ZWQgY2hhbmdlcykuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMgfHwgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZW50aXR5IGhhcyBiZWNvbWUgaW52YWxpZCBvciBkaXJ0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVja0VudGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jaGVja0lzRW50aXR5VmFsaWQoKTtcbiAgICAgICAgdGhpcy5pc0VudGl0eURpcnR5ID0gYXdhaXQgRW50aXR5VXRpbGl0aWVzLmlzRGlydHkodGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzLCB0aGlzLmh0dHApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc0VudGl0eVZhbGlkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBWYWxpZGF0aW9uVXRpbGl0aWVzLmdldEVudGl0eVZhbGlkYXRpb25FcnJvcnModGhpcy5lbnRpdHksICd1cGRhdGUnKTtcbiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudCA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBnZXRWYWxpZGF0aW9uRXJyb3JzVG9vbHRpcENvbnRlbnQodGhpcy52YWxpZGF0aW9uRXJyb3JzKSk7XG4gICAgICAgIHRoaXMuaXNFbnRpdHlWYWxpZCA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGVkaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW50aXR5UmVhZE9ubHkgfHwgIXRoaXMuaXNFbnRpdHlWYWxpZCB8fCAhdGhpcy5pc0VudGl0eURpcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuZWRpdERhdGEuZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZGF0YS5lZGl0RGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbJ0RvIHlvdSByZWFsbHkgd2FudCB0byBzYXZlIGFsbCBjaGFuZ2VzPyddKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCAnU2F2ZScpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgJ0VkaXQnKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UudXBkYXRlKHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcykudGhlbigoKSA9PiB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gZGVsZXRlIHRoZSBlbnRpdHkgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREYXRhLmRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRGVsZXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5kYXRhLmVkaXREYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZW50aXR5PyddKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0eXBlJywgJ2RlbGV0ZScpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsICdEZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsICdEZWxldGUnKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1EZWxldGUoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIG5hdmlnYXRlIGJhY2suXG4gICAgICovXG4gICAgbmF2aWdhdGVCYWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuQ29uZmlybU5hdmlnYXRpb25EaWFsb2coKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGNvbmZpcm0gZGlhbG9nIGZvciBuYXZpZ2F0aW5nIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAqIFRoaXMgaXMgZXhwb3NlZCBiZWNhdXNlIHRoZSBVbnNhdmVkQ2hhbmdlc0d1YXJkIG5lZWRzIHRvIGFjY2VzcyB0aGlzLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IG9ic2VydmFibGUgcmVzdWx0IG9mIHRoZSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBvcGVuQ29uZmlybU5hdmlnYXRpb25EaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEuZWRpdERhdGEuY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkucGlwZShmaXJzdCgpLCBtYXAocCA9PiAocCA/PyBmYWxzZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1OYXZpZ2F0ZUJhY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5Db25maXJtTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgIEVudGl0eVV0aWxpdGllcy5yZXNldENoYW5nZXNPbkVudGl0eSh0aGlzLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSdW5zIHRoZSBlZGl0IGFjdGlvbiBvbiB0aGUgZW50aXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIHJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSB0aGlzLmluamVjdG9yLnJ1bkluQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXF1aXJlQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuRWRpdEFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1SdW5FZGl0QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmluamVjdG9yLnJ1bkluQ29udGV4dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNoZWNrRW50aXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbiBFZGl0QWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2UgdGhlIGN1cnJlbnQgZW50cnkgZG9lc24ndCBmdWxsZmlsIHRoZSByZXF1aXJlbWVudHMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBFZGl0QWN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBBY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgZWRpdEFjdGlvbkRpc2FibGVkKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLnJ1bkluQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWFjdGlvbi5lbmFibGVkKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgfSk7XG4gICAgfVxufSIsIjxkaXYgKm5nSWY9XCIhZW50aXR5VGFicyAmJiBkYXRhLmRpc3BsYXlMb2FkaW5nU3Bpbm5lclwiIGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGJyPlxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICAgIDxicj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiZW50aXR5VGFic1wiIGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGJyPlxuXG4gICAgPCEtLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPCEtLS0tLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1jYW5jZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MudW5zYXZlZENoYW5nZXNdPVwiaGFzVW5zYXZlZENoYW5nZXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwibmF2aWdhdGVCYWNrKClcIiBjbGFzcz1cImJhY2stYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7e2RhdGEuZWRpdERhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXdhcm5pbmdcIiAqbmdJZj1cImhhc1Vuc2F2ZWRDaGFuZ2VzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmVkaXREYXRhLmFjdGlvbnMubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgbWF0LXJhaXNlZC1idXR0b24+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmFjdGlvbnNMYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRhdGEuZWRpdERhdGEuYWN0aW9uc1wiIFtkaXNhYmxlZF09XCJlZGl0QWN0aW9uRGlzYWJsZWQoYWN0aW9uKVwiIChjbGljayk9XCJydW5FZGl0QWN0aW9uKGFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICBcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiYWxsb3dEZWxldGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlKClcIiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmRlbGV0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoMT57e2RhdGEuZWRpdERhdGEudGl0bGUoZW50aXR5UHJpb3JDaGFuZ2VzKX19PC9oMT5cblxuICAgIDwhLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDxmb3JtPlxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoID4gMVwiIHByZXNlcnZlQ29udGVudD5cbiAgICAgICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgZW50aXR5VGFic1wiIFtsYWJlbF09XCJ0YWIudGFiTmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYi5yb3dzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiByb3cua2V5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChlbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZW50aXR5LCBrZXksICdtZCcpfX0gY29sLXNtLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzLmxlbmd0aCA8PSAxXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLWVudGl0eS10YWJzXCIgKm5nSWY9XCIhZW50aXR5VGFicy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICBFUlJPUjogTm8gSW5wdXRzLiBEaWQgeW91IGNvcnJlY3RseSBhc3NpZ24gYWxsIHZhbHVlcyBpbiB0aGUgbW9kZWwgY29uc3RydWN0b3I/XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlUYWJzWzBdPy5yb3dzXCI+XG4gICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygcm93LmtleXNcIlxuICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JFZGl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChlbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZW50aXR5LCBrZXksICdtZCcpfX0gY29sLXNtLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHkoa2V5KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJvdyBjb250YWluZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImVkaXQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0VudGl0eVJlYWRPbmx5IHx8ICFpc0VudGl0eVZhbGlkIHx8ICFpc0VudGl0eURpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiF2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZGl0RGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS10b29sdGlwICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIiBbdG9vbHRpcENvbnRlbnRdPVwidG9vbHRpcENvbnRlbnRcIj48L25neC1tYXQtZW50aXR5LXRvb2x0aXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGJyPlxuPC9kaXY+Il19
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvZWRpdC1wYWdlL2VkaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2VkaXQtcGFnZS9lZGl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFjLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMkNBQTJD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LDZCQUE2QjtrQkFqQnpDLFNBQVM7K0JBQ0ksMEJBQTBCLGNBR3hCLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsd0JBQXdCO3dCQUN4QixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3FCQUNuQjs7MEJBaUNJLE1BQU07MkJBQUMsNEJBQTRCOzswQkFFbkMsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUUzQixNQUFNOzJCQUFDLGFBQWE7OzBCQUtwQixNQUFNOzJCQUFDLGtDQUFrQzs0Q0FnRDlDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlO2dCQTZCN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFbnZpcm9ubWVudEluamVjdG9yLCBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9uSW5pdCwgUmVuZGVyZXIyLCBydW5JbkluamVjdGlvbkNvbnRleHQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2Jhc2UvcHJvcGVydHktZGVjb3JhdG9yLWludGVybmFsLmRhdGEnO1xuaW1wb3J0IHsgTkdYX0lOVEVSTkFMX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUyB9IGZyb20gJy4uLy4uL2RlZmF1bHQtZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IExvZGFzaFV0aWxpdGllcyB9IGZyb20gJy4uLy4uL2VuY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBnZXRWYWxpZGF0aW9uRXJyb3JzVG9vbHRpcENvbnRlbnQgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZ2V0LXZhbGlkYXRpb24tZXJyb3JzLXRvb2x0aXAtY29udGVudC5mdW5jdGlvbi50cyc7XG5pbXBvcnQgeyBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWNvbmZpZ3VyYXRpb24tdmFsdWVzJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBFbnRpdHlUYWIsIEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciwgVmFsaWRhdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy92YWxpZGF0aW9uLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YSB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyLCBDb25maXJtRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUgfSBmcm9tICcuLi9pbnB1dC9pbnB1dC5tb2R1bGUnO1xuaW1wb3J0IHsgRWRpdEFjdGlvbkludGVybmFsIH0gZnJvbSAnLi4vdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuLi90YWJsZS9lZGl0LWRpYWxvZy9lZGl0LWVudGl0eS1kYXRhJztcbmltcG9ydCB7IEVkaXREYXRhIH0gZnJvbSAnLi4vdGFibGUvdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYWdlRWRpdERhdGFCdWlsZGVyLCBQYWdlRWRpdERhdGFJbnRlcm5hbCB9IGZyb20gJy4vcGFnZS1lZGl0LWRhdGEuYnVpbGRlcic7XG5cbi8qKlxuICogVGhlIGRhdGEgdGhhdCBuZWVkcyB0byBiZSBwcm92aWRlZCBmb3IgYSByb3V0ZSB0byBiZSBhYmxlIHRvIGVkaXQgYSBlbnRpdHkuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5leHBvcnQgdHlwZSBQYWdlRWRpdERhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiA9IE9taXQ8RWRpdEVudGl0eURhdGE8RW50aXR5VHlwZT4sICdlbnRpdHknIHwgJ0VudGl0eVNlcnZpY2VDbGFzcyc+ICYge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgYSBsb2FkaW5nIHNwaW5uZXIgd2hpbGUgdGhlIGVudGl0eSBmb3IgdGhlIHBhZ2UgaXMgbG9hZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdCBwYWdlLlxuICAgICAqL1xuICAgIGVkaXREYXRhPzogRWRpdERhdGE8RW50aXR5VHlwZT4gJiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRpYWxvZyB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGxlYXZlIHRoZSBzaXRlIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciBvciBub3QgbGVhdmluZyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICAgICAqL1xuICAgICAgICB1bnNhdmVkQ2hhbmdlc1JlcXVpcmVDb25maXJtRGlhbG9nPzogYm9vbGVhblxuICAgIH1cbn07XG5cbi8qKlxuICogVGhlIGVudGl0eSBzZXJ2aWNlIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0U6IEluamVjdGlvblRva2VuPEVudGl0eVNlcnZpY2U8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5U2VydmljZTxhbnk+PignTkdYX0VESVRfREFUQV9FTlRJVFlfU0VSVklDRScpO1xuLyoqXG4gKiBUaGUgZW50aXR5IGNsYXNzIHRoYXQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHByb3ZpZGVycyBhcnJheSBvZiB0aGUgZWRpdCBwYWdlIHJvdXRlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlbiwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IE5HWF9FRElUX0RBVEFfRU5USVRZOiBJbmplY3Rpb25Ub2tlbjxFbnRpdHlDbGFzc05ld2FibGU8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5Q2xhc3NOZXdhYmxlPGFueT4+KCdOR1hfRURJVF9EQVRBX0VOVElUWScpO1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiB0aGF0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIHRoZSBwcm92aWRlcnMgYXJyYXkgb2YgdGhlIGVkaXQgcGFnZSByb3V0ZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjb25zdCBOR1hfRURJVF9EQVRBOiBJbmplY3Rpb25Ub2tlbjxQYWdlRWRpdERhdGE8YW55Pj4gPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFnZUVkaXREYXRhPGFueT4+KCdOR1hfRURJVF9EQVRBJyk7XG5cbi8qKlxuICogQSBnZW5lcmljIHBhZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGVkaXQgYSBzcGVjaWZpYyBlbnRpdHkuXG4gKiBGb3IgdGhpcyB0byB3b3JrIHlvdSBuZWVkIHRvIHByb3ZpZGUgc29tZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktZWRpdC1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9lZGl0LXBhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTWF0VGFic01vZHVsZSxcbiAgICAgICAgTmd4TWF0RW50aXR5SW5wdXRNb2R1bGUsXG4gICAgICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICAgICAgTWF0TWVudU1vZHVsZSxcbiAgICAgICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgICAgIFRvb2x0aXBDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUVkaXRQYWdlQ29tcG9uZW50PEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgRW50aXR5VXRpbGl0aWVzOiB0eXBlb2YgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgZW50aXR5VGFicyE6IEVudGl0eVRhYjxFbnRpdHlUeXBlPltdO1xuXG4gICAgZW50aXR5ITogRW50aXR5VHlwZTtcbiAgICBlbnRpdHlQcmlvckNoYW5nZXMhOiBFbnRpdHlUeXBlO1xuXG4gICAgZGF0YSE6IFBhZ2VFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9yW10gPSBbXTtcbiAgICBpc0VudGl0eVZhbGlkOiBib29sZWFuID0gdHJ1ZTtcbiAgICBpc0VudGl0eURpcnR5OiBib29sZWFuID0gZmFsc2U7XG4gICAgdG9vbHRpcENvbnRlbnQ6IHN0cmluZyA9ICcnO1xuXG4gICAgaXNFbnRpdHlSZWFkT25seSE6IGJvb2xlYW47XG4gICAgYWxsb3dEZWxldGUhOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSBpbkNvbmZpcm1OYXZpZ2F0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGdldCBoYXNVbnNhdmVkQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbnRpdHlEaXJ0eSAmJiB0aGlzLmRhdGEuZWRpdERhdGEudW5zYXZlZENoYW5nZXNSZXF1aXJlQ29uZmlybURpYWxvZztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICBASW5qZWN0KE5HWF9FRElUX0RBVEFfRU5USVRZX1NFUlZJQ0UpXG4gICAgICAgIHJlYWRvbmx5IGVudGl0eVNlcnZpY2U6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIEBJbmplY3QoTkdYX0VESVRfREFUQV9FTlRJVFkpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgRW50aXR5Q2xhc3M6IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgQEluamVjdChOR1hfRURJVF9EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogUGFnZUVkaXREYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZWw6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQEluamVjdChOR1hfSU5URVJOQUxfR0xPQkFMX0RFRkFVTFRfVkFMVUVTKVxuICAgICAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZ2xvYmFsQ29uZmlnOiBOZ3hHbG9iYWxEZWZhdWx0VmFsdWVzXG4gICAgKSB7IH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgd2l0aCB0aGUgZ2l2ZW4ga2V5IGlzIHJlYWRvbmx5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgZm9yIHRoZSBpbnB1dCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgaW5wdXQgZm9yIHRoZSBrZXkgaXMgcmVhZCBvbmx5LlxuICAgICAqL1xuICAgIGlzUmVhZE9ubHkoa2V5OiBrZXlvZiBFbnRpdHlUeXBlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWV0YWRhdGE6IFByb3BlcnR5RGVjb3JhdG9yQ29uZmlnSW50ZXJuYWw8dW5rbm93bj4gPSBFbnRpdHlVdGlsaXRpZXMuZ2V0UHJvcGVydHlNZXRhZGF0YSh0aGlzLmVudGl0eSwga2V5KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzRW50aXR5UmVhZE9ubHkgfHwgbWV0YWRhdGEuaXNSZWFkT25seSh0aGlzLmVudGl0eSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgUGFnZUVkaXREYXRhQnVpbGRlcih0aGlzLmlucHV0RGF0YSwgdGhpcy5nbG9iYWxDb25maWcpLmdldFJlc3VsdCgpO1xuICAgICAgICBpZiAodGhpcy5kYXRhID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBlZGl0IGRhdGEgd2FzIHByb3ZpZGVkIGZvciBcIk5HWF9FRElUX0RBVEFcIi4gWW91IG5lZWQgdG8gcHJvdmlkZSBhIHZhbHVlIGluIHlvdXIgcm91dGVzIHByb3ZpZGVycyBhcnJheS4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlkOiBFbnRpdHlUeXBlW2tleW9mIEVudGl0eVR5cGVdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgYXMgRW50aXR5VHlwZVtrZXlvZiBFbnRpdHlUeXBlXTtcbiAgICAgICAgY29uc3QgZm91bmRFbnRpdHk6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCB0aGlzLmVudGl0eVNlcnZpY2UuZmluZEJ5SWQoaWQpO1xuXG4gICAgICAgIGlmIChmb3VuZEVudGl0eSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgZW50aXR5IHdpdGggaWQgJHtpZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZW50aXR5ID0gbmV3IHRoaXMuRW50aXR5Q2xhc3MoZm91bmRFbnRpdHkpO1xuICAgICAgICB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyA9IExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAodGhpcy5lbnRpdHkpO1xuXG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzRW50aXR5UmVhZE9ubHkgPSAhdGhpcy5kYXRhLmFsbG93VXBkYXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSB0aGlzLmRhdGEuYWxsb3dEZWxldGUodGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRpdHlUYWJzID0gRW50aXR5VXRpbGl0aWVzLmdldEVudGl0eVRhYnModGhpcy5lbnRpdHksIGZhbHNlLCB0cnVlKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrT2Zmc2V0KCksIDEpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2hlY2tJc0VudGl0eVZhbGlkKCksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgYm90dG9tIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGFzIGZpeGVkLlxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIG9uU2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoZWNrT2Zmc2V0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja09mZnNldCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWTogbnVtYmVyID0gd2luZG93LnNjcm9sbFk7XG4gICAgICAgIGNvbnN0IGJvdHRvbVJvdzogSFRNTEVsZW1lbnQgfCBudWxsID0gKHRoaXMuZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignLmJvdHRvbS1yb3cnKTtcbiAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuYm90dG9tLXJvdy1jb250YWluZXInKTtcblxuICAgICAgICBpZiAoYm90dG9tUm93ICYmIGJvdHRvbVJvd0NvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgYm90dG9tUm93Q29udGFpbmVyT2Zmc2V0OiBudW1iZXIgPSBib3R0b21Sb3dDb250YWluZXIub2Zmc2V0VG9wO1xuICAgICAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0OiBudW1iZXIgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIGlmIChzY3JvbGxZICsgd2luZG93SGVpZ2h0ID49IGJvdHRvbVJvd0NvbnRhaW5lck9mZnNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoYm90dG9tUm93LCAnZml4ZWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIHBhZ2UgY2FuIGJlIGxlZnQgd2l0aG91dCBjb25maXJtYXRpb24gKG9mIHVuc2F2ZWQgY2hhbmdlcykuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBjYW4gYmUgbGVmdCB3aXRob3V0IGNvbmZpcm1hdGlvbi5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJylcbiAgICBjYW5EZWFjdGl2YXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMgfHwgdGhpcy5pbkNvbmZpcm1OYXZpZ2F0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZW50aXR5IGhhcyBiZWNvbWUgaW52YWxpZCBvciBkaXJ0eS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGVja0VudGl0eSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5jaGVja0lzRW50aXR5VmFsaWQoKTtcbiAgICAgICAgdGhpcy5pc0VudGl0eURpcnR5ID0gYXdhaXQgRW50aXR5VXRpbGl0aWVzLmlzRGlydHkodGhpcy5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzLCB0aGlzLmh0dHApO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJc0VudGl0eVZhbGlkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBWYWxpZGF0aW9uVXRpbGl0aWVzLmdldEVudGl0eVZhbGlkYXRpb25FcnJvcnModGhpcy5lbnRpdHksICd1cGRhdGUnKTtcbiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudCA9IHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiBnZXRWYWxpZGF0aW9uRXJyb3JzVG9vbHRpcENvbnRlbnQodGhpcy52YWxpZGF0aW9uRXJyb3JzKSk7XG4gICAgICAgIHRoaXMuaXNFbnRpdHlWYWxpZCA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgY2xvc2UgdGhlIGRpYWxvZyBhZnRlcndhcmRzLlxuICAgICAqIEFsc28gaGFuZGxlcyB0aGUgY29uZmlybWF0aW9uIGlmIHJlcXVpcmVkLlxuICAgICAqL1xuICAgIGVkaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRW50aXR5UmVhZE9ubHkgfHwgIXRoaXMuaXNFbnRpdHlWYWxpZCB8fCAhdGhpcy5pc0VudGl0eURpcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRhdGEuZWRpdERhdGEuZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmRhdGEuZWRpdERhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgdGhpcy5nbG9iYWxDb25maWcuY29uZmlybVNhdmVUZXh0KVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCB0aGlzLmdsb2JhbENvbmZpZy5zYXZlTGFiZWwpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgdGhpcy5nbG9iYWxDb25maWcuZWRpdExhYmVsKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmVudGl0eVNlcnZpY2UudXBkYXRlKHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcykudGhlbigoKSA9PiB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gZGVsZXRlIHRoZSBlbnRpdHkgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREYXRhLmRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtRGVsZXRlKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCA9IG5ldyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5nbG9iYWxDb25maWcsIHRoaXMuZGF0YS5lZGl0RGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmNvbmZpcm1EZWxldGVUZXh0KVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0eXBlJywgJ2RlbGV0ZScpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ2NvbmZpcm1CdXR0b25MYWJlbCcsIHRoaXMuZ2xvYmFsQ29uZmlnLmRlbGV0ZUxhYmVsKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuZ2xvYmFsQ29uZmlnLmRlbGV0ZUxhYmVsKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1EZWxldGUoKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5jb25maXJtTmF2aWdhdGVCYWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIG5hdmlnYXRlIGJhY2suXG4gICAgICovXG4gICAgbmF2aWdhdGVCYWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybU5hdmlnYXRlQmFjaygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vcGVuQ29uZmlybU5hdmlnYXRpb25EaWFsb2coKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1OYXZpZ2F0ZUJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIGNvbmZpcm0gZGlhbG9nIGZvciBuYXZpZ2F0aW5nIHdpdGggdW5zYXZlZCBjaGFuZ2VzLlxuICAgICAqIFRoaXMgaXMgZXhwb3NlZCBiZWNhdXNlIHRoZSBVbnNhdmVkQ2hhbmdlc0d1YXJkIG5lZWRzIHRvIGFjY2VzcyB0aGlzLlxuICAgICAqXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IG9ic2VydmFibGUgcmVzdWx0IG9mIHRoZSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBvcGVuQ29uZmlybU5hdmlnYXRpb25EaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLmRhdGEuZWRpdERhdGEuY29uZmlybVVuc2F2ZWRDaGFuZ2VzRGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkucGlwZShmaXJzdCgpLCBtYXAocCA9PiAocCA/PyBmYWxzZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbmZpcm1OYXZpZ2F0ZUJhY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5Db25maXJtTmF2aWdhdGlvbiA9IHRydWU7XG4gICAgICAgIEVudGl0eVV0aWxpdGllcy5yZXNldENoYW5nZXNPbkVudGl0eSh0aGlzLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpO1xuICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSdW5zIHRoZSBlZGl0IGFjdGlvbiBvbiB0aGUgZW50aXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBhY3Rpb24gdG8gcnVuLlxuICAgICAqL1xuICAgIHJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZUNvbmZpcm1EaWFsb2c6IGJvb2xlYW4gPSB0aGlzLmluamVjdG9yLnJ1bkluQ29udGV4dCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXF1aXJlQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuRWRpdEFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIGJvb2xlYW4+ID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAocmVzID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1SdW5FZGl0QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bkVkaXRBY3Rpb24oYWN0aW9uOiBFZGl0QWN0aW9uSW50ZXJuYWw8RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgdm9pZCB0aGlzLmluamVjdG9yLnJ1bkluQ29udGV4dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBhY3Rpb24uYWN0aW9uKHRoaXMuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNoZWNrRW50aXR5KCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhbiBFZGl0QWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2UgdGhlIGN1cnJlbnQgZW50cnkgZG9lc24ndCBmdWxsZmlsIHRoZSByZXF1aXJlbWVudHMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBFZGl0QWN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBBY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICovXG4gICAgZWRpdEFjdGlvbkRpc2FibGVkKGFjdGlvbjogRWRpdEFjdGlvbkludGVybmFsPEVudGl0eVR5cGU+KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4gIWFjdGlvbi5lbmFibGVkKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKSk7XG4gICAgfVxufSIsIjxkaXYgKm5nSWY9XCIhZW50aXR5VGFicyAmJiBkYXRhLmRpc3BsYXlMb2FkaW5nU3Bpbm5lclwiIGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGJyPlxuICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICAgIDxicj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiZW50aXR5VGFic1wiIGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgPGJyPlxuXG4gICAgPCEtLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPCEtLS0tLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2F2ZS1jYW5jZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MudW5zYXZlZENoYW5nZXNdPVwiaGFzVW5zYXZlZENoYW5nZXNcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwibmF2aWdhdGVCYWNrKClcIiBjbGFzcz1cImJhY2stYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICB7e2RhdGEuZWRpdERhdGEuY2FuY2VsQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXdhcm5pbmdcIiAqbmdJZj1cImhhc1Vuc2F2ZWRDaGFuZ2VzXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmVkaXREYXRhLmFjdGlvbnMubGVuZ3RoXCIgdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgbWF0LXJhaXNlZC1idXR0b24+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmFjdGlvbnNMYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGRhdGEuZWRpdERhdGEuYWN0aW9uc1wiIFtkaXNhYmxlZF09XCJlZGl0QWN0aW9uRGlzYWJsZWQoYWN0aW9uKVwiIChjbGljayk9XCJydW5FZGl0QWN0aW9uKGFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICBcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiYWxsb3dEZWxldGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlKClcIiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICAgICAge3tkYXRhLmVkaXREYXRhLmRlbGV0ZUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxoMT57e2RhdGEuZWRpdERhdGEudGl0bGUoZW50aXR5UHJpb3JDaGFuZ2VzKX19PC9oMT5cblxuICAgIDwhLS0tLS0tLS0tLS0+XG4gICAgPCEtLSBJbnB1dCAtLT5cbiAgICA8IS0tLS0tLS0tLS0tPlxuICAgIDxmb3JtPlxuICAgICAgICA8bWF0LXRhYi1ncm91cCAqbmdJZj1cImVudGl0eVRhYnMubGVuZ3RoID4gMVwiIHByZXNlcnZlQ29udGVudD5cbiAgICAgICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgZW50aXR5VGFic1wiIFtsYWJlbF09XCJ0YWIudGFiTmFtZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgcm93IG9mIHRhYi5yb3dzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGtleSBvZiByb3cua2V5c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChlbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZW50aXR5LCBrZXksICdtZCcpfX0gY29sLXNtLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dENoYW5nZUV2ZW50KT1cImNoZWNrRW50aXR5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVhZE9ubHldPVwiaXNSZWFkT25seShrZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJlbnRpdHlUYWJzLmxlbmd0aCA8PSAxXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vLWVudGl0eS10YWJzXCIgKm5nSWY9XCIhZW50aXR5VGFicy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICBFUlJPUjogTm8gSW5wdXRzLiBEaWQgeW91IGNvcnJlY3RseSBhc3NpZ24gYWxsIHZhbHVlcyBpbiB0aGUgbW9kZWwgY29uc3RydWN0b3I/XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlUYWJzWzBdPy5yb3dzXCI+XG4gICAgICAgICAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXkgb2Ygcm93LmtleXNcIlxuICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImVudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9wZXJ0eUtleV09XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JFZGl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e0VudGl0eVV0aWxpdGllcy5nZXRXaWR0aChlbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tFbnRpdHlVdGlsaXRpZXMuZ2V0V2lkdGgoZW50aXR5LCBrZXksICdtZCcpfX0gY29sLXNtLXt7RW50aXR5VXRpbGl0aWVzLmdldFdpZHRoKGVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlRXZlbnQpPVwiY2hlY2tFbnRpdHkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1JlYWRPbmx5XT1cImlzUmVhZE9ubHkoa2V5KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1lbnRpdHktaW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvdHRvbS1yb3ctY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm90dG9tLXJvdyBjb250YWluZXJcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cImVkaXQoKVwiIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0VudGl0eVJlYWRPbmx5IHx8ICFpc0VudGl0eVZhbGlkIHx8ICFpc0VudGl0eURpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlXT1cInZhbGlkYXRpb25FcnJvcnMubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiF2YWxpZGF0aW9uRXJyb3JzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5lZGl0RGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWVudGl0eS10b29sdGlwICpuZ0lmPVwidmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcIiBbdG9vbHRpcENvbnRlbnRdPVwidG9vbHRpcENvbnRlbnRcIj48L25neC1tYXQtZW50aXR5LXRvb2x0aXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGJyPlxuPC9kaXY+Il19