@fundamental-ngx/cdk 0.43.18 → 0.43.20

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.
@@ -1,13 +1,17 @@
1
1
  /* eslint-disable @typescript-eslint/member-ordering */
2
- import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';
2
+ import { Directive, ElementRef, EventEmitter, Input, NgZone, Output } from '@angular/core';
3
3
  import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';
4
4
  import { KeyUtil } from '../../functions/key-util';
5
5
  import { DeprecatedSelector, FD_DEPRECATED_DIRECTIVE_SELECTOR, getDeprecatedModel } from '../../deprecated-selector.class';
6
+ import { DestroyedService } from '../../services';
7
+ import { first, fromEvent, map, switchMap, takeUntil } from 'rxjs';
6
8
  import * as i0 from "@angular/core";
9
+ import * as i1 from "../../services";
7
10
  export class DeprecatedAutoCompleteDirective extends DeprecatedSelector {
8
11
  }
9
12
  DeprecatedAutoCompleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeprecatedAutoCompleteDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
10
13
  DeprecatedAutoCompleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DeprecatedAutoCompleteDirective, isStandalone: true, selector: "[fdAutoComplete], [fd-auto-complete]", providers: [
14
+ DestroyedService,
11
15
  {
12
16
  provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
13
17
  useValue: getDeprecatedModel('[fdkAutoComplete]', '[fdAutoComplete], [fd-auto-complete]')
@@ -20,6 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
20
24
  selector: '[fdAutoComplete], [fd-auto-complete]',
21
25
  standalone: true,
22
26
  providers: [
27
+ DestroyedService,
23
28
  {
24
29
  provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,
25
30
  useValue: getDeprecatedModel('[fdkAutoComplete]', '[fdAutoComplete], [fd-auto-complete]')
@@ -29,8 +34,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
29
34
  }] });
30
35
  export class AutoCompleteDirective {
31
36
  /** @hidden */
32
- constructor(_elementRef) {
37
+ // eslint-disable-next-line @typescript-eslint/member-ordering
38
+ constructor(_elementRef, _zone, _destroy$) {
33
39
  this._elementRef = _elementRef;
40
+ this._zone = _zone;
41
+ this._destroy$ = _destroy$;
34
42
  /** Whether the auto complete directive should be enabled */
35
43
  this.enable = true;
36
44
  /** Matcher function for testing the str for a search term */
@@ -48,9 +56,23 @@ export class AutoCompleteDirective {
48
56
  this._fillKeys = [LEFT_ARROW, RIGHT_ARROW];
49
57
  /** @hidden */
50
58
  this._stopKeys = [BACKSPACE, DELETE, ESCAPE];
59
+ /**
60
+ * Fixes #10710
61
+ * WIth chinese characters inputText property update was triggered after the keyup event trigger.
62
+ * By ensuring that we set all properties we can proceed with stable data.
63
+ */
64
+ this._zone.runOutsideAngular(() => {
65
+ const keyupEvent = fromEvent(this._elementRef.nativeElement, 'keyup');
66
+ keyupEvent
67
+ .pipe(switchMap((evt) => this._zone.onStable.pipe(first(), map(() => evt))), takeUntil(this._destroy$))
68
+ .subscribe((evt) => {
69
+ this._handleKeyboardEvent(evt);
70
+ console.log(this.inputText);
71
+ });
72
+ });
51
73
  }
52
74
  /** @hidden */
53
- handleKeyboardEvent(event) {
75
+ _handleKeyboardEvent(event) {
54
76
  if (this.enable) {
55
77
  if (KeyUtil.isKeyCode(event, this._stopKeys)) {
56
78
  this._elementRef.nativeElement.value = this.inputText;
@@ -114,15 +136,15 @@ export class AutoCompleteDirective {
114
136
  this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);
115
137
  }
116
138
  }
117
- AutoCompleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutoCompleteDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
118
- AutoCompleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutoCompleteDirective, isStandalone: true, selector: "[fdkAutoComplete], [fdAutoComplete], [fd-auto-complete]", inputs: { options: "options", inputText: "inputText", enable: "enable", matcher: "matcher", displayFn: "displayFn" }, outputs: { onComplete: "onComplete" }, host: { listeners: { "keyup": "handleKeyboardEvent($event)" } }, ngImport: i0 });
139
+ AutoCompleteDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutoCompleteDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DestroyedService }], target: i0.ɵɵFactoryTarget.Directive });
140
+ AutoCompleteDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AutoCompleteDirective, isStandalone: true, selector: "[fdkAutoComplete], [fdAutoComplete], [fd-auto-complete]", inputs: { options: "options", inputText: "inputText", enable: "enable", matcher: "matcher", displayFn: "displayFn" }, outputs: { onComplete: "onComplete" }, ngImport: i0 });
119
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AutoCompleteDirective, decorators: [{
120
142
  type: Directive,
121
143
  args: [{
122
144
  selector: '[fdkAutoComplete], [fdAutoComplete], [fd-auto-complete]',
123
145
  standalone: true
124
146
  }]
125
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
147
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DestroyedService }]; }, propDecorators: { options: [{
126
148
  type: Input
127
149
  }], inputText: [{
128
150
  type: Input
@@ -134,8 +156,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
134
156
  type: Input
135
157
  }], onComplete: [{
136
158
  type: Output
137
- }], handleKeyboardEvent: [{
138
- type: HostListener,
139
- args: ['keyup', ['$event']]
140
159
  }] } });
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7O0FBa0J6QyxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsa0JBQWtCOzs0SEFBMUQsK0JBQStCO2dIQUEvQiwrQkFBK0IsbUZBUDdCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxzQ0FBc0MsQ0FBQztTQUM1RjtLQUNKOzJGQUVRLCtCQUErQjtrQkFYM0MsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGdDQUFnQzs0QkFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLHNDQUFzQyxDQUFDO3lCQUM1RjtxQkFDSjtpQkFDSjs7QUFPRCxNQUFN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TTtnQkF3QlAsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmcgKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJBQ0tTUEFDRSwgQ09OVFJPTCwgREVMRVRFLCBFTlRFUiwgRVNDQVBFLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBLZXlVdGlsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2tleS11dGlsJztcbmltcG9ydCB7XG4gICAgRGVwcmVjYXRlZFNlbGVjdG9yLFxuICAgIEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgIGdldERlcHJlY2F0ZWRNb2RlbFxufSBmcm9tICcuLi8uLi9kZXByZWNhdGVkLXNlbGVjdG9yLmNsYXNzJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRvQ29tcGxldGVFdmVudCB7XG4gICAgdGVybTogc3RyaW5nO1xuICAgIGZvcmNlQ2xvc2U6IGJvb2xlYW47XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbZmRBdXRvQ29tcGxldGVdLCBbZmQtYXV0by1jb21wbGV0ZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RFUFJFQ0FURURfRElSRUNUSVZFX1NFTEVDVE9SLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGdldERlcHJlY2F0ZWRNb2RlbCgnW2Zka0F1dG9Db21wbGV0ZV0nLCAnW2ZkQXV0b0NvbXBsZXRlXSwgW2ZkLWF1dG8tY29tcGxldGVdJylcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRGVwcmVjYXRlZEF1dG9Db21wbGV0ZURpcmVjdGl2ZSBleHRlbmRzIERlcHJlY2F0ZWRTZWxlY3RvciB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtBdXRvQ29tcGxldGVdLCBbZmRBdXRvQ29tcGxldGVdLCBbZmQtYXV0by1jb21wbGV0ZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlRGlyZWN0aXZlIHtcbiAgICAvKiogVmFsdWVzIHRoYXQgd2lsbCBmaWxsIG1pc3NpbmcgdGV4dCBpbiB0aGUgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICBvcHRpb25zOiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIElucHV0IHRleHQsIHRoYXQgaXMgdGFrZW4gZnJvbSBuZ01vZGVsIG9mIGZvcm1Db250cm9sLFxuICAgICAqIHRoZXJlIGhhcyB0byBiZSBkaWZmZXJlbmNlIGJldHdlZW4gbmF0aXZlIGlucHV0IHZhbHVlIGFuZCBtb2RlbCB2YWx1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYXV0byBjb21wbGV0ZSBkaXJlY3RpdmUgc2hvdWxkIGJlIGVuYWJsZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGVuYWJsZSA9IHRydWU7XG5cbiAgICAvKiogTWF0Y2hlciBmdW5jdGlvbiBmb3IgdGVzdGluZyB0aGUgc3RyIGZvciBhIHNlYXJjaCB0ZXJtICovXG4gICAgQElucHV0KClcbiAgICBtYXRjaGVyID0gKHN0cjogc3RyaW5nLCBzZWFyY2hUZXJtOiBzdHJpbmcpOiBib29sZWFuID0+IHN0ci5zdGFydHNXaXRoKHNlYXJjaFRlcm0pO1xuXG4gICAgLyoqIERpc3BsYXkgZnVuY3Rpb24uIEFjY2VwdHMgYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlXG4gICAgICogaXRlbXMgcGFzc2VkIHRvIGRyb3Bkb3duVmFsdWVzIGFzIGFyZ3VtZW50LCBhbmQgb3V0cHV0cyBhIHN0cmluZy5cbiAgICAgKiBBbiBhcnJvdyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlICp0aGlzKiBrZXl3b3JkIGluIHRoZSBjYWxsaW5nIGNvbXBvbmVudC5cbiAgICAgKiBTZWUgc2VhcmNoIGlucHV0IGV4YW1wbGVzIGZvciBkZXRhaWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheUZuID0gdGhpcy5fZGVmYXVsdERpc3BsYXk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIHRoZSBhdXRvIGFoZWFkIHRleHQgaXMgYWNjZXB0ZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICByZWFkb25seSBvbkNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8QXV0b0NvbXBsZXRlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVFdmVudD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29tcGxldGVLZXlzOiBudW1iZXJbXSA9IFtFTlRFUl07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpbGxLZXlzOiBudW1iZXJbXSA9IFtMRUZUX0FSUk9XLCBSSUdIVF9BUlJPV107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3N0b3BLZXlzOiBudW1iZXJbXSA9IFtCQUNLU1BBQ0UsIERFTEVURSwgRVNDQVBFXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBvbGRWYWx1ZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGxhc3RLZXlVcEV2ZW50OiBLZXlib2FyZEV2ZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlS2V5Ym9hcmRFdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5lbmFibGUpIHtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgdGhpcy5fc3RvcEtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy5pbnB1dFRleHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLl9jb21wbGV0ZUtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZENvbXBsZXRlRXZlbnQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW92ZUluZGljYXRvclRvTGFzdENoYXJhY3RlcigpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgdGhpcy5fZmlsbEtleXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VuZENvbXBsZXRlRXZlbnQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5faXNDb250cm9sS2V5KGV2ZW50KSAmJiB0aGlzLmlucHV0VGV4dCkge1xuICAgICAgICAgICAgICAgIC8qKiBQcmV2ZW50aW9uIGZyb20gdHJpZ2dlcmluZyB0eXBlYWhlYWQsIHdoZW4gaGF2aW5nIGNydGwvY21kICsga2V5cyAqL1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fdHJpZ2dlclR5cGVBaGVhZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy5pbnB1dFRleHQ7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVyKHRoaXMuZGlzcGxheUZuKG9wdGlvbikudG9Mb2NhbGVMb3dlckNhc2UoKSwgdGhpcy5pbnB1dFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHlwZWFoZWFkKHRoaXMuZGlzcGxheUZuKGl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sYXN0S2V5VXBFdmVudCA9IGV2ZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHlwZWFoZWFkKGRpc3BsYXllZFZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gZGlzcGxheWVkVmFsdWU7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0SW5kZXggPSB0aGlzLmlucHV0VGV4dC5sZW5ndGg7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25TdGFydEluZGV4LCBkaXNwbGF5ZWRWYWx1ZS5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXNDb250cm9sS2V5KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgQ09OVFJPTCkgfHwgZXZlbnQuY3RybEtleTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RlZmF1bHREaXNwbGF5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmlnZ2VyVHlwZUFoZWFkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmxhc3RLZXlVcEV2ZW50ICYmXG4gICAgICAgICAgICBLZXlVdGlsLmlzS2V5Q29kZSh0aGlzLmxhc3RLZXlVcEV2ZW50LCBDT05UUk9MKSAmJlxuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPT09IHRoaXMub2xkVmFsdWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2VuZENvbXBsZXRlRXZlbnQoZm9yY2VDbG9zZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ29tcGxldGUuZW1pdCh7XG4gICAgICAgICAgICB0ZXJtOiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUsXG4gICAgICAgICAgICBmb3JjZUNsb3NlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbW92ZUluZGljYXRvclRvTGFzdENoYXJhY3RlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRUZXh0TGVuZ3RoID0gdGhpcy5pbnB1dFRleHQ/Lmxlbmd0aCA/PyAwO1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoaW5wdXRUZXh0TGVuZ3RoLCBpbnB1dFRleHRMZW5ndGgpO1xuICAgIH1cbn1cbiJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbkQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ3JCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQW1CbkUsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGtCQUFrQjs7NEhBQTFELCtCQUErQjtnSEFBL0IsK0JBQStCLG1GQVI3QjtRQUNQLGdCQUFnQjtRQUNoQjtZQUNJLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLHNDQUFzQyxDQUFDO1NBQzVGO0tBQ0o7MkZBRVEsK0JBQStCO2tCQVozQyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHNDQUFzQztvQkFDaEQsVUFB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Q0ksSUFBSSxDQUFDLGNBQWM7WUFDbkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQ2xDO1lBQ0UsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGtCQUFrQixDQUFDLFVBQW1CO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQzFDLFVBQVU7U0FDYixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYztJQUNOLDZCQUE2QjtRQUNqQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7O2tIQXZKUSxxQkFBcUI7c0dBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx5REFBeUQ7b0JBQ25FLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjtxSkFJRyxPQUFPO3NCQUROLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQU1HLFVBQVU7c0JBRmxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCQUNLU1BBQ0UsIENPTlRST0wsIERFTEVURSwgRU5URVIsIEVTQ0FQRSwgTEVGVF9BUlJPVywgUklHSFRfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgS2V5VXRpbCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9rZXktdXRpbCc7XG5pbXBvcnQge1xuICAgIERlcHJlY2F0ZWRTZWxlY3RvcixcbiAgICBGRF9ERVBSRUNBVEVEX0RJUkVDVElWRV9TRUxFQ1RPUixcbiAgICBnZXREZXByZWNhdGVkTW9kZWxcbn0gZnJvbSAnLi4vLi4vZGVwcmVjYXRlZC1zZWxlY3Rvci5jbGFzcyc7XG5pbXBvcnQgeyBEZXN0cm95ZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZmlyc3QsIGZyb21FdmVudCwgbWFwLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9Db21wbGV0ZUV2ZW50IHtcbiAgICB0ZXJtOiBzdHJpbmc7XG4gICAgZm9yY2VDbG9zZTogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1tmZEF1dG9Db21wbGV0ZV0sIFtmZC1hdXRvLWNvbXBsZXRlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgRGVzdHJveWVkU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREVQUkVDQVRFRF9ESVJFQ1RJVkVfU0VMRUNUT1IsXG4gICAgICAgICAgICB1c2VWYWx1ZTogZ2V0RGVwcmVjYXRlZE1vZGVsKCdbZmRrQXV0b0NvbXBsZXRlXScsICdbZmRBdXRvQ29tcGxldGVdLCBbZmQtYXV0by1jb21wbGV0ZV0nKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXByZWNhdGVkQXV0b0NvbXBsZXRlRGlyZWN0aXZlIGV4dGVuZHMgRGVwcmVjYXRlZFNlbGVjdG9yIHt9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2Zka0F1dG9Db21wbGV0ZV0sIFtmZEF1dG9Db21wbGV0ZV0sIFtmZC1hdXRvLWNvbXBsZXRlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVEaXJlY3RpdmUge1xuICAgIC8qKiBWYWx1ZXMgdGhhdCB3aWxsIGZpbGwgbWlzc2luZyB0ZXh0IGluIHRoZSBpbnB1dC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG9wdGlvbnM6IGFueVtdO1xuXG4gICAgLyoqXG4gICAgICogSW5wdXQgdGV4dCwgdGhhdCBpcyB0YWtlbiBmcm9tIG5nTW9kZWwgb2YgZm9ybUNvbnRyb2wsXG4gICAgICogdGhlcmUgaGFzIHRvIGJlIGRpZmZlcmVuY2UgYmV0d2VlbiBuYXRpdmUgaW5wdXQgdmFsdWUgYW5kIG1vZGVsIHZhbHVlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dFRleHQ6IHN0cmluZztcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvIGNvbXBsZXRlIGRpcmVjdGl2ZSBzaG91bGQgYmUgZW5hYmxlZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZW5hYmxlID0gdHJ1ZTtcblxuICAgIC8qKiBNYXRjaGVyIGZ1bmN0aW9uIGZvciB0ZXN0aW5nIHRoZSBzdHIgZm9yIGEgc2VhcmNoIHRlcm0gKi9cbiAgICBASW5wdXQoKVxuICAgIG1hdGNoZXIgPSAoc3RyOiBzdHJpbmcsIHNlYXJjaFRlcm06IHN0cmluZyk6IGJvb2xlYW4gPT4gc3RyLnN0YXJ0c1dpdGgoc2VhcmNoVGVybSk7XG5cbiAgICAvKiogRGlzcGxheSBmdW5jdGlvbi4gQWNjZXB0cyBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGVcbiAgICAgKiBpdGVtcyBwYXNzZWQgdG8gZHJvcGRvd25WYWx1ZXMgYXMgYXJndW1lbnQsIGFuZCBvdXRwdXRzIGEgc3RyaW5nLlxuICAgICAqIEFuIGFycm93IGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgKnRoaXMqIGtleXdvcmQgaW4gdGhlIGNhbGxpbmcgY29tcG9uZW50LlxuICAgICAqIFNlZSBzZWFyY2ggaW5wdXQgZXhhbXBsZXMgZm9yIGRldGFpbHMuICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5Rm4gPSB0aGlzLl9kZWZhdWx0RGlzcGxheTtcblxuICAgIC8qKiBFdmVudCB0aHJvd24sIHdoZW4gdGhlIGF1dG8gYWhlYWQgdGV4dCBpcyBhY2NlcHRlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICAgIHJlYWRvbmx5IG9uQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxBdXRvQ29tcGxldGVFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEF1dG9Db21wbGV0ZUV2ZW50PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jb21wbGV0ZUtleXM6IG51bWJlcltdID0gW0VOVEVSXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsbEtleXM6IG51bWJlcltdID0gW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3RvcEtleXM6IG51bWJlcltdID0gW0JBQ0tTUEFDRSwgREVMRVRFLCBFU0NBUEVdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIG9sZFZhbHVlOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgbGFzdEtleVVwRXZlbnQ6IEtleWJvYXJkRXZlbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQ6IERlc3Ryb3llZFNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpeGVzICMxMDcxMFxuICAgICAgICAgKiBXSXRoIGNoaW5lc2UgY2hhcmFjdGVycyBpbnB1dFRleHQgcHJvcGVydHkgdXBkYXRlIHdhcyB0cmlnZ2VyZWQgYWZ0ZXIgdGhlIGtleXVwIGV2ZW50IHRyaWdnZXIuXG4gICAgICAgICAqIEJ5IGVuc3VyaW5nIHRoYXQgd2Ugc2V0IGFsbCBwcm9wZXJ0aWVzIHdlIGNhbiBwcm9jZWVkIHdpdGggc3RhYmxlIGRhdGEuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXVwRXZlbnQgPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5dXAnKTtcblxuICAgICAgICAgICAga2V5dXBFdmVudFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGV2dCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3pvbmUub25TdGFibGUucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBldnQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZ0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5pbnB1dFRleHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZSkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLl9zdG9wS2V5cykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmlucHV0VGV4dDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIHRoaXMuX2NvbXBsZXRlS2V5cykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZW5kQ29tcGxldGVFdmVudCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3ZlSW5kaWNhdG9yVG9MYXN0Q2hhcmFjdGVyKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCB0aGlzLl9maWxsS2V5cykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZW5kQ29tcGxldGVFdmVudChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLl9pc0NvbnRyb2xLZXkoZXZlbnQpICYmIHRoaXMuaW5wdXRUZXh0KSB7XG4gICAgICAgICAgICAgICAgLyoqIFByZXZlbnRpb24gZnJvbSB0cmlnZ2VyaW5nIHR5cGVhaGVhZCwgd2hlbiBoYXZpbmcgY3J0bC9jbWQgKyBrZXlzICovXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl90cmlnZ2VyVHlwZUFoZWFkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMub2xkVmFsdWUgPSB0aGlzLmlucHV0VGV4dDtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZXIodGhpcy5kaXNwbGF5Rm4ob3B0aW9uKS50b0xvY2FsZUxvd2VyQ2FzZSgpLCB0aGlzLmlucHV0VGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90eXBlYWhlYWQodGhpcy5kaXNwbGF5Rm4oaXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxhc3RLZXlVcEV2ZW50ID0gZXZlbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90eXBlYWhlYWQoZGlzcGxheWVkVmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBkaXNwbGF5ZWRWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnRJbmRleCA9IHRoaXMuaW5wdXRUZXh0Lmxlbmd0aDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKHNlbGVjdGlvblN0YXJ0SW5kZXgsIGRpc3BsYXllZFZhbHVlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0NvbnRyb2xLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBDT05UUk9MKSB8fCBldmVudC5jdHJsS2V5O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVmYXVsdERpc3BsYXkodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyaWdnZXJUeXBlQWhlYWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMubGFzdEtleVVwRXZlbnQgJiZcbiAgICAgICAgICAgIEtleVV0aWwuaXNLZXlDb2RlKHRoaXMubGFzdEtleVVwRXZlbnQsIENPTlRST0wpICYmXG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9PT0gdGhpcy5vbGRWYWx1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZW5kQ29tcGxldGVFdmVudChmb3JjZUNsb3NlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Db21wbGV0ZS5lbWl0KHtcbiAgICAgICAgICAgIHRlcm06IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSxcbiAgICAgICAgICAgIGZvcmNlQ2xvc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tb3ZlSW5kaWNhdG9yVG9MYXN0Q2hhcmFjdGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbnB1dFRleHRMZW5ndGggPSB0aGlzLmlucHV0VGV4dD8ubGVuZ3RoID8/IDA7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShpbnB1dFRleHRMZW5ndGgsIGlucHV0VGV4dExlbmd0aCk7XG4gICAgfVxufVxuIl19