@odx/angular 12.22.2 → 12.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @odx/angular
2
2
 
3
+ ## 12.23.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 706503c: Fixed: clear button cropped on form fields controls
8
+
9
+ ## 12.22.3
10
+
11
+ ### Patch Changes
12
+
13
+ - 86e59a9: Fixed tooltip reapearing on modal close
14
+
3
15
  ## 12.22.2
4
16
 
5
17
  ### Patch Changes
@@ -29,6 +29,7 @@ export declare class ModalService {
29
29
  private readonly openModals;
30
30
  private readonly injector;
31
31
  private readonly dynamicViewService;
32
+ private readonly document;
32
33
  /**
33
34
  * An observable that emits the current value of the openModals subject.
34
35
  *
@@ -34,6 +34,14 @@ export declare class SelectComponent<T = unknown> extends AutocompleteControl<T
34
34
  get selectedOptionContent(): TemplateRef<{
35
35
  $implicit: T | null;
36
36
  }> | string | null;
37
+ /**
38
+ * Helper flag: show selected value when search field is hidden and there's selected content.
39
+ */
40
+ get showSelectedValue(): boolean;
41
+ /**
42
+ * Helper flag: show placeholder when search field is hidden and there's no selected content.
43
+ */
44
+ get showPlaceholder(): boolean;
37
45
  /**
38
46
  * Placeholder text for the select input when no option is selected.
39
47
  *
@@ -18,7 +18,7 @@ export declare class TooltipDirective implements OnInit, OnChanges, OnDestroy {
18
18
  private readonly ngZone;
19
19
  private connectedOverlayRef;
20
20
  private tooltipOptions;
21
- private ignoreBrowserTabSwitchFocus;
21
+ private ignoreNextTooltipTrigger;
22
22
  protected tooltipId: string | null;
23
23
  readonly element: import("@angular/core").ElementRef<HTMLElement>;
24
24
  /**
@@ -1,4 +1,4 @@
1
- import { Location } from '@angular/common';
1
+ import { DOCUMENT, Location } from '@angular/common';
2
2
  import { inject, Injectable, Injector } from '@angular/core';
3
3
  import { DynamicViewService } from '@odx/angular/cdk/dynamic-view';
4
4
  import { deepmerge } from '@odx/angular/internal';
@@ -39,6 +39,7 @@ export class ModalService {
39
39
  this.openModals = new Queue();
40
40
  this.injector = inject(Injector);
41
41
  this.dynamicViewService = inject(DynamicViewService);
42
+ this.document = inject(DOCUMENT);
42
43
  /**
43
44
  * An observable that emits the current value of the openModals subject.
44
45
  *
@@ -102,6 +103,7 @@ export class ModalService {
102
103
  const onDestroy = async () => {
103
104
  dialog?.classList.add('is-hidden');
104
105
  await waitForAnimations(dialog);
106
+ this.document.dispatchEvent(new Event('ODXModalOnBeforeClosed'));
105
107
  dialog?.close();
106
108
  this.openModals.remove(modalRef);
107
109
  viewRef.destroy();
@@ -118,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
118
120
  type: Injectable,
119
121
  args: [{ providedIn: 'root' }]
120
122
  }], ctorParameters: () => [{ type: i1.Location }] });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBc0Msa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUF1RCxRQUFRLEVBQUUsU0FBUyxFQUFhLE1BQU0sVUFBVSxDQUFDOzs7QUFDL0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUVILE1BQU0sT0FBTyxZQUFZO0lBYXZCLFlBQVksUUFBa0I7UUFaYixXQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQztRQUNuQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHVCQUFrQixHQUFHLE1B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Q0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUVGLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEVBQUUsV0FBVyxJQUFJLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBMUdVLFlBQVk7bUhBQVosWUFBWSxjQURDLE1BQU07OzRGQUNuQixZQUFZO2tCQUR4QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50LCBEeW5hbWljVmlld1NlcnZpY2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZGVmZXJGbiwgZ2V0VW5pcXVlSWQsIFF1ZXVlLCB3YWl0Rm9yQW5pbWF0aW9ucyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFzaWNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBwcm92aWRlTW9kYWxSZWYgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RNb2RhbENvbmZpZyB9IGZyb20gJy4vbW9kYWwuY29uZmlnJztcbmltcG9ydCB7IEJhc2ljTW9kYWxPcHRpb25zLCBHZXRNb2RhbEFjdGlvbkRhdGEsIE1vZGFsT3B0aW9ucywgTW9kYWxSZWYsIE1vZGFsU2l6ZSwgTW9kYWxUeXBlIH0gZnJvbSAnLi9tb2RlbHMnO1xuLyoqXG4gKiBTZXJ2aWNlIGZvciBtYW5hZ2luZyBtb2RhbCBkaWFsb2dzIHdpdGhpbiB0aGUgYXBwbGljYXRpb24uIEl0IHN1cHBvcnRzIGNyZWF0aW5nLCBvcGVuaW5nLFxuICogYW5kIGRpc21pc3NpbmcgbW9kYWxzIGR5bmFtaWNhbGx5LCB3aXRoIGNvbXByZWhlbnNpdmUgb3B0aW9ucyBmb3IgY3VzdG9taXphdGlvbiBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKiBVdGlsaXplcyBBbmd1bGFyJ3MgZHluYW1pYyB2aWV3IG1hbmFnZW1lbnQgdG8gaW5zdGFudGlhdGUgYW5kIHJlbmRlciBtb2RhbHMgYXMgbmVlZGVkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gRXhhbXBsZSBvZiB1c2luZyBNb2RhbFNlcnZpY2UgdG8gb3BlbiBhIG1vZGFsXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSB7fVxuICpcbiAqIG9wZW5Nb2RhbCgpIHtcbiAqICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKE15TW9kYWxDb250ZW50Q29tcG9uZW50LCB7XG4gKiAgICAgZGF0YTogeyBzb21lRGF0YTogJ3Rlc3QnIH0sXG4gKiAgICAgc2l6ZTogTW9kYWxTaXplLlNNQUxMLFxuICogICB9KTtcbiAqXG4gKiAgIG1vZGFsUmVmLm9uQ2xvc2UkLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICogICAgIGNvbnNvbGUubG9nKCdNb2RhbCBjbG9zZWQgd2l0aCByZXN1bHQ6JywgcmVzdWx0KTtcbiAqICAgfSk7XG4gKiB9XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZyA9IGluamVjdE1vZGFsQ29uZmlnKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3Blbk1vZGFscyA9IG5ldyBRdWV1ZTxNb2RhbFJlZj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZHluYW1pY1ZpZXdTZXJ2aWNlID0gaW5qZWN0KER5bmFtaWNWaWV3U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb3Blbk1vZGFscyBzdWJqZWN0LlxuICAgKlxuICAgKiBAZW1pdHMge01vZGFsUmVmW119IG9wZW5Nb2RhbHMkIC0gVGhlIGN1cnJlbnQgYXJyYXkgb2Ygb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFscyQgPSB0aGlzLm9wZW5Nb2RhbHMudmFsdWUkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLm9uVXJsQ2hhbmdlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgICBpZiAobW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgbW9kYWxSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBvcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgbW9kYWxSZWYuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vZGFsIHJlZmVyZW5jZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbC5cbiAgICogQHRlbXBsYXRlIFJlc3VsdCBUaGUgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge01vZGFsT3B0aW9uc1snaWQnXX0gaWQgVGhlIElEIG9mIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsfSAtIFRoZSBtb2RhbCByZWZlcmVuY2UgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZDxEYXRhID0gdW5rbm93biwgUmVzdWx0ID0gdW5rbm93bj4oaWQ6IE1vZGFsT3B0aW9uc1snaWQnXSk6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmdldChpZCkgYXMgTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAcGFyYW0ge0RhdGF9IG1vZGFsIC0gVGhlIGJhc2ljIG1vZGFsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+IHwgdW5kZWZpbmVkfSBvcHRpb25zIC0gQWRkaXRpb25hbCBtb2RhbCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGU8RGF0YSBleHRlbmRzIEJhc2ljTW9kYWxPcHRpb25zLCBSZXN1bHQgPSBHZXRNb2RhbEFjdGlvbkRhdGE8RGF0YT4+KG1vZGFsOiBEYXRhLCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIGNyZWF0ZShtb2RhbDogQmFzaWNNb2RhbE9wdGlvbnMsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBNb2RhbFJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbihCYXNpY01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBtb2RhbCxcbiAgICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbnMuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge01vZGFsVHlwZTxULCBEYXRhLCBSZXN1bHQ+IHwgVGVtcGxhdGVSZWY8VD59IGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwsIGVpdGhlciBhcyBhIGBUZW1wbGF0ZVJlZmAgb3IgYSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBtb2RhbCwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBhbmQgY29udHJvbCBvdmVyIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPERhdGEsIFJlc3VsdCwgVD4oY29udGVudDogVGVtcGxhdGVSZWY8VD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQgPSB1bmtub3duPihjb250ZW50OiBNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0Piwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBvcGVuKGNvbnRlbnQ6IE1vZGFsVHlwZTx1bmtub3duPiB8IFRlbXBsYXRlUmVmPHVua25vd24+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM+KTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy5jb25maWcsIHsgaWQ6IGdldFVuaXF1ZUlkKCdvZHgtbW9kYWwnKSB9LCBvcHRpb25zID8/IHt9KSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgaWYgKHRoaXMuZ2V0TW9kYWxCeUlkKG1lcmdlZE9wdGlvbnMuaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTW9kYWwgd2l0aCBJRCAke21lcmdlZE9wdGlvbnMuaWR9IGFscmVhZHkgb3BlbmApO1xuICAgIH1cbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihtZXJnZWRPcHRpb25zLCAocmVmKSA9PiB0aGlzLm9wZW5Nb2RhbHMuaXNGaXJzdChyZWYpKTtcbiAgICB0aGlzLmF0dGFjaE1vZGFsKG1vZGFsUmVmLCBjb250ZW50KTtcbiAgICB0aGlzLm9wZW5Nb2RhbHMuYWRkKG1vZGFsUmVmKTtcbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1vZGFsKG1vZGFsUmVmOiBNb2RhbFJlZiwgY29udGVudDogRXhjbHVkZTxEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLmR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjb250ZXh0OiB7IGNvbnRlbnQgfSxcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlTW9kYWxSZWYobW9kYWxSZWYpXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICBob3N0OiBtb2RhbFJlZi5vcHRpb25zLmhvc3QsXG4gICAgfSk7XG4gICAgY29uc3QgZGlhbG9nID0gdmlld1JlZi5nZXRFbGVtZW50KCkgYXMgSFRNTERpYWxvZ0VsZW1lbnQ7XG4gICAgY29uc3Qgb25EZXN0cm95ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZGlhbG9nPy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JBbmltYXRpb25zKGRpYWxvZyk7XG4gICAgICBkaWFsb2c/LmNsb3NlKCk7XG4gICAgICB0aGlzLm9wZW5Nb2RhbHMucmVtb3ZlKG1vZGFsUmVmKTtcbiAgICAgIHZpZXdSZWYuZGVzdHJveSgpO1xuICAgIH07XG5cbiAgICBtb2RhbFJlZi5vbkRlc3Ryb3kkLnBpcGUoZmluYWxpemUob25EZXN0cm95KSkuc3Vic2NyaWJlKCk7XG4gICAgZGVmZXJGbigoKSA9PiB7XG4gICAgICBkaWFsb2c/LmlzQ29ubmVjdGVkICYmIGRpYWxvZz8uc2hvd01vZGFsKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL21vZGFsL3NyYy9saWIvbW9kYWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQXNDLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBdUQsUUFBUSxFQUFFLFNBQVMsRUFBYSxNQUFNLFVBQVUsQ0FBQzs7O0FBQy9HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWN2QixZQUFZLFFBQWtCO1FBYmIsV0FBTSxHQUFHLGlCQUFpQixFQUFFLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFZLENBQUM7UUFDbkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1Qix1QkFB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QUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxFQUFFLFdBQVcsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTVHVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb250ZW50LCBEeW5hbWljVGV4dENvbnRlbnQsIER5bmFtaWNWaWV3U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWZlckZuLCBnZXRVbmlxdWVJZCwgUXVldWUsIHdhaXRGb3JBbmltYXRpb25zIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNpY01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IHByb3ZpZGVNb2RhbFJlZiB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IGluamVjdE1vZGFsQ29uZmlnIH0gZnJvbSAnLi9tb2RhbC5jb25maWcnO1xuaW1wb3J0IHsgQmFzaWNNb2RhbE9wdGlvbnMsIEdldE1vZGFsQWN0aW9uRGF0YSwgTW9kYWxPcHRpb25zLCBNb2RhbFJlZiwgTW9kYWxTaXplLCBNb2RhbFR5cGUgfSBmcm9tICcuL21vZGVscyc7XG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIG1vZGFsIGRpYWxvZ3Mgd2l0aGluIHRoZSBhcHBsaWNhdGlvbi4gSXQgc3VwcG9ydHMgY3JlYXRpbmcsIG9wZW5pbmcsXG4gKiBhbmQgZGlzbWlzc2luZyBtb2RhbHMgZHluYW1pY2FsbHksIHdpdGggY29tcHJlaGVuc2l2ZSBvcHRpb25zIGZvciBjdXN0b21pemF0aW9uIGFuZCBsaWZlY3ljbGUgbWFuYWdlbWVudC5cbiAqIFV0aWxpemVzIEFuZ3VsYXIncyBkeW5hbWljIHZpZXcgbWFuYWdlbWVudCB0byBpbnN0YW50aWF0ZSBhbmQgcmVuZGVyIG1vZGFscyBhcyBuZWVkZWQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBFeGFtcGxlIG9mIHVzaW5nIE1vZGFsU2VydmljZSB0byBvcGVuIGEgbW9kYWxcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpIHt9XG4gKlxuICogb3Blbk1vZGFsKCkge1xuICogICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oTXlNb2RhbENvbnRlbnRDb21wb25lbnQsIHtcbiAqICAgICBkYXRhOiB7IHNvbWVEYXRhOiAndGVzdCcgfSxcbiAqICAgICBzaXplOiBNb2RhbFNpemUuU01BTEwsXG4gKiAgIH0pO1xuICpcbiAqICAgbW9kYWxSZWYub25DbG9zZSQuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ01vZGFsIGNsb3NlZCB3aXRoIHJlc3VsdDonLCByZXN1bHQpO1xuICogICB9KTtcbiAqIH1cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0TW9kYWxDb25maWcoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcGVuTW9kYWxzID0gbmV3IFF1ZXVlPE1vZGFsUmVmPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkeW5hbWljVmlld1NlcnZpY2UgPSBpbmplY3QoRHluYW1pY1ZpZXdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgLyoqXG4gICAqIEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgb3Blbk1vZGFscyBzdWJqZWN0LlxuICAgKlxuICAgKiBAZW1pdHMge01vZGFsUmVmW119IG9wZW5Nb2RhbHMkIC0gVGhlIGN1cnJlbnQgYXJyYXkgb2Ygb3BlbiBtb2RhbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFscyQgPSB0aGlzLm9wZW5Nb2RhbHMudmFsdWUkO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2F0aW9uOiBMb2NhdGlvbikge1xuICAgIGxvY2F0aW9uLm9uVXJsQ2hhbmdlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgICBpZiAobW9kYWxSZWYub3B0aW9ucy5kaXNtaXNzT25OYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgbW9kYWxSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIGFsbCBvcGVuIG1vZGFscy5cbiAgICovXG4gIHB1YmxpYyBkaXNtaXNzQWxsKCk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgbW9kYWxSZWYgb2YgdGhpcy5vcGVuTW9kYWxzLnRvQXJyYXkoKSkge1xuICAgICAgbW9kYWxSZWYuZGlzbWlzcygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIG1vZGFsIHJlZmVyZW5jZSBieSBpdHMgSUQuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIFRoZSB0eXBlIG9mIGRhdGEgcGFzc2VkIHRvIHRoZSBtb2RhbC5cbiAgICogQHRlbXBsYXRlIFJlc3VsdCBUaGUgdHlwZSBvZiByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIG1vZGFsLlxuICAgKiBAcGFyYW0ge01vZGFsT3B0aW9uc1snaWQnXX0gaWQgVGhlIElEIG9mIHRoZSBtb2RhbC5cbiAgICogQHJldHVybnMge01vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsfSAtIFRoZSBtb2RhbCByZWZlcmVuY2UgaWYgZm91bmQsIG90aGVyd2lzZSBudWxsLlxuICAgKi9cbiAgcHVibGljIGdldE1vZGFsQnlJZDxEYXRhID0gdW5rbm93biwgUmVzdWx0ID0gdW5rbm93bj4oaWQ6IE1vZGFsT3B0aW9uc1snaWQnXSk6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5vcGVuTW9kYWxzLmdldChpZCkgYXMgTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIG9wdGlvbnMuXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAcGFyYW0ge0RhdGF9IG1vZGFsIC0gVGhlIGJhc2ljIG1vZGFsIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7UGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+IHwgdW5kZWZpbmVkfSBvcHRpb25zIC0gQWRkaXRpb25hbCBtb2RhbCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gVGhlIHJlZmVyZW5jZSB0byB0aGUgY3JlYXRlZCBtb2RhbC5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGU8RGF0YSBleHRlbmRzIEJhc2ljTW9kYWxPcHRpb25zLCBSZXN1bHQgPSBHZXRNb2RhbEFjdGlvbkRhdGE8RGF0YT4+KG1vZGFsOiBEYXRhLCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM8RGF0YT4+KTogTW9kYWxSZWY8RGF0YSwgUmVzdWx0PjtcbiAgcHVibGljIGNyZWF0ZShtb2RhbDogQmFzaWNNb2RhbE9wdGlvbnMsIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnMpOiBNb2RhbFJlZiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbihCYXNpY01vZGFsQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiBtb2RhbCxcbiAgICAgIHNpemU6IE1vZGFsU2l6ZS5TTUFMTCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbnMuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBEYXRhIC0gVGhlIHR5cGUgb2YgZGF0YSBwYXNzZWQgdG8gdGhlIG1vZGFsIGZvciB1c2UgaW4gaXRzIGNvbnRlbnQuXG4gICAqIEB0ZW1wbGF0ZSBSZXN1bHQgLSBUaGUgdHlwZSBvZiByZXN1bHQgZXhwZWN0ZWQgd2hlbiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKiBAdGVtcGxhdGUgVCAtIFRoZSBjb250ZW50IHR5cGUgb2YgdGhlIG1vZGFsLCBlaXRoZXIgYSBgVGVtcGxhdGVSZWZgIG9yIGEgY29tcG9uZW50LlxuICAgKiBAcGFyYW0ge01vZGFsVHlwZTxULCBEYXRhLCBSZXN1bHQ+IHwgVGVtcGxhdGVSZWY8VD59IGNvbnRlbnQgLSBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwsIGVpdGhlciBhcyBhIGBUZW1wbGF0ZVJlZmAgb3IgYSBjb21wb25lbnQgdHlwZS5cbiAgICogQHBhcmFtIHtQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj59IFtvcHRpb25zXSAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIG1vZGFsLlxuICAgKiBAcmV0dXJucyB7TW9kYWxSZWY8RGF0YSwgUmVzdWx0Pn0gQSByZWZlcmVuY2UgdG8gdGhlIG5ld2x5IG9wZW5lZCBtb2RhbCwgYWxsb3dpbmcgaW50ZXJhY3Rpb24gd2l0aCBhbmQgY29udHJvbCBvdmVyIHRoZSBtb2RhbCBpbnN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBvcGVuPERhdGEsIFJlc3VsdCwgVD4oY29udGVudDogVGVtcGxhdGVSZWY8VD4sIG9wdGlvbnM/OiBQYXJ0aWFsPE1vZGFsT3B0aW9uczxEYXRhPj4pOiBNb2RhbFJlZjxEYXRhLCBSZXN1bHQ+O1xuICBwdWJsaWMgb3BlbjxEYXRhLCBSZXN1bHQsIFQgPSB1bmtub3duPihjb250ZW50OiBNb2RhbFR5cGU8VCwgRGF0YSwgUmVzdWx0Piwgb3B0aW9ucz86IFBhcnRpYWw8TW9kYWxPcHRpb25zPERhdGE+Pik6IE1vZGFsUmVmPERhdGEsIFJlc3VsdD47XG4gIHB1YmxpYyBvcGVuKGNvbnRlbnQ6IE1vZGFsVHlwZTx1bmtub3duPiB8IFRlbXBsYXRlUmVmPHVua25vd24+LCBvcHRpb25zPzogUGFydGlhbDxNb2RhbE9wdGlvbnM+KTogTW9kYWxSZWYge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy5jb25maWcsIHsgaWQ6IGdldFVuaXF1ZUlkKCdvZHgtbW9kYWwnKSB9LCBvcHRpb25zID8/IHt9KSBhcyBNb2RhbE9wdGlvbnM7XG4gICAgaWYgKHRoaXMuZ2V0TW9kYWxCeUlkKG1lcmdlZE9wdGlvbnMuaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgTW9kYWwgd2l0aCBJRCAke21lcmdlZE9wdGlvbnMuaWR9IGFscmVhZHkgb3BlbmApO1xuICAgIH1cbiAgICBjb25zdCBtb2RhbFJlZiA9IG5ldyBNb2RhbFJlZihtZXJnZWRPcHRpb25zLCAocmVmKSA9PiB0aGlzLm9wZW5Nb2RhbHMuaXNGaXJzdChyZWYpKTtcbiAgICB0aGlzLmF0dGFjaE1vZGFsKG1vZGFsUmVmLCBjb250ZW50KTtcbiAgICB0aGlzLm9wZW5Nb2RhbHMuYWRkKG1vZGFsUmVmKTtcbiAgICByZXR1cm4gbW9kYWxSZWY7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaE1vZGFsKG1vZGFsUmVmOiBNb2RhbFJlZiwgY29udGVudDogRXhjbHVkZTxEeW5hbWljQ29udGVudCwgRHluYW1pY1RleHRDb250ZW50Pik6IHZvaWQge1xuICAgIGNvbnN0IHZpZXdSZWYgPSB0aGlzLmR5bmFtaWNWaWV3U2VydmljZS5jcmVhdGVWaWV3KE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBjb250ZXh0OiB7IGNvbnRlbnQgfSxcbiAgICAgIGluamVjdG9yOiBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICBwcm92aWRlcnM6IFtwcm92aWRlTW9kYWxSZWYobW9kYWxSZWYpXSxcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgfSksXG4gICAgICBob3N0OiBtb2RhbFJlZi5vcHRpb25zLmhvc3QsXG4gICAgfSk7XG4gICAgY29uc3QgZGlhbG9nID0gdmlld1JlZi5nZXRFbGVtZW50KCkgYXMgSFRNTERpYWxvZ0VsZW1lbnQ7XG4gICAgY29uc3Qgb25EZXN0cm95ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgZGlhbG9nPy5jbGFzc0xpc3QuYWRkKCdpcy1oaWRkZW4nKTtcbiAgICAgIGF3YWl0IHdhaXRGb3JBbmltYXRpb25zKGRpYWxvZyk7XG4gICAgICB0aGlzLmRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJykpO1xuICAgICAgZGlhbG9nPy5jbG9zZSgpO1xuICAgICAgdGhpcy5vcGVuTW9kYWxzLnJlbW92ZShtb2RhbFJlZik7XG4gICAgICB2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICB9O1xuXG4gICAgbW9kYWxSZWYub25EZXN0cm95JC5waXBlKGZpbmFsaXplKG9uRGVzdHJveSkpLnN1YnNjcmliZSgpO1xuICAgIGRlZmVyRm4oKCkgPT4ge1xuICAgICAgZGlhbG9nPy5pc0Nvbm5lY3RlZCAmJiBkaWFsb2c/LnNob3dNb2RhbCgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -4,6 +4,7 @@ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Con
4
4
  import { ODX_IDENTITY_MATCHER } from '@odx/angular';
5
5
  import { AutocompleteControl, ODX_SEARCH_FILTER_HOST } from '@odx/angular/cdk/autocomplete-control';
6
6
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
7
+ import { ActionGroupComponent } from '@odx/angular/components/action-group';
7
8
  import { CheckboxModule } from '@odx/angular/components/checkbox';
8
9
  import { DropdownDirective } from '@odx/angular/components/dropdown';
9
10
  import { IconComponent } from '@odx/angular/components/icon';
@@ -95,6 +96,18 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
95
96
  get selectedOptionContent() {
96
97
  return this.selectedOption ? (this.selectedOptionTemplate ?? this.selectedOptionText) : null;
97
98
  }
99
+ /**
100
+ * Helper flag: show selected value when search field is hidden and there's selected content.
101
+ */
102
+ get showSelectedValue() {
103
+ return !this.searchField?.isVisible() && !!this.selectedOptionContent;
104
+ }
105
+ /**
106
+ * Helper flag: show placeholder when search field is hidden and there's no selected content.
107
+ */
108
+ get showPlaceholder() {
109
+ return !this.searchField?.isVisible() && !this.selectedOptionContent;
110
+ }
98
111
  ngAfterViewInit() {
99
112
  if (!this.options)
100
113
  return;
@@ -269,7 +282,7 @@ let SelectComponent = class SelectComponent extends AutocompleteControl {
269
282
  provide: ODX_SEARCH_FILTER_HOST,
270
283
  useExisting: SELECT_CONTROL,
271
284
  },
272
- ], queries: [{ propertyName: "searchField", first: true, predicate: SelectInputControlDirective, descendants: true }, { propertyName: "options", predicate: SelectOptionComponent, descendants: true }], viewQueries: [{ propertyName: "selectAllDirective", first: true, predicate: SelectAllDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (selectedOptionContent && !searchField?.isVisible()) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\" />\n @if (clearable()) {\n <odx-icon class=\"odx-select__clear\" name=\"close\" iconSet=\"core\" (click)=\"resetValue($event)\" />\n }\n </div>\n } @else if (!searchField?.isVisible()) {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n <ng-content select=\"[odxSelectSearchField]\" />\n\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\" />\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n @if (hasSelectAll() && multiple) {\n <div odxSelectAll (click)=\"clickSelectAll($event)\" class=\"odx-option odx-option--select-all\">\n <odx-checkbox [indeterminate]=\"isIndeterminateSelection()\" [checked]=\"allOptionSelected()\">{{ hasSelectAllText() }}</odx-checkbox>\n </div>\n }\n <ng-content />\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\" />\n </odx-select-option>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: SelectOptionComponent, selector: "odx-select-option, odx-option", inputs: ["notFoundMessage", "disabled"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i2.CheckboxComponent, selector: "odx-checkbox", inputs: ["indeterminate"], outputs: ["indeterminateChange"] }, { kind: "directive", type: SelectAllDirective, selector: "[odxSelectAll]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
285
+ ], queries: [{ propertyName: "searchField", first: true, predicate: SelectInputControlDirective, descendants: true }, { propertyName: "options", predicate: SelectOptionComponent, descendants: true }], viewQueries: [{ propertyName: "selectAllDirective", first: true, predicate: SelectAllDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (showSelectedValue) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\" />\n </div>\n } @else if (showPlaceholder) {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n\n <ng-content select=\"[odxSelectSearchField]\" />\n\n <odx-action-group class=\"odx-no-margin\">\n @if (clearable() && showSelectedValue) {\n <button class=\"odx-select__clear\" odxButton (click)=\"resetValue($event)\" type=\"button\">\n <odx-icon name=\"close\" iconSet=\"core\" />\n </button>\n }\n <button odxButton type=\"button\">\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\" />\n </button>\n </odx-action-group>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n @if (hasSelectAll() && multiple) {\n <div odxSelectAll (click)=\"clickSelectAll($event)\" class=\"odx-option odx-option--select-all\">\n <odx-checkbox [indeterminate]=\"isIndeterminateSelection()\" [checked]=\"allOptionSelected()\">{{ hasSelectAllText() }}</odx-checkbox>\n </div>\n }\n <ng-content />\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\" />\n </odx-select-option>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: DropdownDirective, selector: "[odxDropdown]", inputs: ["odxDropdown", "odxDropdownDisabled", "odxDropdownShowLoader", "odxDropdownClickOutsideActive", "odxDropdownOptions", "odxDropdownReferenceElement", "odxDropdownTriggerElement", "odxDropdownHost", "odxDropdownOpenTrigger", "odxDropdownCloseTrigger"], outputs: ["odxDropdownBeforeOpen", "odxDropdownAfterOpen", "odxDropdownBeforeClose", "odxDropdownAfterClose"], exportAs: ["odxDropdown"] }, { kind: "component", type: ActionGroupComponent, selector: "odx-action-group", inputs: ["reverse"] }, { kind: "component", type: IconComponent, selector: "odx-icon", inputs: ["inline", "size", "name", "iconSet", "identifier"] }, { kind: "directive", type: DynamicViewDirective, selector: "ng-template[odxDynamicView]", inputs: ["odxDynamicView", "odxDynamicViewInjector", "odxDynamicViewContext"] }, { kind: "component", type: SelectOptionComponent, selector: "odx-select-option, odx-option", inputs: ["notFoundMessage", "disabled"] }, { kind: "ngmodule", type: LoadingSpinnerModule }, { kind: "directive", type: i1.DisabledController, selector: "[disabled]", inputs: ["disabled"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i2.CheckboxComponent, selector: "odx-checkbox", inputs: ["indeterminate"], outputs: ["indeterminateChange"] }, { kind: "directive", type: SelectAllDirective, selector: "[odxSelectAll]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
273
286
  };
274
287
  __decorate([
275
288
  CSSModifier(),
@@ -281,7 +294,16 @@ SelectComponent = __decorate([
281
294
  export { SelectComponent };
282
295
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectComponent, decorators: [{
283
296
  type: Component,
284
- args: [{ standalone: true, selector: 'odx-select', imports: [DropdownDirective, IconComponent, DynamicViewDirective, SelectOptionComponent, LoadingSpinnerModule, CheckboxModule, SelectAllDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
297
+ args: [{ standalone: true, selector: 'odx-select', imports: [
298
+ DropdownDirective,
299
+ ActionGroupComponent,
300
+ IconComponent,
301
+ DynamicViewDirective,
302
+ SelectOptionComponent,
303
+ LoadingSpinnerModule,
304
+ CheckboxModule,
305
+ SelectAllDirective,
306
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
285
307
  {
286
308
  provide: SELECT_CONTROL,
287
309
  useExisting: forwardRef(() => SelectComponent),
@@ -293,7 +315,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
293
315
  ], host: {
294
316
  '[tabindex]': 'isDisabled || searchField ? -1 : 0',
295
317
  '[attr.aria-multiselectable]': 'multiple',
296
- }, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (selectedOptionContent && !searchField?.isVisible()) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\" />\n @if (clearable()) {\n <odx-icon class=\"odx-select__clear\" name=\"close\" iconSet=\"core\" (click)=\"resetValue($event)\" />\n }\n </div>\n } @else if (!searchField?.isVisible()) {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n <ng-content select=\"[odxSelectSearchField]\" />\n\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\" />\n</div>\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n @if (hasSelectAll() && multiple) {\n <div odxSelectAll (click)=\"clickSelectAll($event)\" class=\"odx-option odx-option--select-all\">\n <odx-checkbox [indeterminate]=\"isIndeterminateSelection()\" [checked]=\"allOptionSelected()\">{{ hasSelectAllText() }}</odx-checkbox>\n </div>\n }\n <ng-content />\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\" />\n </odx-select-option>\n }\n </div>\n</ng-template>\n" }]
318
+ }, template: "<div\n aria-haspopup=\"listbox\"\n class=\"odx-select__trigger\"\n [odxDropdown]=\"dropdownContent\"\n [odxDropdownDisabled]=\"isDisabled || isReadonly\"\n [odxDropdownOptions]=\"{ matchReferenceWidth: true, offset: 4, outerPadding: 10, position: 'bottom-start' }\"\n [odxDropdownReferenceElement]=\"dropdownReferenceElement\"\n [odxDropdownShowLoader]=\"isLoading\"\n (odxDropdownBeforeOpen)=\"onDropdownOpen()\"\n (odxDropdownAfterOpen)=\"onDropdownOpened()\"\n (odxDropdownBeforeClose)=\"onDropdownClose()\"\n (odxDropdownAfterClose)=\"onDropdownClosed()\"\n>\n @if (showSelectedValue) {\n <div class=\"odx-select__value\">\n <ng-template [odxDynamicView]=\"selectedOptionContent\" [odxDynamicViewContext]=\"{ $implicit: value }\" />\n </div>\n } @else if (showPlaceholder) {\n <div class=\"odx-select__placeholder\">\n {{ placeholder }}\n </div>\n }\n\n <ng-content select=\"[odxSelectSearchField]\" />\n\n <odx-action-group class=\"odx-no-margin\">\n @if (clearable() && showSelectedValue) {\n <button class=\"odx-select__clear\" odxButton (click)=\"resetValue($event)\" type=\"button\">\n <odx-icon name=\"close\" iconSet=\"core\" />\n </button>\n }\n <button odxButton type=\"button\">\n <odx-icon class=\"odx-select__indicator\" name=\"chevron-down\" iconSet=\"core\" />\n </button>\n </odx-action-group>\n</div>\n\n<ng-template #dropdownContent>\n <div class=\"odx-dropdown__option-list\" role=\"listbox\">\n @if (hasOptions) {\n @if (hasSelectAll() && multiple) {\n <div odxSelectAll (click)=\"clickSelectAll($event)\" class=\"odx-option odx-option--select-all\">\n <odx-checkbox [indeterminate]=\"isIndeterminateSelection()\" [checked]=\"allOptionSelected()\">{{ hasSelectAllText() }}</odx-checkbox>\n </div>\n }\n <ng-content />\n } @else {\n <odx-select-option disabled notFoundMessage>\n <ng-template [odxDynamicView]=\"searchField?.notFoundContent\" />\n </odx-select-option>\n }\n </div>\n</ng-template>\n" }]
297
319
  }], propDecorators: { options: [{
298
320
  type: ContentChildren,
299
321
  args: [SelectOptionComponent, { descendants: true, emitDistinctChangesOnly: true }]
@@ -319,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
319
341
  type: HostListener,
320
342
  args: ['keydown', ['$event']]
321
343
  }] } });
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3NlbGVjdC9zcmMvbGliL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENB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QixZQUFZO3VCQUFDLDJCQUEyQjtnQkFtQmxDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBbUNDLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFVL0Isc0JBQXNCO3NCQUQ1QixLQUFLO2dCQWVDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBNEZJLHFCQUFxQjtzQkFGOUIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUNoQyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLCBIaWdobGlnaHRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZGVudGl0eU1hdGNoZXIsIE9EWF9JREVOVElUWV9NQVRDSEVSIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbnRyb2wsIE9EWF9TRUFSQ0hfRklMVEVSX0hPU1QgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2F1dG9jb21wbGV0ZS1jb250cm9sJztcbmltcG9ydCB7IER5bmFtaWNWaWV3RGlyZWN0aXZlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9keW5hbWljLXZpZXcnO1xuaW1wb3J0IHsgQ2hlY2tib3hNb2R1bGUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9jaGVja2JveCc7XG5pbXBvcnQgeyBEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IExvYWRpbmdTcGlubmVyTW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCB7IENTU0NvbXBvbmVudCwgQ1NTTW9kaWZpZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuaW1wb3J0IHsgZnJvbVF1ZXJ5TGlzdCB9IGZyb20gJ0BvZHgvYW5ndWxhci9yeGpzJztcbmltcG9ydCB7IGRlZmVyRm4gfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IFNlbGVjdEFsbERpcmVjdGl2ZSwgU2VsZWN0SW5wdXRDb250cm9sRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFNFTEVDVF9DT05UUk9MIH0gZnJvbSAnLi9zZWxlY3QudG9rZW5zJztcblxuLyoqXG4gKiBTZWxlY3RDb21wb25lbnQgcHJvdmlkZXMgYW4gYWR2YW5jZWQgZHJvcGRvd24gbGlzdCB0aGF0IHN1cHBvcnRzIGF1dG9jb21wbGV0ZSwgbXVsdGlwbGUgc2VsZWN0aW9uLFxuICogYW5kIGFjY2Vzc2liaWxpdHkgZmVhdHVyZXMuIEl0IGV4dGVuZHMgQXV0b2NvbXBsZXRlQ29udHJvbCBmb3Igc2VhbWxlc3MgaW50ZWdyYXRpb24gd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHNlbGVjdGVkIGluIHRoZSBzZWxlY3QuXG4gKlxuICogQHNlZSB7QXV0b2NvbXBsZXRlQ29udHJvbH1cbiAqL1xuQENTU0NvbXBvbmVudCgnc2VsZWN0JylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1zZWxlY3QnLFxuICBpbXBvcnRzOiBbRHJvcGRvd25EaXJlY3RpdmUsIEljb25Db21wb25lbnQsIER5bmFtaWNWaWV3RGlyZWN0aXZlLCBTZWxlY3RPcHRpb25Db21wb25lbnQsIExvYWRpbmdTcGlubmVyTW9kdWxlLCBDaGVja2JveE1vZHVsZSwgU2VsZWN0QWxsRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTRUxFQ1RfQ09OVFJPTCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPRFhfU0VBUkNIX0ZJTFRFUl9IT1NULFxuICAgICAgdXNlRXhpc3Rpbmc6IFNFTEVDVF9DT05UUk9MLFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW3RhYmluZGV4XSc6ICdpc0Rpc2FibGVkIHx8IHNlYXJjaEZpZWxkID8gLTEgOiAwJyxcbiAgICAnW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdJzogJ211bHRpcGxlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgPSB1bmtub3duPiBleHRlbmRzIEF1dG9jb21wbGV0ZUNvbnRyb2w8VCB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbjogU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvblRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VsZWN0T3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlLCBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgb3B0aW9ucz86IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4+O1xuXG4gIEBWaWV3Q2hpbGQoU2VsZWN0QWxsRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgc2VsZWN0QWxsRGlyZWN0aXZlPzogU2VsZWN0QWxsRGlyZWN0aXZlO1xuXG4gIHByb3RlY3RlZCBpc0luZGV0ZXJtaW5hdGVTZWxlY3Rpb24gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBhbGxPcHRpb25TZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZSBtYW5hZ2luZyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkIHdpdGhpbiB0aGUgc2VsZWN0LlxuICAgKlxuICAgKiBAdHlwZSB7U2VsZWN0SW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChTZWxlY3RJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBzZWFyY2hGaWVsZD86IFNlbGVjdElucHV0Q29udHJvbERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9uIGZvciBkaXNwbGF5LiBUaGlzIGNhbiBiZSBhIHRlbXBsYXRlIG9yIHBsYWluIHRleHQuXG4gICAqXG4gICAqIEB0eXBlIHtUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB8IG51bGwgfT4gfCBzdHJpbmcgfCBudWxsfVxuICAgKi9cbiAgcHVibGljIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfCBudWxsIH0+IHwgc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyAodGhpcy5zZWxlY3RlZE9wdGlvblRlbXBsYXRlID8/IHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUGxhY2Vob2xkZXIgdGV4dCBmb3IgdGhlIHNlbGVjdCBpbnB1dCB3aGVuIG5vIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCB0aGUgc2VsZWN0IHdpbGwgZGlzcGxheSBhIHJlc2V0IGJ1dHRvbi5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWMgY2xlYXJhYmxlID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byB0cnVlLCB0aGUgc2VsZWN0IHdpbGwgZGlzcGxheSBhIHNlbGVjdCBhbGwgYnV0dG9uLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYyBoYXNTZWxlY3RBbGwgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFRleHQgdG8gZGlzcGxheSBmb3IgdGhlIHNlbGVjdCBhbGwgYnV0dG9uLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCAnU2VsZWN0IGFsbCdcbiAgICovXG4gIHB1YmxpYyBoYXNTZWxlY3RBbGxUZXh0ID0gaW5wdXQoJ1NlbGVjdCBhbGwnKTtcblxuICAvKipcbiAgICogU2V0cyB3aGV0aGVyIG11bHRpcGxlIG9wdGlvbnMgY2FuIGJlIHNlbGVjdGVkLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBDU1NNb2RpZmllcigpXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogQ3VzdG9tIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBzZWxlY3RlZCBvcHRpb24uXG4gICAqXG4gICAqIEB0eXBlIHtUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB9PiB8IG51bGx9XG4gICAqIEBkZWZhdWx0IG51bGxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZE9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfT4gfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHR3byBvcHRpb25zIGFyZSBpZGVudGljYWwsIHVzZWZ1bCBmb3IgZGV0ZWN0aW5nIGNoYW5nZXMgaW4gc2VsZWN0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7SWRlbnRpdHlNYXRjaGVyPFQgfCBudWxsPn1cbiAgICogQGRlZmF1bHQgT0RYX0RFRkFVTFRfSURFTlRJVFlfTUFUQ0hFUlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiAoaXRlbTEsIGl0ZW0yKSA9PiBpdGVtMS5pZCA9PT0gaXRlbTIuaWRcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRlbnRpdHlNYXRjaGVyOiBJZGVudGl0eU1hdGNoZXI8VCB8IG51bGw+ID0gaW5qZWN0KE9EWF9JREVOVElUWV9NQVRDSEVSKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcHRpb25zKSByZXR1cm47XG4gICAgdGhpcy5oYW5kbGVRdWVyeUxpc3RPcHRpb24odGhpcy5vcHRpb25zKTtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaEZpZWxkQ2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0IGNoYW5nZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIFRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHN1cGVyLnJlZ2lzdGVyT25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgICBmbih2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhIGdpdmVuIG9wdGlvbiBhbmQgdXBkYXRlcyB0aGUgY29tcG9uZW50J3MgdmFsdWUgYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9uQ29tcG9uZW50PFQgfCBUW10+IHwgbnVsbH0gb3B0aW9uIFRoZSBvcHRpb24gdG8gc2VsZWN0LlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHB1YmxpYyBzZWxlY3RPcHRpb24ob3B0aW9uPzogU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQgfCBUW10+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChvcHRpb24gJiYgIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgb3B0aW9uLnN3aXRjaENoZWNrYm94KCk7XG4gICAgICB0aGlzLnNlbGVjdEFsbEhhbmRsZXIoKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IHRoaXMubXVsdGlwbGVTZWxlY3RWYWx1ZVJlc29sdmVyKG9wdGlvbiBhcyBTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4pIDogb3B0aW9uLnZhbHVlO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgodmFsdWUgYXMgVCkgPz8gbnVsbCk7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGVkLmVtaXQob3B0aW9uLnZhbHVlIGFzIFQpO1xuICAgIH1cblxuICAgICF0aGlzLm11bHRpcGxlICYmICFvcHRpb24/LmRpc2FibGVkICYmIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbkNvbXBvbmVudDxUIHwgVFtdPn0gb3B0aW9uIFRoZSBvcHRpb24gdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqL1xuICBwdWJsaWMgaXNPcHRpb25TZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbkNvbXBvbmVudDxUIHwgVFtdPik6IGJvb2xlYW4ge1xuICAgIGlmIChvcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlIGFzIFRbXSkuc29tZSgodmFsKSA9PiB0aGlzLmlkZW50aXR5TWF0Y2hlcihvcHRpb24udmFsdWUgYXMgVCwgdmFsKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5pZGVudGl0eU1hdGNoZXIob3B0aW9uLnZhbHVlIGFzIFQsIHRoaXMudmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW5pdEtleU1hbmFnZXIob3B0aW9uczogSGlnaGxpZ2h0YWJsZVtdKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPEhpZ2hsaWdodGFibGU+KG9wdGlvbnMpLndpdGhIb21lQW5kRW5kKCkuc2tpcFByZWRpY2F0ZSgoaXRlbSkgPT4gISFpdGVtLmRpc2FibGVkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVRdWVyeUxpc3RPcHRpb24ob3B0aW9uczogUXVlcnlMaXN0PFNlbGVjdE9wdGlvbkNvbXBvbmVudDxUPj4pOiB2b2lkIHtcbiAgICBmcm9tUXVlcnlMaXN0KG9wdGlvbnMpXG4gICAgICAucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgZGVmZXJGbigoKSA9PiB0aGlzLmFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVNlYXJjaEZpZWxkQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZpZWxkPy52YWx1ZUNoYW5nZSQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50cmlnZ2VyQ29udHJvbGxlckNoYW5nZSgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjbGlja1NlbGVjdEFsbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5yZWFkb25seUNvbnRyb2xsZXI/LnJlYWRvbmx5IHx8ICF0aGlzLmlzT3BlbikgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucz8udG9BcnJheSgpLmZpbHRlcigob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IG9wdGlvbnMuZXZlcnkoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpO1xuICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICBpZiAoYWxsU2VsZWN0ZWQgfHwgIW9wdGlvbi5pc1NlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3RBbGxIYW5kbGVyKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBwcm90ZWN0ZWQgaGFuZGxlQ29udHJvbGxlckV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nIHx8IHRoaXMucmVhZG9ubHlDb250cm9sbGVyPy5yZWFkb25seSB8fCAhdGhpcy5pc09wZW4pIHJldHVybjtcbiAgICBpZiAodGhpcy5oYXNPcHRpb25zICYmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnVGFiJykpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGlmICh0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0gaW5zdGFuY2VvZiBTZWxlY3RBbGxEaXJlY3RpdmUpIHJldHVybiB0aGlzLmNsaWNrU2VsZWN0QWxsKGV2ZW50KTtcbiAgICAgIHRoaXMuc2VsZWN0T3B0aW9uKHRoaXMua2V5TWFuYWdlcj8uYWN0aXZlSXRlbSBhcyBTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4gfCB1bmRlZmluZWQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWN0aXZhdGVTZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlSW5kZXggPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKS5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQgJiYgIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKCFhY3RpdmVJbmRleCB8fCBhY3RpdmVJbmRleCA9PT0gLTEpIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCkuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpID8/IC0xO1xuICAgIH1cbiAgICB0aGlzLmtleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oYWN0aXZlSW5kZXgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uRHJvcGRvd25PcGVuKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uRHJvcGRvd25PcGVuKCk7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8uaXNWaXNpYmxlLnNldCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbkRyb3Bkb3duQ2xvc2UoKTogdm9pZCB7XG4gICAgc3VwZXIub25Ecm9wZG93bkNsb3NlKCk7XG4gICAgaWYgKHRoaXMuc2VhcmNoRmllbGQ/LmlzVmlzaWJsZSgpKSB7XG4gICAgICB0aGlzLnNlYXJjaEZpZWxkPy5pc1Zpc2libGUuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc2VhcmNoRmllbGQ/LnJlc2V0KCk7XG4gICAgICB0aGlzLnNlYXJjaEZpZWxkPy5ibHVyKCk7XG4gICAgfVxuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50Py5ibHVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Ecm9wZG93bk9wZW5lZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbkRyb3Bkb3duT3BlbmVkKCk7XG4gICAgaWYgKHRoaXMub3B0aW9ucykge1xuICAgICAgY29uc3QgaGlnaGxpZ2h0YWJsZU9wdGlvbnMgPSB0aGlzLnNlbGVjdEFsbERpcmVjdGl2ZSA/IFt0aGlzLnNlbGVjdEFsbERpcmVjdGl2ZSwgLi4udGhpcy5vcHRpb25zLnRvQXJyYXkoKV0gOiB0aGlzLm9wdGlvbnMudG9BcnJheSgpO1xuICAgICAgdGhpcy5pbml0S2V5TWFuYWdlcihoaWdobGlnaHRhYmxlT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uRHJvcGRvd25DbG9zZWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25Ecm9wZG93bkNsb3NlZCgpO1xuICAgIHRoaXMuc2VhcmNoRmllbGQ/LnJlc2V0KCk7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0VmFsdWUoZTogRXZlbnQpOiB2b2lkIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb3B0aW9ucz8uZmluZCgob3B0aW9uKSA9PiBvcHRpb24uaXNTZWxlY3RlZCkgPz8gbnVsbDtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLm9wdGlvbnM/LmZvckVhY2goKG9wdGlvbikgPT4gKG9wdGlvbi5pc1NlbGVjdGVkID0gdGhpcy5pc09wdGlvblNlbGVjdGVkKG9wdGlvbikpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0ID1cbiAgICAgICAgb3B0aW9uc1xuICAgICAgICAgID8uZmlsdGVyKCh7IGlzU2VsZWN0ZWQgfSkgPT4gaXNTZWxlY3RlZClcbiAgICAgICAgICAubWFwKChvcHRpb24pID0+IHRoaXMuc3RyaW5naWZ5Py4ob3B0aW9uLnZhbHVlKSA/PyBvcHRpb24uZ2V0TGFiZWwoKSlcbiAgICAgICAgICAuam9pbignLCAnKSA/PyBudWxsO1xuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvblRleHQgPSB0aGlzLnNlbGVjdGVkT3B0aW9uID8gKHRoaXMuc3RyaW5naWZ5Py4odGhpcy5zZWxlY3RlZE9wdGlvbj8udmFsdWUpID8/IHRoaXMuc2VsZWN0ZWRPcHRpb24uZ2V0TGFiZWwoKSkgOiBudWxsO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtdWx0aXBsZVNlbGVjdFZhbHVlUmVzb2x2ZXIob3B0aW9uOiBTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4pOiBUIHtcbiAgICBsZXQgdmFsdWUgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gKHRoaXMudmFsdWUgYXMgVFtdKSA6IFtdO1xuICAgIGlmIChvcHRpb24uaXNTZWxlY3RlZCkge1xuICAgICAgKHZhbHVlIGFzIFRbXSkgPSBbLi4uKHZhbHVlIGFzIFRbXSksIG9wdGlvbi52YWx1ZSBhcyBUXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5maWx0ZXIoKHZhbCkgPT4gIXRoaXMuaWRlbnRpdHlNYXRjaGVyKG9wdGlvbi52YWx1ZSBhcyBULCB2YWwpKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlIGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbEhhbmRsZXIoKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucz8udG9BcnJheSgpLmZpbHRlcigob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKTtcbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcbiAgICBjb25zdCBhbGxTZWxlY3RlZCA9IG9wdGlvbnMuZXZlcnkoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpO1xuICAgIHRoaXMuaXNJbmRldGVybWluYXRlU2VsZWN0aW9uLnNldCghYWxsU2VsZWN0ZWQgJiYgb3B0aW9ucy5zb21lKChvcHRpb24pID0+IG9wdGlvbi5pc1NlbGVjdGVkKSk7XG4gICAgdGhpcy5hbGxPcHRpb25TZWxlY3RlZC5zZXQoYWxsU2VsZWN0ZWQpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgY2xhc3M9XCJvZHgtc2VsZWN0X190cmlnZ2VyXCJcbiAgW29keERyb3Bkb3duXT1cImRyb3Bkb3duQ29udGVudFwiXG4gIFtvZHhEcm9wZG93bkRpc2FibGVkXT1cImlzRGlzYWJsZWQgfHwgaXNSZWFkb25seVwiXG4gIFtvZHhEcm9wZG93bk9wdGlvbnNdPVwieyBtYXRjaFJlZmVyZW5jZVdpZHRoOiB0cnVlLCBvZmZzZXQ6IDQsIG91dGVyUGFkZGluZzogMTAsIHBvc2l0aW9uOiAnYm90dG9tLXN0YXJ0JyB9XCJcbiAgW29keERyb3Bkb3duUmVmZXJlbmNlRWxlbWVudF09XCJkcm9wZG93blJlZmVyZW5jZUVsZW1lbnRcIlxuICBbb2R4RHJvcGRvd25TaG93TG9hZGVyXT1cImlzTG9hZGluZ1wiXG4gIChvZHhEcm9wZG93bkJlZm9yZU9wZW4pPVwib25Ecm9wZG93bk9wZW4oKVwiXG4gIChvZHhEcm9wZG93bkFmdGVyT3Blbik9XCJvbkRyb3Bkb3duT3BlbmVkKClcIlxuICAob2R4RHJvcGRvd25CZWZvcmVDbG9zZSk9XCJvbkRyb3Bkb3duQ2xvc2UoKVwiXG4gIChvZHhEcm9wZG93bkFmdGVyQ2xvc2UpPVwib25Ecm9wZG93bkNsb3NlZCgpXCJcbj5cbiAgQGlmIChzZWxlY3RlZE9wdGlvbkNvbnRlbnQgJiYgIXNlYXJjaEZpZWxkPy5pc1Zpc2libGUoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJvZHgtc2VsZWN0X192YWx1ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJzZWxlY3RlZE9wdGlvbkNvbnRlbnRcIiBbb2R4RHluYW1pY1ZpZXdDb250ZXh0XT1cInsgJGltcGxpY2l0OiB2YWx1ZSB9XCIgLz5cbiAgICAgIEBpZiAoY2xlYXJhYmxlKCkpIHtcbiAgICAgICAgPG9keC1pY29uIGNsYXNzPVwib2R4LXNlbGVjdF9fY2xlYXJcIiBuYW1lPVwiY2xvc2VcIiBpY29uU2V0PVwiY29yZVwiIChjbGljayk9XCJyZXNldFZhbHVlKCRldmVudClcIiAvPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9IEBlbHNlIGlmICghc2VhcmNoRmllbGQ/LmlzVmlzaWJsZSgpKSB7XG4gICAgPGRpdiBjbGFzcz1cIm9keC1zZWxlY3RfX3BsYWNlaG9sZGVyXCI+XG4gICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgIDwvZGl2PlxuICB9XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhTZWxlY3RTZWFyY2hGaWVsZF1cIiAvPlxuXG4gIDxvZHgtaWNvbiBjbGFzcz1cIm9keC1zZWxlY3RfX2luZGljYXRvclwiIG5hbWU9XCJjaGV2cm9uLWRvd25cIiBpY29uU2V0PVwiY29yZVwiIC8+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Db250ZW50PlxuICA8ZGl2IGNsYXNzPVwib2R4LWRyb3Bkb3duX19vcHRpb24tbGlzdFwiIHJvbGU9XCJsaXN0Ym94XCI+XG4gICAgQGlmIChoYXNPcHRpb25zKSB7XG4gICAgICBAaWYgKGhhc1NlbGVjdEFsbCgpICYmIG11bHRpcGxlKSB7XG4gICAgICAgIDxkaXYgb2R4U2VsZWN0QWxsIChjbGljayk9XCJjbGlja1NlbGVjdEFsbCgkZXZlbnQpXCIgY2xhc3M9XCJvZHgtb3B0aW9uIG9keC1vcHRpb24tLXNlbGVjdC1hbGxcIj5cbiAgICAgICAgICA8b2R4LWNoZWNrYm94IFtpbmRldGVybWluYXRlXT1cImlzSW5kZXRlcm1pbmF0ZVNlbGVjdGlvbigpXCIgW2NoZWNrZWRdPVwiYWxsT3B0aW9uU2VsZWN0ZWQoKVwiPnt7IGhhc1NlbGVjdEFsbFRleHQoKSB9fTwvb2R4LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8b2R4LXNlbGVjdC1vcHRpb24gZGlzYWJsZWQgbm90Rm91bmRNZXNzYWdlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW29keER5bmFtaWNWaWV3XT1cInNlYXJjaEZpZWxkPy5ub3RGb3VuZENvbnRlbnRcIiAvPlxuICAgICAgPC9vZHgtc2VsZWN0LW9wdGlvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3NlbGVjdC9zcmMvbGliL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zZWxlY3Qvc3JjL2xpYi9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBaUIsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW1CLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBRWpEOzs7Ozs7O0dBT0c7QUFpQ0ksSUFBTSxlQUFlLEdBQXJCLE1BQU0sZUFBNkIsU0FBUSxtQkFBNkI7SUFBeEU7O1FBQ0ssbUJBQWMsR0FBb0MsSUFBSSxDQUFDO1FBQ3ZELHVCQUFrQixHQUFrQixJQUFJLENBQUM7UUFRekMsNkJBQXdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQWlDNUM7Ozs7O1dBS0c7UUFFSSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUV4Qjs7Ozs7V0FLRztRQUNJLGNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUVqRTs7Ozs7V0FLRztRQUNJLGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDSSxxQkFBZ0IsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFOUM7Ozs7O1dBS0c7UUFHSSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXhCOzs7OztXQUtHO1FBRUksMkJBQXNCLEdBQTBDLElBQUksQ0FBQztRQUU1RTs7Ozs7Ozs7OztXQVVHO1FBRUksb0JBQWUsR0FBOEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7S0FxTGxGO0lBNVFDOzs7O09BSUc7SUFDSCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdkUsQ0FBQztJQW9FZSxlQUFlO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDYSxnQkFBZ0IsQ0FBQyxFQUE2QjtRQUM1RCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxNQUE4QztRQUNoRSxJQUFJLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQWtDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNsSCxJQUFJLENBQUMsV0FBVyxDQUFFLEtBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBVSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGdCQUFnQixDQUFDLE1BQXNDO1FBQzVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsT0FBUSxJQUFJLENBQUMsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekYsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRWtCLGNBQWMsQ0FBQyxPQUF3QjtRQUN4RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksMEJBQTBCLENBQWdCLE9BQU8sQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBRVMscUJBQXFCLENBQUMsT0FBNEM7UUFDMUUsYUFBYSxDQUFDLE9BQU8sQ0FBQzthQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDL0IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRVMsd0JBQXdCO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFFUyxjQUFjLENBQUMsS0FBWTtRQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNoRixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLElBQUksV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFJUyxxQkFBcUIsQ0FBQyxLQUFvQjtRQUNsRCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNoRixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLFlBQVksa0JBQWtCO2dCQUFFLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBa0QsQ0FBQyxDQUFDO1lBQ3ZGLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVTLHNCQUFzQjtRQUM5QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFa0IsY0FBYztRQUMvQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFa0IsZUFBZTtRQUNoQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVrQixnQkFBZ0I7UUFDakMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JJLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVrQixnQkFBZ0I7UUFDakMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRVMsVUFBVSxDQUFDLENBQVE7UUFDM0IsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUUzRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLGtCQUFrQjtnQkFDckIsT0FBTztvQkFDTCxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQztxQkFDdkMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztxQkFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztZQUV4QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDeEksSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sMkJBQTJCLENBQUMsTUFBZ0M7UUFDbEUsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixLQUFhLEdBQUcsQ0FBQyxHQUFJLEtBQWEsRUFBRSxNQUFNLENBQUMsS0FBVSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDO1FBQ0QsT0FBTyxLQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQzsrR0FqU1UsZUFBZTttR0FBZixlQUFlLHV1QkFxRk4sZ0JBQWdCLDhpQkFwR3pCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGNBQWM7Z0JBQ3ZCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO2FBQy9DO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsV0FBVyxFQUFFLGNBQWM7YUFDNUI7U0FDRixtRUF5QmEsMkJBQTJCLDZEQWZ4QixxQkFBcUIsb0dBRzNCLGtCQUFrQix1RUNqRi9CLDhnRUFxREEsNENETkksaUJBQWlCLHdjQUNqQixvQkFBb0Isa0ZBQ3BCLGFBQWEsa0hBQ2Isb0JBQW9CLHVKQUNwQixxQkFBcUIsa0hBQ3JCLG9CQUFvQixnSUFDcEIsY0FBYyx5S0FDZCxrQkFBa0I7O0FBMEdiO0lBRk4sV0FBVyxFQUFFOztpREFFVTtBQXRGYixlQUFlO0lBaEMzQixZQUFZLENBQUMsUUFBUSxDQUFDO0dBZ0NWLGVBQWUsQ0FrUzNCOzs0RkFsU1ksZUFBZTtrQkEvQjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksV0FDYjt3QkFDUCxpQkFBaUI7d0JBQ2pCLG9CQUFvQjt3QkFDcEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkIsaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUM7eUJBQy9DO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsRUFBRSxjQUFjO3lCQUM1QjtxQkFDRixRQUNLO3dCQUNKLFlBQVksRUFBRSxvQ0FBb0M7d0JBQ2xELDZCQUE2QixFQUFFLFVBQVU7cUJBQzFDOzhCQU9TLE9BQU87c0JBRGhCLGVBQWU7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRTtnQkFJbEYsa0JBQWtCO3NCQUQzQixTQUFTO3VCQUFDLGtCQUFrQjtnQkFhdEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQywyQkFBMkI7Z0JBaUNsQyxXQUFXO3NCQURqQixLQUFLO2dCQW1DQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBVS9CLHNCQUFzQjtzQkFENUIsS0FBSztnQkFlQyxlQUFlO3NCQURyQixLQUFLO2dCQTRGSSxxQkFBcUI7c0JBRjlCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDaEMsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciwgSGlnaGxpZ2h0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0LFxuICBRdWVyeUxpc3QsXG4gIHNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWRlbnRpdHlNYXRjaGVyLCBPRFhfSURFTlRJVFlfTUFUQ0hFUiB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb250cm9sLCBPRFhfU0VBUkNIX0ZJTFRFUl9IT1NUIH0gZnJvbSAnQG9keC9hbmd1bGFyL2Nkay9hdXRvY29tcGxldGUtY29udHJvbCc7XG5pbXBvcnQgeyBEeW5hbWljVmlld0RpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvZHluYW1pYy12aWV3JztcbmltcG9ydCB7IEFjdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvYWN0aW9uLWdyb3VwJztcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvY2hlY2tib3gnO1xuaW1wb3J0IHsgRHJvcGRvd25EaXJlY3RpdmUgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQG9keC9hbmd1bGFyL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBMb2FkaW5nU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIENTU01vZGlmaWVyIH0gZnJvbSAnQG9keC9hbmd1bGFyL2ludGVybmFsJztcbmltcG9ydCB7IGZyb21RdWVyeUxpc3QgfSBmcm9tICdAb2R4L2FuZ3VsYXIvcnhqcyc7XG5pbXBvcnQgeyBkZWZlckZuIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTZWxlY3RBbGxEaXJlY3RpdmUsIFNlbGVjdElucHV0Q29udHJvbERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBTRUxFQ1RfQ09OVFJPTCB9IGZyb20gJy4vc2VsZWN0LnRva2Vucyc7XG5cbi8qKlxuICogU2VsZWN0Q29tcG9uZW50IHByb3ZpZGVzIGFuIGFkdmFuY2VkIGRyb3Bkb3duIGxpc3QgdGhhdCBzdXBwb3J0cyBhdXRvY29tcGxldGUsIG11bHRpcGxlIHNlbGVjdGlvbixcbiAqIGFuZCBhY2Nlc3NpYmlsaXR5IGZlYXR1cmVzLiBJdCBleHRlbmRzIEF1dG9jb21wbGV0ZUNvbnRyb2wgZm9yIHNlYW1sZXNzIGludGVncmF0aW9uIHdpdGggQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBzZWxlY3RlZCBpbiB0aGUgc2VsZWN0LlxuICpcbiAqIEBzZWUge0F1dG9jb21wbGV0ZUNvbnRyb2x9XG4gKi9cbkBDU1NDb21wb25lbnQoJ3NlbGVjdCcpXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdvZHgtc2VsZWN0JyxcbiAgaW1wb3J0czogW1xuICAgIERyb3Bkb3duRGlyZWN0aXZlLFxuICAgIEFjdGlvbkdyb3VwQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgRHluYW1pY1ZpZXdEaXJlY3RpdmUsXG4gICAgU2VsZWN0T3B0aW9uQ29tcG9uZW50LFxuICAgIExvYWRpbmdTcGlubmVyTW9kdWxlLFxuICAgIENoZWNrYm94TW9kdWxlLFxuICAgIFNlbGVjdEFsbERpcmVjdGl2ZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTRUxFQ1RfQ09OVFJPTCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBPRFhfU0VBUkNIX0ZJTFRFUl9IT1NULFxuICAgICAgdXNlRXhpc3Rpbmc6IFNFTEVDVF9DT05UUk9MLFxuICAgIH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW3RhYmluZGV4XSc6ICdpc0Rpc2FibGVkIHx8IHNlYXJjaEZpZWxkID8gLTEgOiAwJyxcbiAgICAnW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdJzogJ211bHRpcGxlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgPSB1bmtub3duPiBleHRlbmRzIEF1dG9jb21wbGV0ZUNvbnRyb2w8VCB8IG51bGw+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvbjogU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQ+IHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBzZWxlY3RlZE9wdGlvblRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VsZWN0T3B0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlLCBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuICBwcm90ZWN0ZWQgb3B0aW9ucz86IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4+O1xuXG4gIEBWaWV3Q2hpbGQoU2VsZWN0QWxsRGlyZWN0aXZlKVxuICBwcm90ZWN0ZWQgc2VsZWN0QWxsRGlyZWN0aXZlPzogU2VsZWN0QWxsRGlyZWN0aXZlO1xuXG4gIHByb3RlY3RlZCBpc0luZGV0ZXJtaW5hdGVTZWxlY3Rpb24gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBhbGxPcHRpb25TZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZSBtYW5hZ2luZyB0aGUgc2VhcmNoIGlucHV0IGZpZWxkIHdpdGhpbiB0aGUgc2VsZWN0LlxuICAgKlxuICAgKiBAdHlwZSB7U2VsZWN0SW5wdXRDb250cm9sRGlyZWN0aXZlIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChTZWxlY3RJbnB1dENvbnRyb2xEaXJlY3RpdmUpXG4gIHB1YmxpYyBzZWFyY2hGaWVsZD86IFNlbGVjdElucHV0Q29udHJvbERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgb3B0aW9uIGZvciBkaXNwbGF5LiBUaGlzIGNhbiBiZSBhIHRlbXBsYXRlIG9yIHBsYWluIHRleHQuXG4gICAqXG4gICAqIEB0eXBlIHtUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogVCB8IG51bGwgfT4gfCBzdHJpbmcgfCBudWxsfVxuICAgKi9cbiAgcHVibGljIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfCBudWxsIH0+IHwgc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb24gPyAodGhpcy5zZWxlY3RlZE9wdGlvblRlbXBsYXRlID8/IHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0KSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZsYWc6IHNob3cgc2VsZWN0ZWQgdmFsdWUgd2hlbiBzZWFyY2ggZmllbGQgaXMgaGlkZGVuIGFuZCB0aGVyZSdzIHNlbGVjdGVkIGNvbnRlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNob3dTZWxlY3RlZFZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWFyY2hGaWVsZD8uaXNWaXNpYmxlKCkgJiYgISF0aGlzLnNlbGVjdGVkT3B0aW9uQ29udGVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZmxhZzogc2hvdyBwbGFjZWhvbGRlciB3aGVuIHNlYXJjaCBmaWVsZCBpcyBoaWRkZW4gYW5kIHRoZXJlJ3Mgbm8gc2VsZWN0ZWQgY29udGVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgc2hvd1BsYWNlaG9sZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWFyY2hGaWVsZD8uaXNWaXNpYmxlKCkgJiYgIXRoaXMuc2VsZWN0ZWRPcHRpb25Db250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIHRleHQgZm9yIHRoZSBzZWxlY3QgaW5wdXQgd2hlbiBubyBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBkZWZhdWx0ICcnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCB3aWxsIGRpc3BsYXkgYSByZXNldCBidXR0b24uXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHVibGljIGNsZWFyYWJsZSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gdHJ1ZSwgdGhlIHNlbGVjdCB3aWxsIGRpc3BsYXkgYSBzZWxlY3QgYWxsIGJ1dHRvbi5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWMgaGFzU2VsZWN0QWxsID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGRpc3BsYXkgZm9yIHRoZSBzZWxlY3QgYWxsIGJ1dHRvbi5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQGRlZmF1bHQgJ1NlbGVjdCBhbGwnXG4gICAqL1xuICBwdWJsaWMgaGFzU2VsZWN0QWxsVGV4dCA9IGlucHV0KCdTZWxlY3QgYWxsJyk7XG5cbiAgLyoqXG4gICAqIFNldHMgd2hldGhlciBtdWx0aXBsZSBvcHRpb25zIGNhbiBiZSBzZWxlY3RlZC5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBAQ1NTTW9kaWZpZXIoKVxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0ZW1wbGF0ZSBmb3IgZGlzcGxheWluZyB0aGUgc2VsZWN0ZWQgb3B0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7VGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFQgfT4gfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRPcHRpb25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBUIH0+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gb3B0aW9ucyBhcmUgaWRlbnRpY2FsLCB1c2VmdWwgZm9yIGRldGVjdGluZyBjaGFuZ2VzIGluIHNlbGVjdGlvbi5cbiAgICpcbiAgICogQHR5cGUge0lkZW50aXR5TWF0Y2hlcjxUIHwgbnVsbD59XG4gICAqIEBkZWZhdWx0IE9EWF9ERUZBVUxUX0lERU5USVRZX01BVENIRVJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogKGl0ZW0xLCBpdGVtMikgPT4gaXRlbTEuaWQgPT09IGl0ZW0yLmlkXG4gICAqIGBgYFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkZW50aXR5TWF0Y2hlcjogSWRlbnRpdHlNYXRjaGVyPFQgfCBudWxsPiA9IGluamVjdChPRFhfSURFTlRJVFlfTUFUQ0hFUik7XG5cbiAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucykgcmV0dXJuO1xuICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0T3B0aW9uKHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy5oYW5kbGVTZWFyY2hGaWVsZENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdCBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBzdXBlci5yZWdpc3Rlck9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbigpO1xuICAgICAgZm4odmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBnaXZlbiBvcHRpb24gYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbkNvbXBvbmVudDxUIHwgVFtdPiB8IG51bGx9IG9wdGlvbiBUaGUgb3B0aW9uIHRvIHNlbGVjdC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0T3B0aW9uKG9wdGlvbj86IFNlbGVjdE9wdGlvbkNvbXBvbmVudDxUIHwgVFtdPiB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAob3B0aW9uICYmICFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgIG9wdGlvbi5zd2l0Y2hDaGVja2JveCgpO1xuICAgICAgdGhpcy5zZWxlY3RBbGxIYW5kbGVyKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMubXVsdGlwbGUgPyB0aGlzLm11bHRpcGxlU2VsZWN0VmFsdWVSZXNvbHZlcihvcHRpb24gYXMgU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQ+KSA6IG9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoKHZhbHVlIGFzIFQpID8/IG51bGwpO1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSBhcyBUKTtcbiAgICB9XG5cbiAgICAhdGhpcy5tdWx0aXBsZSAmJiAhb3B0aW9uPy5kaXNhYmxlZCAmJiB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb25Db21wb25lbnQ8VCB8IFRbXT59IG9wdGlvbiBUaGUgb3B0aW9uIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgcHVibGljIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uOiBTZWxlY3RPcHRpb25Db21wb25lbnQ8VCB8IFRbXT4pOiBib29sZWFuIHtcbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZSBhcyBUW10pLnNvbWUoKHZhbCkgPT4gdGhpcy5pZGVudGl0eU1hdGNoZXIob3B0aW9uLnZhbHVlIGFzIFQsIHZhbCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlNYXRjaGVyKG9wdGlvbi52YWx1ZSBhcyBULCB0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGluaXRLZXlNYW5hZ2VyKG9wdGlvbnM6IEhpZ2hsaWdodGFibGVbXSk6IHZvaWQge1xuICAgIHRoaXMua2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxIaWdobGlnaHRhYmxlPihvcHRpb25zKS53aXRoSG9tZUFuZEVuZCgpLnNraXBQcmVkaWNhdGUoKGl0ZW0pID0+ICEhaXRlbS5kaXNhYmxlZCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlUXVlcnlMaXN0T3B0aW9uKG9wdGlvbnM6IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ8VD4+KTogdm9pZCB7XG4gICAgZnJvbVF1ZXJ5TGlzdChvcHRpb25zKVxuICAgICAgLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9uKCk7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIGRlZmVyRm4oKCkgPT4gdGhpcy5hY3RpdmF0ZVNlbGVjdGVkT3B0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVTZWFyY2hGaWVsZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hGaWVsZD8udmFsdWVDaGFuZ2UkLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMudHJpZ2dlckNvbnRyb2xsZXJDaGFuZ2UoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xpY2tTZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNMb2FkaW5nIHx8IHRoaXMucmVhZG9ubHlDb250cm9sbGVyPy5yZWFkb25seSB8fCAhdGhpcy5pc09wZW4pIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKS5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBvcHRpb25zLmV2ZXJ5KChvcHRpb24pID0+IG9wdGlvbi5pc1NlbGVjdGVkKTtcbiAgICBvcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgaWYgKGFsbFNlbGVjdGVkIHx8ICFvcHRpb24uaXNTZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNlbGVjdE9wdGlvbihvcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc2VsZWN0QWxsSGFuZGxlcigpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRyb2xsZXJFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZyB8fCB0aGlzLnJlYWRvbmx5Q29udHJvbGxlcj8ucmVhZG9ubHkgfHwgIXRoaXMuaXNPcGVuKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaGFzT3B0aW9ucyAmJiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1RhYicpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAodGhpcy5rZXlNYW5hZ2VyPy5hY3RpdmVJdGVtIGluc3RhbmNlb2YgU2VsZWN0QWxsRGlyZWN0aXZlKSByZXR1cm4gdGhpcy5jbGlja1NlbGVjdEFsbChldmVudCk7XG4gICAgICB0aGlzLnNlbGVjdE9wdGlvbih0aGlzLmtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0gYXMgU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQ+IHwgdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjdGl2YXRlU2VsZWN0ZWRPcHRpb24oKTogdm9pZCB7XG4gICAgbGV0IGFjdGl2ZUluZGV4ID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCkuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5pc1NlbGVjdGVkICYmICFvcHRpb24uZGlzYWJsZWQpO1xuICAgIGlmICghYWN0aXZlSW5kZXggfHwgYWN0aXZlSW5kZXggPT09IC0xKSB7XG4gICAgICBhY3RpdmVJbmRleCA9IHRoaXMub3B0aW9ucz8udG9BcnJheSgpLmZpbmRJbmRleCgob3B0aW9uKSA9PiAhb3B0aW9uLmRpc2FibGVkKSA/PyAtMTtcbiAgICB9XG4gICAgdGhpcy5rZXlNYW5hZ2VyPy5zZXRBY3RpdmVJdGVtKGFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbkRyb3Bkb3duT3BlbigpOiB2b2lkIHtcbiAgICBzdXBlci5vbkRyb3Bkb3duT3BlbigpO1xuICAgIHRoaXMuc2VhcmNoRmllbGQ/LmlzVmlzaWJsZS5zZXQodHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgb25Ecm9wZG93bkNsb3NlKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uRHJvcGRvd25DbG9zZSgpO1xuICAgIGlmICh0aGlzLnNlYXJjaEZpZWxkPy5pc1Zpc2libGUoKSkge1xuICAgICAgdGhpcy5zZWFyY2hGaWVsZD8uaXNWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICB0aGlzLnNlYXJjaEZpZWxkPy5yZXNldCgpO1xuICAgICAgdGhpcy5zZWFyY2hGaWVsZD8uYmx1cigpO1xuICAgIH1cbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudD8uYmx1cigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uRHJvcGRvd25PcGVuZWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25Ecm9wZG93bk9wZW5lZCgpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGhpZ2hsaWdodGFibGVPcHRpb25zID0gdGhpcy5zZWxlY3RBbGxEaXJlY3RpdmUgPyBbdGhpcy5zZWxlY3RBbGxEaXJlY3RpdmUsIC4uLnRoaXMub3B0aW9ucy50b0FycmF5KCldIDogdGhpcy5vcHRpb25zLnRvQXJyYXkoKTtcbiAgICAgIHRoaXMuaW5pdEtleU1hbmFnZXIoaGlnaGxpZ2h0YWJsZU9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbkRyb3Bkb3duQ2xvc2VkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uRHJvcGRvd25DbG9zZWQoKTtcbiAgICB0aGlzLnNlYXJjaEZpZWxkPy5yZXNldCgpO1xuICAgIHRoaXMua2V5TWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXNldFZhbHVlKGU6IEV2ZW50KTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZE9wdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zPy50b0FycmF5KCk7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9wdGlvbnM/LmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLmlzU2VsZWN0ZWQpID8/IG51bGw7XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5vcHRpb25zPy5mb3JFYWNoKChvcHRpb24pID0+IChvcHRpb24uaXNTZWxlY3RlZCA9IHRoaXMuaXNPcHRpb25TZWxlY3RlZChvcHRpb24pKSk7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uVGV4dCA9XG4gICAgICAgIG9wdGlvbnNcbiAgICAgICAgICA/LmZpbHRlcigoeyBpc1NlbGVjdGVkIH0pID0+IGlzU2VsZWN0ZWQpXG4gICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiB0aGlzLnN0cmluZ2lmeT8uKG9wdGlvbi52YWx1ZSkgPz8gb3B0aW9uLmdldExhYmVsKCkpXG4gICAgICAgICAgLmpvaW4oJywgJykgPz8gbnVsbDtcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25UZXh0ID0gdGhpcy5zZWxlY3RlZE9wdGlvbiA/ICh0aGlzLnN0cmluZ2lmeT8uKHRoaXMuc2VsZWN0ZWRPcHRpb24/LnZhbHVlKSA/PyB0aGlzLnNlbGVjdGVkT3B0aW9uLmdldExhYmVsKCkpIDogbnVsbDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbXVsdGlwbGVTZWxlY3RWYWx1ZVJlc29sdmVyKG9wdGlvbjogU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQ+KTogVCB7XG4gICAgbGV0IHZhbHVlID0gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/ICh0aGlzLnZhbHVlIGFzIFRbXSkgOiBbXTtcbiAgICBpZiAob3B0aW9uLmlzU2VsZWN0ZWQpIHtcbiAgICAgICh2YWx1ZSBhcyBUW10pID0gWy4uLih2YWx1ZSBhcyBUW10pLCBvcHRpb24udmFsdWUgYXMgVF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gdmFsdWUuZmlsdGVyKCh2YWwpID0+ICF0aGlzLmlkZW50aXR5TWF0Y2hlcihvcHRpb24udmFsdWUgYXMgVCwgdmFsKSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBUO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RBbGxIYW5kbGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM/LnRvQXJyYXkoKS5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCk7XG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBvcHRpb25zLmV2ZXJ5KChvcHRpb24pID0+IG9wdGlvbi5pc1NlbGVjdGVkKTtcbiAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZVNlbGVjdGlvbi5zZXQoIWFsbFNlbGVjdGVkICYmIG9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiBvcHRpb24uaXNTZWxlY3RlZCkpO1xuICAgIHRoaXMuYWxsT3B0aW9uU2VsZWN0ZWQuc2V0KGFsbFNlbGVjdGVkKTtcbiAgfVxufVxuIiwiPGRpdlxuICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gIGNsYXNzPVwib2R4LXNlbGVjdF9fdHJpZ2dlclwiXG4gIFtvZHhEcm9wZG93bl09XCJkcm9wZG93bkNvbnRlbnRcIlxuICBbb2R4RHJvcGRvd25EaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGlzUmVhZG9ubHlcIlxuICBbb2R4RHJvcGRvd25PcHRpb25zXT1cInsgbWF0Y2hSZWZlcmVuY2VXaWR0aDogdHJ1ZSwgb2Zmc2V0OiA0LCBvdXRlclBhZGRpbmc6IDEwLCBwb3NpdGlvbjogJ2JvdHRvbS1zdGFydCcgfVwiXG4gIFtvZHhEcm9wZG93blJlZmVyZW5jZUVsZW1lbnRdPVwiZHJvcGRvd25SZWZlcmVuY2VFbGVtZW50XCJcbiAgW29keERyb3Bkb3duU2hvd0xvYWRlcl09XCJpc0xvYWRpbmdcIlxuICAob2R4RHJvcGRvd25CZWZvcmVPcGVuKT1cIm9uRHJvcGRvd25PcGVuKClcIlxuICAob2R4RHJvcGRvd25BZnRlck9wZW4pPVwib25Ecm9wZG93bk9wZW5lZCgpXCJcbiAgKG9keERyb3Bkb3duQmVmb3JlQ2xvc2UpPVwib25Ecm9wZG93bkNsb3NlKClcIlxuICAob2R4RHJvcGRvd25BZnRlckNsb3NlKT1cIm9uRHJvcGRvd25DbG9zZWQoKVwiXG4+XG4gIEBpZiAoc2hvd1NlbGVjdGVkVmFsdWUpIHtcbiAgICA8ZGl2IGNsYXNzPVwib2R4LXNlbGVjdF9fdmFsdWVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbb2R4RHluYW1pY1ZpZXddPVwic2VsZWN0ZWRPcHRpb25Db250ZW50XCIgW29keER5bmFtaWNWaWV3Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogdmFsdWUgfVwiIC8+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKHNob3dQbGFjZWhvbGRlcikge1xuICAgIDxkaXYgY2xhc3M9XCJvZHgtc2VsZWN0X19wbGFjZWhvbGRlclwiPlxuICAgICAge3sgcGxhY2Vob2xkZXIgfX1cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhTZWxlY3RTZWFyY2hGaWVsZF1cIiAvPlxuXG4gIDxvZHgtYWN0aW9uLWdyb3VwIGNsYXNzPVwib2R4LW5vLW1hcmdpblwiPlxuICAgIEBpZiAoY2xlYXJhYmxlKCkgJiYgc2hvd1NlbGVjdGVkVmFsdWUpIHtcbiAgICAgIDxidXR0b24gY2xhc3M9XCJvZHgtc2VsZWN0X19jbGVhclwiIG9keEJ1dHRvbiAoY2xpY2spPVwicmVzZXRWYWx1ZSgkZXZlbnQpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICA8b2R4LWljb24gbmFtZT1cImNsb3NlXCIgaWNvblNldD1cImNvcmVcIiAvPlxuICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIDxidXR0b24gb2R4QnV0dG9uIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIDxvZHgtaWNvbiBjbGFzcz1cIm9keC1zZWxlY3RfX2luZGljYXRvclwiIG5hbWU9XCJjaGV2cm9uLWRvd25cIiBpY29uU2V0PVwiY29yZVwiIC8+XG4gICAgPC9idXR0b24+XG4gIDwvb2R4LWFjdGlvbi1ncm91cD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duQ29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm9keC1kcm9wZG93bl9fb3B0aW9uLWxpc3RcIiByb2xlPVwibGlzdGJveFwiPlxuICAgIEBpZiAoaGFzT3B0aW9ucykge1xuICAgICAgQGlmIChoYXNTZWxlY3RBbGwoKSAmJiBtdWx0aXBsZSkge1xuICAgICAgICA8ZGl2IG9keFNlbGVjdEFsbCAoY2xpY2spPVwiY2xpY2tTZWxlY3RBbGwoJGV2ZW50KVwiIGNsYXNzPVwib2R4LW9wdGlvbiBvZHgtb3B0aW9uLS1zZWxlY3QtYWxsXCI+XG4gICAgICAgICAgPG9keC1jaGVja2JveCBbaW5kZXRlcm1pbmF0ZV09XCJpc0luZGV0ZXJtaW5hdGVTZWxlY3Rpb24oKVwiIFtjaGVja2VkXT1cImFsbE9wdGlvblNlbGVjdGVkKClcIj57eyBoYXNTZWxlY3RBbGxUZXh0KCkgfX08L29keC1jaGVja2JveD5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgICA8bmctY29udGVudCAvPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG9keC1zZWxlY3Qtb3B0aW9uIGRpc2FibGVkIG5vdEZvdW5kTWVzc2FnZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtvZHhEeW5hbWljVmlld109XCJzZWFyY2hGaWVsZD8ubm90Rm91bmRDb250ZW50XCIgLz5cbiAgICAgIDwvb2R4LXNlbGVjdC1vcHRpb24+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -43,7 +43,7 @@ let TooltipDirective = class TooltipDirective {
43
43
  this.ngZone = inject(NgZone);
44
44
  this.connectedOverlayRef = null;
45
45
  this.tooltipOptions = injectTooltipConfig();
46
- this.ignoreBrowserTabSwitchFocus = false;
46
+ this.ignoreNextTooltipTrigger = false;
47
47
  this.tooltipId = null;
48
48
  this.element = injectElement();
49
49
  /**
@@ -137,17 +137,18 @@ let TooltipDirective = class TooltipDirective {
137
137
  this.eventManager.destroyListeners();
138
138
  this.ngZone.runOutsideAngular(() => {
139
139
  this.eventManager.register([openEvent, 'focusin'], (event) => {
140
- if (this.ignoreBrowserTabSwitchFocus && event?.type === 'focusin') {
141
- this.ignoreBrowserTabSwitchFocus = false;
140
+ if (this.ignoreNextTooltipTrigger && event?.type === 'focusin') {
141
+ this.ignoreNextTooltipTrigger = false;
142
142
  return;
143
143
  }
144
144
  this.showTrigger$$.next();
145
145
  });
146
146
  this.eventManager.register([closeEvent, 'focusout'], () => this.hideTrigger$$.next());
147
147
  this.eventManager.register(['keyup.esc'], () => this.hideTrigger$$.next(), 'document');
148
- this.eventManager.register(['visibilitychange'], () => {
149
- if (this.document.visibilityState === 'hidden') {
150
- this.ignoreBrowserTabSwitchFocus = true;
148
+ this.eventManager.register(['ODXModalOnBeforeClosed', 'visibilitychange'], (event) => {
149
+ // Set the ignore flag when the modal is about to close or when the browser's tab/window becomes inactive
150
+ if (event?.type === 'ODXModalOnBeforeClosed' || this.document.visibilityState === 'hidden') {
151
+ this.ignoreNextTooltipTrigger = true;
151
152
  }
152
153
  }, 'document');
153
154
  });
@@ -179,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
179
180
  type: Input,
180
181
  args: [{ alias: 'odxTooltipVisible', transform: booleanAttribute }]
181
182
  }] } });
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90b29sdGlwL3NyYy9saWIvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWEsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXZEOzs7O0dBSUc7QUFHSSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQW1DM0I7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFpRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FB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O3NCQURiLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UmVmLCBDb25uZWN0ZWRPdmVybGF5U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY29ubmVjdGVkLW92ZXJsYXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWxheVVudGlsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VyLCBnZXRVbmlxdWVJZCwgaGFzQ2hhbmdlZCwgaW5qZWN0RWxlbWVudCwgTmdDaGFuZ2VzLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlc29sdmVUb29sdGlwVHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFNpemUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RUb29sdGlwQ29uZmlnIH0gZnJvbSAnLi90b29sdGlwLmNvbmZpZyc7XG5cbi8qKlxuICogVG9vbHRpcERpcmVjdGl2ZSBtYW5hZ2VzIHRvb2x0aXBzIGZvciBob3N0IGVsZW1lbnRzIGJ5IGNyZWF0aW5nIG92ZXJsYXkgY29tcG9uZW50cyBkeW5hbWljYWxseS5cbiAqIEl0IHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGNvbnRlbnQsIGRlbGF5IHRpbWluZ3MsIHZpc2liaWxpdHksIGFuZCB0b29sdGlwIHNpemluZy5cbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgQW5ndWxhcidzIGNvbm5lY3RlZCBvdmVybGF5IHN5c3RlbSB0byBwb3NpdGlvbiBhbmQgbWFuYWdlIHRvb2x0aXAgdmlzaWJpbGl0eS5cbiAqL1xuQENTU0NvbXBvbmVudCgndG9vbHRpcC1ob3N0JylcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tvZHhUb29sdGlwXScsIGV4cG9ydEFzOiAnb2R4VG9vbHRpcCcsIHByb3ZpZGVyczogW0V2ZW50TWFuYWdlcl0sIGhvc3Q6IHsgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ3Rvb2x0aXBJZCcgfSB9KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE1hbmFnZXIgPSBpbmplY3QoRXZlbnRNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWRPdmVybGF5U2VydmljZSA9IGluamVjdChDb25uZWN0ZWRPdmVybGF5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1RyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlkZVRyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcml2YXRlIGNvbm5lY3RlZE92ZXJsYXlSZWY6IENvbm5lY3RlZE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucyA9IGluamVjdFRvb2x0aXBDb25maWcoKTtcbiAgcHJpdmF0ZSBpZ25vcmVCcm93c2VyVGFiU3dpdGNoRm9jdXMgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgdG9vbHRpcElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IGZvciBkeW5hbWljIGNvbnRlbnQgdG8gZGlzcGxheSBpbiB0aGUgdG9vbHRpcC5cbiAgICogVGhpcyBjb250ZW50IGlzIHJlYWN0aXZlIGFuZCBjYW4gY2hhbmdlIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY0NvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoJ29keFRvb2x0aXAnKVxuICBwdWJsaWMgY29udGVudD86IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIFR5cGU8dW5rbm93bj4+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgZGlzYWJsZWQuIEEgZGlzYWJsZWQgdG9vbHRpcCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdvZHhUb29sdGlwRGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqIEl0IGFsbG93cyBzZXR0aW5nIHZhcmlvdXMgYmVoYXZpb3JzIGxpa2UgZGVsYXkgYW5kIHBvc2l0aW9uaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBJbnB1dCgnb2R4VG9vbHRpcE9wdGlvbnMnKVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IFBhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy50b29sdGlwT3B0aW9ucywgdmFsdWUpIGFzIFRvb2x0aXBPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIEB0eXBlIHtUb29sdGlwU2l6ZX1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KCdvZHhUb29sdGlwU2l6ZScpXG4gIHB1YmxpYyBzaXplPzogVG9vbHRpcFNpemUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRvb2x0aXAuXG4gICAqIFVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljYWxseSB0b2dnbGluZyB0aGUgdG9vbHRpcCBkaXNwbGF5LlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnb2R4VG9vbHRpcFZpc2libGUnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkT3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gICAgY29uc3Qgc2hvdyQgPSB0aGlzLnNob3dUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5pc09wZW4pLFxuICAgICAgZGVsYXlVbnRpbCgoKSA9PiB0aGlzLnRvb2x0aXBPcHRpb25zLmRlbGF5SW4sIHRoaXMuaGlkZVRyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93KCkpLFxuICAgICk7XG4gICAgY29uc3QgaGlkZSQgPSB0aGlzLmhpZGVUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzT3BlbiksXG4gICAgICBkZWxheVVudGlsKCgpID0+IHRoaXMudG9vbHRpcE9wdGlvbnMuZGVsYXlPdXQsIHRoaXMuc2hvd1RyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5oaWRlKCkpLFxuICAgICk7XG4gICAgbWVyZ2Uoc2hvdyQsIGhpZGUkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogTmdDaGFuZ2VzPFRvb2x0aXBEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2Rpc2FibGVkJykgJiYgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnY29udGVudCcsICdzaXplJ10pKSB7XG4gICAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWY/LnVwZGF0ZSh7IGNvbnRleHQ6IHsgY29udGVudDogdGhpcy5jb250ZW50LCBzaXplOiB0aGlzLnNpemUgfSB9KTtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ29wdGlvbnMnKSkge1xuICAgICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy51cGRhdGUodGhpcy50b29sdGlwT3B0aW9ucyk7XG4gICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZpc2libGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSB0b29sdGlwLCBjcmVhdGluZyBhbmQgYXR0YWNoaW5nIHRoZSBvdmVybGF5IHRvIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb250ZW50KSByZXR1cm47XG4gICAgdGhpcy50b29sdGlwSWQgPSBnZXRVbmlxdWVJZCgnb2R4LXRvb2x0aXAnKTtcbiAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWYgPSB0aGlzLmNvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkoXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy50b29sdGlwT3B0aW9ucyxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6ICdvZHgtdG9vbHRpcC1vdmVybGF5JyxcbiAgICAgICAgY29udGVudDogVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgY29udGV4dDogeyBjb250ZW50OiB0aGlzLmNvbnRlbnQsIHNpemU6IHRoaXMuc2l6ZSA/PyB0aGlzLnRvb2x0aXBPcHRpb25zLnNpemUsIGlkOiB0aGlzLnRvb2x0aXBJZCB9LFxuICAgICAgICBzaG93QXJyb3c6IHRydWUsXG4gICAgICAgIGVuYWJsZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICBub25JbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7IGhvc3Q6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgdG9vbHRpcCwgZGV0YWNoaW5nIHRoZSBvdmVybGF5IGZyb20gdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoKCF0aGlzLmlzT3BlbiB8fCAodGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkKSkgJiYgIWZvcmNlKSByZXR1cm47XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy5jbG9zZShmb3JjZSk7XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmID0gbnVsbDtcbiAgICB0aGlzLnRvb2x0aXBJZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IFtvcGVuRXZlbnQsIGNsb3NlRXZlbnRdID0gcmVzb2x2ZVRvb2x0aXBUcmlnZ2VyRXZlbnRzKHRoaXMudG9vbHRpcE9wdGlvbnMudHJpZ2dlcik7XG4gICAgdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveUxpc3RlbmVycygpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLnJlZ2lzdGVyKFtvcGVuRXZlbnQsICdmb2N1c2luJ10sIChldmVudDogRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaWdub3JlQnJvd3NlclRhYlN3aXRjaEZvY3VzICYmIGV2ZW50Py50eXBlID09PSAnZm9jdXNpbicpIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZUJyb3dzZXJUYWJTd2l0Y2hGb2N1cyA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dUcmlnZ2VyJCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihbY2xvc2VFdmVudCwgJ2ZvY3Vzb3V0J10sICgpID0+IHRoaXMuaGlkZVRyaWdnZXIkJC5uZXh0KCkpO1xuICAgICAgdGhpcy5ldmVudE1hbmFnZXIucmVnaXN0ZXIoWydrZXl1cC5lc2MnXSwgKCkgPT4gdGhpcy5oaWRlVHJpZ2dlciQkLm5leHQoKSwgJ2RvY3VtZW50Jyk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgICAgWyd2aXNpYmlsaXR5Y2hhbmdlJ10sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICB0aGlzLmlnbm9yZUJyb3dzZXJUYWJTd2l0Y2hGb2N1cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnZG9jdW1lbnQnLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy90b29sdGlwL3NyYy9saWIvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBc0MsTUFBTSxlQUFlLENBQUM7QUFDakksT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQWEsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRXZEOzs7O0dBSUc7QUFHSSxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjtJQW1DM0I7Ozs7O09BS0c7SUFDSCxJQUNXLE9BQU8sQ0FBQyxLQUFpRDtRQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FB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RGpCLEtBQUs7dUJBQUMsbUJBQW1CO2dCQVluQixJQUFJO3NCQURWLEtBQUs7dUJBQUMsZ0JBQWdCO2dCQVdoQixPQUFPO3NCQURiLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBpbmplY3QsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UmVmLCBDb25uZWN0ZWRPdmVybGF5U2VydmljZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY29ubmVjdGVkLW92ZXJsYXknO1xuaW1wb3J0IHsgRHluYW1pY0NvbnRlbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2R5bmFtaWMtdmlldyc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQsIGRlZXBtZXJnZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBkZWxheVVudGlsIH0gZnJvbSAnQG9keC9hbmd1bGFyL3J4anMnO1xuaW1wb3J0IHsgRXZlbnRNYW5hZ2VyLCBnZXRVbmlxdWVJZCwgaGFzQ2hhbmdlZCwgaW5qZWN0RWxlbWVudCwgTmdDaGFuZ2VzLCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1lcmdlLCBTdWJqZWN0LCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHJlc29sdmVUb29sdGlwVHJpZ2dlckV2ZW50cyB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBUb29sdGlwT3B0aW9ucywgVG9vbHRpcFNpemUgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBUb29sdGlwQ29tcG9uZW50IH0gZnJvbSAnLi90b29sdGlwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpbmplY3RUb29sdGlwQ29uZmlnIH0gZnJvbSAnLi90b29sdGlwLmNvbmZpZyc7XG5cbi8qKlxuICogVG9vbHRpcERpcmVjdGl2ZSBtYW5hZ2VzIHRvb2x0aXBzIGZvciBob3N0IGVsZW1lbnRzIGJ5IGNyZWF0aW5nIG92ZXJsYXkgY29tcG9uZW50cyBkeW5hbWljYWxseS5cbiAqIEl0IHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzdWNoIGFzIGNvbnRlbnQsIGRlbGF5IHRpbWluZ3MsIHZpc2liaWxpdHksIGFuZCB0b29sdGlwIHNpemluZy5cbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgQW5ndWxhcidzIGNvbm5lY3RlZCBvdmVybGF5IHN5c3RlbSB0byBwb3NpdGlvbiBhbmQgbWFuYWdlIHRvb2x0aXAgdmlzaWJpbGl0eS5cbiAqL1xuQENTU0NvbXBvbmVudCgndG9vbHRpcC1ob3N0JylcbkBEaXJlY3RpdmUoeyBzdGFuZGFsb25lOiB0cnVlLCBzZWxlY3RvcjogJ1tvZHhUb29sdGlwXScsIGV4cG9ydEFzOiAnb2R4VG9vbHRpcCcsIHByb3ZpZGVyczogW0V2ZW50TWFuYWdlcl0sIGhvc3Q6IHsgJ1thdHRyLmFyaWEtZGVzY3JpYmVkYnldJzogJ3Rvb2x0aXBJZCcgfSB9KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudE1hbmFnZXIgPSBpbmplY3QoRXZlbnRNYW5hZ2VyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0ZWRPdmVybGF5U2VydmljZSA9IGluamVjdChDb25uZWN0ZWRPdmVybGF5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2hvd1RyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGlkZVRyaWdnZXIkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBwcml2YXRlIGNvbm5lY3RlZE92ZXJsYXlSZWY6IENvbm5lY3RlZE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSB0b29sdGlwT3B0aW9ucyA9IGluamVjdFRvb2x0aXBDb25maWcoKTtcbiAgcHJpdmF0ZSBpZ25vcmVOZXh0VG9vbHRpcFRyaWdnZXIgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgdG9vbHRpcElkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3RFbGVtZW50KCk7XG5cbiAgLyoqXG4gICAqIElucHV0IGZvciBkeW5hbWljIGNvbnRlbnQgdG8gZGlzcGxheSBpbiB0aGUgdG9vbHRpcC5cbiAgICogVGhpcyBjb250ZW50IGlzIHJlYWN0aXZlIGFuZCBjYW4gY2hhbmdlIGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAdHlwZSB7RHluYW1pY0NvbnRlbnQgfCBudWxsfVxuICAgKiBAZGVmYXVsdCBudWxsXG4gICAqL1xuICBASW5wdXQoJ29keFRvb2x0aXAnKVxuICBwdWJsaWMgY29udGVudD86IEV4Y2x1ZGU8RHluYW1pY0NvbnRlbnQsIFR5cGU8dW5rbm93bj4+IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgZGlzYWJsZWQuIEEgZGlzYWJsZWQgdG9vbHRpcCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdvZHhUb29sdGlwRGlzYWJsZWQnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHRvb2x0aXAuXG4gICAqIEl0IGFsbG93cyBzZXR0aW5nIHZhcmlvdXMgYmVoYXZpb3JzIGxpa2UgZGVsYXkgYW5kIHBvc2l0aW9uaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBJbnB1dCgnb2R4VG9vbHRpcE9wdGlvbnMnKVxuICBwdWJsaWMgc2V0IG9wdGlvbnModmFsdWU6IFBhcnRpYWw8VG9vbHRpcE9wdGlvbnM+IHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudG9vbHRpcE9wdGlvbnMgPSBkZWVwbWVyZ2UodGhpcy50b29sdGlwT3B0aW9ucywgdmFsdWUpIGFzIFRvb2x0aXBPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNpemUgb2YgdGhlIHRvb2x0aXAuXG4gICAqXG4gICAqIEB0eXBlIHtUb29sdGlwU2l6ZX1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KCdvZHhUb29sdGlwU2l6ZScpXG4gIHB1YmxpYyBzaXplPzogVG9vbHRpcFNpemUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHRvb2x0aXAuXG4gICAqIFVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljYWxseSB0b2dnbGluZyB0aGUgdG9vbHRpcCBkaXNwbGF5LlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAnb2R4VG9vbHRpcFZpc2libGUnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHZpc2libGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgY3VycmVudGx5IG9wZW4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkT3ZlcmxheVJlZiAhPT0gbnVsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRha2VVbnRpbERlc3Ryb3llZCA9IHVudGlsRGVzdHJveWVkKCk7XG4gICAgY29uc3Qgc2hvdyQgPSB0aGlzLnNob3dUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy5pc09wZW4pLFxuICAgICAgZGVsYXlVbnRpbCgoKSA9PiB0aGlzLnRvb2x0aXBPcHRpb25zLmRlbGF5SW4sIHRoaXMuaGlkZVRyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5zaG93KCkpLFxuICAgICk7XG4gICAgY29uc3QgaGlkZSQgPSB0aGlzLmhpZGVUcmlnZ2VyJCQucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmlzT3BlbiksXG4gICAgICBkZWxheVVudGlsKCgpID0+IHRoaXMudG9vbHRpcE9wdGlvbnMuZGVsYXlPdXQsIHRoaXMuc2hvd1RyaWdnZXIkJCksXG4gICAgICB0YXAoKCkgPT4gdGhpcy5oaWRlKCkpLFxuICAgICk7XG4gICAgbWVyZ2Uoc2hvdyQsIGhpZGUkKS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogTmdDaGFuZ2VzPFRvb2x0aXBEaXJlY3RpdmU+KTogdm9pZCB7XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ2Rpc2FibGVkJykgJiYgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICAgIGlmIChoYXNDaGFuZ2VkKGNoYW5nZXMsIFsnY29udGVudCcsICdzaXplJ10pKSB7XG4gICAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWY/LnVwZGF0ZSh7IGNvbnRleHQ6IHsgY29udGVudDogdGhpcy5jb250ZW50LCBzaXplOiB0aGlzLnNpemUgfSB9KTtcbiAgICB9XG4gICAgaWYgKGhhc0NoYW5nZWQoY2hhbmdlcywgJ29wdGlvbnMnKSkge1xuICAgICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy51cGRhdGUodGhpcy50b29sdGlwT3B0aW9ucyk7XG4gICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnZpc2libGUgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3dzIHRoZSB0b29sdGlwLCBjcmVhdGluZyBhbmQgYXR0YWNoaW5nIHRoZSBvdmVybGF5IHRvIHRoZSBob3N0IGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb250ZW50KSByZXR1cm47XG4gICAgdGhpcy50b29sdGlwSWQgPSBnZXRVbmlxdWVJZCgnb2R4LXRvb2x0aXAnKTtcbiAgICB0aGlzLmNvbm5lY3RlZE92ZXJsYXlSZWYgPSB0aGlzLmNvbm5lY3RlZE92ZXJsYXlTZXJ2aWNlLmNyZWF0ZU92ZXJsYXkoXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHtcbiAgICAgICAgLi4udGhpcy50b29sdGlwT3B0aW9ucyxcbiAgICAgICAgY29udGFpbmVyQ2xhc3M6ICdvZHgtdG9vbHRpcC1vdmVybGF5JyxcbiAgICAgICAgY29udGVudDogVG9vbHRpcENvbXBvbmVudCxcbiAgICAgICAgY29udGV4dDogeyBjb250ZW50OiB0aGlzLmNvbnRlbnQsIHNpemU6IHRoaXMuc2l6ZSA/PyB0aGlzLnRvb2x0aXBPcHRpb25zLnNpemUsIGlkOiB0aGlzLnRvb2x0aXBJZCB9LFxuICAgICAgICBzaG93QXJyb3c6IHRydWUsXG4gICAgICAgIGVuYWJsZUZhbGxiYWNrOiB0cnVlLFxuICAgICAgICBub25JbnRlcmFjdGl2ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICB7IGhvc3Q6IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsIGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgdG9vbHRpcCwgZGV0YWNoaW5nIHRoZSBvdmVybGF5IGZyb20gdGhlIGhvc3QgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoKCF0aGlzLmlzT3BlbiB8fCAodGhpcy52aXNpYmxlICYmICF0aGlzLmRpc2FibGVkKSkgJiYgIWZvcmNlKSByZXR1cm47XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmPy5jbG9zZShmb3JjZSk7XG4gICAgdGhpcy5jb25uZWN0ZWRPdmVybGF5UmVmID0gbnVsbDtcbiAgICB0aGlzLnRvb2x0aXBJZCA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyRXZlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IFtvcGVuRXZlbnQsIGNsb3NlRXZlbnRdID0gcmVzb2x2ZVRvb2x0aXBUcmlnZ2VyRXZlbnRzKHRoaXMudG9vbHRpcE9wdGlvbnMudHJpZ2dlcik7XG4gICAgdGhpcy5ldmVudE1hbmFnZXIuZGVzdHJveUxpc3RlbmVycygpO1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLnJlZ2lzdGVyKFtvcGVuRXZlbnQsICdmb2N1c2luJ10sIChldmVudDogRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaWdub3JlTmV4dFRvb2x0aXBUcmlnZ2VyICYmIGV2ZW50Py50eXBlID09PSAnZm9jdXNpbicpIHtcbiAgICAgICAgICB0aGlzLmlnbm9yZU5leHRUb29sdGlwVHJpZ2dlciA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dUcmlnZ2VyJCQubmV4dCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihbY2xvc2VFdmVudCwgJ2ZvY3Vzb3V0J10sICgpID0+IHRoaXMuaGlkZVRyaWdnZXIkJC5uZXh0KCkpO1xuICAgICAgdGhpcy5ldmVudE1hbmFnZXIucmVnaXN0ZXIoWydrZXl1cC5lc2MnXSwgKCkgPT4gdGhpcy5oaWRlVHJpZ2dlciQkLm5leHQoKSwgJ2RvY3VtZW50Jyk7XG4gICAgICB0aGlzLmV2ZW50TWFuYWdlci5yZWdpc3RlcihcbiAgICAgICAgWydPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJywgJ3Zpc2liaWxpdHljaGFuZ2UnXSxcbiAgICAgICAgKGV2ZW50PzogRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBTZXQgdGhlIGlnbm9yZSBmbGFnIHdoZW4gdGhlIG1vZGFsIGlzIGFib3V0IHRvIGNsb3NlIG9yIHdoZW4gdGhlIGJyb3dzZXIncyB0YWIvd2luZG93IGJlY29tZXMgaW5hY3RpdmVcbiAgICAgICAgICBpZiAoZXZlbnQ/LnR5cGUgPT09ICdPRFhNb2RhbE9uQmVmb3JlQ2xvc2VkJyB8fCB0aGlzLmRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgICAgIHRoaXMuaWdub3JlTmV4dFRvb2x0aXBUcmlnZ2VyID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdkb2N1bWVudCcsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -13,6 +13,7 @@ import { ActionGroupComponent } from '@odx/angular/components/action-group';
13
13
  import { IconComponent, IconSet } from '@odx/angular/components/icon';
14
14
  import { A11yModule } from '@odx/angular/cdk/a11y';
15
15
  import * as i1$1 from '@angular/common';
16
+ import { DOCUMENT } from '@angular/common';
16
17
  import { ButtonGroupComponent } from '@odx/angular/components/button-group';
17
18
 
18
19
  const ModalHeroVariant = {
@@ -610,6 +611,7 @@ class ModalService {
610
611
  this.openModals = new Queue();
611
612
  this.injector = inject(Injector);
612
613
  this.dynamicViewService = inject(DynamicViewService);
614
+ this.document = inject(DOCUMENT);
613
615
  /**
614
616
  * An observable that emits the current value of the openModals subject.
615
617
  *
@@ -673,6 +675,7 @@ class ModalService {
673
675
  const onDestroy = async () => {
674
676
  dialog?.classList.add('is-hidden');
675
677
  await waitForAnimations(dialog);
678
+ this.document.dispatchEvent(new Event('ODXModalOnBeforeClosed'));
676
679
  dialog?.close();
677
680
  this.openModals.remove(modalRef);
678
681
  viewRef.destroy();