@ethlete/cdk 3.22.1 → 3.22.3

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
  # @ethlete/cdk
2
2
 
3
+ ## 3.22.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`ff3d0425`](https://github.com/ethlete-io/ethdk/commit/ff3d04259b3ccfed6c7aff548a4a9afd4f7f3fd2) Thanks [@TomTomB](https://github.com/TomTomB)! - Ignore forced close events in overlay dismiss checker and cleanup after the checker was unsubscribed
8
+
9
+ ## 3.22.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`822e7bf5`](https://github.com/ethlete-io/ethdk/commit/822e7bf5193889345040b2fdc6de8d0868bdce72) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix overlays being unable to close if a overlay dismiss checker was active and its provided form was in the initial state
14
+
3
15
  ## 3.22.1
4
16
 
5
17
  ### Patch Changes
@@ -83,14 +83,14 @@ export class BottomSheetDragHandleComponent {
83
83
  }
84
84
  }
85
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: BottomSheetDragHandleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: BottomSheetDragHandleComponent, isStandalone: true, selector: "[et-bottom-sheet-drag-handle], [etBottomSheetDragHandle]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], type: "type", bottomSheetResult: ["et-bottom-sheet-drag-handle", "bottomSheetResult"], _etBottomSheetDragHandle: ["etBottomSheetDragHandle", "_etBottomSheetDragHandle"] }, host: { listeners: { "click": "_onButtonClick($event)" }, properties: { "attr.aria-label": "ariaLabel || null", "attr.type": "this.type" }, classAttribute: "et-bottom-sheet-drag-handle" }, providers: [BottomSheetSwipeHandlerService], exportAs: ["etBottomSheetDragHandle"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":where(.et-bottom-sheet-drag-handle){--background-color: red}.et-bottom-sheet-drag-handle{--_tap-target-width: 100px;--_tap-target-height: 25px;inset-inline-start:calc(50% - var(--_tap-target-width) / 2);inline-size:var(--_tap-target-width);block-size:var(--_tap-target-height);border:none;position:relative;background-color:#0000;touch-action:manipulation;-webkit-appearance:none;appearance:none}.et-bottom-sheet-drag-handle:before{--_toggle-width: 32px;--_toggle-height: 4px;inline-size:var(--_toggle-width);block-size:var(--_toggle-height);content:\"\";position:absolute;background-color:var(--background-color);border-radius:9999px;inset-inline-start:calc(50% - var(--_toggle-width) / 2);inset-block-start:calc(50% - var(--_toggle-height) / 2);z-index:1}.et-bottom-sheet-drag-handle:after{opacity:0;inline-size:100%;block-size:100%;content:\"\";position:absolute;background-color:#0003;border-radius:8px;inset-block-start:0;inset-inline-start:0;transform:scale(0);transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-bottom-sheet-drag-handle:focus-visible{outline:none}.et-bottom-sheet-drag-handle:focus-visible:after{opacity:1;transform:scale(1);transition:opacity .3s var(--ease-5),transform .3s var(--ease-squish-3)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: BottomSheetDragHandleComponent, isStandalone: true, selector: "[et-bottom-sheet-drag-handle], [etBottomSheetDragHandle]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], type: "type", bottomSheetResult: ["et-bottom-sheet-drag-handle", "bottomSheetResult"], _etBottomSheetDragHandle: ["etBottomSheetDragHandle", "_etBottomSheetDragHandle"] }, host: { listeners: { "click": "_onButtonClick($event)" }, properties: { "attr.aria-label": "ariaLabel || null", "attr.type": "this.type" }, classAttribute: "et-bottom-sheet-drag-handle" }, providers: [BottomSheetSwipeHandlerService], exportAs: ["etBottomSheetDragHandle"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, styles: [":where(.et-bottom-sheet-drag-handle){--background-color: red}.et-bottom-sheet-drag-handle{--_tap-target-width: 100px;--_tap-target-height: 25px;inset-inline-start:calc(50% - var(--_tap-target-width) / 2);inline-size:var(--_tap-target-width);block-size:var(--_tap-target-height);border:none;position:relative;background-color:#0000;touch-action:manipulation;appearance:none}.et-bottom-sheet-drag-handle:before{--_toggle-width: 32px;--_toggle-height: 4px;inline-size:var(--_toggle-width);block-size:var(--_toggle-height);content:\"\";position:absolute;background-color:var(--background-color);border-radius:9999px;inset-inline-start:calc(50% - var(--_toggle-width) / 2);inset-block-start:calc(50% - var(--_toggle-height) / 2);z-index:1}.et-bottom-sheet-drag-handle:after{opacity:0;inline-size:100%;block-size:100%;content:\"\";position:absolute;background-color:#0003;border-radius:8px;inset-block-start:0;inset-inline-start:0;transform:scale(0);transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-bottom-sheet-drag-handle:focus-visible{outline:none}.et-bottom-sheet-drag-handle:focus-visible:after{opacity:1;transform:scale(1);transition:opacity .3s var(--ease-5),transform .3s var(--ease-squish-3)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
87
87
  }
88
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: BottomSheetDragHandleComponent, decorators: [{
89
89
  type: Component,
90
90
  args: [{ selector: '[et-bottom-sheet-drag-handle], [etBottomSheetDragHandle]', template: '', exportAs: 'etBottomSheetDragHandle', host: {
91
91
  class: 'et-bottom-sheet-drag-handle',
92
92
  '[attr.aria-label]': 'ariaLabel || null',
93
- }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [BottomSheetSwipeHandlerService], styles: [":where(.et-bottom-sheet-drag-handle){--background-color: red}.et-bottom-sheet-drag-handle{--_tap-target-width: 100px;--_tap-target-height: 25px;inset-inline-start:calc(50% - var(--_tap-target-width) / 2);inline-size:var(--_tap-target-width);block-size:var(--_tap-target-height);border:none;position:relative;background-color:#0000;touch-action:manipulation;-webkit-appearance:none;appearance:none}.et-bottom-sheet-drag-handle:before{--_toggle-width: 32px;--_toggle-height: 4px;inline-size:var(--_toggle-width);block-size:var(--_toggle-height);content:\"\";position:absolute;background-color:var(--background-color);border-radius:9999px;inset-inline-start:calc(50% - var(--_toggle-width) / 2);inset-block-start:calc(50% - var(--_toggle-height) / 2);z-index:1}.et-bottom-sheet-drag-handle:after{opacity:0;inline-size:100%;block-size:100%;content:\"\";position:absolute;background-color:#0003;border-radius:8px;inset-block-start:0;inset-inline-start:0;transform:scale(0);transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-bottom-sheet-drag-handle:focus-visible{outline:none}.et-bottom-sheet-drag-handle:focus-visible:after{opacity:1;transform:scale(1);transition:opacity .3s var(--ease-5),transform .3s var(--ease-squish-3)}\n"] }]
93
+ }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [BottomSheetSwipeHandlerService], styles: [":where(.et-bottom-sheet-drag-handle){--background-color: red}.et-bottom-sheet-drag-handle{--_tap-target-width: 100px;--_tap-target-height: 25px;inset-inline-start:calc(50% - var(--_tap-target-width) / 2);inline-size:var(--_tap-target-width);block-size:var(--_tap-target-height);border:none;position:relative;background-color:#0000;touch-action:manipulation;appearance:none}.et-bottom-sheet-drag-handle:before{--_toggle-width: 32px;--_toggle-height: 4px;inline-size:var(--_toggle-width);block-size:var(--_toggle-height);content:\"\";position:absolute;background-color:var(--background-color);border-radius:9999px;inset-inline-start:calc(50% - var(--_toggle-width) / 2);inset-block-start:calc(50% - var(--_toggle-height) / 2);z-index:1}.et-bottom-sheet-drag-handle:after{opacity:0;inline-size:100%;block-size:100%;content:\"\";position:absolute;background-color:#0003;border-radius:8px;inset-block-start:0;inset-inline-start:0;transform:scale(0);transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-bottom-sheet-drag-handle:focus-visible{outline:none}.et-bottom-sheet-drag-handle:focus-visible:after{opacity:1;transform:scale(1);transition:opacity .3s var(--ease-5),transform .3s var(--ease-squish-3)}\n"] }]
94
94
  }], propDecorators: { ariaLabel: [{
95
95
  type: Input,
96
96
  args: ['aria-label']
@@ -18,8 +18,17 @@ export class OverlayRef {
18
18
  this._beforeClosed = new Subject();
19
19
  this._closeCalled = new Subject();
20
20
  this._state = OVERLAY_STATE.OPEN;
21
+ /**
22
+ * @internal
23
+ */
21
24
  this._isEscCloseControlledExternally = false;
25
+ /**
26
+ * @internal
27
+ */
22
28
  this._isBackdropCloseControlledExternally = false;
29
+ /**
30
+ * @internal
31
+ */
23
32
  this._isCloseFnCloseControlledExternally = false;
24
33
  this._disableCloseFromInternalInitiators = new Set();
25
34
  this.disableClose = config.disableClose;
@@ -57,7 +66,7 @@ export class OverlayRef {
57
66
  if (this._state === OVERLAY_STATE.CLOSING || this._state === OVERLAY_STATE.CLOSED) {
58
67
  return;
59
68
  }
60
- this._closeCalled.next(result);
69
+ this._closeCalled.next({ result, forced: force ?? false });
61
70
  if (this._isCloseFnCloseControlledExternally && !force) {
62
71
  return;
63
72
  }
@@ -76,13 +85,13 @@ export class OverlayRef {
76
85
  this._containerInstance._animatedLifecycle.leave();
77
86
  }
78
87
  afterOpened() {
79
- return this._afterOpened;
88
+ return this._afterOpened.asObservable();
80
89
  }
81
90
  afterClosed() {
82
91
  return this._ref.closed;
83
92
  }
84
93
  beforeClosed() {
85
- return this._beforeClosed;
94
+ return this._beforeClosed.asObservable();
86
95
  }
87
96
  backdropClick() {
88
97
  return this._ref.backdropClick;
@@ -91,7 +100,7 @@ export class OverlayRef {
91
100
  return this._ref.keydownEvents;
92
101
  }
93
102
  closeCalled() {
94
- return this._closeCalled;
103
+ return this._closeCalled.asObservable();
95
104
  }
96
105
  updatePosition(position) {
97
106
  const strategy = this._ref.config.positionStrategy;
@@ -145,4 +154,4 @@ export class OverlayRef {
145
154
  this._disableCloseFromInternalInitiators.delete(initiatorId);
146
155
  }
147
156
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzRSxPQUFPLEVBQUUsYUFBYSxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQUV2Riw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLFVBQVU7SUFxQnJCLElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFDVSxJQUF3QixFQUNoQyxNQUFxQixFQUNkLGtCQUE2QztRQUY1QyxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUV6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTJCO1FBL0J0RCxzQkFBaUIsR0FBYSxJQUFJLENBQUM7UUFDMUIsaUJBQVksR0FBMkIsSUFBSSxDQUFDO1FBS3BDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQzdDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFHckQsV0FBTSxHQUFpQixhQUFhLENBQUMsSUFBSSxDQUFDO1FBR2xELG9DQUErQixHQUFHLEtBQUssQ0FBQztRQUN4Qyx5Q0FBb0MsR0FBRyxLQUFL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UUFDaEUsSUFBSSxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFOUIsSUFBSSxDQUFDLG1DQUFtQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpYWxvZ1JlZiBhcyBDZGtEaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IEVTQ0FQRSwgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgR2xvYmFsUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgZmlsdGVyLCBtZXJnZSwgc2tpcFVudGlsLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPVkVSTEFZX1NUQVRFLCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UG9zaXRpb24sIE92ZXJsYXlTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjbGFzcyBPdmVybGF5UmVmPFQgPSBhbnksIFIgPSBhbnk+IHtcbiAgY29tcG9uZW50SW5zdGFuY2U6IFQgfCBudWxsID0gbnVsbDtcbiAgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8VD4gfCBudWxsID0gbnVsbDtcbiAgZGlzYWJsZUNsb3NlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYWZ0ZXJPcGVuZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9iZWZvcmVDbG9zZWQgPSBuZXcgU3ViamVjdDxSIHwgdW5kZWZpbmVkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbG9zZUNhbGxlZCA9IG5ldyBTdWJqZWN0PFIgfCB1bmRlZmluZWQ+KCk7XG5cbiAgcHJpdmF0ZSBfcmVzdWx0OiBSIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9zdGF0ZTogT3ZlcmxheVN0YXRlID0gT1ZFUkxBWV9TVEFURS5PUEVOO1xuXG4gIF9jbG9zZUludGVyYWN0aW9uVHlwZTogRm9jdXNPcmlnaW4gfCB1bmRlZmluZWQ7XG4gIF9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcbiAgX2lzQmFja2Ryb3BDbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gZmFsc2U7XG4gIF9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycyA9IG5ldyBTZXQ8c3RyaW5nIHwgbnVtYmVyPigpO1xuXG4gIGdldCBfaW50ZXJuYWxEaXNhYmxlQ2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMuc2l6ZSA+IDA7XG4gIH1cblxuICBnZXQgX2Nka1JlZigpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfcmVmOiBDZGtEaWFsb2dSZWY8UiwgVD4sXG4gICAgY29uZmlnOiBPdmVybGF5Q29uZmlnLFxuICAgIHB1YmxpYyBfY29udGFpbmVySW5zdGFuY2U6IE92ZXJsYXlDb250YWluZXJDb21wb25lbnQsXG4gICkge1xuICAgIHRoaXMuZGlzYWJsZUNsb3NlID0gY29uZmlnLmRpc2FibGVDbG9zZTtcbiAgICB0aGlzLmlkID0gX3JlZi5pZDtcblxuICAgIF9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdlbnRlcmVkJyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQubmV4dCgpO1xuICAgICAgICB0aGlzLl9hZnRlck9wZW5lZC5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG5cbiAgICBfY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnbGVmdCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbmlzaE92ZXJsYXlDbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBfcmVmLm92ZXJsYXlSZWYuZGV0YWNobWVudHMoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fYmVmb3JlQ2xvc2VkLm5leHQodGhpcy5fcmVzdWx0KTtcbiAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fZmluaXNoT3ZlcmxheUNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICBtZXJnZShcbiAgICAgIHRoaXMuYmFja2Ryb3BDbGljaygpLFxuICAgICAgdGhpcy5rZXlkb3duRXZlbnRzKCkucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmICF0aGlzLmRpc2FibGVDbG9zZSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSxcbiAgICAgICksXG4gICAgKVxuICAgICAgLnBpcGUoc2tpcFVudGlsKF9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkLnBpcGUoZmlsdGVyKChlKSA9PiBlID09PSAnZW50ZXJpbmcnKSkpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICh0aGlzLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgJiYgZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nKSB8fFxuICAgICAgICAgICh0aGlzLl9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSAmJiBldmVudC50eXBlICE9PSAna2V5ZG93bicpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlQ2xvc2UgJiYgIXRoaXMuX2ludGVybmFsRGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB0aGlzLl9jbG9zZU92ZXJsYXlWaWEoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nID8gJ2tleWJvYXJkJyA6ICdtb3VzZScsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2UocmVzdWx0PzogUiwgZm9yY2U/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3N0YXRlID09PSBPVkVSTEFZX1NUQVRFLkNMT1NJTkcgfHwgdGhpcy5fc3RhdGUgPT09IE9WRVJMQVlfU1RBVEUuQ0xPU0VEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VDYWxsZWQubmV4dChyZXN1bHQpO1xuXG4gICAgaWYgKHRoaXMuX2lzQ2xvc2VGbkNsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgJiYgIWZvcmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcmVzdWx0ID0gcmVzdWx0O1xuXG4gICAgdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnbGVhdmluZycpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9yZWYub3ZlcmxheVJlZi5kZXRhY2hCYWNrZHJvcCgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdsZWZ0JyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2ZpbmlzaE92ZXJsYXlDbG9zZSgpKTtcblxuICAgIHRoaXMuX3N0YXRlID0gT1ZFUkxBWV9TVEFURS5DTE9TSU5HO1xuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5sZWF2ZSgpO1xuICB9XG5cbiAgYWZ0ZXJPcGVuZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyT3BlbmVkO1xuICB9XG5cbiAgYWZ0ZXJDbG9zZWQoKTogT2JzZXJ2YWJsZTxSIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5jbG9zZWQ7XG4gIH1cblxuICBiZWZvcmVDbG9zZWQoKTogT2JzZXJ2YWJsZTxSIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2JlZm9yZUNsb3NlZDtcbiAgfVxuXG4gIGJhY2tkcm9wQ2xpY2soKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZi5iYWNrZHJvcENsaWNrO1xuICB9XG5cbiAga2V5ZG93bkV2ZW50cygpOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmtleWRvd25FdmVudHM7XG4gIH1cblxuICBjbG9zZUNhbGxlZCgpOiBPYnNlcnZhYmxlPFIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VDYWxsZWQ7XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbihwb3NpdGlvbj86IE92ZXJsYXlQb3NpdGlvbik6IHRoaXMge1xuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fcmVmLmNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLmxlZnQgfHwgcG9zaXRpb24ucmlnaHQpKSB7XG4gICAgICBwb3NpdGlvbi5sZWZ0ID8gc3RyYXRlZ3kubGVmdChwb3NpdGlvbi5sZWZ0KSA6IHN0cmF0ZWd5LnJpZ2h0KHBvc2l0aW9uLnJpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uICYmIChwb3NpdGlvbi50b3AgfHwgcG9zaXRpb24uYm90dG9tKSkge1xuICAgICAgcG9zaXRpb24udG9wID8gc3RyYXRlZ3kudG9wKHBvc2l0aW9uLnRvcCkgOiBzdHJhdGVneS5ib3R0b20ocG9zaXRpb24uYm90dG9tKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyYXRlZ3kuY2VudGVyVmVydGljYWxseSgpO1xuICAgIH1cblxuICAgIHRoaXMuX3JlZi51cGRhdGVQb3NpdGlvbigpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB1cGRhdGVTaXplKHdpZHRoID0gJycsIGhlaWdodCA9ICcnKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLnVwZGF0ZVNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRQYW5lbENsYXNzKGNsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLmFkZFBhbmVsQ2xhc3MoY2xhc3Nlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW1vdmVQYW5lbENsYXNzKGNsYXNzZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgdGhpcy5fcmVmLnJlbW92ZVBhbmVsQ2xhc3MoY2xhc3Nlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRTdGF0ZSgpOiBPdmVybGF5U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmlzaE92ZXJsYXlDbG9zZSgpIHtcbiAgICB0aGlzLl9zdGF0ZSA9IE9WRVJMQVlfU1RBVEUuQ0xPU0VEO1xuICAgIHRoaXMuX3JlZi5jbG9zZSh0aGlzLl9yZXN1bHQsIHsgZm9jdXNPcmlnaW46IHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlIH0pO1xuICAgIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSBudWxsO1xuICB9XG5cbiAgX2Nsb3NlT3ZlcmxheVZpYShpbnRlcmFjdGlvblR5cGU6IEZvY3VzT3JpZ2luLCByZXN1bHQ/OiBSLCBmb3JjZT86IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbG9zZUludGVyYWN0aW9uVHlwZSA9IGludGVyYWN0aW9uVHlwZTtcbiAgICByZXR1cm4gdGhpcy5jbG9zZShyZXN1bHQsIGZvcmNlKTtcbiAgfVxuXG4gIF9hZGRJbnRlcm5hbEJhY2tkcm9wQ2xvc2VJbml0aWF0b3IoaW5pdGlhdG9ySWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGlmICh0aGlzLmRpc2FibGVDbG9zZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fZGlzYWJsZUNsb3NlRnJvbUludGVybmFsSW5pdGlhdG9ycy5hZGQoaW5pdGlhdG9ySWQpO1xuICB9XG5cbiAgX3JlbW92ZUludGVybmFsQmFja2Ryb3BDbG9zZUluaXRpYXRvcihpbml0aWF0b3JJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNsb3NlKSByZXR1cm47XG5cbiAgICB0aGlzLl9kaXNhYmxlQ2xvc2VGcm9tSW50ZXJuYWxJbml0aWF0b3JzLmRlbGV0ZShpbml0aWF0b3JJZCk7XG4gIH1cbn1cbiJdfQ==
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvb3ZlcmxheS9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMvb3ZlcmxheS1yZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvRCxPQUFPLEVBQUUsYUFBYSxFQUFnRCxNQUFNLFVBQVUsQ0FBQztBQVF2Riw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLFVBQVU7SUFvQ3JCLElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1DQUFtQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFDVSxJQUF3QixFQUNoQyxNQUFxQixFQUNkLGtCQUE2QztRQUY1QyxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQUV6Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQTJCO1FBOUN0RCxzQkFBaUIsR0FBYSxJQUFJLENBQUM7UUFDMUIsaUJBQVksR0FBMkIsSUFBSSxDQUFDO1FBS3BDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQzdDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7UUFHaEUsV0FBTSxHQUFpQixhQUFhLENBQUMsSUFBSSxDQUFDO1FBT2xEOztXQUVHO1FBQ0gsb0NBQStCLEdBQUcsS0FBSyxDQUFDO1FBRXhDOztXQUVH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LElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRTlCLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHFDQUFxQyxDQUFDLFdBQTRCO1FBQ2hFLElBQUksSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRTlCLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgYXMgQ2RrRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBFU0NBUEUsIGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZpbHRlciwgbWVyZ2UsIHNraXBVbnRpbCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgT1ZFUkxBWV9TVEFURSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVBvc2l0aW9uLCBPdmVybGF5U3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlDbG9zZUNhbGxFdmVudDxSID0gYW55PiB7XG4gIHJlc3VsdDogUiB8IHVuZGVmaW5lZDtcbiAgZm9yY2VkOiBib29sZWFuO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNsYXNzIE92ZXJsYXlSZWY8VCA9IGFueSwgUiA9IGFueT4ge1xuICBjb21wb25lbnRJbnN0YW5jZTogVCB8IG51bGwgPSBudWxsO1xuICByZWFkb25seSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUPiB8IG51bGwgPSBudWxsO1xuICBkaXNhYmxlQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgaWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hZnRlck9wZW5lZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2JlZm9yZUNsb3NlZCA9IG5ldyBTdWJqZWN0PFIgfCB1bmRlZmluZWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlQ2FsbGVkID0gbmV3IFN1YmplY3Q8T3ZlcmxheUNsb3NlQ2FsbEV2ZW50PFI+PigpO1xuXG4gIHByaXZhdGUgX3Jlc3VsdDogUiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfc3RhdGU6IE92ZXJsYXlTdGF0ZSA9IE9WRVJMQVlfU1RBVEUuT1BFTjtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfY2xvc2VJbnRlcmFjdGlvblR5cGU6IEZvY3VzT3JpZ2luIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIF9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNCYWNrZHJvcENsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBfaXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMgPSBuZXcgU2V0PHN0cmluZyB8IG51bWJlcj4oKTtcblxuICBnZXQgX2ludGVybmFsRGlzYWJsZUNsb3NlKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQ2xvc2VGcm9tSW50ZXJuYWxJbml0aWF0b3JzLnNpemUgPiAwO1xuICB9XG5cbiAgZ2V0IF9jZGtSZWYoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlZjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3JlZjogQ2RrRGlhbG9nUmVmPFIsIFQ+LFxuICAgIGNvbmZpZzogT3ZlcmxheUNvbmZpZyxcbiAgICBwdWJsaWMgX2NvbnRhaW5lckluc3RhbmNlOiBPdmVybGF5Q29udGFpbmVyQ29tcG9uZW50LFxuICApIHtcbiAgICB0aGlzLmRpc2FibGVDbG9zZSA9IGNvbmZpZy5kaXNhYmxlQ2xvc2U7XG4gICAgdGhpcy5pZCA9IF9yZWYuaWQ7XG5cbiAgICBfY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50ID09PSAnZW50ZXJlZCcpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2FmdGVyT3BlbmVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fYWZ0ZXJPcGVuZWQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuXG4gICAgX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5zdGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCA9PT0gJ2xlZnQnKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9maW5pc2hPdmVybGF5Q2xvc2UoKTtcbiAgICAgIH0pO1xuXG4gICAgX3JlZi5vdmVybGF5UmVmLmRldGFjaG1lbnRzKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2JlZm9yZUNsb3NlZC5uZXh0KHRoaXMuX3Jlc3VsdCk7XG4gICAgICB0aGlzLl9iZWZvcmVDbG9zZWQuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX2ZpbmlzaE92ZXJsYXlDbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLmJhY2tkcm9wQ2xpY2soKSxcbiAgICAgIHRoaXMua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiAhdGhpcy5kaXNhYmxlQ2xvc2UgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSksXG4gICAgICApLFxuICAgIClcbiAgICAgIC5waXBlKHNraXBVbnRpbChfY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLnN0YXRlJC5waXBlKGZpbHRlcigoZSkgPT4gZSA9PT0gJ2VudGVyaW5nJykpKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAodGhpcy5faXNFc2NDbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ICYmIGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJykgfHxcbiAgICAgICAgICAodGhpcy5faXNCYWNrZHJvcENsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgJiYgZXZlbnQudHlwZSAhPT0gJ2tleWRvd24nKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZUNsb3NlICYmICF0aGlzLl9pbnRlcm5hbERpc2FibGVDbG9zZSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fY2xvc2VPdmVybGF5VmlhKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyA/ICdrZXlib2FyZCcgOiAnbW91c2UnLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKHJlc3VsdD86IFIsIGZvcmNlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gT1ZFUkxBWV9TVEFURS5DTE9TSU5HIHx8IHRoaXMuX3N0YXRlID09PSBPVkVSTEFZX1NUQVRFLkNMT1NFRCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Nsb3NlQ2FsbGVkLm5leHQoeyByZXN1bHQsIGZvcmNlZDogZm9yY2UgPz8gZmFsc2UgfSk7XG5cbiAgICBpZiAodGhpcy5faXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSAmJiAhZm9yY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXN1bHQgPSByZXN1bHQ7XG5cbiAgICB0aGlzLl9jb250YWluZXJJbnN0YW5jZS5fYW5pbWF0ZWRMaWZlY3ljbGUuc3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgPT09ICdsZWF2aW5nJyksXG4gICAgICAgIHRha2UoMSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fYmVmb3JlQ2xvc2VkLm5leHQocmVzdWx0KTtcbiAgICAgICAgdGhpcy5fYmVmb3JlQ2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3JlZi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2NvbnRhaW5lckluc3RhbmNlLl9hbmltYXRlZExpZmVjeWNsZS5zdGF0ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCA9PT0gJ2xlZnQnKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fZmluaXNoT3ZlcmxheUNsb3NlKCkpO1xuXG4gICAgdGhpcy5fc3RhdGUgPSBPVkVSTEFZX1NUQVRFLkNMT1NJTkc7XG4gICAgdGhpcy5fY29udGFpbmVySW5zdGFuY2UuX2FuaW1hdGVkTGlmZWN5Y2xlLmxlYXZlKCk7XG4gIH1cblxuICBhZnRlck9wZW5lZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWZ0ZXJPcGVuZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBhZnRlckNsb3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmNsb3NlZDtcbiAgfVxuXG4gIGJlZm9yZUNsb3NlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYmVmb3JlQ2xvc2VkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgYmFja2Ryb3BDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVmLmJhY2tkcm9wQ2xpY2s7XG4gIH1cblxuICBrZXlkb3duRXZlbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWYua2V5ZG93bkV2ZW50cztcbiAgfVxuXG4gIGNsb3NlQ2FsbGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jbG9zZUNhbGxlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVBvc2l0aW9uKHBvc2l0aW9uPzogT3ZlcmxheVBvc2l0aW9uKTogdGhpcyB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9yZWYuY29uZmlnLnBvc2l0aW9uU3RyYXRlZ3kgYXMgR2xvYmFsUG9zaXRpb25TdHJhdGVneTtcblxuICAgIGlmIChwb3NpdGlvbiAmJiAocG9zaXRpb24ubGVmdCB8fCBwb3NpdGlvbi5yaWdodCkpIHtcbiAgICAgIHBvc2l0aW9uLmxlZnQgPyBzdHJhdGVneS5sZWZ0KHBvc2l0aW9uLmxlZnQpIDogc3RyYXRlZ3kucmlnaHQocG9zaXRpb24ucmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJhdGVneS5jZW50ZXJIb3Jpem9udGFsbHkoKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gJiYgKHBvc2l0aW9uLnRvcCB8fCBwb3NpdGlvbi5ib3R0b20pKSB7XG4gICAgICBwb3NpdGlvbi50b3AgPyBzdHJhdGVneS50b3AocG9zaXRpb24udG9wKSA6IHN0cmF0ZWd5LmJvdHRvbShwb3NpdGlvbi5ib3R0b20pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHJhdGVneS5jZW50ZXJWZXJ0aWNhbGx5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVmLnVwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHVwZGF0ZVNpemUod2lkdGggPSAnJywgaGVpZ2h0ID0gJycpOiB0aGlzIHtcbiAgICB0aGlzLl9yZWYudXBkYXRlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFBhbmVsQ2xhc3MoY2xhc3Nlczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLl9yZWYuYWRkUGFuZWxDbGFzcyhjbGFzc2VzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJlbW92ZVBhbmVsQ2xhc3MoY2xhc3Nlczogc3RyaW5nIHwgc3RyaW5nW10pOiB0aGlzIHtcbiAgICB0aGlzLl9yZWYucmVtb3ZlUGFuZWxDbGFzcyhjbGFzc2VzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldFN0YXRlKCk6IE92ZXJsYXlTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluaXNoT3ZlcmxheUNsb3NlKCkge1xuICAgIHRoaXMuX3N0YXRlID0gT1ZFUkxBWV9TVEFURS5DTE9TRUQ7XG4gICAgdGhpcy5fcmVmLmNsb3NlKHRoaXMuX3Jlc3VsdCwgeyBmb2N1c09yaWdpbjogdGhpcy5fY2xvc2VJbnRlcmFjdGlvblR5cGUgfSk7XG4gICAgdGhpcy5jb21wb25lbnRJbnN0YW5jZSA9IG51bGw7XG4gIH1cblxuICBfY2xvc2VPdmVybGF5VmlhKGludGVyYWN0aW9uVHlwZTogRm9jdXNPcmlnaW4sIHJlc3VsdD86IFIsIGZvcmNlPzogYm9vbGVhbikge1xuICAgIHRoaXMuX2Nsb3NlSW50ZXJhY3Rpb25UeXBlID0gaW50ZXJhY3Rpb25UeXBlO1xuICAgIHJldHVybiB0aGlzLmNsb3NlKHJlc3VsdCwgZm9yY2UpO1xuICB9XG5cbiAgX2FkZEludGVybmFsQmFja2Ryb3BDbG9zZUluaXRpYXRvcihpbml0aWF0b3JJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZUNsb3NlKSByZXR1cm47XG5cbiAgICB0aGlzLl9kaXNhYmxlQ2xvc2VGcm9tSW50ZXJuYWxJbml0aWF0b3JzLmFkZChpbml0aWF0b3JJZCk7XG4gIH1cblxuICBfcmVtb3ZlSW50ZXJuYWxCYWNrZHJvcENsb3NlSW5pdGlhdG9yKGluaXRpYXRvcklkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlQ2xvc2UpIHJldHVybjtcblxuICAgIHRoaXMuX2Rpc2FibGVDbG9zZUZyb21JbnRlcm5hbEluaXRpYXRvcnMuZGVsZXRlKGluaXRpYXRvcklkKTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { ESCAPE } from '@angular/cdk/keycodes';
2
2
  import { assertInInjectionContext, inject, isDevMode } from '@angular/core';
3
3
  import { createDestroy, equal } from '@ethlete/core';
4
- import { Observable, filter, from, map, merge, of, switchMap, take, takeUntil, tap } from 'rxjs';
4
+ import { Observable, filter, finalize, from, map, merge, of, switchMap, takeUntil, tap } from 'rxjs';
5
5
  import { OverlayRef } from '../components';
6
6
  /**
7
7
  * A utility function to enhance the ux of overlays containing forms.
@@ -39,41 +39,59 @@ export const createOverlayDismissChecker = (config) => {
39
39
  }
40
40
  }
41
41
  if (checkCloseCall) {
42
- eventStreams.push(overlayRef.closeCalled());
42
+ eventStreams.push(overlayRef.closeCalled().pipe(filter((e) => !e.forced), map((e) => e.result)));
43
43
  }
44
44
  const sub = merge(...eventStreams)
45
- .pipe(takeUntil(destroy$), filter(() => {
46
- const isNotEqual = !equal(form.getRawValue(), defaultValue);
47
- const hasNoOtherInternalOverlays = !overlayRef._internalDisableClose;
48
- const wasKeyboard = overlayRef._closeInteractionType === 'keyboard';
49
- const wasMouse = overlayRef._closeInteractionType === 'mouse';
50
- if ((wasKeyboard && !checkEscapeKey) || (wasMouse && !checkBackdropClick)) {
51
- return false;
52
- }
53
- return isNotEqual && hasNoOtherInternalOverlays;
54
- }), switchMap((result) => {
55
- const checkResponse = dismissCheckFn(form.getRawValue());
56
- let nextObservable;
57
- if (checkResponse instanceof Observable) {
58
- nextObservable = checkResponse;
59
- }
60
- else if (checkResponse instanceof Promise) {
61
- nextObservable = from(checkResponse);
45
+ .pipe(switchMap((eventOrResult) => {
46
+ const isDefaultFormValue = equal(form.getRawValue(), defaultValue);
47
+ if (isDefaultFormValue) {
48
+ return of(eventOrResult).pipe(tap(() => {
49
+ sub.unsubscribe();
50
+ if (eventOrResult === 'keyboard' || eventOrResult === 'mouse') {
51
+ overlayRef._closeOverlayVia(eventOrResult, undefined, true);
52
+ }
53
+ else {
54
+ overlayRef.close(eventOrResult, true);
55
+ }
56
+ }));
62
57
  }
63
58
  else {
64
- nextObservable = of(checkResponse);
59
+ return of(eventOrResult).pipe(filter(() => {
60
+ const wasKeyboard = overlayRef._closeInteractionType === 'keyboard';
61
+ const wasMouse = overlayRef._closeInteractionType === 'mouse';
62
+ if ((wasKeyboard && !checkEscapeKey) || (wasMouse && !checkBackdropClick)) {
63
+ return false;
64
+ }
65
+ return !overlayRef._internalDisableClose;
66
+ }), switchMap(() => {
67
+ const checkResponse = dismissCheckFn(form.getRawValue());
68
+ let nextObservable;
69
+ if (checkResponse instanceof Observable) {
70
+ nextObservable = checkResponse;
71
+ }
72
+ else if (checkResponse instanceof Promise) {
73
+ nextObservable = from(checkResponse);
74
+ }
75
+ else {
76
+ nextObservable = of(checkResponse);
77
+ }
78
+ return nextObservable.pipe(filter((checkFnResult) => !!checkFnResult), tap(() => {
79
+ sub.unsubscribe();
80
+ if (eventOrResult === 'keyboard' || eventOrResult === 'mouse') {
81
+ overlayRef._closeOverlayVia(eventOrResult, undefined, true);
82
+ }
83
+ else {
84
+ overlayRef.close(eventOrResult, true);
85
+ }
86
+ }));
87
+ }));
65
88
  }
66
- return nextObservable.pipe(filter((response) => !!response), tap((response) => {
67
- sub.unsubscribe();
68
- if (response === 'keyboard' || response === 'mouse') {
69
- overlayRef._closeOverlayVia(response, undefined, true);
70
- }
71
- else {
72
- overlayRef.close(result, true);
73
- }
74
- }), take(1));
75
- }), takeUntil(destroy$), take(1))
89
+ }), takeUntil(destroy$), finalize(() => {
90
+ overlayRef._isBackdropCloseControlledExternally = false;
91
+ overlayRef._isEscCloseControlledExternally = false;
92
+ overlayRef._isCloseFnCloseControlledExternally = false;
93
+ }))
76
94
  .subscribe();
77
95
  return sub;
78
96
  };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaXNtaXNzLWNoZWNrZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktZGlzbWlzcy1jaGVja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTZEM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsTUFBNEMsRUFDNUMsRUFBRTtJQUNGLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFdEQsTUFBTSxFQUNKLElBQUksRUFDSixZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUNqQyxhQUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUN6RSxjQUFjLEdBQ2YsR0FBRyxNQUFNLENBQUM7SUFFWCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO0lBQy9ELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFB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O1lBQzNDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEM7YUFBTTtZQUNMLGNBQWMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDcEM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQ3hCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUNoQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNmLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVsQixJQUFJLFFBQVEsS0FBSyxVQUFVLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtnQkFDbkQsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0wsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsRUFDRixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQztJQUNKLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFDbkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSO1NBQ0EsU0FBUyxFQUFFLENBQUM7SUFFZixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVTQ0FQRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95LCBlcXVhbCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBmcm9tLCBtYXAsIG1lcmdlLCBvZiwgc3dpdGNoTWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXJDb25maWc8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4gPSB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSB0byBjaGVjayBmb3IgY2hhbmdlc1xuICAgKi9cbiAgZm9ybTogVDtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgdG8gY29tcGFyZSB0aGUgY3VycmVudCBmb3JtIHZhbHVlIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IGZvcm0uZ2V0UmF3VmFsdWUoKVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGV2ZW50cyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgYmFja2Ryb3BDbGljazogdHJ1ZSwgZXNjYXBlS2V5OiB0cnVlLCBjbG9zZUNhbGw6IHRydWUgfVxuICAgKi9cbiAgZGlzbWlzc0V2ZW50cz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBiYWNrZHJvcCBjbGljayBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVja1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGJhY2tkcm9wQ2xpY2s/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZXNjYXBlIGtleSBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVja1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVzY2FwZUtleT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjbG9zZSBjYWxsIHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrLlxuICAgICAqIChlLmcuIGBvdmVybGF5UmVmLmNsb3NlKClgKVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGNsb3NlQ2FsbD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgY3VycmVudCBmb3JtIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogVXNlIHRoaXMgdG8gc2hvdyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgb3Igc2ltaWxhci5cbiAgICpcbiAgICogQGV4YW1wbGUgU2hvdyBhIGNvbmZpcm1hdGlvbiBkaWFsb2c6XG4gICAqIGBgYHRzXG4gICAqICgpID0+IHRoaXMub3ZlcmxheVNlcnZpY2VcbiAgICogICAuc2hvdyhTb21lQ29uZmlybWF0aW9uQ29tcG9uZW50KVxuICAgKiAgIC5hZnRlckNsb3NlZCgpXG4gICAqICAgLnBpcGUobWFwKChyZXN1bHQpID0+ICEhcmVzdWx0Py5jb25maXJtZWQpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHYgVGhlIGN1cnJlbnQgZm9ybSB2YWx1ZVxuICAgKi9cbiAgZGlzbWlzc0NoZWNrRm46ICh2OiBSZXR1cm5UeXBlPFRbJ2dldFJhd1ZhbHVlJ10+KSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPiB8IE9ic2VydmFibGU8dW5rbm93bj47XG59O1xuXG4vKipcbiAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSB1eCBvZiBvdmVybGF5cyBjb250YWluaW5nIGZvcm1zLlxuICogSXQgY2FuIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgY2xvc2luZyB0aGUgb3ZlcmxheSB3aGVuIHRoZSBmb3JtIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlciA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPihcbiAgY29uZmlnOiBDcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXJDb25maWc8VD4sXG4pID0+IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGNyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlcik7XG5cbiAgY29uc3Qge1xuICAgIGZvcm0sXG4gICAgZGVmYXVsdFZhbHVlID0gZm9ybS5nZXRSYXdWYWx1ZSgpLFxuICAgIGRpc21pc3NFdmVudHMgPSB7IGJhY2tkcm9wQ2xpY2s6IHRydWUsIGVzY2FwZUtleTogdHJ1ZSwgY2xvc2VDYWxsOiB0cnVlIH0sXG4gICAgZGlzbWlzc0NoZWNrRm4sXG4gIH0gPSBjb25maWc7XG5cbiAgY29uc3QgY2hlY2tCYWNrZHJvcENsaWNrID0gZGlzbWlzc0V2ZW50cy5iYWNrZHJvcENsaWNrID8/IHRydWU7XG4gIGNvbnN0IGNoZWNrRXNjYXBlS2V5ID0gZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkgPz8gdHJ1ZTtcbiAgY29uc3QgY2hlY2tDbG9zZUNhbGwgPSBkaXNtaXNzRXZlbnRzLmNsb3NlQ2FsbCA/PyB0cnVlO1xuXG4gIGlmICghY2hlY2tCYWNrZHJvcENsaWNrICYmICFjaGVja0VzY2FwZUtleSAmJiAhY2hlY2tDbG9zZUNhbGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBkaXNtaXNzIGV2ZW50IG11c3QgYmUgZW5hYmxlZCcpO1xuICB9XG5cbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIGNvbnN0IG92ZXJsYXlSZWYgPSBpbmplY3QoT3ZlcmxheVJlZik7XG5cbiAgb3ZlcmxheVJlZi5faXNCYWNrZHJvcENsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBjaGVja0JhY2tkcm9wQ2xpY2s7XG4gIG92ZXJsYXlSZWYuX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGNoZWNrRXNjYXBlS2V5O1xuICBvdmVybGF5UmVmLl9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gY2hlY2tDbG9zZUNhbGw7XG5cbiAgY29uc3QgZXZlbnRTdHJlYW1zOiBPYnNlcnZhYmxlPHVua25vd24+W10gPSBbXTtcblxuICBpZiAoY2hlY2tCYWNrZHJvcENsaWNrKSB7XG4gICAgaWYgKCFvdmVybGF5UmVmLmRpc2FibGVDbG9zZSkge1xuICAgICAgZXZlbnRTdHJlYW1zLnB1c2gob3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkucGlwZShtYXAoKCkgPT4gJ21vdXNlJykpKTtcbiAgICB9IGVsc2UgaWYgKGlzRGV2TW9kZSgpICYmIGRpc21pc3NFdmVudHMuYmFja2Ryb3BDbGljaykge1xuICAgICAgY29uc29sZS53YXJuKCdkaXNtaXNzRXZlbnRzLmJhY2tkcm9wQ2xpY2sgYmVpbmcgc2V0IHRvIHRydWUgaGFzIG5vIGVmZmVjdCB3aGVuIG92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlIGlzIHRydWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrRXNjYXBlS2V5KSB7XG4gICAgaWYgKCFvdmVybGF5UmVmLmRpc2FibGVDbG9zZSkge1xuICAgICAgZXZlbnRTdHJlYW1zLnB1c2goXG4gICAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSxcbiAgICAgICAgICBtYXAoKCkgPT4gJ2tleWJvYXJkJyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkgJiYgZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkpIHtcbiAgICAgIGNvbnNvbGUud2FybignZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkgYmVpbmcgc2V0IHRvIHRydWUgaGFzIG5vIGVmZmVjdCB3aGVuIG92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlIGlzIHRydWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrQ2xvc2VDYWxsKSB7XG4gICAgZXZlbnRTdHJlYW1zLnB1c2gob3ZlcmxheVJlZi5jbG9zZUNhbGxlZCgpKTtcbiAgfVxuXG4gIGNvbnN0IHN1YiA9IG1lcmdlKC4uLmV2ZW50U3RyZWFtcylcbiAgICAucGlwZShcbiAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBpc05vdEVxdWFsID0gIWVxdWFsKGZvcm0uZ2V0UmF3VmFsdWUoKSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgY29uc3QgaGFzTm9PdGhlckludGVybmFsT3ZlcmxheXMgPSAhb3ZlcmxheVJlZi5faW50ZXJuYWxEaXNhYmxlQ2xvc2U7XG5cbiAgICAgICAgY29uc3Qgd2FzS2V5Ym9hcmQgPSBvdmVybGF5UmVmLl9jbG9zZUludGVyYWN0aW9uVHlwZSA9PT0gJ2tleWJvYXJkJztcbiAgICAgICAgY29uc3Qgd2FzTW91c2UgPSBvdmVybGF5UmVmLl9jbG9zZUludGVyYWN0aW9uVHlwZSA9PT0gJ21vdXNlJztcblxuICAgICAgICBpZiAoKHdhc0tleWJvYXJkICYmICFjaGVja0VzY2FwZUtleSkgfHwgKHdhc01vdXNlICYmICFjaGVja0JhY2tkcm9wQ2xpY2spKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlzTm90RXF1YWwgJiYgaGFzTm9PdGhlckludGVybmFsT3ZlcmxheXM7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBkaXNtaXNzQ2hlY2tGbihmb3JtLmdldFJhd1ZhbHVlKCkpO1xuXG4gICAgICAgIGxldCBuZXh0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx1bmtub3duPjtcblxuICAgICAgICBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGNoZWNrUmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGZyb20oY2hlY2tSZXNwb25zZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dE9ic2VydmFibGUgPSBvZihjaGVja1Jlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0T2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgIGZpbHRlcigocmVzcG9uc2UpID0+ICEhcmVzcG9uc2UpLFxuICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgPT09ICdrZXlib2FyZCcgfHwgcmVzcG9uc2UgPT09ICdtb3VzZScpIHtcbiAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKHJlc3BvbnNlLCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgb3ZlcmxheVJlZi5jbG9zZShyZXN1bHQsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICB0YWtlKDEpLFxuICAgIClcbiAgICAuc3Vic2NyaWJlKCk7XG5cbiAgcmV0dXJuIHN1Yjtcbn07XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaXNtaXNzLWNoZWNrZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktZGlzbWlzcy1jaGVja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQTZEM0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FDekMsTUFBNEMsRUFDNUMsRUFBRTtJQUNGLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFdEQsTUFBTSxFQUNKLElBQUksRUFDSixZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUNqQyxhQUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUN6RSxjQUFjLEdBQ2YsR0FBRyxNQUFNLENBQUM7SUFFWCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO0lBQy9ELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO0lBQ3ZELE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO0lBRXZELElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUM3RCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7S0FDL0Q7SUFFRCxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNqQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFdEMsVUFBVSxDQUFDLG9DQUFvQyxHQUFHLGtCQUFrQixDQUFDO0lBQ3JFLFVBQVUsQ0FBQywrQkFBK0IsR0FBRyxjQUFjLENBQUM7SUFDNUQsVUFBVSxDQUFDLG1DQUFtQyxHQUFHLGNBQWMsQ0FBQztJQUVoRSxNQUFNLFlBQVksR0FBaUQsRUFBRSxDQUFDO0lBRXRFLElBQUksa0JBQWtCLEVBQUU7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDNUIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDeEU7YUFBTSxJQUFJLFNBQVMsRUFBRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxtR0FBbUcsQ0FBQyxDQUFDO1NBQ25IO0tBQ0Y7SUFFRCxJQUFJLGNBQWMsRUFBRTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRTtZQUM1QixZQUFZLENBQUMsSUFBSSxDQUNmLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQzdCLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsRUFDM0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUN0QixDQUNGLENBQUM7U0FDSDthQUFNLElBQUksU0FBUyxFQUFFLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtGQUErRixDQUFDLENBQUM7U0FDL0c7S0FDRjtJQUVELElBQUksY0FBYyxFQUFFO1FBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQ2YsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDM0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQ3JCLENBQ0YsQ0FBQztLQUNIO0lBRUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDO1NBQy9CLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUMxQixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbkUsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUVsQixJQUFJLGFBQWEsS0FBSyxVQUFVLElBQUksYUFBYSxLQUFLLE9BQU8sRUFBRTtvQkFDN0QsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzdEO3FCQUFNO29CQUNMLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2QztZQUNILENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUMzQixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNWLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsS0FBSyxVQUFVLENBQUM7Z0JBQ3BFLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsS0FBSyxPQUFPLENBQUM7Z0JBRTlELElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7b0JBQ3pFLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUVELE9BQU8sQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7WUFDM0MsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBRXpELElBQUksY0FBbUMsQ0FBQztnQkFFeEMsSUFBSSxhQUFhLFlBQVksVUFBVSxFQUFFO29CQUN2QyxjQUFjLEdBQUcsYUFBYSxDQUFDO2lCQUNoQztxQkFBTSxJQUFJLGFBQWEsWUFBWSxPQUFPLEVBQUU7b0JBQzNDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3RDO3FCQUFNO29CQUNMLGNBQWMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ3BDO2dCQUVELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FDeEIsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ1AsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUVsQixJQUFJLGFBQWEsS0FBSyxVQUFVLElBQUksYUFBYSxLQUFLLE9BQU8sRUFBRTt3QkFDN0QsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQzdEO3lCQUFNO3dCQUNMLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO3FCQUN2QztnQkFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO0lBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUNuQixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ1osVUFBVSxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQztRQUN4RCxVQUFVLENBQUMsK0JBQStCLEdBQUcsS0FBSyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxtQ0FBbUMsR0FBRyxLQUFLLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQ0g7U0FDQSxTQUFTLEVBQUUsQ0FBQztJQUVmLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3ksIGVxdWFsIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaWx0ZXIsIGZpbmFsaXplLCBmcm9tLCBtYXAsIG1lcmdlLCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uL2NvbXBvbmVudHMnO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXJDb25maWc8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4gPSB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybSB0byBjaGVjayBmb3IgY2hhbmdlc1xuICAgKi9cbiAgZm9ybTogVDtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgdG8gY29tcGFyZSB0aGUgY3VycmVudCBmb3JtIHZhbHVlIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IGZvcm0uZ2V0UmF3VmFsdWUoKVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogdW5rbm93bjtcblxuICAvKipcbiAgICogVGhlIGV2ZW50cyB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrXG4gICAqXG4gICAqIEBkZWZhdWx0IHsgYmFja2Ryb3BDbGljazogdHJ1ZSwgZXNjYXBlS2V5OiB0cnVlLCBjbG9zZUNhbGw6IHRydWUgfVxuICAgKi9cbiAgZGlzbWlzc0V2ZW50cz86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBiYWNrZHJvcCBjbGljayBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVja1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGJhY2tkcm9wQ2xpY2s/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZXNjYXBlIGtleSBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVja1xuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVzY2FwZUtleT86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjbG9zZSBjYWxsIHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrLlxuICAgICAqIChlLmcuIGBvdmVybGF5UmVmLmNsb3NlKClgKVxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGNsb3NlQ2FsbD86IGJvb2xlYW47XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgY3VycmVudCBmb3JtIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogVXNlIHRoaXMgdG8gc2hvdyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgb3Igc2ltaWxhci5cbiAgICpcbiAgICogQGV4YW1wbGUgU2hvdyBhIGNvbmZpcm1hdGlvbiBkaWFsb2c6XG4gICAqIGBgYHRzXG4gICAqICgpID0+IHRoaXMub3ZlcmxheVNlcnZpY2VcbiAgICogICAuc2hvdyhTb21lQ29uZmlybWF0aW9uQ29tcG9uZW50KVxuICAgKiAgIC5hZnRlckNsb3NlZCgpXG4gICAqICAgLnBpcGUobWFwKChyZXN1bHQpID0+ICEhcmVzdWx0Py5jb25maXJtZWQpKVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHYgVGhlIGN1cnJlbnQgZm9ybSB2YWx1ZVxuICAgKi9cbiAgZGlzbWlzc0NoZWNrRm46ICh2OiBSZXR1cm5UeXBlPFRbJ2dldFJhd1ZhbHVlJ10+KSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPiB8IE9ic2VydmFibGU8dW5rbm93bj47XG59O1xuXG4vKipcbiAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byBlbmhhbmNlIHRoZSB1eCBvZiBvdmVybGF5cyBjb250YWluaW5nIGZvcm1zLlxuICogSXQgY2FuIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBhY2NpZGVudGFsbHkgY2xvc2luZyB0aGUgb3ZlcmxheSB3aGVuIHRoZSBmb3JtIHZhbHVlIGlzIG5vdCBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlciA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPihcbiAgY29uZmlnOiBDcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXJDb25maWc8VD4sXG4pID0+IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGNyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlcik7XG5cbiAgY29uc3Qge1xuICAgIGZvcm0sXG4gICAgZGVmYXVsdFZhbHVlID0gZm9ybS5nZXRSYXdWYWx1ZSgpLFxuICAgIGRpc21pc3NFdmVudHMgPSB7IGJhY2tkcm9wQ2xpY2s6IHRydWUsIGVzY2FwZUtleTogdHJ1ZSwgY2xvc2VDYWxsOiB0cnVlIH0sXG4gICAgZGlzbWlzc0NoZWNrRm4sXG4gIH0gPSBjb25maWc7XG5cbiAgY29uc3QgY2hlY2tCYWNrZHJvcENsaWNrID0gZGlzbWlzc0V2ZW50cy5iYWNrZHJvcENsaWNrID8/IHRydWU7XG4gIGNvbnN0IGNoZWNrRXNjYXBlS2V5ID0gZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkgPz8gdHJ1ZTtcbiAgY29uc3QgY2hlY2tDbG9zZUNhbGwgPSBkaXNtaXNzRXZlbnRzLmNsb3NlQ2FsbCA/PyB0cnVlO1xuXG4gIGlmICghY2hlY2tCYWNrZHJvcENsaWNrICYmICFjaGVja0VzY2FwZUtleSAmJiAhY2hlY2tDbG9zZUNhbGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBkaXNtaXNzIGV2ZW50IG11c3QgYmUgZW5hYmxlZCcpO1xuICB9XG5cbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIGNvbnN0IG92ZXJsYXlSZWYgPSBpbmplY3QoT3ZlcmxheVJlZik7XG5cbiAgb3ZlcmxheVJlZi5faXNCYWNrZHJvcENsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBjaGVja0JhY2tkcm9wQ2xpY2s7XG4gIG92ZXJsYXlSZWYuX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGNoZWNrRXNjYXBlS2V5O1xuICBvdmVybGF5UmVmLl9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gY2hlY2tDbG9zZUNhbGw7XG5cbiAgY29uc3QgZXZlbnRTdHJlYW1zOiBPYnNlcnZhYmxlPCdtb3VzZScgfCAna2V5Ym9hcmQnIHwgdW5rbm93bj5bXSA9IFtdO1xuXG4gIGlmIChjaGVja0JhY2tkcm9wQ2xpY2spIHtcbiAgICBpZiAoIW92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlKSB7XG4gICAgICBldmVudFN0cmVhbXMucHVzaChvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKG1hcCgoKSA9PiAnbW91c2UnKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkgJiYgZGlzbWlzc0V2ZW50cy5iYWNrZHJvcENsaWNrKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2Rpc21pc3NFdmVudHMuYmFja2Ryb3BDbGljayBiZWluZyBzZXQgdG8gdHJ1ZSBoYXMgbm8gZWZmZWN0IHdoZW4gb3ZlcmxheVJlZi5kaXNhYmxlQ2xvc2UgaXMgdHJ1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tFc2NhcGVLZXkpIHtcbiAgICBpZiAoIW92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlKSB7XG4gICAgICBldmVudFN0cmVhbXMucHVzaChcbiAgICAgICAgb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUpLFxuICAgICAgICAgIG1hcCgoKSA9PiAna2V5Ym9hcmQnKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0Rldk1vZGUoKSAmJiBkaXNtaXNzRXZlbnRzLmVzY2FwZUtleSkge1xuICAgICAgY29uc29sZS53YXJuKCdkaXNtaXNzRXZlbnRzLmVzY2FwZUtleSBiZWluZyBzZXQgdG8gdHJ1ZSBoYXMgbm8gZWZmZWN0IHdoZW4gb3ZlcmxheVJlZi5kaXNhYmxlQ2xvc2UgaXMgdHJ1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tDbG9zZUNhbGwpIHtcbiAgICBldmVudFN0cmVhbXMucHVzaChcbiAgICAgIG92ZXJsYXlSZWYuY2xvc2VDYWxsZWQoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGUpID0+ICFlLmZvcmNlZCksXG4gICAgICAgIG1hcCgoZSkgPT4gZS5yZXN1bHQpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3ViID0gbWVyZ2UoLi4uZXZlbnRTdHJlYW1zKVxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChldmVudE9yUmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdEZvcm1WYWx1ZSA9IGVxdWFsKGZvcm0uZ2V0UmF3VmFsdWUoKSwgZGVmYXVsdFZhbHVlKTtcblxuICAgICAgICBpZiAoaXNEZWZhdWx0Rm9ybVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGV2ZW50T3JSZXN1bHQpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICBpZiAoZXZlbnRPclJlc3VsdCA9PT0gJ2tleWJvYXJkJyB8fCBldmVudE9yUmVzdWx0ID09PSAnbW91c2UnKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5jbG9zZShldmVudE9yUmVzdWx0LCB0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoZXZlbnRPclJlc3VsdCkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc0tleWJvYXJkID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdrZXlib2FyZCc7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc01vdXNlID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdtb3VzZSc7XG5cbiAgICAgICAgICAgICAgaWYgKCh3YXNLZXlib2FyZCAmJiAhY2hlY2tFc2NhcGVLZXkpIHx8ICh3YXNNb3VzZSAmJiAhY2hlY2tCYWNrZHJvcENsaWNrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAhb3ZlcmxheVJlZi5faW50ZXJuYWxEaXNhYmxlQ2xvc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBkaXNtaXNzQ2hlY2tGbihmb3JtLmdldFJhd1ZhbHVlKCkpO1xuXG4gICAgICAgICAgICAgIGxldCBuZXh0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx1bmtub3duPjtcblxuICAgICAgICAgICAgICBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGNoZWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGZyb20oY2hlY2tSZXNwb25zZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV4dE9ic2VydmFibGUgPSBvZihjaGVja1Jlc3BvbnNlKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXh0T2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY2hlY2tGblJlc3VsdCkgPT4gISFjaGVja0ZuUmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChldmVudE9yUmVzdWx0ID09PSAna2V5Ym9hcmQnIHx8IGV2ZW50T3JSZXN1bHQgPT09ICdtb3VzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmNsb3NlKGV2ZW50T3JSZXN1bHQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBvdmVybGF5UmVmLl9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgICBvdmVybGF5UmVmLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcbiAgICAgICAgb3ZlcmxheVJlZi5faXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICByZXR1cm4gc3ViO1xufTtcbiJdfQ==