@eui/components 17.0.0-rc.4 → 17.0.0-rc.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/docs/classes/EuiAutoCompleteItem.html +1 -1
  2. package/docs/components/EuiBlockContentComponent.html +205 -728
  3. package/docs/components/EuiDropdownComponent.html +43 -385
  4. package/docs/components/EuiToolbarComponent.html +1 -1
  5. package/docs/components/EuiTreeComponent.html +1 -1
  6. package/docs/dependencies.html +2 -2
  7. package/docs/directives/EuiDropdownContentDirective.html +119 -7
  8. package/docs/js/menu-wc.js +3 -3
  9. package/docs/js/menu-wc_es5.js +1 -1
  10. package/docs/js/search/search_index.js +2 -2
  11. package/esm2022/eui-autocomplete/models/eui-autocomplete-item.model.mjs +2 -1
  12. package/esm2022/eui-block-content/eui-block-content.component.mjs +28 -18
  13. package/esm2022/eui-dropdown/directives/eui-dropdown-content.directive.mjs +10 -4
  14. package/esm2022/eui-dropdown/eui-dropdown.component.mjs +34 -48
  15. package/esm2022/eui-menu/eui-menu-item.component.mjs +2 -2
  16. package/esm2022/eui-menu/eui-menu.component.mjs +2 -2
  17. package/esm2022/eui-skeleton/eui-skeleton.component.mjs +2 -2
  18. package/esm2022/eui-tree/eui-tree.component.mjs +9 -4
  19. package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +2 -2
  20. package/esm2022/layout/eui-app/eui-app-toolbar/toolbar.component.mjs +3 -7
  21. package/esm2022/layout/eui-search/search.component.mjs +1 -2
  22. package/esm2022/layout/eui-toolbar/toolbar.component.mjs +3 -3
  23. package/eui-autocomplete/eui-autocomplete.component.d.ts +4 -4
  24. package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
  25. package/eui-autocomplete/models/eui-autocomplete-item.model.d.ts +2 -2
  26. package/eui-autocomplete/models/eui-autocomplete-item.model.d.ts.map +1 -1
  27. package/eui-block-content/eui-block-content.component.d.ts +6 -6
  28. package/eui-block-content/eui-block-content.component.d.ts.map +1 -1
  29. package/eui-dropdown/directives/eui-dropdown-content.directive.d.ts +1 -0
  30. package/eui-dropdown/directives/eui-dropdown-content.directive.d.ts.map +1 -1
  31. package/eui-dropdown/eui-dropdown.component.d.ts +8 -18
  32. package/eui-dropdown/eui-dropdown.component.d.ts.map +1 -1
  33. package/eui-tree/eui-tree.component.d.ts.map +1 -1
  34. package/fesm2022/eui-components-eui-autocomplete.mjs +1 -0
  35. package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
  36. package/fesm2022/eui-components-eui-block-content.mjs +28 -18
  37. package/fesm2022/eui-components-eui-block-content.mjs.map +1 -1
  38. package/fesm2022/eui-components-eui-dropdown.mjs +41 -48
  39. package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
  40. package/fesm2022/eui-components-eui-menu.mjs +4 -4
  41. package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
  42. package/fesm2022/eui-components-eui-skeleton.mjs +2 -2
  43. package/fesm2022/eui-components-eui-skeleton.mjs.map +1 -1
  44. package/fesm2022/eui-components-eui-tree.mjs +8 -3
  45. package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
  46. package/fesm2022/eui-components-layout.mjs +6 -11
  47. package/fesm2022/eui-components-layout.mjs.map +1 -1
  48. package/layout/eui-app/eui-app-toolbar/toolbar.component.d.ts.map +1 -1
  49. package/layout/eui-search/search.component.d.ts.map +1 -1
  50. package/package.json +12 -12
@@ -1,7 +1,8 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1
2
  export class EuiAutoCompleteItem {
2
3
  constructor(values = {}) {
3
4
  this.isDisabled = false;
4
5
  Object.assign(this, values);
5
6
  }
6
7
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWF1dG9jb21wbGV0ZS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLWF1dG9jb21wbGV0ZS9tb2RlbHMvZXVpLWF1dG9jb21wbGV0ZS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxtQkFBbUI7SUFnQjVCLFlBQVksTUFBTSxHQUFHLEVBQUU7UUFMdkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQU1mLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV1aUNoaXBUb29sdGlwIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1jaGlwJztcblxuZXhwb3J0IGNsYXNzIEV1aUF1dG9Db21wbGV0ZUl0ZW0ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZXVpSW50ZXJuYWxJZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdHlwZUNsYXNzOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuICAgIHNpemVDbGFzczogJ2V1aVNpemVTJyB8ICdldWlTaXplTScgfCAnZXVpU2l6ZUwnIHwgJ2V1aVNpemVYTCcgfCAnZXVpU2l6ZTJYTCc7XG4gICAgaWNvbkNsYXNzOiBzdHJpbmc7XG4gICAgaXNSZW1vdmFibGU6IGJvb2xlYW47XG4gICAgaXNPdXRsaW5lOiBib29sZWFuO1xuICAgIGlzUm91bmRlZDogYm9vbGVhbjtcbiAgICBkcmFnQW5kRHJvcFNvdXJjZTogc3RyaW5nO1xuICAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0b29sdGlwPzogRXVpQ2hpcFRvb2x0aXA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBtZXRhZGF0YT86IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHZhbHVlcyA9IHt9KSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgdmFsdWVzKTtcbiAgICB9XG59XG4iXX0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWF1dG9jb21wbGV0ZS1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLWF1dG9jb21wbGV0ZS9tb2RlbHMvZXVpLWF1dG9jb21wbGV0ZS1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDhEQUE4RDtBQUM5RCxNQUFNLE9BQU8sbUJBQW1CO0lBZTVCLFlBQVksTUFBTSxHQUFHLEVBQUU7UUFKdkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUtmLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV1aUNoaXBUb29sdGlwIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1jaGlwJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjbGFzcyBFdWlBdXRvQ29tcGxldGVJdGVtPE1FREFUQSA9IGFueT4ge1xuICAgIGlkOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgZXVpSW50ZXJuYWxJZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgdHlwZUNsYXNzOiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuICAgIHNpemVDbGFzczogJ2V1aVNpemVTJyB8ICdldWlTaXplTScgfCAnZXVpU2l6ZUwnIHwgJ2V1aVNpemVYTCcgfCAnZXVpU2l6ZTJYTCc7XG4gICAgaWNvbkNsYXNzOiBzdHJpbmc7XG4gICAgaXNSZW1vdmFibGU6IGJvb2xlYW47XG4gICAgaXNPdXRsaW5lOiBib29sZWFuO1xuICAgIGlzUm91bmRlZDogYm9vbGVhbjtcbiAgICBkcmFnQW5kRHJvcFNvdXJjZTogc3RyaW5nO1xuICAgIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0b29sdGlwPzogRXVpQ2hpcFRvb2x0aXA7XG4gICAgbWV0YWRhdGE/OiBNRURBVEE7XG5cbiAgICBjb25zdHJ1Y3Rvcih2YWx1ZXMgPSB7fSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHZhbHVlcyk7XG4gICAgfVxufVxuIl19
@@ -1,22 +1,17 @@
1
+ import { __decorate } from "tslib";
1
2
  import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation, HostBinding, } from '@angular/core';
2
- import { BaseDirective } from '@eui/components/shared';
3
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { coerceBoolean } from '@eui/base';
4
4
  import * as i0 from "@angular/core";
5
- export class EuiBlockContentComponent extends BaseDirective {
6
- get isBlocked() {
7
- return this._isBlocked;
8
- }
9
- set isBlocked(value) {
10
- this._isBlocked = coerceBooleanProperty(value);
11
- }
5
+ export class EuiBlockContentComponent {
12
6
  get cssClasses() {
13
- return [this.isBlocked ? 'eui-block-content--blocked' : '', super.getCssClasses('eui-block-content')].join(' ').trim();
7
+ return this.getCssClasses();
14
8
  }
15
9
  constructor(elRef, renderer) {
16
- super();
17
10
  this.elRef = elRef;
18
11
  this.renderer = renderer;
19
- this._isBlocked = false;
12
+ this.role = 'region';
13
+ this.ariaLabel = 'block content wrapper';
14
+ this.isBlocked = false;
20
15
  /** keeps the state of the element that was focused before content was blocked */
21
16
  this.lastActiveElement = null;
22
17
  }
@@ -67,16 +62,31 @@ export class EuiBlockContentComponent extends BaseDirective {
67
62
  getActiveElement() {
68
63
  return this.elRef.nativeElement.querySelector(':focus');
69
64
  }
65
+ getCssClasses() {
66
+ return [
67
+ 'eui-block-content',
68
+ this.isBlocked ? 'eui-block-content--blocked' : '',
69
+ ].join(' ').trim();
70
+ }
70
71
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiBlockContentComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
71
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
72
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EuiBlockContentComponent, selector: "eui-block-content", inputs: { isBlocked: "isBlocked" }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel" } }, usesOnChanges: true, ngImport: i0, template: "<!-- <div class=\"eui-block-content__wrapper\"> -->\n<ng-content></ng-content>\n<!-- </div> -->\n", styles: [".eui-block-content{display:block;position:relative}.eui-block-content--blocked{min-height:100px}.eui-block-content--blocked:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
72
73
  }
74
+ __decorate([
75
+ coerceBoolean
76
+ ], EuiBlockContentComponent.prototype, "isBlocked", void 0);
73
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiBlockContentComponent, decorators: [{
74
78
  type: Component,
75
- args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-block-content__wrapper\" aria-label=\"eUI Block Content wrapper\" role=\"region\">\n <ng-content></ng-content>\n</div>\n", styles: [".eui-block-content--blocked>.eui-block-content__wrapper{min-height:100px;position:relative}.eui-block-content--blocked>.eui-block-content__wrapper:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked>.eui-block-content__wrapper:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
76
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { isBlocked: [{
77
- type: Input
78
- }], cssClasses: [{
79
+ args: [{ selector: 'eui-block-content', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!-- <div class=\"eui-block-content__wrapper\"> -->\n<ng-content></ng-content>\n<!-- </div> -->\n", styles: [".eui-block-content{display:block;position:relative}.eui-block-content--blocked{min-height:100px}.eui-block-content--blocked:before{animation:spin .8s linear infinite;border:8px solid transparent;border-radius:50%;border-top-color:var(--eui-base-color-primary-100);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:50%;width:80px;z-index:var(--eui-base-z-index-overlay)}.eui-block-content--blocked:after{background-color:#fff6;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n"] }]
80
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { cssClasses: [{
79
81
  type: HostBinding,
80
82
  args: ['class']
83
+ }], role: [{
84
+ type: HostBinding,
85
+ args: ['attr.role']
86
+ }], ariaLabel: [{
87
+ type: HostBinding,
88
+ args: ['attr.aria-label']
89
+ }], isBlocked: [{
90
+ type: Input
81
91
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWJsb2NrLWNvbnRlbnQvZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWJsb2NrLWNvbnRlbnQvZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBSUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQzs7QUFTNUUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUFDdkQsSUFDSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxLQUFtQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFNRCxJQUNJLFVBQVU7UUFDVixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0gsQ0FBQztJQUVELFlBQ1ksS0FBaUIsRUFDakIsUUFBbUI7UUFFM0IsS0FBSyxFQUFFLENBQUM7UUFIQSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFadkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUUzQixpRkFBaUY7UUFDekUsc0JBQWlCLEdBQWdCLElBQUksQ0FBQztJQVk5QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFaEQsSUFBSSxVQUFVLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNsRDtTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsYUFBMEI7UUFDeEMsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsYUFBYSxDQUFDO1NBQzFDO2FBQU07WUFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsT0FBb0I7UUFDbEMsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLE9BQXNCO1FBQ3pDLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QyxPQUFPLGVBQWUsRUFBRSxZQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO0lBQzNFLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQjtRQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxDQUFDO2lJQTNFUSx3QkFBd0I7cUhBQXhCLHdCQUF3QiwrTENyQnJDLDhJQUdBOzsyRkRrQmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNJLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO3VHQUlqQyxTQUFTO3NCQURaLEtBQUs7Z0JBYUYsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBSZW5kZXJlcjIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL3NoYXJlZCc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZXVpLWJsb2NrLWNvbnRlbnQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktYmxvY2stY29udGVudC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpQmxvY2tDb250ZW50Q29tcG9uZW50IGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNCbG9ja2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNCbG9ja2VkO1xuICAgIH1cbiAgICBzZXQgaXNCbG9ja2VkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNCbG9ja2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNCbG9ja2VkID0gZmFsc2U7XG5cbiAgICAvKioga2VlcHMgdGhlIHN0YXRlIG9mIHRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIGNvbnRlbnQgd2FzIGJsb2NrZWQgKi9cbiAgICBwcml2YXRlIGxhc3RBY3RpdmVFbGVtZW50OiBIVE1MRWxlbWVudCA9IG51bGw7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3RoaXMuaXNCbG9ja2VkID8gJ2V1aS1ibG9jay1jb250ZW50LS1ibG9ja2VkJyA6ICcnLCBzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktYmxvY2stY29udGVudCcpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snaXNCbG9ja2VkJ10pIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLmdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQmxvY2tpbmcgPSB0aGlzLmlzQWJvdXRUb0Jsb2NrKGNoYW5nZXMpO1xuXG4gICAgICAgICAgICBpZiAoaXNCbG9ja2luZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZUVsZW1lbnQoYWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVhY3RpdmF0ZUVsZW1lbnQodGhpcy5sYXN0QWN0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBibHVyICh1bi1mb2N1cykgdGhlIGZvY3VzZWQgZWxlbWVudCBpbnNpZGUgQmxvY2tDb250ZW50XG4gICAgICovXG4gICAgZGVhY3RpdmF0ZUVsZW1lbnQoYWN0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQoYWN0aXZlRWxlbWVudCwgdHJ1ZSkuYmx1cigpO1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlRWxlbWVudCA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZvY3VzIG9uIGVsZW1lbnQgaWYgaXQgd2FzIGZvY3VzZWQgYmVmb3JlIGNvbnRlbnQgd2FzIGJsb2NrZWRcbiAgICAgKi9cbiAgICByZWFjdGl2YXRlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudChlbGVtZW50LCB0cnVlKS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB3aGVyZSB0aGUgZWxlbWVudCBpcyBhYm91dCB0byBibG9jayBvciBub3RcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjaGFuZ2VzIFNpbXBseUNoYW5nZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIGlzQWJvdXRUb0Jsb2NrKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNCbG9ja2VkQ2hhbmdlID0gY2hhbmdlc1snaXNCbG9ja2VkJ107XG5cbiAgICAgICAgcmV0dXJuIGlzQmxvY2tlZENoYW5nZT8uY3VycmVudFZhbHVlICYmICFpc0Jsb2NrZWRDaGFuZ2UucHJldmlvdXNWYWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBmaW5kcyB0aGUgZWxlbWVudCB3aGljaCBpcyBmb2N1c2VkIGluc2lkZSB0aGUgVXhCbG9ja0NvbnRlbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEFjdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpmb2N1cycpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJldWktYmxvY2stY29udGVudF9fd3JhcHBlclwiIGFyaWEtbGFiZWw9XCJlVUkgQmxvY2sgQ29udGVudCB3cmFwcGVyXCIgcm9sZT1cInJlZ2lvblwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXVpLWJsb2NrLWNvbnRlbnQvZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWJsb2NrLWNvbnRlbnQvZXVpLWJsb2NrLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsS0FBSyxFQUlMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsV0FBVyxHQUNkLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBUzFDLE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsSUFDVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFZRCxZQUNZLEtBQWlCLEVBQ2pCLFFBQW1CO1FBRG5CLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVpMLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDVixjQUFTLEdBQUcsdUJBQXVCLENBQUM7UUFJcEUsY0FBUyxHQUFpQixLQUFLLENBQUM7UUFFaEMsaUZBQWlGO1FBQ3pFLHNCQUFpQixHQUFnQixJQUFJLENBQUM7SUFNOUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRWhELElBQUksVUFBVSxFQUFFO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUN6QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbEQ7U0FDSjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLGFBQTBCO1FBQ3hDLElBQUksYUFBYSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztTQUMxQzthQUFNO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUFDLE9BQW9CO1FBQ2xDLElBQUksT0FBTyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDMUQ7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGNBQWMsQ0FBQyxPQUFzQjtRQUN6QyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0MsT0FBTyxlQUFlLEVBQUUsWUFBWSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLGFBQWE7UUFDakIsT0FBTztZQUNILG1CQUFtQjtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNyRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO2lJQS9FUSx3QkFBd0I7cUhBQXhCLHdCQUF3Qix1T0NyQnJDLG1HQUdBOztBRDZCSTtJQURDLGFBQWE7MkRBQ2tCOzJGQVh2Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7dUdBSTFCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsT0FBTztnQkFLTSxJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVc7Z0JBQ1EsU0FBUztzQkFBeEMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBSTlCLFNBQVM7c0JBRlIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuIH0gZnJvbSAnQGV1aS9iYXNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktYmxvY2stY29udGVudCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1ibG9jay1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFdWlCbG9ja0NvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIHB1YmxpYyBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDc3NDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ3JlZ2lvbic7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKSBhcmlhTGFiZWwgPSAnYmxvY2sgY29udGVudCB3cmFwcGVyJztcblxuICAgIEBJbnB1dCgpXG4gICAgQGNvZXJjZUJvb2xlYW5cbiAgICBpc0Jsb2NrZWQ6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gICAgLyoqIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhcyBmb2N1c2VkIGJlZm9yZSBjb250ZW50IHdhcyBibG9ja2VkICovXG4gICAgcHJpdmF0ZSBsYXN0QWN0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzWydpc0Jsb2NrZWQnXSkge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgaXNCbG9ja2luZyA9IHRoaXMuaXNBYm91dFRvQmxvY2soY2hhbmdlcyk7XG5cbiAgICAgICAgICAgIGlmIChpc0Jsb2NraW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWFjdGl2YXRlRWxlbWVudChhY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWFjdGl2YXRlRWxlbWVudCh0aGlzLmxhc3RBY3RpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJsdXIgKHVuLWZvY3VzKSB0aGUgZm9jdXNlZCBlbGVtZW50IGluc2lkZSBCbG9ja0NvbnRlbnRcbiAgICAgKi9cbiAgICBkZWFjdGl2YXRlRWxlbWVudChhY3RpdmVFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZWxlY3RSb290RWxlbWVudChhY3RpdmVFbGVtZW50LCB0cnVlKS5ibHVyKCk7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVFbGVtZW50ID0gYWN0aXZlRWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZm9jdXMgb24gZWxlbWVudCBpZiBpdCB3YXMgZm9jdXNlZCBiZWZvcmUgY29udGVudCB3YXMgYmxvY2tlZFxuICAgICAqL1xuICAgIHJlYWN0aXZhdGVFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KGVsZW1lbnQsIHRydWUpLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHdoZXJlIHRoZSBlbGVtZW50IGlzIGFib3V0IHRvIGJsb2NrIG9yIG5vdFxuICAgICAqXG4gICAgICogQHBhcmFtIGNoYW5nZXMgU2ltcGx5Q2hhbmdlc1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNBYm91dFRvQmxvY2soY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpc0Jsb2NrZWRDaGFuZ2UgPSBjaGFuZ2VzWydpc0Jsb2NrZWQnXTtcblxuICAgICAgICByZXR1cm4gaXNCbG9ja2VkQ2hhbmdlPy5jdXJyZW50VmFsdWUgJiYgIWlzQmxvY2tlZENoYW5nZS5wcmV2aW91c1ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGZpbmRzIHRoZSBlbGVtZW50IHdoaWNoIGlzIGZvY3VzZWQgaW5zaWRlIHRoZSBVeEJsb2NrQ29udGVudFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0QWN0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignOmZvY3VzJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpLWJsb2NrLWNvbnRlbnQnLFxuICAgICAgICAgICAgdGhpcy5pc0Jsb2NrZWQgPyAnZXVpLWJsb2NrLWNvbnRlbnQtLWJsb2NrZWQnIDogJycsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG59XG4iLCI8IS0tIDxkaXYgY2xhc3M9XCJldWktYmxvY2stY29udGVudF9fd3JhcHBlclwiPiAtLT5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwhLS0gPC9kaXY+IC0tPlxuIl19
@@ -1,12 +1,18 @@
1
- import { Directive } from '@angular/core';
1
+ import { Directive, HostBinding } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  // eslint-disable-next-line @angular-eslint/directive-selector
4
4
  export class EuiDropdownContentDirective {
5
+ constructor() {
6
+ this.role = 'menu';
7
+ }
5
8
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiDropdownContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: EuiDropdownContentDirective, selector: "eui-dropdown-content", ngImport: i0 }); }
9
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.2", type: EuiDropdownContentDirective, selector: "eui-dropdown-content", host: { properties: { "attr.role": "this.role" } }, ngImport: i0 }); }
7
10
  }
8
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiDropdownContentDirective, decorators: [{
9
12
  type: Directive,
10
13
  args: [{ selector: 'eui-dropdown-content' }]
11
- }] });
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2RpcmVjdGl2ZXMvZXVpLWRyb3Bkb3duLWNvbnRlbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFDLDhEQUE4RDtBQUU5RCxNQUFNLE9BQU8sMkJBQTJCO2lJQUEzQiwyQkFBMkI7cUhBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZXVpLWRyb3Bkb3duLWNvbnRlbnQnIH0pXG5leHBvcnQgY2xhc3MgRXVpRHJvcGRvd25Db250ZW50RGlyZWN0aXZlIHt9XG4iXX0=
14
+ }], propDecorators: { role: [{
15
+ type: HostBinding,
16
+ args: ['attr.role']
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2RpcmVjdGl2ZXMvZXVpLWRyb3Bkb3duLWNvbnRlbnQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV2RCw4REFBOEQ7QUFFOUQsTUFBTSxPQUFPLDJCQUEyQjtJQUR4QztRQUU4QixTQUFJLEdBQUcsTUFBTSxDQUFDO0tBQzNDO2lJQUZZLDJCQUEyQjtxSEFBM0IsMkJBQTJCOzsyRkFBM0IsMkJBQTJCO2tCQUR2QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFOzhCQUVqQixJQUFJO3NCQUE3QixXQUFXO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdldWktZHJvcGRvd24tY29udGVudCcgfSlcbmV4cG9ydCBjbGFzcyBFdWlEcm9wZG93bkNvbnRlbnREaXJlY3RpdmUge1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdtZW51Jztcbn1cbiJdfQ==
@@ -1,10 +1,11 @@
1
+ import { __decorate } from "tslib";
1
2
  import { Component, ChangeDetectionStrategy, HostBinding, ViewEncapsulation, Input, ViewChild, ContentChildren, } from '@angular/core';
2
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
3
  import { ConnectionPositionPair, } from '@angular/cdk/overlay';
4
4
  import { BehaviorSubject, fromEvent, Subject, Subscription, takeUntil } from 'rxjs';
5
5
  import { TemplatePortal } from '@angular/cdk/portal';
6
6
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
7
7
  import { BaseDirective } from '@eui/components/shared';
8
+ import { coerceBoolean } from '@eui/base';
8
9
  import { openClose } from './animations/open-close';
9
10
  import { EuiDropdownItemComponent } from './dropdown-item/eui-dropdown-item.component';
10
11
  import * as i0 from "@angular/core";
@@ -12,56 +13,26 @@ import * as i1 from "@angular/cdk/overlay";
12
13
  import * as i2 from "./eui-dropdown.service";
13
14
  import * as i3 from "@angular/cdk/a11y";
14
15
  export class EuiDropdownComponent extends BaseDirective {
15
- get isDropDownRightAligned() {
16
- return this._isDropDownRightAligned;
17
- }
18
- set isDropDownRightAligned(value) {
19
- this._isDropDownRightAligned = coerceBooleanProperty(value);
20
- }
21
- get isClosedOnClickInside() {
22
- return this._isClosedOnClickInside;
23
- }
24
- set isClosedOnClickInside(value) {
25
- this._isClosedOnClickInside = coerceBooleanProperty(value);
26
- }
27
- get isLabelUpdatedFromSelectedItem() {
28
- return this._isLabelUpdatedFromSelectedItem;
29
- }
30
- set isLabelUpdatedFromSelectedItem(value) {
31
- this._isLabelUpdatedFromSelectedItem = coerceBooleanProperty(value);
32
- }
33
- get isExpandOnHover() {
34
- return this._isExpandOnHover;
35
- }
36
- set isExpandOnHover(value) {
37
- this._isExpandOnHover = coerceBooleanProperty(value);
38
- }
39
- get hasTabNavigation() {
40
- return this._hasTabNavigation;
41
- }
42
- set hasTabNavigation(value) {
43
- this._hasTabNavigation = coerceBooleanProperty(value);
44
- }
45
16
  get cssClasses() {
46
17
  return [super.getCssClasses('eui-dropdown')].join(' ').trim();
47
18
  }
48
- constructor(overlay, viewContainerRef, scrollDispatcher, dropdownService) {
19
+ constructor(overlay, viewContainerRef, scrollDispatcher, dropdownService, _renderer) {
49
20
  super();
50
21
  this.overlay = overlay;
51
22
  this.viewContainerRef = viewContainerRef;
52
23
  this.scrollDispatcher = scrollDispatcher;
53
24
  this.dropdownService = dropdownService;
25
+ this._renderer = _renderer;
54
26
  this.e2eAttr = 'eui-dropdown';
55
27
  this.tabIndex = -1;
56
28
  this.width = 'auto';
57
29
  this.position = 'bottom';
58
30
  this.trapFocusAutoCapture = true;
59
- this.role = 'menu';
60
- this._isDropDownRightAligned = false;
61
- this._isClosedOnClickInside = true;
62
- this._isLabelUpdatedFromSelectedItem = false;
63
- this._isExpandOnHover = false;
64
- this._hasTabNavigation = false;
31
+ this.isDropDownRightAligned = false;
32
+ this.isClosedOnClickInside = true;
33
+ this.isLabelUpdatedFromSelectedItem = false;
34
+ this.isExpandOnHover = false;
35
+ this.hasTabNavigation = false;
65
36
  this.originX = 'start';
66
37
  this.originY = 'bottom';
67
38
  this.overlayX = 'start';
@@ -81,7 +52,7 @@ export class EuiDropdownComponent extends BaseDirective {
81
52
  else {
82
53
  this.trapFocusAutoCapture = true;
83
54
  }
84
- if (this._hasTabNavigation) {
55
+ if (this.hasTabNavigation) {
85
56
  this.trapFocusAutoCapture = true;
86
57
  this.isClosedOnClickInside = false;
87
58
  }
@@ -89,6 +60,9 @@ export class EuiDropdownComponent extends BaseDirective {
89
60
  }
90
61
  ngAfterViewInit() {
91
62
  this.templatePortal = new TemplatePortal(this.templatePortalContent, this.viewContainerRef);
63
+ if (this.triggerRef && this.triggerRef.nativeElement.firstChild) {
64
+ this._renderer.setAttribute(this.triggerRef.nativeElement.firstChild, 'aria-haspopup', 'true');
65
+ }
92
66
  }
93
67
  ngOnDestroy() {
94
68
  this.destroy$.next(true);
@@ -270,7 +244,7 @@ export class EuiDropdownComponent extends BaseDirective {
270
244
  this.keydownListenerSubscription = fromEvent(document, 'keydown').subscribe((event) => {
271
245
  if (this.isOpen) {
272
246
  if (event.code === 'Enter' &&
273
- !this._hasTabNavigation &&
247
+ !this.hasTabNavigation &&
274
248
  !this.activeDescendantKeyManager?.activeItem.elementRef?.nativeElement?.disabled) {
275
249
  this.activeDescendantKeyManager?.activeItem.focus();
276
250
  this.isExpandOnHover
@@ -303,7 +277,7 @@ export class EuiDropdownComponent extends BaseDirective {
303
277
  }
304
278
  event.preventDefault();
305
279
  }
306
- else if (event.code === 'Tab' && !this._hasTabNavigation) {
280
+ else if (event.code === 'Tab' && !this.hasTabNavigation) {
307
281
  this.closeDropdown(true);
308
282
  }
309
283
  else {
@@ -370,13 +344,28 @@ export class EuiDropdownComponent extends BaseDirective {
370
344
  this.overlayY = 'center';
371
345
  }
372
346
  }
373
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiDropdownComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i1.ScrollDispatcher }, { token: i2.EuiDropdownService }], target: i0.ɵɵFactoryTarget.Component }); }
374
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EuiDropdownComponent, selector: "eui-dropdown", inputs: { e2eAttr: "e2eAttr", tabIndex: "tabIndex", width: "width", position: "position", isDropDownRightAligned: "isDropDownRightAligned", isClosedOnClickInside: "isClosedOnClickInside", isLabelUpdatedFromSelectedItem: "isLabelUpdatedFromSelectedItem", isExpandOnHover: "isExpandOnHover", hasTabNavigation: "hasTabNavigation" }, host: { properties: { "attr.role": "this.role", "class": "this.cssClasses" } }, queries: [{ propertyName: "euiDropdownItems", predicate: EuiDropdownItemComponent, descendants: true }], viewQueries: [{ propertyName: "templatePortalContent", first: true, predicate: ["templatePortalContent"], descendants: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\" (click)=\"onTriggerClicked($event)\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inline-flex}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-base-color-white);border-radius:var(--eui-base-border-radius);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-base-color-grey-5)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:none;box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-base-spacing-s)}.eui-dropdown-item:hover{background-color:var(--eui-base-color-grey-5)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-base-color-grey-50);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-style:italic}.eui-dropdown-item:disabled:hover,.eui-dropdown-item:disabled:focus{background:none}.eui-dropdown-item--active{background-color:var(--eui-base-color-primary-10)!important;outline:2px solid var(--eui-base-color-accessible-focus)!important;outline-offset:-2px!important}.eui-dropdown-item--active:disabled{background:none!important}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [openClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
347
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiDropdownComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i1.ScrollDispatcher }, { token: i2.EuiDropdownService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
348
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: EuiDropdownComponent, selector: "eui-dropdown", inputs: { e2eAttr: "e2eAttr", tabIndex: "tabIndex", width: "width", position: "position", isDropDownRightAligned: "isDropDownRightAligned", isClosedOnClickInside: "isClosedOnClickInside", isLabelUpdatedFromSelectedItem: "isLabelUpdatedFromSelectedItem", isExpandOnHover: "isExpandOnHover", hasTabNavigation: "hasTabNavigation" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "euiDropdownItems", predicate: EuiDropdownItemComponent, descendants: true }], viewQueries: [{ propertyName: "templatePortalContent", first: true, predicate: ["templatePortalContent"], descendants: true }, { propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\" (click)=\"onTriggerClicked($event)\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inline-flex}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-base-color-white);border-radius:var(--eui-base-border-radius);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-base-color-grey-5)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:none;box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-base-spacing-s)}.eui-dropdown-item:hover{background-color:var(--eui-base-color-grey-5)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-base-color-grey-50);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-style:italic}.eui-dropdown-item:disabled:hover,.eui-dropdown-item:disabled:focus{background:none}.eui-dropdown-item--active{background-color:var(--eui-base-color-primary-10)!important;outline:2px solid var(--eui-base-color-accessible-focus)!important;outline-offset:-2px!important}.eui-dropdown-item--active:disabled{background:none!important}\n"], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [openClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
375
349
  }
350
+ __decorate([
351
+ coerceBoolean
352
+ ], EuiDropdownComponent.prototype, "isDropDownRightAligned", void 0);
353
+ __decorate([
354
+ coerceBoolean
355
+ ], EuiDropdownComponent.prototype, "isClosedOnClickInside", void 0);
356
+ __decorate([
357
+ coerceBoolean
358
+ ], EuiDropdownComponent.prototype, "isLabelUpdatedFromSelectedItem", void 0);
359
+ __decorate([
360
+ coerceBoolean
361
+ ], EuiDropdownComponent.prototype, "isExpandOnHover", void 0);
362
+ __decorate([
363
+ coerceBoolean
364
+ ], EuiDropdownComponent.prototype, "hasTabNavigation", void 0);
376
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: EuiDropdownComponent, decorators: [{
377
366
  type: Component,
378
367
  args: [{ selector: 'eui-dropdown', animations: [openClose], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div #triggerRef class=\"eui-dropdown__trigger-container\" (click)=\"onTriggerClicked($event)\">\n <ng-content></ng-content>\n</div>\n\n<ng-template #templatePortalContent>\n <div\n attr.data-e2e=\"{{ e2eAttr }}\"\n [@openClose]=\"isOpen ? 'open' : 'closed'\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"trapFocusAutoCapture\"\n class=\"eui-dropdown__panel-container\"\n [style.width]=\"width\"\n [tabindex]=\"tabIndex\"\n (click)=\"onClick()\">\n <ng-content select=\"eui-dropdown-content\"></ng-content>\n </div>\n</ng-template>\n", styles: [".eui-dropdown .eui-dropdown{display:none}.eui-dropdown .eui-dropdown__trigger-container{display:inline-flex}.eui-dropdown__panel{position:inherit}.eui-dropdown__panel eui-dropdown-content{display:block}.eui-dropdown__panel-container{background:var(--eui-base-color-white);border-radius:var(--eui-base-border-radius);box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;display:block;height:auto;min-width:8rem;overflow:auto;position:relative}.eui-dropdown__panel-container::-webkit-scrollbar{display:inherit;height:5px;width:5px;background-color:var(--eui-base-color-grey-5)}.eui-dropdown__panel-container::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.eui-dropdown__panel-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-50)}.eui-dropdown__panel-container::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-5);border-radius:0}.eui-dropdown__panel-container .eui-dropdown-item{background:none;border:none;box-shadow:none;cursor:pointer;display:block;outline:none;padding:var(--eui-base-spacing-xs) var(--eui-base-spacing-s);position:relative;-webkit-tap-highlight-color:transparent;text-align:left;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item--has-subdropdown+*:not(.eui-dropdown-item){display:none}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container{align-items:center;display:flex;min-height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content{align-items:center;display:flex;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text{align-items:center;display:flex;width:100%}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-text .eui-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-dropdown__panel-container .eui-dropdown-item .eui-dropdown-item__container .eui-dropdown-item__content .eui-dropdown-item__content-icon{align-items:center;display:flex;margin-left:var(--eui-base-spacing-s)}.eui-dropdown-item:hover{background-color:var(--eui-base-color-grey-5)}.eui-dropdown-item:disabled{pointer-events:none;color:var(--eui-base-color-grey-50);font:normal normal 400 1rem/1.25rem var(--eui-base-font-family);font-style:italic}.eui-dropdown-item:disabled:hover,.eui-dropdown-item:disabled:focus{background:none}.eui-dropdown-item--active{background-color:var(--eui-base-color-primary-10)!important;outline:2px solid var(--eui-base-color-accessible-focus)!important;outline-offset:-2px!important}.eui-dropdown-item--active:disabled{background:none!important}\n"] }]
379
- }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i1.ScrollDispatcher }, { type: i2.EuiDropdownService }], propDecorators: { e2eAttr: [{
368
+ }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i1.ScrollDispatcher }, { type: i2.EuiDropdownService }, { type: i0.Renderer2 }], propDecorators: { e2eAttr: [{
380
369
  type: Input
381
370
  }], tabIndex: [{
382
371
  type: Input
@@ -393,9 +382,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
393
382
  }], euiDropdownItems: [{
394
383
  type: ContentChildren,
395
384
  args: [EuiDropdownItemComponent, { descendants: true }]
396
- }], role: [{
397
- type: HostBinding,
398
- args: ['attr.role']
399
385
  }], isDropDownRightAligned: [{
400
386
  type: Input
401
387
  }], isClosedOnClickInside: [{
@@ -410,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
410
396
  type: HostBinding,
411
397
  args: ['class']
412
398
  }] } });
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1kcm9wZG93bi9ldWktZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2V1aS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLEtBQUssRUFLTCxTQUFTLEVBRVQsZUFBZSxHQUdsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUVILHNCQUFzQixHQU16QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7Ozs7QUFVdkYsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFlbkQsSUFDSSxzQkFBc0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksc0JBQXNCLENBQUMsS0FBbUI7UUFDMUMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFhLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxxQkFBcUIsQ0FBQyxLQUFtQjtRQUN6QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQ0ksOEJBQThCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDO0lBQ2hELENBQUM7SUFDRCxJQUFJLDhCQUE4QixDQUFDLEtBQW1CO1FBQ2xELElBQUksQ0FBQywrQkFBK0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFDSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksZUFBZSxDQUFDLEtBQW1CO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBR0QsSUFDSSxnQkFBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksZ0JBQWdCLENBQUMsS0FBbUI7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFrQkQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELFlBQ1ksT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxlQUFtQztRQUUzQyxLQUFLLEVBQUUsQ0FBQztRQUxBLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQS9FdEMsWUFBTyxHQUFHLGNBQWMsQ0FBQztRQUN6QixhQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZCxVQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsYUFBUSxHQUF3QyxRQUFRLENBQUM7UUFNM0QseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBR1QsU0FBSSxHQUFHLE1BQU0sQ0FBQztRQVNoQyw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFPaEMsMkJBQXNCLEdBQUcsSUFBSSxDQUFDO1FBUTlCLG9DQUErQixHQUFHLEtBQUssQ0FBQztRQVF4QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFTekIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLFlBQU8sR0FBK0IsT0FBTyxDQUFDO1FBQzlDLFlBQU8sR0FBZ0MsUUFBUSxDQUFDO1FBQ2hELGFBQVEsR0FBK0IsT0FBTyxDQUFDO1FBQy9DLGFBQVEsR0FBZ0MsS0FBSyxDQUFDO1FBRzlDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ2xDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5QyxpQ0FBNEIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELGdDQUEyQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsdUNBQWtDLEdBQW1CLEVBQUUsQ0FBQztRQUN4RCxpREFBNEMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBZ0IxRSxDQUFDO0lBRUQsUUFBUTtRQUNKLHdFQUF3RTtRQUN4RSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO2FBQU07WUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1NBQ3BDO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFO1lBQ2xGLGlDQUFpQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsNENBQTRDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsbUhBQW1IO0lBQ25ILDhEQUE4RDtJQUN2RCxnQkFBZ0IsQ0FBQyxDQUFNO1FBQzFCLElBQ0ksQ0FBRSxDQUFDLENBQUMsTUFBc0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ3JELENBQUUsQ0FBQyxDQUFDLE1BQXNCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNyRCxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQ2Q7WUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFxQixDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUVNLE9BQU87UUFDVixJQUNJLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLFdBQVc7WUFDeEQsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUNsRjtZQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksQ0FBQyxNQUFtQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQTBCLENBQUM7WUFFcEgsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7YUFDeEI7U0FDSjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxnQkFBZ0I7aUJBQ3BELGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7aUJBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUU7b0JBQzVHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDeEI7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVQLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDcEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV4RixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxXQUFXLEVBQUUsS0FBSztnQkFDbEIsYUFBYSxFQUFFLHdCQUF3QjtnQkFDdkMsVUFBVSxFQUFFLHFCQUFxQjtnQkFDakMsZ0JBQWdCO2dCQUNoQixjQUFjO2dCQUNkLG1CQUFtQixFQUFFLElBQUk7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRTVDLElBQUksQ0FBQyxVQUFVO2lCQUNWLG9CQUFvQixFQUFFO2lCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDUCxJQUFJLENBQUMsVUFBVTtpQkFDVixhQUFhLEVBQUU7aUJBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsSUFBSSxDQUFDLFVBQVU7aUJBQ1YsYUFBYSxFQUFFO2lCQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRTtvQkFDL0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRVAsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUU7b0JBQzNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FDbEQsZUFBZSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQ3hDLFlBQVksQ0FDZixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFOzRCQUMxQixJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDOzRCQUMvRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN4RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDL0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dDQUNuRixJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7NkJBQ2xEOzRCQUVELE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxXQUFpQyxFQUFRLEVBQUU7Z0NBQzVFLFdBQVcsRUFBRSxVQUFVLEVBQUUscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUV2RCxJQUFJLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRTtvQ0FDL0IsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dDQUNqRCwyQkFBMkIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7b0NBQy9DLENBQUMsQ0FBQyxDQUFDO2lDQUNOOzRCQUNMLENBQUMsQ0FBQzs0QkFFRixJQUFJLENBQUMsZ0JBQWdCO2lDQUNoQixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztpQ0FDaEMsT0FBTyxDQUFDLENBQUMsZ0NBQWdDLEVBQUUsRUFBRTtnQ0FDMUMsMkJBQTJCLENBQUMsZ0NBQWdDLENBQUMsV0FBVyxDQUFDLENBQUM7NEJBQzlFLENBQUMsQ0FBQyxDQUFDO3dCQUNYLENBQUMsQ0FBQyxDQUFDO3FCQUNOO3lCQUFNO3dCQUNILElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUMvRyxHQUFHLEVBQUU7NEJBQ0QsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQzs0QkFDL0QsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQ0FDeEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0NBQy9FLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQ0FDbkYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDOzZCQUNsRDs0QkFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQzs0QkFDdEYsSUFBSSxJQUFJLENBQUMsOEJBQThCLElBQUksWUFBWSxFQUFFO2dDQUNwRCxZQUE0QixDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7NkJBQ2hHO3dCQUNMLENBQUMsQ0FDSixDQUFDO3FCQUNMO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLDBCQUEwQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztxQkFDbEYsY0FBYyxDQUFDLElBQUksQ0FBQztxQkFDcEIsdUJBQXVCLENBQUMsSUFBSSxDQUFDO3FCQUM3QixRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDeEQ7WUFFRCxJQUFJLENBQUMsaUNBQWlDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEQ7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhLENBQUMsV0FBVyxHQUFHLEtBQUs7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlDQUFpQyxFQUFFLEVBQUU7WUFDbEYsaUNBQWlDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDdkIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFFLENBQUM7U0FDekQ7UUFDRCxJQUFJLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNwQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0saUNBQWlDO1FBQ3BDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNqRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsSUFDSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU87b0JBQ3RCLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtvQkFDdkIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUNsRjtvQkFDRSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNwRCxJQUFJLENBQUMsZUFBZTt3QkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO3dCQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFFMUQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRTt3QkFDekQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQy9FLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztxQkFDbEQ7eUJBQU07d0JBQ0gsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3FCQUN4QjtvQkFDRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7aUJBQzFCO3FCQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7b0JBQ25DLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTt3QkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO3dCQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ3hCO29CQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDMUI7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtvQkFDcEMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLFdBQVcsRUFBRTt3QkFDekQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDbkQsSUFBSSxDQUFDLGVBQWU7NEJBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRTs0QkFDekQsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7d0JBQ3pELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMvRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7cUJBQ2xEO29CQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDMUI7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDNUI7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDckQ7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGlCQUFpQixDQUFDLGNBQW9DO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BELElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBWSxnQkFBZ0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU87YUFDZCxRQUFRLEVBQUU7YUFDVixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBaUQsQ0FBQzthQUMzRSxhQUFhLENBQUM7WUFDWCxJQUFJLHNCQUFzQixDQUN0QixFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQ2hELEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FDdkQ7U0FDSixDQUFDO2FBQ0Qsc0JBQXNCLENBQUMsS0FBSyxDQUFDO2FBQzdCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBbUIsRUFBRSxnQkFBNkI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRXBGLE9BQU8sQ0FDSCxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDO1lBQ2pELENBQUMsT0FBTyxHQUFHLGlCQUFpQixHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsc0JBQXNCLENBQUMsQ0FDNUYsQ0FBQztJQUNOLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxNQUFtQjtRQUNqRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxXQUFXO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRTtZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUV6QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3pCO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztZQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUV0QixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3pCO1NBQ0o7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztpSUExYVEsb0JBQW9CO3FIQUFwQixvQkFBb0IsK2VBUVosd0JBQXdCLGtTQ25EN0MsK2xCQWlCQSxvcEdEc0JnQixDQUFDLFNBQVMsQ0FBQzs7MkZBSWQsb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLGNBQWMsY0FHWixDQUFDLFNBQVMsQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzJLQUc1QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFOEIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDVCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQzJDLGdCQUFnQjtzQkFBakYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBS3RDLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFHcEIsc0JBQXNCO3NCQUR6QixLQUFLO2dCQVFPLHFCQUFxQjtzQkFBakMsS0FBSztnQkFRRiw4QkFBOEI7c0JBRGpDLEtBQUs7Z0JBU0YsZUFBZTtzQkFEbEIsS0FBSztnQkFVRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBeUJGLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBRdWVyeUxpc3QsXG4gICAgRWxlbWVudFJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheVJlZixcbiAgICBTY3JvbGxEaXNwYXRjaGVyLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciwgSGlnaGxpZ2h0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuXG5pbXBvcnQgeyBvcGVuQ2xvc2UgfSBmcm9tICcuL2FuaW1hdGlvbnMvb3Blbi1jbG9zZSc7XG5pbXBvcnQgeyBFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWl0ZW0vZXVpLWRyb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEV1aURyb3Bkb3duU2VydmljZSB9IGZyb20gJy4vZXVpLWRyb3Bkb3duLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGFuaW1hdGlvbnM6IFtvcGVuQ2xvc2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aURyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS1kcm9wZG93bic7XG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAtMTtcbiAgICBASW5wdXQoKSB3aWR0aCA9ICdhdXRvJztcbiAgICBASW5wdXQoKSBwb3NpdGlvbjogJ3RvcCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnbGVmdCcgPSAnYm90dG9tJztcblxuICAgIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlUG9ydGFsQ29udGVudCcpIHRlbXBsYXRlUG9ydGFsQ29udGVudDogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gICAgQFZpZXdDaGlsZCgndHJpZ2dlclJlZicpIHRyaWdnZXJSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRXVpRHJvcGRvd25JdGVtQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIGV1aURyb3Bkb3duSXRlbXM6IFF1ZXJ5TGlzdDxIaWdobGlnaHRhYmxlICYgRXVpRHJvcGRvd25JdGVtQ29tcG9uZW50PjtcblxuICAgIHB1YmxpYyB0cmFwRm9jdXNBdXRvQ2FwdHVyZSA9IHRydWU7XG4gICAgcHVibGljIHBhcmVudERyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudDtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdtZW51JztcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzRHJvcERvd25SaWdodEFsaWduZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Ryb3BEb3duUmlnaHRBbGlnbmVkO1xuICAgIH1cbiAgICBzZXQgaXNEcm9wRG93blJpZ2h0QWxpZ25lZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzRHJvcERvd25SaWdodEFsaWduZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0Ryb3BEb3duUmlnaHRBbGlnbmVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgZ2V0IGlzQ2xvc2VkT25DbGlja0luc2lkZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xvc2VkT25DbGlja0luc2lkZTtcbiAgICB9XG4gICAgc2V0IGlzQ2xvc2VkT25DbGlja0luc2lkZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2xvc2VkT25DbGlja0luc2lkZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xvc2VkT25DbGlja0luc2lkZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtO1xuICAgIH1cbiAgICBzZXQgaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNFeHBhbmRPbkhvdmVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNFeHBhbmRPbkhvdmVyO1xuICAgIH1cbiAgICBzZXQgaXNFeHBhbmRPbkhvdmVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRPbkhvdmVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNFeHBhbmRPbkhvdmVyID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNUYWJOYXZpZ2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVGFiTmF2aWdhdGlvbjtcbiAgICB9XG4gICAgc2V0IGhhc1RhYk5hdmlnYXRpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNUYWJOYXZpZ2F0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzVGFiTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBvcmlnaW5YOiAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyA9ICdzdGFydCc7XG4gICAgcHJpdmF0ZSBvcmlnaW5ZOiAndG9wJyB8ICdib3R0b20nIHwgJ2NlbnRlcicgPSAnYm90dG9tJztcbiAgICBwcml2YXRlIG92ZXJsYXlYOiAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyA9ICdzdGFydCc7XG4gICAgcHJpdmF0ZSBvdmVybGF5WTogJ3RvcCcgfCAnYm90dG9tJyB8ICdjZW50ZXInID0gJ3RvcCc7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVBvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG4gICAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICAgIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgaXNPcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIGtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gICAgcHJpdmF0ZSBhY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlckNoYW5nZVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIGFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyOiBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjxFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQ+O1xuICAgIHByaXZhdGUgb3JpZ2luOiBIVE1MRWxlbWVudDtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbc3VwZXIuZ2V0Q3NzQ2xhc3NlcygnZXVpLWRyb3Bkb3duJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgZHJvcGRvd25TZXJ2aWNlOiBFdWlEcm9wZG93blNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEN1cnJlbnRseSB0aGUgYGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlYCBpcyBvbmx5IGNoZWNrZWQgb25jZSBvbiBpbml0LlxuICAgICAgICBpZiAodGhpcy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNDbG9zZWRPbkNsaWNrSW5zaWRlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVQb3J0YWxDb250ZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb25zLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZXVpLWRyb3Bkb3duIGlzIG9wZW4uXG4gICAgICpcbiAgICAgKiBAdXNhZ2VOb3Rlc1xuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZXVpLWRyb3Bkb3duICNkcm9wZG93bj5cbiAgICAgKiAgICAgIDxteS1jb21wb25lbnQgKm5nSWY9XCJkcm9wZG93bi5pc09wZW5cIj48L215LWNvbXBvbmVudD5cbiAgICAgKiA8L2V1aS1kcm9wZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gd2l0aCB2YWx1ZSBgdHJ1ZWAgd2hlbiBvcGVuLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4kLnZhbHVlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBvblRyaWdnZXJDbGlja2VkKGU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuZGlzYWJsZWQnKSAmJlxuICAgICAgICAgICAgIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignOmRpc2FibGVkJykgJiZcbiAgICAgICAgICAgICF0aGlzLmlzT3BlblxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc0Nsb3NlZE9uQ2xpY2tJbnNpZGUgJiZcbiAgICAgICAgICAgICF0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duICYmXG4gICAgICAgICAgICAhdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5kaXNhYmxlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBkcm9wZG93blxuICAgICAqXG4gICAgICogQHBhcmFtIG9yaWdpbiBPcmlnaW4gb2YgdGhlIGRyb3Bkb3duIHBvc2l0aW9uXG4gICAgICovXG4gICAgcHVibGljIG9wZW5Ecm9wZG93bihvcmlnaW46IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1RyaWdnZXJGb2N1c2FibGVPbkNsb3NlKG9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luLmNsb3Nlc3QoJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknKSB8fCAodGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbi5jbG9zZXN0KCdhJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbiA9IHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgIC5hbmNlc3RvclNjcm9sbGVkKHRoaXMub3JpZ2luKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2RrU2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKHRoaXMub3JpZ2luLCBldmVudCA/IGV2ZW50LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50IDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHsgc2Nyb2xsVGhyb3R0bGU6IDEwIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2V1aS1kcm9wZG93bl9fYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdldWktZHJvcGRvd25fX3BhbmVsJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAgICAgLmtleWRvd25FdmVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Ryb3Bkb3duSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXMudG9BcnJheSgpLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uc1tpXSA9IGZyb21FdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlEcm9wZG93bkl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3VzZWVudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzID0gKHN1YkRyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bj8ub3ZlcmxheVJlZj8uX291dHNpZGVQb2ludGVyRXZlbnRzLm5leHQoZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YkRyb3Bkb3duPy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bi5ldWlEcm9wZG93bkl0ZW1zLnRvQXJyYXkoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzKHMuc3ViRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtSGF2aW5nU3ViRHJvcGRvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPdXRzaWRlUG9pbnRlckV2ZW50cyhldWlEcm9wZG93bkl0ZW1IYXZpbmdTdWJEcm9wZG93bi5zdWJEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnNbaV0gPSBmcm9tRXZlbnQoZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5zZXRQYXJlbnREcm9wZG93bih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uIC5ldWktbGFiZWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtICYmIGxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0ID0gZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLmV1aURyb3Bkb3duSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoSG9tZUFuZEVuZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhXcmFwKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bihyZWN1cnNpdmVseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb25zLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAodGhpcy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWN1cnNpdmVseSAmJiB0aGlzLnBhcmVudERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duLmNsb3NlRHJvcGRvd24odHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS5pc0Ryb3Bkb3duT3Blbi5lbWl0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlS2V5Ym9hcmRIYW5kbGVyU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmNvZGUgPT09ICdFbnRlcicgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX2hhc1RhYk5hdmlnYXRpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kT25Ib3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0ubW91c2VlbnRlcigpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uY2xpY2soKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duLnNldFBhcmVudERyb3Bkb3duKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnREcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnREcm9wZG93bi5jcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/LmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0V4cGFuZE9uSG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5tb3VzZWVudGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5jbGljaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duLnNldFBhcmVudERyb3Bkb3duKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5rZXlkb3duTGlzdGVuZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ1RhYicgJiYgIXRoaXMuX2hhc1RhYk5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI/Lm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UGFyZW50RHJvcGRvd24ocGFyZW50RHJvcGRvd246IEV1aURyb3Bkb3duQ29tcG9uZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFyZW50RHJvcGRvd24gPSBwYXJlbnREcm9wZG93bjtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICdyaWdodCc7XG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcblxuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KCk7XG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvblN0cmF0ZWd5KHBvc2l0aW9uU3RyYXRlZ3kpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGhhc0Ryb3Bkb3duSXRlbXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV1aURyb3Bkb3duSXRlbXM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvblN0cmF0ZWd5KCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XG4gICAgICAgIHJldHVybiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLm9yaWdpbiBhcyBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3lPcmlnaW4pXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgICAgICAgICAgICAgIHsgb3JpZ2luWDogdGhpcy5vcmlnaW5YLCBvcmlnaW5ZOiB0aGlzLm9yaWdpblkgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBvdmVybGF5WDogdGhpcy5vdmVybGF5WCwgb3ZlcmxheVk6IHRoaXMub3ZlcmxheVkgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbih0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVmlzaWJsZShvcmlnaW46IEhUTUxFbGVtZW50LCBzY3JvbGxhYmxlUGFyZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBvcmlnaW5ZID0gb3JpZ2luLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnk7XG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnRZID0gTWF0aC5hYnMoc2Nyb2xsYWJsZVBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55KTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudEhlaWdodCA9IHNjcm9sbGFibGVQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0IC0gNTA7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChvcmlnaW5ZID4gMCAmJiBvcmlnaW5ZIDwgc2Nyb2xsYWJsZVBhcmVudEhlaWdodCkgfHxcbiAgICAgICAgICAgIChvcmlnaW5ZIC0gc2Nyb2xsYWJsZVBhcmVudFkgPiAwICYmIG9yaWdpblkgPCBzY3JvbGxhYmxlUGFyZW50WSArIHNjcm9sbGFibGVQYXJlbnRIZWlnaHQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1RyaWdnZXJGb2N1c2FibGVPbkNsb3NlKG9yaWdpbjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG9yaWdpbi5tYXRjaGVzKCdidXR0b246bm90KFtkaXNhYmxlZF0pJykgfHwgb3JpZ2luLm1hdGNoZXMoJ2EnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWSA9ICd0b3AnO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5WSA9ICdib3R0b20nO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duUmlnaHRBbGlnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5WCA9ICdlbmQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpblggPSAnZW5kJztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVggPSAnc3RhcnQnO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5WSA9ICdjZW50ZXInO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnYm90dG9tJykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5ZID0gJ2JvdHRvbSc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlZID0gJ3RvcCc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJvcERvd25SaWdodEFsaWduZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpblggPSAnZW5kJztcbiAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ2VuZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ3N0YXJ0JztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVggPSAnZW5kJztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnY2VudGVyJztcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgI3RyaWdnZXJSZWYgY2xhc3M9XCJldWktZHJvcGRvd25fX3RyaWdnZXItY29udGFpbmVyXCIgKGNsaWNrKT1cIm9uVHJpZ2dlckNsaWNrZWQoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlUG9ydGFsQ29udGVudD5cbiAgICA8ZGl2XG4gICAgICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCJcbiAgICAgICAgW0BvcGVuQ2xvc2VdPVwiaXNPcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxuICAgICAgICBjZGtUcmFwRm9jdXNcbiAgICAgICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInRyYXBGb2N1c0F1dG9DYXB0dXJlXCJcbiAgICAgICAgY2xhc3M9XCJldWktZHJvcGRvd25fX3BhbmVsLWNvbnRhaW5lclwiXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgIChjbGljayk9XCJvbkNsaWNrKClcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZXVpLWRyb3Bkb3duLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS1kcm9wZG93bi9ldWktZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWRyb3Bkb3duL2V1aS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixLQUFLLEVBS0wsU0FBUyxFQUVULGVBQWUsR0FJbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUVILHNCQUFzQixHQU16QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsMEJBQTBCLEVBQWlCLE1BQU0sbUJBQW1CLENBQUM7QUFFOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQVV2RixNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQTRDbkQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELFlBQ1ksT0FBZ0IsRUFDaEIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxlQUFtQyxFQUNqQyxTQUFvQjtRQUU5QixLQUFLLEVBQUUsQ0FBQztRQU5BLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUNqQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBckR6QixZQUFPLEdBQUcsY0FBYyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNkLFVBQUssR0FBRyxNQUFNLENBQUM7UUFDZixhQUFRLEdBQXdDLFFBQVEsQ0FBQztRQU0zRCx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFLbkMsMkJBQXNCLEdBQWdCLEtBQUssQ0FBQztRQUc1QywwQkFBcUIsR0FBZ0IsSUFBSSxDQUFDO1FBRzFDLG1DQUE4QixHQUFnQixLQUFLLENBQUM7UUFHcEQsb0JBQWUsR0FBZ0IsS0FBSyxDQUFDO1FBR3JDLHFCQUFnQixHQUFnQixLQUFLLENBQUM7UUFFOUIsWUFBTyxHQUErQixPQUFPLENBQUM7UUFDOUMsWUFBTyxHQUFnQyxRQUFRLENBQUM7UUFDaEQsYUFBUSxHQUErQixPQUFPLENBQUM7UUFDL0MsYUFBUSxHQUFnQyxLQUFLLENBQUM7UUFHOUMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDbEMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlDLGlDQUE0QixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbEQsZ0NBQTJCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCx1Q0FBa0MsR0FBbUIsRUFBRSxDQUFDO1FBQ3hELGlEQUE0QyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFpQjFFLENBQUM7SUFFRCxRQUFRO1FBQ0osd0VBQXdFO1FBQ3hFLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7U0FDckM7YUFBTTtZQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU1RixJQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFDO1lBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDbEc7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlDQUFpQyxFQUFFLEVBQUU7WUFDbEYsaUNBQWlDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsOERBQThEO0lBQ3ZELGdCQUFnQixDQUFDLENBQU07UUFDMUIsSUFDSSxDQUFFLENBQUMsQ0FBQyxNQUFzQixDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDckQsQ0FBRSxDQUFDLENBQUMsTUFBc0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ3JELENBQUMsSUFBSSxDQUFDLE1BQU0sRUFDZDtZQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLE1BQXFCLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0lBRU0sT0FBTztRQUNWLElBQ0ksSUFBSSxDQUFDLHFCQUFxQjtZQUMxQixDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsV0FBVztZQUN4RCxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQ2xGO1lBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksWUFBWSxDQUFDLE1BQW1CO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXJCLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLElBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBMEIsQ0FBQztZQUVwSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzthQUN4QjtTQUNKO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsNEJBQTRCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtpQkFDcEQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtvQkFDNUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRVAsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXhGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ2xDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixhQUFhLEVBQUUsd0JBQXdCO2dCQUN2QyxVQUFVLEVBQUUscUJBQXFCO2dCQUNqQyxnQkFBZ0I7Z0JBQ2hCLGNBQWM7Z0JBQ2QsbUJBQW1CLEVBQUUsSUFBSTthQUM1QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFNUMsSUFBSSxDQUFDLFVBQVU7aUJBQ1Ysb0JBQW9CLEVBQUU7aUJBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM5QixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUNQLElBQUksQ0FBQyxVQUFVO2lCQUNWLGFBQWEsRUFBRTtpQkFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7WUFDUCxJQUFJLENBQUMsVUFBVTtpQkFDVixhQUFhLEVBQUU7aUJBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzlCLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUN6QixJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssUUFBUSxFQUFFO29CQUMvQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3hCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDM0QsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO3dCQUN0QixJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUNsRCxlQUFlLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDeEMsWUFBWSxDQUNmLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYSxFQUFFLEVBQUU7NEJBQzFCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7NEJBQy9ELElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3hELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUMvRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7Z0NBQ25GLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQzs2QkFDbEQ7NEJBRUQsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFdBQWlDLEVBQVEsRUFBRTtnQ0FDNUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBRXZELElBQUksV0FBVyxFQUFFLGdCQUFnQixFQUFFO29DQUMvQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0NBQ2pELDJCQUEyQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQ0FDL0MsQ0FBQyxDQUFDLENBQUM7aUNBQ047NEJBQ0wsQ0FBQyxDQUFDOzRCQUVGLElBQUksQ0FBQyxnQkFBZ0I7aUNBQ2hCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2lDQUNoQyxPQUFPLENBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFO2dDQUMxQywyQkFBMkIsQ0FBQyxnQ0FBZ0MsQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDOUUsQ0FBQyxDQUFDLENBQUM7d0JBQ1gsQ0FBQyxDQUFDLENBQUM7cUJBQ047eUJBQU07d0JBQ0gsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQy9HLEdBQUcsRUFBRTs0QkFDRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDOzRCQUMvRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dDQUN4RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQ0FDL0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dDQUNuRixJQUFJLENBQUMsMkJBQTJCLENBQUMsV0FBVyxFQUFFLENBQUM7NkJBQ2xEOzRCQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDOzRCQUN0RixJQUFJLElBQUksQ0FBQyw4QkFBOEIsSUFBSSxZQUFZLEVBQUU7Z0NBQ3BELFlBQTRCLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQzs2QkFDaEc7d0JBQ0wsQ0FBQyxDQUNKLENBQUM7cUJBQ0w7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3FCQUNsRixjQUFjLENBQUMsSUFBSSxDQUFDO3FCQUNwQix1QkFBdUIsQ0FBQyxJQUFJLENBQUM7cUJBQzdCLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsMEJBQTBCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUN4RDtZQUVELElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGFBQWEsQ0FBQyxXQUFXLEdBQUcsS0FBSztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsa0NBQWtDLENBQUMsT0FBTyxDQUFDLENBQUMsaUNBQWlDLEVBQUUsRUFBRTtZQUNsRixpQ0FBaUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztTQUN6RDtRQUNELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsNENBQTRDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkI7UUFDRCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxpQ0FBaUM7UUFDcEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQ2pHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixJQUNJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTztvQkFDdEIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO29CQUN0QixDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQ2xGO29CQUNFLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3BELElBQUksQ0FBQyxlQUFlO3dCQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUU7d0JBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUUxRCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFO3dCQUN6RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDL0UsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO3FCQUNsRDt5QkFBTTt3QkFDSCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ3hCO29CQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDMUI7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtvQkFDbkMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO3dCQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGlDQUFpQyxFQUFFLENBQUM7d0JBQ3hELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDeEI7b0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUMxQjtxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO29CQUNwQyxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFO3dCQUN6RCxJQUFJLENBQUMsMEJBQTBCLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUNuRCxJQUFJLENBQUMsZUFBZTs0QkFDaEIsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFOzRCQUN6RCxDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzt3QkFDekQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQy9FLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztxQkFDbEQ7b0JBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUMxQjtxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM1QjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNyRDthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBb0M7UUFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFZLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTzthQUNkLFFBQVEsRUFBRTthQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFpRCxDQUFDO2FBQzNFLGFBQWEsQ0FBQztZQUNYLElBQUksc0JBQXNCLENBQ3RCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDaEQsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUN2RDtTQUNKLENBQUM7YUFDRCxzQkFBc0IsQ0FBQyxLQUFLLENBQUM7YUFDN0Isa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFtQixFQUFFLGdCQUE2QjtRQUNoRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsTUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFcEYsT0FBTyxDQUNILENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsc0JBQXNCLENBQUM7WUFDakQsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLE9BQU8sR0FBRyxpQkFBaUIsR0FBRyxzQkFBc0IsQ0FBQyxDQUM1RixDQUFDO0lBQ04sQ0FBQztJQUVPLHlCQUF5QixDQUFDLE1BQW1CO1FBQ2pELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBRXpCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBRXRCLElBQUksSUFBSSxDQUFDLHNCQUFzQixFQUFFO2dCQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDekI7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDNUI7SUFDTCxDQUFDO2lJQXBaUSxvQkFBb0I7cUhBQXBCLG9CQUFvQixxZEFRWix3QkFBd0Isa1NDckQ3QywrbEJBaUJBLG9wR0R3QmdCLENBQUMsU0FBUyxDQUFDOztBQW1CdkI7SUFEQyxhQUFhO29FQUM4QjtBQUc1QztJQURDLGFBQWE7bUVBQzRCO0FBRzFDO0lBREMsYUFBYTs0RUFDc0M7QUFHcEQ7SUFEQyxhQUFhOzZEQUN1QjtBQUdyQztJQURDLGFBQWE7OERBQ3dCOzJGQTNCN0Isb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNJLGNBQWMsY0FHWixDQUFDLFNBQVMsQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJO21NQUc1QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFOEIscUJBQXFCO3NCQUF4RCxTQUFTO3VCQUFDLHVCQUF1QjtnQkFDVCxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQzJDLGdCQUFnQjtzQkFBakYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBT2hFLHNCQUFzQjtzQkFGckIsS0FBSztnQkFLTixxQkFBcUI7c0JBRnBCLEtBQUs7Z0JBS04sOEJBQThCO3NCQUY3QixLQUFLO2dCQUtOLGVBQWU7c0JBRmQsS0FBSztnQkFLTixnQkFBZ0I7c0JBRmYsS0FBSztnQkFvQkYsVUFBVTtzQkFEYixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBIb3N0QmluZGluZyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENka1Njcm9sbGFibGUsXG4gICAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbiAgICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIE92ZXJsYXksXG4gICAgT3ZlcmxheVJlZixcbiAgICBTY3JvbGxEaXNwYXRjaGVyLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciwgSGlnaGxpZ2h0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcblxuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5cbmltcG9ydCB7IG9wZW5DbG9zZSB9IGZyb20gJy4vYW5pbWF0aW9ucy9vcGVuLWNsb3NlJztcbmltcG9ydCB7IEV1aURyb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcGRvd24taXRlbS9ldWktZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXVpRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSAnLi9ldWktZHJvcGRvd24uc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW29wZW5DbG9zZV0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAnZXVpLWRyb3Bkb3duJztcbiAgICBASW5wdXQoKSB0YWJJbmRleCA9IC0xO1xuICAgIEBJbnB1dCgpIHdpZHRoID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIHBvc2l0aW9uOiAndG9wJyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdsZWZ0JyA9ICdib3R0b20nO1xuXG4gICAgQFZpZXdDaGlsZCgndGVtcGxhdGVQb3J0YWxDb250ZW50JykgdGVtcGxhdGVQb3J0YWxDb250ZW50OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbiAgICBAVmlld0NoaWxkKCd0cmlnZ2VyUmVmJykgdHJpZ2dlclJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgZXVpRHJvcGRvd25JdGVtczogUXVlcnlMaXN0PEhpZ2hsaWdodGFibGUgJiBFdWlEcm9wZG93bkl0ZW1Db21wb25lbnQ+O1xuXG4gICAgcHVibGljIHRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICBwdWJsaWMgcGFyZW50RHJvcGRvd246IEV1aURyb3Bkb3duQ29tcG9uZW50O1xuXG4gICAgQElucHV0KClcbiAgICBAY29lcmNlQm9vbGVhblxuICAgIGlzRHJvcERvd25SaWdodEFsaWduZWQ6Qm9vbGVhbklucHV0ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBAY29lcmNlQm9vbGVhblxuICAgIGlzQ2xvc2VkT25DbGlja0luc2lkZTpCb29sZWFuSW5wdXQgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgQGNvZXJjZUJvb2xlYW5cbiAgICBpc0xhYmVsVXBkYXRlZEZyb21TZWxlY3RlZEl0ZW06Qm9vbGVhbklucHV0ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBAY29lcmNlQm9vbGVhblxuICAgIGlzRXhwYW5kT25Ib3ZlcjpCb29sZWFuSW5wdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIEBjb2VyY2VCb29sZWFuXG4gICAgaGFzVGFiTmF2aWdhdGlvbjpCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgb3JpZ2luWDogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgPSAnc3RhcnQnO1xuICAgIHByaXZhdGUgb3JpZ2luWTogJ3RvcCcgfCAnYm90dG9tJyB8ICdjZW50ZXInID0gJ2JvdHRvbSc7XG4gICAgcHJpdmF0ZSBvdmVybGF5WDogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgPSAnc3RhcnQnO1xuICAgIHByaXZhdGUgb3ZlcmxheVk6ICd0b3AnIHwgJ2JvdHRvbScgfCAnY2VudGVyJyA9ICd0b3AnO1xuICAgIHByaXZhdGUgdGVtcGxhdGVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsO1xuICAgIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGlzT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBrZXlkb3duTGlzdGVuZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXJDaGFuZ2VTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgcHJpdmF0ZSBhY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcjogQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8RXVpRHJvcGRvd25JdGVtQ29tcG9uZW50PjtcbiAgICBwcml2YXRlIG9yaWdpbjogSFRNTEVsZW1lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3N1cGVyLmdldENzc0NsYXNzZXMoJ2V1aS1kcm9wZG93bicpXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyOiBTY3JvbGxEaXNwYXRjaGVyLFxuICAgICAgICBwcml2YXRlIGRyb3Bkb3duU2VydmljZTogRXVpRHJvcGRvd25TZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIEN1cnJlbnRseSB0aGUgYGNka1RyYXBGb2N1c0F1dG9DYXB0dXJlYCBpcyBvbmx5IGNoZWNrZWQgb25jZSBvbiBpbml0LlxuICAgICAgICBpZiAodGhpcy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc1RhYk5hdmlnYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudHJhcEZvY3VzQXV0b0NhcHR1cmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc0Nsb3NlZE9uQ2xpY2tJbnNpZGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZVBvcnRhbENvbnRlbnQsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG5cbiAgICAgICAgaWYodGhpcy50cmlnZ2VyUmVmICYmIHRoaXMudHJpZ2dlclJlZi5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQpe1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMudHJpZ2dlclJlZi5uYXRpdmVFbGVtZW50LmZpcnN0Q2hpbGQsICdhcmlhLWhhc3BvcHVwJywgJ3RydWUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb25zLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgZXVpLWRyb3Bkb3duIGlzIG9wZW4uXG4gICAgICpcbiAgICAgKiBAdXNhZ2VOb3Rlc1xuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8ZXVpLWRyb3Bkb3duICNkcm9wZG93bj5cbiAgICAgKiAgICAgIDxteS1jb21wb25lbnQgKm5nSWY9XCJkcm9wZG93bi5pc09wZW5cIj48L215LWNvbXBvbmVudD5cbiAgICAgKiA8L2V1aS1kcm9wZG93bj5cbiAgICAgKiBgYGBcbiAgICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gd2l0aCB2YWx1ZSBgdHJ1ZWAgd2hlbiBvcGVuLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc09wZW4kLnZhbHVlO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBvblRyaWdnZXJDbGlja2VkKGU6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKCcuZGlzYWJsZWQnKSAmJlxuICAgICAgICAgICAgIShlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcignOmRpc2FibGVkJykgJiZcbiAgICAgICAgICAgICF0aGlzLmlzT3BlblxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pc0Nsb3NlZE9uQ2xpY2tJbnNpZGUgJiZcbiAgICAgICAgICAgICF0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duICYmXG4gICAgICAgICAgICAhdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5kaXNhYmxlZFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9wZW4gYSBkcm9wZG93blxuICAgICAqXG4gICAgICogQHBhcmFtIG9yaWdpbiBPcmlnaW4gb2YgdGhlIGRyb3Bkb3duIHBvc2l0aW9uXG4gICAgICovXG4gICAgcHVibGljIG9wZW5Ecm9wZG93bihvcmlnaW46IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luO1xuXG4gICAgICAgIGlmICghdGhpcy5pc1RyaWdnZXJGb2N1c2FibGVPbkNsb3NlKG9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luID0gb3JpZ2luLmNsb3Nlc3QoJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknKSB8fCAodGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZCBhcyBIVE1MRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbi5jbG9zZXN0KCdhJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5vcmlnaW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbiA9IG9yaWdpbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbiA9IHRoaXMuc2Nyb2xsRGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgIC5hbmNlc3RvclNjcm9sbGVkKHRoaXMub3JpZ2luKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2RrU2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKHRoaXMub3JpZ2luLCBldmVudCA/IGV2ZW50LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50IDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHsgc2Nyb2xsVGhyb3R0bGU6IDEwIH0pO1xuXG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHtcbiAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2V1aS1kcm9wZG93bl9fYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICdldWktZHJvcGRvd25fX3BhbmVsJyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5vdXRzaWRlUG9pbnRlckV2ZW50cygpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZlxuICAgICAgICAgICAgICAgIC5iYWNrZHJvcENsaWNrKClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmXG4gICAgICAgICAgICAgICAgLmtleWRvd25FdmVudHMoKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChrZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXlib2FyZEV2ZW50LmtleT8udG9Mb3dlckNhc2UoKSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0Ryb3Bkb3duSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXMudG9BcnJheSgpLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4cGFuZE9uSG92ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uc1tpXSA9IGZyb21FdmVudChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldWlEcm9wZG93bkl0ZW0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3VzZWVudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5ZG93bkxpc3RlbmVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzID0gKHN1YkRyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bj8ub3ZlcmxheVJlZj8uX291dHNpZGVQb2ludGVyRXZlbnRzLm5leHQoZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YkRyb3Bkb3duPy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJEcm9wZG93bi5ldWlEcm9wZG93bkl0ZW1zLnRvQXJyYXkoKS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlck91dHNpZGVQb2ludGVyRXZlbnRzKHMuc3ViRHJvcGRvd24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzQWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9yRWFjaCgoZXVpRHJvcGRvd25JdGVtSGF2aW5nU3ViRHJvcGRvd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJPdXRzaWRlUG9pbnRlckV2ZW50cyhldWlEcm9wZG93bkl0ZW1IYXZpbmdTdWJEcm9wZG93bi5zdWJEcm9wZG93bik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbnNbaV0gPSBmcm9tRXZlbnQoZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2NsaWNrJykuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGV1aURyb3Bkb3duSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5zZXRQYXJlbnREcm9wZG93bih0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5zdWJEcm9wZG93bi5vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWxFbGVtZW50ID0gdGhpcy50cmlnZ2VyUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uIC5ldWktbGFiZWwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMYWJlbFVwZGF0ZWRGcm9tU2VsZWN0ZWRJdGVtICYmIGxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0ID0gZXVpRHJvcGRvd25JdGVtLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG5ldyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcih0aGlzLmV1aURyb3Bkb3duSXRlbXMpXG4gICAgICAgICAgICAgICAgICAgIC53aXRoSG9tZUFuZEVuZCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICAud2l0aFZlcnRpY2FsT3JpZW50YXRpb24odHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgLndpdGhXcmFwKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVLZXlib2FyZEhhbmRsZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blNlcnZpY2UuaXNEcm9wZG93bk9wZW4uZW1pdCh0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlIGEgZHJvcGRvd25cbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2VEcm9wZG93bihyZWN1cnNpdmVseSA9IGZhbHNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5ldWlEcm9wZG93bkl0ZW1zRXZlbnRTdWJzY3JpcHRpb25zLmZvckVhY2goKGV1aURyb3Bkb3duSXRlbXNFdmVudFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgZXVpRHJvcGRvd25JdGVtc0V2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICBpZiAodGhpcy5oYXNEcm9wZG93bkl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLnRyYXBGb2N1c0F1dG9DYXB0dXJlKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpbi5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWN1cnNpdmVseSAmJiB0aGlzLnBhcmVudERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duLmNsb3NlRHJvcGRvd24odHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRyb3Bkb3duU2VydmljZS5pc0Ryb3Bkb3duT3Blbi5lbWl0KGZhbHNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlS2V5Ym9hcmRIYW5kbGVyU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudCwgJ2tleWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LmNvZGUgPT09ICdFbnRlcicgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaGFzVGFiTmF2aWdhdGlvbiAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNFeHBhbmRPbkhvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXIuYWN0aXZlSXRlbS5tb3VzZWVudGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5jbGljaygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5hY3RpdmVJdGVtLnN1YkRyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd0xlZnQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudERyb3Bkb3duKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duLmNyZWF0ZUtleWJvYXJkSGFuZGxlclN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlcj8uYWN0aXZlSXRlbS5zdWJEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRXhwYW5kT25Ib3ZlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLm1vdXNlZW50ZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlci5hY3RpdmVJdGVtLmNsaWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyLmFjdGl2ZUl0ZW0uc3ViRHJvcGRvd24uc2V0UGFyZW50RHJvcGRvd24odGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmtleWRvd25MaXN0ZW5lclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnVGFiJyAmJiAhdGhpcy5oYXNUYWJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bih0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPy5vbktleWRvd24oZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFBhcmVudERyb3Bkb3duKHBhcmVudERyb3Bkb3duOiBFdWlEcm9wZG93bkNvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhcmVudERyb3Bkb3duID0gcGFyZW50RHJvcGRvd247XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSAncmlnaHQnO1xuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneSgpO1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb25TdHJhdGVneShwb3NpdGlvblN0cmF0ZWd5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNEcm9wZG93bkl0ZW1zKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5ldWlEcm9wZG93bkl0ZW1zPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneSgpOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5vcmlnaW4gYXMgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAgICAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICAgICAgICAgICAgICB7IG9yaWdpblg6IHRoaXMub3JpZ2luWCwgb3JpZ2luWTogdGhpcy5vcmlnaW5ZIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgb3ZlcmxheVg6IHRoaXMub3ZlcmxheVgsIG92ZXJsYXlZOiB0aGlzLm92ZXJsYXlZIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24odHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Zpc2libGUob3JpZ2luOiBIVE1MRWxlbWVudCwgc2Nyb2xsYWJsZVBhcmVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luWSA9IG9yaWdpbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS55O1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50WSA9IE1hdGguYWJzKHNjcm9sbGFibGVQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueSk7XG4gICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQgPSBzY3JvbGxhYmxlUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCAtIDUwO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAob3JpZ2luWSA+IDAgJiYgb3JpZ2luWSA8IHNjcm9sbGFibGVQYXJlbnRIZWlnaHQpIHx8XG4gICAgICAgICAgICAob3JpZ2luWSAtIHNjcm9sbGFibGVQYXJlbnRZID4gMCAmJiBvcmlnaW5ZIDwgc2Nyb2xsYWJsZVBhcmVudFkgKyBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNUcmlnZ2VyRm9jdXNhYmxlT25DbG9zZShvcmlnaW46IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBvcmlnaW4ubWF0Y2hlcygnYnV0dG9uOm5vdChbZGlzYWJsZWRdKScpIHx8IG9yaWdpbi5tYXRjaGVzKCdhJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICd0b3AnKSB7XG4gICAgICAgICAgICB0aGlzLm9yaWdpblkgPSAndG9wJztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnYm90dG9tJztcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcm9wRG93blJpZ2h0QWxpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdlbmQnO1xuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVggPSAnZW5kJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ3N0YXJ0JztcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVkgPSAnY2VudGVyJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWSA9ICdib3R0b20nO1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5WSA9ICd0b3AnO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Ryb3BEb3duUmlnaHRBbGlnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW5YID0gJ2VuZCc7XG4gICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5WCA9ICdlbmQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMub3JpZ2luWCA9ICdzdGFydCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlYID0gJ2VuZCc7XG4gICAgICAgICAgICB0aGlzLm92ZXJsYXlZID0gJ2NlbnRlcic7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICN0cmlnZ2VyUmVmIGNsYXNzPVwiZXVpLWRyb3Bkb3duX190cmlnZ2VyLWNvbnRhaW5lclwiIChjbGljayk9XCJvblRyaWdnZXJDbGlja2VkKCRldmVudClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVBvcnRhbENvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiXG4gICAgICAgIFtAb3BlbkNsb3NlXT1cImlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcbiAgICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cmFwRm9jdXNBdXRvQ2FwdHVyZVwiXG4gICAgICAgIGNsYXNzPVwiZXVpLWRyb3Bkb3duX19wYW5lbC1jb250YWluZXJcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICAgICAgICAoY2xpY2spPVwib25DbGljaygpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImV1aS1kcm9wZG93bi1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==