@skyux/tabs 4.6.9 → 5.0.0-beta.4

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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/bundles/skyux-tabs-testing.umd.js +324 -221
  3. package/bundles/skyux-tabs-testing.umd.js.map +1 -1
  4. package/bundles/skyux-tabs.umd.js +657 -782
  5. package/bundles/skyux-tabs.umd.js.map +1 -1
  6. package/documentation.json +5509 -0
  7. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +29 -32
  8. package/esm2015/modules/sectioned-form/sectioned-form.component.js +52 -41
  9. package/esm2015/modules/sectioned-form/sectioned-form.module.js +30 -19
  10. package/esm2015/modules/sectioned-form/sectioned-form.service.js +9 -8
  11. package/esm2015/modules/shared/sky-tabs-resources.module.js +41 -0
  12. package/esm2015/modules/tabs/tab-button.component.js +41 -47
  13. package/esm2015/modules/tabs/tab-index.js +2 -1
  14. package/esm2015/modules/tabs/tab.component.js +31 -41
  15. package/esm2015/modules/tabs/tabs.module.js +45 -23
  16. package/esm2015/modules/tabs/tabset-active-tab-unregistered-args.js +2 -1
  17. package/esm2015/modules/tabs/tabset-adapter.service.js +9 -8
  18. package/esm2015/modules/tabs/tabset-buttons-display-mode.js +2 -1
  19. package/esm2015/modules/tabs/tabset-nav-button.component.js +21 -26
  20. package/esm2015/modules/tabs/tabset-permalink.service.js +11 -15
  21. package/esm2015/modules/tabs/tabset-style.js +2 -1
  22. package/esm2015/modules/tabs/tabset-tab-indexes-change.js +2 -1
  23. package/esm2015/modules/tabs/tabset.component.js +56 -57
  24. package/esm2015/modules/tabs/tabset.service.js +10 -8
  25. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +9 -8
  26. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +57 -65
  27. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +10 -12
  28. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +75 -54
  29. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +70 -57
  30. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +47 -30
  31. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +19 -16
  32. package/esm2015/public-api.js +23 -0
  33. package/esm2015/skyux-tabs.js +2 -18
  34. package/esm2015/testing/public-api.js +3 -0
  35. package/esm2015/testing/skyux-tabs-testing.js +2 -2
  36. package/esm2015/testing/tabs/tab-fixture-tab.js +2 -1
  37. package/esm2015/testing/tabs/tabset-fixture.js +1 -1
  38. package/fesm2015/skyux-tabs-testing.js.map +1 -1
  39. package/fesm2015/skyux-tabs.js +596 -518
  40. package/fesm2015/skyux-tabs.js.map +1 -1
  41. package/modules/sectioned-form/sectioned-form-section.component.d.ts +3 -0
  42. package/modules/sectioned-form/sectioned-form.component.d.ts +3 -0
  43. package/modules/sectioned-form/sectioned-form.module.d.ts +9 -0
  44. package/modules/sectioned-form/sectioned-form.service.d.ts +3 -0
  45. package/modules/shared/sky-tabs-resources.module.d.ts +14 -0
  46. package/modules/tabs/tab-button.component.d.ts +4 -1
  47. package/modules/tabs/tab.component.d.ts +4 -1
  48. package/modules/tabs/tabs.module.d.ts +15 -0
  49. package/modules/tabs/tabset-adapter.service.d.ts +3 -0
  50. package/modules/tabs/tabset-nav-button.component.d.ts +3 -0
  51. package/modules/tabs/tabset-permalink.service.d.ts +3 -0
  52. package/modules/tabs/tabset.component.d.ts +4 -1
  53. package/modules/tabs/tabset.service.d.ts +3 -0
  54. package/modules/vertical-tabset/vertical-tab-media-query.service.d.ts +3 -0
  55. package/modules/vertical-tabset/vertical-tab.component.d.ts +3 -0
  56. package/modules/vertical-tabset/vertical-tabset-adapter.service.d.ts +3 -0
  57. package/modules/vertical-tabset/vertical-tabset-group.component.d.ts +3 -0
  58. package/modules/vertical-tabset/vertical-tabset.component.d.ts +3 -0
  59. package/modules/vertical-tabset/vertical-tabset.module.d.ts +11 -0
  60. package/modules/vertical-tabset/vertical-tabset.service.d.ts +3 -0
  61. package/package.json +14 -29
  62. package/public-api.d.ts +16 -0
  63. package/skyux-tabs.d.ts +2 -17
  64. package/testing/package.json +2 -5
  65. package/testing/{public_api.d.ts → public-api.d.ts} +0 -0
  66. package/testing/skyux-tabs-testing.d.ts +2 -1
  67. package/CHANGELOG.md +0 -218
  68. package/bundles/skyux-tabs-testing.umd.min.js +0 -16
  69. package/bundles/skyux-tabs-testing.umd.min.js.map +0 -1
  70. package/bundles/skyux-tabs.umd.min.js +0 -16
  71. package/bundles/skyux-tabs.umd.min.js.map +0 -1
  72. package/esm2015/modules/shared/tabs-resources.module.js +0 -17
  73. package/esm2015/plugin-resources/tabs-resources-provider.js +0 -16
  74. package/esm2015/public_api.js +0 -10
  75. package/esm2015/testing/public_api.js +0 -2
  76. package/esm5/modules/sectioned-form/sectioned-form-section.component.js +0 -84
  77. package/esm5/modules/sectioned-form/sectioned-form.component.js +0 -111
  78. package/esm5/modules/sectioned-form/sectioned-form.module.js +0 -31
  79. package/esm5/modules/sectioned-form/sectioned-form.service.js +0 -35
  80. package/esm5/modules/shared/tabs-resources.module.js +0 -20
  81. package/esm5/modules/tabs/tab-button.component.js +0 -72
  82. package/esm5/modules/tabs/tab-index.js +0 -1
  83. package/esm5/modules/tabs/tab.component.js +0 -173
  84. package/esm5/modules/tabs/tabs.module.js +0 -44
  85. package/esm5/modules/tabs/tabset-active-tab-unregistered-args.js +0 -1
  86. package/esm5/modules/tabs/tabset-adapter.service.js +0 -58
  87. package/esm5/modules/tabs/tabset-buttons-display-mode.js +0 -1
  88. package/esm5/modules/tabs/tabset-nav-button.component.js +0 -145
  89. package/esm5/modules/tabs/tabset-permalink.service.js +0 -129
  90. package/esm5/modules/tabs/tabset-style.js +0 -1
  91. package/esm5/modules/tabs/tabset-tab-indexes-change.js +0 -1
  92. package/esm5/modules/tabs/tabset.component.js +0 -434
  93. package/esm5/modules/tabs/tabset.service.js +0 -122
  94. package/esm5/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -76
  95. package/esm5/modules/vertical-tabset/vertical-tab.component.js +0 -214
  96. package/esm5/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -51
  97. package/esm5/modules/vertical-tabset/vertical-tabset-group.component.js +0 -119
  98. package/esm5/modules/vertical-tabset/vertical-tabset.component.js +0 -145
  99. package/esm5/modules/vertical-tabset/vertical-tabset.module.js +0 -46
  100. package/esm5/modules/vertical-tabset/vertical-tabset.service.js +0 -176
  101. package/esm5/plugin-resources/tabs-resources-provider.js +0 -17
  102. package/esm5/public_api.js +0 -10
  103. package/esm5/skyux-tabs.js +0 -21
  104. package/esm5/testing/public_api.js +0 -2
  105. package/esm5/testing/skyux-tabs-testing.js +0 -5
  106. package/esm5/testing/tabs/tab-fixture-tab.js +0 -1
  107. package/esm5/testing/tabs/tabset-fixture.js +0 -168
  108. package/fesm5/skyux-tabs-testing.js +0 -174
  109. package/fesm5/skyux-tabs-testing.js.map +0 -1
  110. package/fesm5/skyux-tabs.js +0 -2182
  111. package/fesm5/skyux-tabs.js.map +0 -1
  112. package/modules/shared/tabs-resources.module.d.ts +0 -2
  113. package/plugin-resources/tabs-resources-provider.d.ts +0 -5
  114. package/public_api.d.ts +0 -9
  115. package/skyux-tabs.metadata.json +0 -1
  116. package/src/assets/img/guidelines/tabs/tabs-anatomy.png +0 -0
  117. package/src/assets/img/guidelines/tabs/tabs-behavior-1.png +0 -0
  118. package/src/assets/img/guidelines/tabs/tabs-layout-1.png +0 -0
  119. package/src/assets/img/guidelines/tabs/tabs-layout-2.png +0 -0
  120. package/src/assets/img/guidelines/tabs/tabs-layout-3.png +0 -0
  121. package/src/assets/img/guidelines/tabs/tabs-layout-4.png +0 -0
  122. package/src/assets/img/guidelines/tabs/tabs-options-1.png +0 -0
  123. package/src/assets/img/guidelines/tabs/tabs-options-2.png +0 -0
  124. package/src/assets/img/guidelines/tabs/tabs-state-collapsed-closed.png +0 -0
  125. package/src/assets/img/guidelines/tabs/tabs-state-collapsed-open.png +0 -0
  126. package/src/assets/img/guidelines/tabs/tabs-state-hover.png +0 -0
  127. package/src/assets/img/guidelines/tabs/tabs-state-selected.png +0 -0
  128. package/src/assets/img/guidelines/tabs/tabs-state-unselected.png +0 -0
  129. package/src/assets/img/guidelines/tabs/tabs-usage-1.png +0 -0
  130. package/src/assets/img/guidelines/tabs/tabs-usage-2.png +0 -0
  131. package/src/assets/img/guidelines/tabs/tabs-usage-3.png +0 -0
  132. package/src/assets/img/guidelines/tabs/tabs-usage-4.png +0 -0
  133. package/src/assets/img/guidelines/tabs/tabs-usage-5.png +0 -0
  134. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-anatomy-1.png +0 -0
  135. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-anatomy-2.png +0 -0
  136. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-layout-1.png +0 -0
  137. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-hover.png +0 -0
  138. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-selected-group.png +0 -0
  139. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-selected.png +0 -0
  140. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-unselected-group.png +0 -0
  141. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-unselected.png +0 -0
  142. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-1.png +0 -0
  143. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-2.png +0 -0
  144. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-3.png +0 -0
  145. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-4.png +0 -0
  146. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-5.png +0 -0
  147. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-6.png +0 -0
  148. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-7.png +0 -0
  149. package/src/assets/locales/resources_en_US.json +0 -26
  150. package/testing/skyux-tabs-testing.metadata.json +0 -1
@@ -1,12 +1,21 @@
1
- import { __decorate } from "tslib";
2
- import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnDestroy, Output, QueryList, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
3
2
  import { combineLatest, race, Subject } from 'rxjs';
4
3
  import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
5
4
  import { SkyTabComponent } from './tab.component';
6
5
  import { SkyTabsetAdapterService } from './tabset-adapter.service';
7
6
  import { SkyTabsetPermalinkService } from './tabset-permalink.service';
8
7
  import { SkyTabsetService } from './tabset.service';
9
- let SkyTabsetComponent = class SkyTabsetComponent {
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./tabset-adapter.service";
10
+ import * as i2 from "./tabset-permalink.service";
11
+ import * as i3 from "./tabset.service";
12
+ import * as i4 from "@skyux/popovers";
13
+ import * as i5 from "@skyux/indicators";
14
+ import * as i6 from "./tab-button.component";
15
+ import * as i7 from "@angular/common";
16
+ import * as i8 from "@skyux/theme";
17
+ import * as i9 from "@skyux/i18n";
18
+ export class SkyTabsetComponent {
10
19
  constructor(changeDetector, elementRef, adapterService, permalinkService, tabsetService) {
11
20
  this.changeDetector = changeDetector;
12
21
  this.elementRef = elementRef;
@@ -347,57 +356,47 @@ let SkyTabsetComponent = class SkyTabsetComponent {
347
356
  this.activeChange.emit(activeIndex);
348
357
  }
349
358
  }
350
- };
351
- SkyTabsetComponent.ctorParameters = () => [
352
- { type: ChangeDetectorRef },
353
- { type: ElementRef },
354
- { type: SkyTabsetAdapterService },
355
- { type: SkyTabsetPermalinkService },
356
- { type: SkyTabsetService }
357
- ];
358
- __decorate([
359
- Input()
360
- ], SkyTabsetComponent.prototype, "active", null);
361
- __decorate([
362
- Input()
363
- ], SkyTabsetComponent.prototype, "ariaLabel", void 0);
364
- __decorate([
365
- Input()
366
- ], SkyTabsetComponent.prototype, "ariaLabelledBy", void 0);
367
- __decorate([
368
- Input()
369
- ], SkyTabsetComponent.prototype, "permalinkId", null);
370
- __decorate([
371
- Input()
372
- ], SkyTabsetComponent.prototype, "tabStyle", null);
373
- __decorate([
374
- Output()
375
- ], SkyTabsetComponent.prototype, "activeChange", void 0);
376
- __decorate([
377
- Output()
378
- ], SkyTabsetComponent.prototype, "newTab", void 0);
379
- __decorate([
380
- Output()
381
- ], SkyTabsetComponent.prototype, "openTab", void 0);
382
- __decorate([
383
- Output()
384
- ], SkyTabsetComponent.prototype, "tabIndexesChange", void 0);
385
- __decorate([
386
- ContentChildren(SkyTabComponent)
387
- ], SkyTabsetComponent.prototype, "tabs", void 0);
388
- SkyTabsetComponent = __decorate([
389
- Component({
390
- selector: 'sky-tabset',
391
- template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n",
392
- providers: [
393
- SkyTabsetAdapterService,
394
- SkyTabsetPermalinkService,
395
- SkyTabsetService
396
- ],
397
- changeDetection: ChangeDetectionStrategy.OnPush,
398
- encapsulation: ViewEncapsulation.None,
399
- styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}"]
400
- })
401
- ], SkyTabsetComponent);
402
- export { SkyTabsetComponent };
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC90YWJzLyIsInNvdXJjZXMiOlsibW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFDSixPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBVXhCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUNMLHVCQUF1QixFQUN4QixNQUFNLDBCQUEwQixDQUFDO0FBTWxDLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFpQzFCLElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQWtCO0lBK0o3QixZQUNVLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLGNBQXVDLEVBQ3ZDLGdCQUEyQyxFQUMzQyxhQUErQjtRQUovQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFDdkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFqRXpDOztXQUVHO1FBRUksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FB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LFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUFwUzJCLGlCQUFpQjtZQUNyQixVQUFVO1lBQ04sdUJBQXVCO1lBQ3JCLHlCQUF5QjtZQUM1QixnQkFBZ0I7O0FBOUp6QztJQURDLEtBQUssRUFBRTtnREEyQlA7QUFZRDtJQURDLEtBQUssRUFBRTtxREFDaUI7QUFTekI7SUFEQyxLQUFLLEVBQUU7MERBQ3NCO0FBUzlCO0lBREMsS0FBSyxFQUFFO3FEQVFQO0FBY0Q7SUFEQyxLQUFLLEVBQUU7a0RBV1A7QUFVRDtJQURDLE1BQU0sRUFBRTt3REFDNkM7QUFPdEQ7SUFEQyxNQUFNLEVBQUU7a0RBQ2dDO0FBT3pDO0lBREMsTUFBTSxFQUFFO21EQUNpQztBQU0xQztJQURDLE1BQU0sRUFBRTs0REFDK0Q7QUFZeEU7SUFEQyxlQUFlLENBQUMsZUFBZSxDQUFDO2dEQUNPO0FBdkk3QixrQkFBa0I7SUFaOUIsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLFlBQVk7UUFFdEIsazRGQUFzQztRQUN0QyxTQUFTLEVBQUU7WUFDVCx1QkFBdUI7WUFDdkIseUJBQXlCO1lBQ3pCLGdCQUFnQjtTQUNqQjtRQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztLQUN0QyxDQUFDO0dBQ1csa0JBQWtCLENBb2M5QjtTQXBjWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgcmFjZSxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreVRhYkluZGV4XG59IGZyb20gJy4vdGFiLWluZGV4JztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0U3R5bGVcbn0gZnJvbSAnLi90YWJzZXQtc3R5bGUnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJDb21wb25lbnRcbn0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0QWRhcHRlclNlcnZpY2Vcbn0gZnJvbSAnLi90YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlXG59IGZyb20gJy4vdGFic2V0LWJ1dHRvbnMtZGlzcGxheS1tb2RlJztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0UGVybWFsaW5rU2VydmljZVxufSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldFNlcnZpY2Vcbn0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldFRhYkluZGV4ZXNDaGFuZ2Vcbn0gZnJvbSAnLi90YWJzZXQtdGFiLWluZGV4ZXMtY2hhbmdlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW50ZXJmYWNlIFRhYkJ1dHRvblZpZXdNb2RlbCB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgYXJpYUNvbnRyb2xzOiBzdHJpbmc7XG4gIGJ1dHRvbkhyZWY6IHN0cmluZztcbiAgYnV0dG9uSWQ6IHN0cmluZztcbiAgYnV0dG9uVGV4dDogc3RyaW5nO1xuICBidXR0b25UZXh0Q291bnQ6IHN0cmluZztcbiAgY2xvc2VhYmxlOiBib29sZWFuO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgdGFiSW5kZXg6IFNreVRhYkluZGV4O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdGFic2V0JyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFic2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lUYWJzZXRBZGFwdGVyU2VydmljZSxcbiAgICBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlLFxuICAgIFNreVRhYnNldFNlcnZpY2VcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFic2V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogQWN0aXZhdGVzIGEgdGFiIGJ5IGl0cyBgdGFiSW5kZXhgIHByb3BlcnR5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IFNreVRhYkluZGV4KSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh2YWx1ZSwgdGhpcy5fYWN0aXZlKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FjdGl2ZSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMudGFicykge1xuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT24gaW5pdCwgd2FpdCBmb3IgY2hpbGRyZW4gdGFicyB0byByZW5kZXIgYmVmb3JlIGJyb2FkY2FzdGluZyB0aGUgYWN0aXZlIHRhYiBpbmRleC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50YWJzZXRTZXJ2aWNlLmlzVmFsaWRUYWJJbmRleCh2YWx1ZSkpIHtcbiAgICAgICAgICAvLyBPbiBpbml0LCB5aWVsZCB0byB0aGUgcGVybWFsaW5rIElELCBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgaWYgKHRoaXMuZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWN0aXZhdGUgdGhlIGZpcnN0IHRhYiBpZiB0aGUgbmV3IHRhYiBpbmRleCBpcyBpbnZhbGlkLlxuICAgICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRoaXMudGFic2V0U2VydmljZS5hY3RpdmF0ZUZpcnN0VGFiKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IFNreVRhYkluZGV4IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIGxhYmVsIGZvciB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgSFRNTCBlbGVtZW50IElEICh3aXRob3V0IHRoZSBsZWFkaW5nIGAjYCkgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIHRhYnNldCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAvKipcbiAgICogRGlzdGluZ3Vpc2hlcyBhIHRhYnNldCdzIHVuaXF1ZSBzdGF0ZSBpbiB0aGUgVVJMIGJ5IGdlbmVyYXRpbmcgYSBxdWVyeSBwYXJhbWV0ZXJcbiAgICogdGhhdCBpcyB3cml0dGVuIGFzIGA/PHF1ZXJ5UGFyYW0+LWFjdGl2ZS10YWI9PHNhbml0aXplZC10YWItaGVhZGluZz5gLlxuICAgKiBUaGUgcXVlcnkgcGFyYW1ldGVyJ3MgdmFsdWUgaXMgcGFyc2VkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgc2VsZWN0ZWQgdGFiJ3MgaGVhZGluZyB0ZXh0LFxuICAgKiBidXQgeW91IGNhbiBzdXBwbHkgYSBjdXN0b20gcXVlcnkgcGFyYW1ldGVyIHZhbHVlIGZvciBlYWNoIHRhYiB3aXRoIGl0cyBgcGVybWFsaW5rVmFsdWVgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtYWxpbmtJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0aXplZCA9IHRoaXMucGVybWFsaW5rU2VydmljZS51cmxpZnkodmFsdWUpO1xuICAgIHRoaXMuX3Blcm1hbGlua0lkID0gYCR7c2FuaXRpemVkfS1hY3RpdmUtdGFiYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGVybWFsaW5rSWQgfHwgJyc7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBiZWhhdmlvciBmb3IgYSBzZXJpZXMgb2YgdGFicy5cbiAgICogQGRlcHJlY2F0ZWQgVGhlIHByb3BlcnR5IHdhcyBkZXNpZ25lZCB0byBjcmVhdGUgd2l6YXJkcyBieSBzZXR0aW5nIHRhYlN0eWxlPVwid2l6YXJkXCIgb24gdGFic2V0cyBpbiBtb2RhbHMsXG4gICAqIGJ1dCB0aGlzIHdpemFyZCBpbXBsZW1lbnRhdGlvbiB3YXMgcmVwbGFjZWQgYnkgdGhlXG4gICAqIFtwcm9ncmVzcyBpbmRpY2F0b3IgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yKS5cbiAgICogQGRlZmF1bHQgJ3RhYnMnXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYlN0eWxlKHZhbHVlOiBTa3lUYWJzZXRTdHlsZSkge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnd2l6YXJkJykge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnVGhlIHRhYnNldCB3aXphcmQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIGltcGxlbWVudCB0aGUgbmV3IGFwcHJvYWNoIHVzaW5nICcgK1xuICAgICAgICAncHJvZ3Jlc3MgaW5kaWNhdG9yIGFzIGRvY3VtZW50ZWQgaGVyZTogaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3dpemFyZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3RhYlN0eWxlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYlN0eWxlKCk6IFNreVRhYnNldFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiU3R5bGUgfHwgJ3RhYnMnO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlcy4gVGhpcyBldmVudCBlbWl0cyB0aGUgaW5kZXggb2YgdGhlIGFjdGl2ZSB0YWIuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFjdGl2ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VGFiSW5kZXg+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBhZGQgYSBuZXcgdGFiLlxuICAgKiBUaGUgbmV3IHRhYiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIHRhYiBhcmVhIHdoZW4geW91IHNwZWNpZnkgYSBsaXN0ZW5lciBmb3IgdGhpcyBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgbmV3VGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gb3BlbiBhIHRhYi5cbiAgICogVGhlIG9wZW4gdGFiIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGFiIGFyZWEgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvcGVuVGFiID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIGFueSB0YWIncyBgdGFiSW5kZXhgIHZhbHVlIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHRhYkluZGV4ZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYnNldFRhYkluZGV4ZXNDaGFuZ2U+KCk7XG5cbiAgcHVibGljIHNldCB0YWJEaXNwbGF5TW9kZSh2YWx1ZTogU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlKSB7XG4gICAgdGhpcy5fdGFiRGlzcGxheU1vZGUgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJEaXNwbGF5TW9kZSgpOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUge1xuICAgIHJldHVybiB0aGlzLl90YWJEaXNwbGF5TW9kZSB8fCAndGFicyc7XG4gIH1cblxuICBAQ29udGVudENoaWxkcmVuKFNreVRhYkNvbXBvbmVudClcbiAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxTa3lUYWJDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBkcm9wZG93blRyaWdnZXJCdXR0b25UZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSB0aGUgZGVwcmVjYXRlZCB0YWJzZXQtbmF2LWJ1dHRvbiBjb21wb25lbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGxhc3RBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXg7XG5cbiAgcHVibGljIHRhYkJ1dHRvbnM6IFRhYkJ1dHRvblZpZXdNb2RlbFtdID0gW107XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9hY3RpdmU6IFNreVRhYkluZGV4O1xuXG4gIHByaXZhdGUgX3Blcm1hbGlua0lkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfdGFiRGlzcGxheU1vZGU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZTtcblxuICBwcml2YXRlIF90YWJTdHlsZTogU2t5VGFic2V0U3R5bGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICBwcml2YXRlIHRhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbml0VGFiQ29tcG9uZW50cygpO1xuICAgIHRoaXMubGlzdGVuVGFiQ29tcG9uZW50c1N0cnVjdHVyYWxDaGFuZ2UoKTtcblxuICAgIGNvbnN0IGluaXRpYWxUYWJJbmRleCA9IHRoaXMuZ2V0SW5pdGlhbFRhYkluZGV4KCk7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KGluaXRpYWxUYWJJbmRleCk7XG5cbiAgICB0aGlzLmxpc3RlblRhYkJ1dHRvbnNPdmVyZmxvd0NoYW5nZSgpO1xuICAgIHRoaXMubGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpO1xuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGlzIGdldHRpbmcgdW5yZWdpc3RlcmVkLCBhY3RpdmF0ZSB0aGUgbmV4dCBvbmUuXG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYlVucmVnaXN0ZXJlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRhYiA9PiB7XG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSBuZXcgdGFicyB0byByZW5kZXIgYmVmb3JlIGFjdGl2YXRpbmcuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudGFic2V0U2VydmljZS5hY3RpdmF0ZU5lYXJlc3RUYWIodGFiLmFycmF5SW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgLy8gTGV0IHRoZSB0YWJzZXQgcmVuZGVyIHRoZSBpbml0aWFsIGFjdGl2ZSBpbmRleCBiZWZvcmUgbGlzdGVuaW5nIGZvciBjaGFuZ2VzLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5saXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICAgIHRoaXMubGlzdGVuQWN0aXZlSW5kZXhDaGFuZ2UoKTtcbiAgICAgIHRoaXMucGVybWFsaW5rU2VydmljZS5pbml0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLmNsZWFyUGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gIH1cblxuICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5kZXRlY3RPdmVyZmxvdygpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQ2xvc2VDbGljayh0YWJCdXR0b246IFRhYkJ1dHRvblZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHRhYkNvbXBvbmVudCA9IHRoaXMudGFicy5maW5kKHRhYiA9PlxuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRhYkJ1dHRvbi50YWJJbmRleClcbiAgICApO1xuXG4gICAgdGFiQ29tcG9uZW50LmNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhYkJ1dHRvbkNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHRhYkJ1dHRvbi50YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgb25OZXdUYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm5ld1RhYi5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25PcGVuVGFiQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuVGFiLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbml0aWFsIGFjdGl2ZSB0YWIgaW5kZXggYmFzZWQgb24gdGhlIGZvbGxvd2luZyBjcml0ZXJpYS5cbiAgICogMS4gRG9lcyB0aGUgVVJMIGluY2x1ZGUgYSBxdWVyeSBwYXJhbSB0aGF0IHJlZmxlY3RzIHRoaXMgdGFic2V0J3MgYWN0aXZlIHRhYj9cbiAgICogMi4gRG9lcyBvbmUgb2YgdGhlIHRhYiBjb21wb25lbnRzIGhhdmUgdGhlaXIgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGB0cnVlYD9cbiAgICogMy4gSXMgdGhlIHRhYnNldCBjb21wb25lbnQncyBgYWN0aXZlYCBwcm9wZXJ0eSBzZXQgdG8gYSBzcGVjaWZpYyB0YWIgaW5kZXg/XG4gICAqL1xuICBwcml2YXRlIGdldEluaXRpYWxUYWJJbmRleCgpOiBTa3lUYWJJbmRleCB7XG4gICAgbGV0IGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCA9IHRoaXMuZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgaWYgKGFjdGl2ZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5nZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXg7XG4gICAgICBpZiAoYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY3RpdmVJbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuQWN0aXZlSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2ZVRhYkluZGV4XG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoYWN0aXZlSW5kZXggPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVRhYnNldENvbXBvbmVudChhY3RpdmVJbmRleCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVGFiQ29tcG9uZW50c1N0cnVjdHVyYWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzLmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVzZXRUYWJDb21wb25lbnRzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCh0YWIgPT4gdGFiLmFjdGl2ZUNoYW5nZSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwocmFjZSh0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLCB0aGlzLm5nVW5zdWJzY3JpYmUpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIGZpbmRpbmcgdGhlIGFjdGl2ZSBvbmUuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYkluZGV4ID0gdGhpcy5nZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXg7XG4gICAgICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KHRhYkluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCh0YWIgPT4gdGFiLnRhYkluZGV4Q2hhbmdlKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbChyYWNlKHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMubmdVbnN1YnNjcmliZSkpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIERvbid0IGVtaXQgdGhlIGZpcnN0IGNoYW5nZS5cbiAgICAgICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIHVwZGF0aW5nIHRoZSB2aWV3LlxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVUYWJzZXRDb21wb25lbnQodGhpcy50YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmVtaXRUYWJJbmRleENoYW5nZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QodGhpcy50YWJzLm1hcCh0YWIgPT4gdGFiLnN0YXRlQ2hhbmdlKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbChyYWNlKHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMubmdVbnN1YnNjcmliZSkpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVUYWJzZXRDb21wb25lbnQodGhpcy50YWJzZXRTZXJ2aWNlLmN1cnJlbnRBY3RpdmVUYWJJbmRleCwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMudGFicy5mb3JFYWNoKHRhYiA9PiB0YWIuaW5pdCgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRUYWJDb21wb25lbnRzKCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2UudW5yZWdpc3RlckFsbCgpO1xuXG4gICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRhYiBjb21wb25lbnRzLCBkbyBhIGhhcmQgcmVzZXQgb2YgdGhlIHZpZXcuXG4gICAgaWYgKHRoaXMudGFicy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMudXBkYXRlVGFic2V0Q29tcG9uZW50KDAsIHRydWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdFRhYkNvbXBvbmVudHMoKTtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleChhY3RpdmVJbmRleCwge1xuICAgICAgZW1pdENoYW5nZTogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmxpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0VGFiSW5kZXhDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJJbmRleGVzQ2hhbmdlLmVtaXQoe1xuICAgICAgdGFiczogdGhpcy50YWJzLm1hcCh0YWIgPT4gKHtcbiAgICAgICAgdGFiSGVhZGluZzogdGFiLnRhYkhlYWRpbmcsXG4gICAgICAgIHRhYkluZGV4OiB0YWIudGFiSW5kZXhcbiAgICAgIH0pKVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRhYkJ1dHRvbnNPdmVyZmxvd0NoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnJlZ2lzdGVyVGFic2V0KHRoaXMuZWxlbWVudFJlZik7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5vdmVyZmxvd0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKGlzT3ZlcmZsb3dpbmcgPT4ge1xuICAgICAgICB0aGlzLnRhYkRpc3BsYXlNb2RlID0gKGlzT3ZlcmZsb3dpbmcpID8gJ2Ryb3Bkb3duJyA6ICd0YWJzJztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3IgYmFjay9mb3J3YXJkIGhpc3RvcnkgYnV0dG9uIHByZXNzZXMgdG8gZGV0ZWN0IHF1ZXJ5IHBhcmFtIGNoYW5nZXMgaW4gdGhlIFVSTC5cbiAgICovXG4gIHByaXZhdGUgbGlzdGVuTG9jYXRpb25Qb3BTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnBlcm1hbGlua1NlcnZpY2UucG9wU3RhdGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5nZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoYWN0aXZlSW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogU2t5VGFiSW5kZXgge1xuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBwYXJhbVZhbHVlID0gdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLmdldFBhcmFtKHRoaXMucGVybWFsaW5rSWQpO1xuICAgICAgaWYgKHBhcmFtVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5maW5kKHRhYiA9PiB0YWIucGVybWFsaW5rVmFsdWUgPT09IHBhcmFtVmFsdWUpPy50YWJJbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZVRhYkNvbXBvbmVudCgpOiBTa3lUYWJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLnRhYnMudG9BcnJheSgpLnJldmVyc2UoKS5maW5kKHRhYiA9PiB0YWIuYWN0aXZlID09PSB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleDogU2t5VGFiSW5kZXgpOiBUYWJCdXR0b25WaWV3TW9kZWxbXSB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5tYXAodGFiID0+ICh7XG4gICAgICBhY3RpdmU6IHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBhY3RpdmVJbmRleCksXG4gICAgICBjbG9zZWFibGU6IHRhYi5jbG9zZWFibGUsXG4gICAgICBhcmlhQ29udHJvbHM6IHRhYi50YWJQYW5lbElkLFxuICAgICAgZGlzYWJsZWQ6IHRhYi5kaXNhYmxlZCxcbiAgICAgIC8qdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW51bGwta2V5d29yZCovXG4gICAgICBidXR0b25IcmVmOiAodGFiLmRpc2FibGVkKSA/IG51bGwgOiB0aGlzLnBlcm1hbGlua1NlcnZpY2UuZ2V0UGFyYW1IcmVmKFxuICAgICAgICB0aGlzLnBlcm1hbGlua0lkLFxuICAgICAgICB0YWIucGVybWFsaW5rVmFsdWVcbiAgICAgICksXG4gICAgICBidXR0b25JZDogdGFiLnRhYkJ1dHRvbklkLFxuICAgICAgYnV0dG9uVGV4dENvdW50OiB0YWIudGFiSGVhZGVyQ291bnQsXG4gICAgICBidXR0b25UZXh0OiB0YWIudGFiSGVhZGluZyxcbiAgICAgIHRhYkluZGV4OiB0YWIudGFiSW5kZXhcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4KTogdm9pZCB7XG4gICAgdGhpcy50YWJCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHtcbiAgICAgIGJ1dHRvbi5hY3RpdmUgPSB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGJ1dHRvbi50YWJJbmRleCwgYWN0aXZlSW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIGFuZCBzdGF0ZSBvZiB0aGUgdGFic2V0IGNvbXBvbmVudCBhZnRlciB0aGUgdGFiIGluZGV4IG9yXG4gICAqIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZC5cbiAgICogQHBhcmFtIGFjdGl2ZUluZGV4IFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpbmRleC5cbiAgICogQHBhcmFtIHJlZ2VuZXJhdGVUYWJCdXR0b25zIEluZGljYXRlcyBpZiB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHNob3VsZCBiZSByZWdlbmVyYXRlZC5cbiAgICogU2V0dGluZyB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgd2lsbCBzaW1wbHkgdXBkYXRlIHRoZSBleGlzdGluZyB0YWIgYnV0dG9ucy4gU2V0dGluZyB0aGlzIHZhbHVlXG4gICAqIHRvIGB0cnVlYCBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHRoZSB1bmRlcmx5aW5nIHRhYiBjb21wb25lbnRzIGhhdmUgY2hhbmdlZCBhbmQgdGhlIHRhYlxuICAgKiBidXR0b25zIG11c3QgcmVmbGVjdCB0aG9zZSBjaGFuZ2VzLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUYWJzZXRDb21wb25lbnQoXG4gICAgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4LFxuICAgIHJlZ2VuZXJhdGVUYWJCdXR0b25zID0gZmFsc2VcbiAgKTogdm9pZCB7XG5cbiAgICAvLyBBY3RpdmF0ZS9kZWFjdGl2YXRlIHRhYiBjb21wb25lbnRzLlxuICAgIHRoaXMudGFicy5mb3JFYWNoKHRhYiA9PiB7XG4gICAgICB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpXG4gICAgICAgID8gdGFiLmFjdGl2YXRlKClcbiAgICAgICAgOiB0YWIuZGVhY3RpdmF0ZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIHRoZSB0YWIgYnV0dG9uIG1vZGVscy5cbiAgICBpZiAocmVnZW5lcmF0ZVRhYkJ1dHRvbnMgfHwgIXRoaXMudGFiQnV0dG9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudGFiQnV0dG9ucyA9IHRoaXMuY3JlYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBkcm9wZG93biB0cmlnZ2VyIGJ1dHRvbiB0ZXh0LlxuICAgIHRoaXMuZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dCA9IHRoaXMudGFiQnV0dG9ucy5maW5kKGIgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwoYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpO1xuICAgIH0pPy5idXR0b25UZXh0O1xuXG4gICAgLy8gU2V0IHRoZSBxdWVyeSBwYXJhbXMgYmFzZWQgb24gYWN0aXZlIHRhYi5cbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgYWN0aXZlVGFiQ29tcG9uZW50ID0gdGhpcy50YWJzLmZpbmQodGFiID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBhY3RpdmVJbmRleCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucGVybWFsaW5rU2VydmljZS5zZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkLCBhY3RpdmVUYWJDb21wb25lbnQucGVybWFsaW5rVmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFdhaXQgZm9yIHRhYiBidXR0b24gdmlldyBtb2RlbHMgdG8gcmVuZGVyIGJlZm9yZSBnYXVnaW5nIGRpbWVuc2lvbnMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgLy8gRW1pdCB0aGUgbmV3IGFjdGl2ZSBpbmRleCB2YWx1ZSB0byBjb25zdW1lcnMuXG4gICAgaWYgKHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgICAgdGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuICAgIH1cbiAgfVxufVxuIl19
359
+ }
360
+ SkyTabsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.SkyTabsetAdapterService }, { token: i2.SkyTabsetPermalinkService }, { token: i3.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
361
+ SkyTabsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.6", type: SkyTabsetComponent, selector: "sky-tabset", inputs: { active: "active", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", permalinkId: "permalinkId", tabStyle: "tabStyle" }, outputs: { activeChange: "activeChange", newTab: "newTab", openTab: "openTab", tabIndexesChange: "tabIndexesChange" }, providers: [
362
+ SkyTabsetAdapterService,
363
+ SkyTabsetPermalinkService,
364
+ SkyTabsetService
365
+ ], queries: [{ propertyName: "tabs", predicate: SkyTabComponent }], ngImport: i0, template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n", styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}\n"], components: [{ type: i4.λ3, selector: "sky-dropdown", inputs: ["buttonStyle", "buttonType", "disabled", "dismissOnBlur", "label", "horizontalAlignment", "messageStream", "title", "trigger"] }, { type: i4.λ2, selector: "sky-dropdown-button" }, { type: i4.λ4, selector: "sky-dropdown-menu", inputs: ["ariaLabelledBy", "ariaRole", "useNativeFocus"], outputs: ["menuChanges"] }, { type: i4.λ1, selector: "sky-dropdown-item", inputs: ["ariaRole"] }, { type: i5.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }, { type: i6.SkyTabButtonComponent, selector: "sky-tab-button", inputs: ["active", "ariaControls", "buttonHref", "buttonId", "buttonText", "buttonTextCount", "closeable", "disabled", "tabStyle"], outputs: ["buttonClick", "closeClick"] }], directives: [{ type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }], pipes: { "skyLibResources": i9.SkyLibResourcesPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
366
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetComponent, decorators: [{
367
+ type: Component,
368
+ args: [{
369
+ selector: 'sky-tabset',
370
+ styleUrls: ['./tabset.component.scss'],
371
+ templateUrl: './tabset.component.html',
372
+ providers: [
373
+ SkyTabsetAdapterService,
374
+ SkyTabsetPermalinkService,
375
+ SkyTabsetService
376
+ ],
377
+ changeDetection: ChangeDetectionStrategy.OnPush,
378
+ encapsulation: ViewEncapsulation.None
379
+ }]
380
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.SkyTabsetAdapterService }, { type: i2.SkyTabsetPermalinkService }, { type: i3.SkyTabsetService }]; }, propDecorators: { active: [{
381
+ type: Input
382
+ }], ariaLabel: [{
383
+ type: Input
384
+ }], ariaLabelledBy: [{
385
+ type: Input
386
+ }], permalinkId: [{
387
+ type: Input
388
+ }], tabStyle: [{
389
+ type: Input
390
+ }], activeChange: [{
391
+ type: Output
392
+ }], newTab: [{
393
+ type: Output
394
+ }], openTab: [{
395
+ type: Output
396
+ }], tabIndexesChange: [{
397
+ type: Output
398
+ }], tabs: [{
399
+ type: ContentChildren,
400
+ args: [SkyTabComponent]
401
+ }] } });
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdGFicy90YWJzZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFicy9zcmMvbW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsSUFBSSxFQUNKLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFVeEIsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3hCLE1BQU0sMEJBQTBCLENBQUM7QUFNbEMsT0FBTyxFQUNMLHlCQUF5QixFQUMxQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFpQzFCLE1BQU0sT0FBTyxrQkFBa0I7SUErSjdCLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsY0FBdUMsRUFDdkMsZ0JBQTJDLEVBQzNDLGFBQStCO1FBSi9CLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtRQUN2QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBQzNDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQWpFekM7O1dBRUc7UUFFSSxpQkFB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O1lBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDOzsrR0FuY1Usa0JBQWtCO21HQUFsQixrQkFBa0Isc1NBUmxCO1FBQ1QsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixnQkFBZ0I7S0FDakIsK0NBMElnQixlQUFlLDZCQzNObEMsdzNGQWlHQTsyRkRaYSxrQkFBa0I7a0JBWjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxXQUFXLEVBQUUseUJBQXlCO29CQUN0QyxTQUFTLEVBQUU7d0JBQ1QsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLGdCQUFnQjtxQkFDakI7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs4T0FPWSxNQUFNO3NCQURoQixLQUFLO2dCQXVDQyxTQUFTO3NCQURmLEtBQUs7Z0JBVUMsY0FBYztzQkFEcEIsS0FBSztnQkFVSyxXQUFXO3NCQURyQixLQUFLO2dCQXNCSyxRQUFRO3NCQURsQixLQUFLO2dCQXFCQyxZQUFZO3NCQURsQixNQUFNO2dCQVFBLE1BQU07c0JBRFosTUFBTTtnQkFRQSxPQUFPO3NCQURiLE1BQU07Z0JBT0EsZ0JBQWdCO3NCQUR0QixNQUFNO2dCQWFBLElBQUk7c0JBRFYsZUFBZTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIHJhY2UsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJJbmRleFxufSBmcm9tICcuL3RhYi1pbmRleCc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldFN0eWxlXG59IGZyb20gJy4vdGFic2V0LXN0eWxlJztcblxuaW1wb3J0IHtcbiAgU2t5VGFiQ29tcG9uZW50XG59IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlXG59IGZyb20gJy4vdGFic2V0LWFkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZVxufSBmcm9tICcuL3RhYnNldC1idXR0b25zLWRpc3BsYXktbW9kZSc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2Vcbn0gZnJvbSAnLi90YWJzZXQtcGVybWFsaW5rLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRTZXJ2aWNlXG59IGZyb20gJy4vdGFic2V0LnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlXG59IGZyb20gJy4vdGFic2V0LXRhYi1pbmRleGVzLWNoYW5nZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmludGVyZmFjZSBUYWJCdXR0b25WaWV3TW9kZWwge1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGFyaWFDb250cm9sczogc3RyaW5nO1xuICBidXR0b25IcmVmOiBzdHJpbmc7XG4gIGJ1dHRvbklkOiBzdHJpbmc7XG4gIGJ1dHRvblRleHQ6IHN0cmluZztcbiAgYnV0dG9uVGV4dENvdW50OiBzdHJpbmc7XG4gIGNsb3NlYWJsZTogYm9vbGVhbjtcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHRhYkluZGV4OiBTa3lUYWJJbmRleDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXRhYnNldCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnNldC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFic2V0LmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICBTa3lUYWJzZXRTZXJ2aWNlXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyBhIHRhYiBieSBpdHMgYHRhYkluZGV4YCBwcm9wZXJ0eS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlKHZhbHVlOiBTa3lUYWJJbmRleCkge1xuICAgIGlmIChcbiAgICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodmFsdWUsIHRoaXMuX2FjdGl2ZSlcbiAgICApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLnRhYnMpIHtcbiAgICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE9uIGluaXQsIHdhaXQgZm9yIGNoaWxkcmVuIHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBicm9hZGNhc3RpbmcgdGhlIGFjdGl2ZSB0YWIgaW5kZXguXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGFic2V0U2VydmljZS5pc1ZhbGlkVGFiSW5kZXgodmFsdWUpKSB7XG4gICAgICAgICAgLy8gT24gaW5pdCwgeWllbGQgdG8gdGhlIHBlcm1hbGluayBJRCwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgIGlmICh0aGlzLmdldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFjdGl2YXRlIHRoZSBmaXJzdCB0YWIgaWYgdGhlIG5ldyB0YWIgaW5kZXggaXMgaW52YWxpZC5cbiAgICAgICAgICB0aGlzLl9hY3RpdmUgPSB0aGlzLnRhYnNldFNlcnZpY2UuYWN0aXZhdGVGaXJzdFRhYigpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZSgpOiBTa3lUYWJJbmRleCB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSBsYWJlbCBmb3IgdGhlIHRhYnNldC4gVGhpcyBzZXRzIHRoZSB0YWJzZXQncyBgYXJpYS1sYWJlbGAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSB0YWJzZXQgZG9lcyBub3QgaW5jbHVkZSBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsYCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc3Rpbmd1aXNoZXMgYSB0YWJzZXQncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyXG4gICAqIHRoYXQgaXMgd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmc+YC5cbiAgICogVGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHNlbGVjdGVkIHRhYidzIGhlYWRpbmcgdGV4dCxcbiAgICogYnV0IHlvdSBjYW4gc3VwcGx5IGEgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgZWFjaCB0YWIgd2l0aCBpdHMgYHBlcm1hbGlua1ZhbHVlYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGVybWFsaW5rSWQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYW5pdGl6ZWQgPSB0aGlzLnBlcm1hbGlua1NlcnZpY2UudXJsaWZ5KHZhbHVlKTtcbiAgICB0aGlzLl9wZXJtYWxpbmtJZCA9IGAke3Nhbml0aXplZH0tYWN0aXZlLXRhYmA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcm1hbGlua0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Blcm1hbGlua0lkIHx8ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYmVoYXZpb3IgZm9yIGEgc2VyaWVzIG9mIHRhYnMuXG4gICAqIEBkZXByZWNhdGVkIFRoZSBwcm9wZXJ0eSB3YXMgZGVzaWduZWQgdG8gY3JlYXRlIHdpemFyZHMgYnkgc2V0dGluZyB0YWJTdHlsZT1cIndpemFyZFwiIG9uIHRhYnNldHMgaW4gbW9kYWxzLFxuICAgKiBidXQgdGhpcyB3aXphcmQgaW1wbGVtZW50YXRpb24gd2FzIHJlcGxhY2VkIGJ5IHRoZVxuICAgKiBbcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvcikuXG4gICAqIEBkZWZhdWx0ICd0YWJzJ1xuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJTdHlsZSh2YWx1ZTogU2t5VGFic2V0U3R5bGUpIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodmFsdWUgJiYgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3dpemFyZCcpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1RoZSB0YWJzZXQgd2l6YXJkIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBpbXBsZW1lbnQgdGhlIG5ldyBhcHByb2FjaCB1c2luZyAnICtcbiAgICAgICAgJ3Byb2dyZXNzIGluZGljYXRvciBhcyBkb2N1bWVudGVkIGhlcmU6IGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy93aXphcmQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJTdHlsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJTdHlsZSgpOiBTa3lUYWJzZXRTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYlN0eWxlIHx8ICd0YWJzJztcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgdGFiIGNoYW5nZXMuIFRoaXMgZXZlbnQgZW1pdHMgdGhlIGluZGV4IG9mIHRoZSBhY3RpdmUgdGFiLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNreVRhYkluZGV4PigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNsaWNrIHRoZSBidXR0b24gdG8gYWRkIGEgbmV3IHRhYi5cbiAgICogVGhlIG5ldyB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG5ld1RhYiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbGljayB0aGUgYnV0dG9uIHRvIG9wZW4gYSB0YWIuXG4gICAqIFRoZSBvcGVuIHRhYiBidXR0b24gaXMgYWRkZWQgdG8gdGhlIHRhYiBhcmVhIHdoZW4geW91IHNwZWNpZnkgYSBsaXN0ZW5lciBmb3IgdGhpcyBldmVudC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3BlblRhYiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiBhbnkgdGFiJ3MgYHRhYkluZGV4YCB2YWx1ZSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0YWJJbmRleGVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJzZXRUYWJJbmRleGVzQ2hhbmdlPigpO1xuXG4gIHB1YmxpYyBzZXQgdGFiRGlzcGxheU1vZGUodmFsdWU6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSkge1xuICAgIHRoaXMuX3RhYkRpc3BsYXlNb2RlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiRGlzcGxheU1vZGUoKTogU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiRGlzcGxheU1vZGUgfHwgJ3RhYnMnO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lUYWJDb21wb25lbnQpXG4gIHB1YmxpYyB0YWJzOiBRdWVyeUxpc3Q8U2t5VGFiQ29tcG9uZW50PjtcblxuICBwdWJsaWMgZHJvcGRvd25UcmlnZ2VyQnV0dG9uVGV4dDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIGRlcHJlY2F0ZWQgdGFic2V0LW5hdi1idXR0b24gY29tcG9uZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBsYXN0QWN0aXZlVGFiSW5kZXg6IFNreVRhYkluZGV4O1xuXG4gIHB1YmxpYyB0YWJCdXR0b25zOiBUYWJCdXR0b25WaWV3TW9kZWxbXSA9IFtdO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSB0YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlOiBTa3lUYWJJbmRleDtcblxuICBwcml2YXRlIF9wZXJtYWxpbmtJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX3RhYkRpc3BsYXlNb2RlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGU7XG5cbiAgcHJpdmF0ZSBfdGFiU3R5bGU6IFNreVRhYnNldFN0eWxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGFkYXB0ZXJTZXJ2aWNlOiBTa3lUYWJzZXRBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlXG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuaW5pdFRhYkNvbXBvbmVudHMoKTtcbiAgICB0aGlzLmxpc3RlblRhYkNvbXBvbmVudHNTdHJ1Y3R1cmFsQ2hhbmdlKCk7XG5cbiAgICBjb25zdCBpbml0aWFsVGFiSW5kZXggPSB0aGlzLmdldEluaXRpYWxUYWJJbmRleCgpO1xuICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleChpbml0aWFsVGFiSW5kZXgpO1xuXG4gICAgdGhpcy5saXN0ZW5UYWJCdXR0b25zT3ZlcmZsb3dDaGFuZ2UoKTtcbiAgICB0aGlzLmxpc3RlbkxvY2F0aW9uUG9wU3RhdGVDaGFuZ2UoKTtcblxuICAgIC8vIElmIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRhYiBpcyBnZXR0aW5nIHVucmVnaXN0ZXJlZCwgYWN0aXZhdGUgdGhlIG5leHQgb25lLlxuICAgIHRoaXMudGFic2V0U2VydmljZS5hY3RpdmVUYWJVbnJlZ2lzdGVyZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSh0YWIgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgbmV3IHRhYnMgdG8gcmVuZGVyIGJlZm9yZSBhY3RpdmF0aW5nLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRhYnNldFNlcnZpY2UuYWN0aXZhdGVOZWFyZXN0VGFiKHRhYi5hcnJheUluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIC8vIExldCB0aGUgdGFic2V0IHJlbmRlciB0aGUgaW5pdGlhbCBhY3RpdmUgaW5kZXggYmVmb3JlIGxpc3RlbmluZyBmb3IgY2hhbmdlcy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgICB0aGlzLmxpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk7XG4gICAgICB0aGlzLnBlcm1hbGlua1NlcnZpY2UuaW5pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIHRoaXMucGVybWFsaW5rU2VydmljZS5jbGVhclBhcmFtKHRoaXMucGVybWFsaW5rSWQpO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgfVxuXG4gIHB1YmxpYyBvblRhYkNsb3NlQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBjb25zdCB0YWJDb21wb25lbnQgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT5cbiAgICAgIHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJCdXR0b24udGFiSW5kZXgpXG4gICAgKTtcblxuICAgIHRhYkNvbXBvbmVudC5jbG9zZS5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJCdXR0b25DbGljayh0YWJCdXR0b246IFRhYkJ1dHRvblZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh0YWJCdXR0b24udGFiSW5kZXgpO1xuICB9XG5cbiAgcHVibGljIG9uTmV3VGFiQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5uZXdUYWIuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uT3BlblRhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblRhYi5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgaW5pdGlhbCBhY3RpdmUgdGFiIGluZGV4IGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWEuXG4gICAqIDEuIERvZXMgdGhlIFVSTCBpbmNsdWRlIGEgcXVlcnkgcGFyYW0gdGhhdCByZWZsZWN0cyB0aGlzIHRhYnNldCdzIGFjdGl2ZSB0YWI/XG4gICAqIDIuIERvZXMgb25lIG9mIHRoZSB0YWIgY29tcG9uZW50cyBoYXZlIHRoZWlyIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBgdHJ1ZWA/XG4gICAqIDMuIElzIHRoZSB0YWJzZXQgY29tcG9uZW50J3MgYGFjdGl2ZWAgcHJvcGVydHkgc2V0IHRvIGEgc3BlY2lmaWMgdGFiIGluZGV4P1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRJbml0aWFsVGFiSW5kZXgoKTogU2t5VGFiSW5kZXgge1xuICAgIGxldCBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXggPSB0aGlzLmdldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpO1xuICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgICAgaWYgKGFjdGl2ZUluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLmFjdGl2ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aXZlSW5kZXg7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkFjdGl2ZUluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFic2V0U2VydmljZS5hY3RpdmVUYWJJbmRleFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGFjdGl2ZUluZGV4ID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVUYWJzZXRDb21wb25lbnQoYWN0aXZlSW5kZXgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRhYkNvbXBvbmVudHNTdHJ1Y3R1cmFsQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFicy5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0VGFiQ29tcG9uZW50cygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpOiB2b2lkIHtcbiAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAodGFiID0+IHRhYi5hY3RpdmVDaGFuZ2UpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHJhY2UodGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy5uZ1Vuc3Vic2NyaWJlKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHRhYiBjb21wb25lbnRzIHRvIHJlbmRlciBjaGFuZ2VzIGJlZm9yZSBmaW5kaW5nIHRoZSBhY3RpdmUgb25lLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk/LnRhYkluZGV4O1xuICAgICAgICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleCh0YWJJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAodGFiID0+IHRhYi50YWJJbmRleENoYW5nZSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwocmFjZSh0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLCB0aGlzLm5nVW5zdWJzY3JpYmUpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBEb24ndCBlbWl0IHRoZSBmaXJzdCBjaGFuZ2UuXG4gICAgICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHRhYiBjb21wb25lbnRzIHRvIHJlbmRlciBjaGFuZ2VzIGJlZm9yZSB1cGRhdGluZyB0aGUgdmlldy5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGFic2V0Q29tcG9uZW50KHRoaXMudGFic2V0U2VydmljZS5jdXJyZW50QWN0aXZlVGFiSW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5lbWl0VGFiSW5kZXhDaGFuZ2UoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KHRoaXMudGFicy5tYXAodGFiID0+IHRhYi5zdGF0ZUNoYW5nZSkpXG4gICAgICAucGlwZSh0YWtlVW50aWwocmFjZSh0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlLCB0aGlzLm5nVW5zdWJzY3JpYmUpKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBXYWl0IGZvciB0aGUgdGFiIGNvbXBvbmVudHMgdG8gcmVuZGVyIGNoYW5nZXMgYmVmb3JlIGZpbmRpbmcgdGhlIGFjdGl2ZSBvbmUuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlVGFic2V0Q29tcG9uZW50KHRoaXMudGFic2V0U2VydmljZS5jdXJyZW50QWN0aXZlVGFiSW5kZXgsIHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VGFiQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCh0YWIgPT4gdGFiLmluaXQoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0VGFiQ29tcG9uZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLnVucmVnaXN0ZXJBbGwoKTtcblxuICAgIC8vIElmIHRoZXJlIGFyZSBubyB0YWIgY29tcG9uZW50cywgZG8gYSBoYXJkIHJlc2V0IG9mIHRoZSB2aWV3LlxuICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYnNldENvbXBvbmVudCgwLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRUYWJDb21wb25lbnRzKCk7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmdldEFjdGl2ZVRhYkNvbXBvbmVudCgpPy50YWJJbmRleDtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoYWN0aXZlSW5kZXgsIHtcbiAgICAgIGVtaXRDaGFuZ2U6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5saXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFRhYkluZGV4Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFiSW5kZXhlc0NoYW5nZS5lbWl0KHtcbiAgICAgIHRhYnM6IHRoaXMudGFicy5tYXAodGFiID0+ICh7XG4gICAgICAgIHRhYkhlYWRpbmc6IHRhYi50YWJIZWFkaW5nLFxuICAgICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4XG4gICAgICB9KSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5UYWJCdXR0b25zT3ZlcmZsb3dDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyU2VydmljZS5yZWdpc3RlclRhYnNldCh0aGlzLmVsZW1lbnRSZWYpO1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uub3ZlcmZsb3dDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZShpc092ZXJmbG93aW5nID0+IHtcbiAgICAgICAgdGhpcy50YWJEaXNwbGF5TW9kZSA9IChpc092ZXJmbG93aW5nKSA/ICdkcm9wZG93bicgOiAndGFicyc7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gZm9yIGJhY2svZm9yd2FyZCBoaXN0b3J5IGJ1dHRvbiBwcmVzc2VzIHRvIGRldGVjdCBxdWVyeSBwYXJhbSBjaGFuZ2VzIGluIHRoZSBVUkwuXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkxvY2F0aW9uUG9wU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLnBvcFN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KGFjdGl2ZUluZGV4KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlVGFiSW5kZXhCeVBlcm1hbGlua0lkKCk6IFNreVRhYkluZGV4IHtcbiAgICBpZiAodGhpcy5wZXJtYWxpbmtJZCkge1xuICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHRoaXMucGVybWFsaW5rU2VydmljZS5nZXRQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgICAgIGlmIChwYXJhbVZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMuZmluZCh0YWIgPT4gdGFiLnBlcm1hbGlua1ZhbHVlID09PSBwYXJhbVZhbHVlKT8udGFiSW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVUYWJDb21wb25lbnQoKTogU2t5VGFiQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnRvQXJyYXkoKS5yZXZlcnNlKCkuZmluZCh0YWIgPT4gdGFiLmFjdGl2ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4KTogVGFiQnV0dG9uVmlld01vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLnRhYnMubWFwKHRhYiA9PiAoe1xuICAgICAgYWN0aXZlOiB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpLFxuICAgICAgY2xvc2VhYmxlOiB0YWIuY2xvc2VhYmxlLFxuICAgICAgYXJpYUNvbnRyb2xzOiB0YWIudGFiUGFuZWxJZCxcbiAgICAgIGRpc2FibGVkOiB0YWIuZGlzYWJsZWQsXG4gICAgICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1udWxsLWtleXdvcmQqL1xuICAgICAgYnV0dG9uSHJlZjogKHRhYi5kaXNhYmxlZCkgPyBudWxsIDogdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLmdldFBhcmFtSHJlZihcbiAgICAgICAgdGhpcy5wZXJtYWxpbmtJZCxcbiAgICAgICAgdGFiLnBlcm1hbGlua1ZhbHVlXG4gICAgICApLFxuICAgICAgYnV0dG9uSWQ6IHRhYi50YWJCdXR0b25JZCxcbiAgICAgIGJ1dHRvblRleHRDb3VudDogdGFiLnRhYkhlYWRlckNvdW50LFxuICAgICAgYnV0dG9uVGV4dDogdGFiLnRhYkhlYWRpbmcsXG4gICAgICB0YWJJbmRleDogdGFiLnRhYkluZGV4XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIHRoaXMudGFiQnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICBidXR0b24uYWN0aXZlID0gdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChidXR0b24udGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBhbmQgc3RhdGUgb2YgdGhlIHRhYnNldCBjb21wb25lbnQgYWZ0ZXIgdGhlIHRhYiBpbmRleCBvclxuICAgKiB0YWIgY29tcG9uZW50cyBoYXZlIGNoYW5nZWQuXG4gICAqIEBwYXJhbSBhY3RpdmVJbmRleCBUaGUgY3VycmVudGx5IGFjdGl2ZSB0YWIgaW5kZXguXG4gICAqIEBwYXJhbSByZWdlbmVyYXRlVGFiQnV0dG9ucyBJbmRpY2F0ZXMgaWYgdGFiIGJ1dHRvbiB2aWV3IG1vZGVscyBzaG91bGQgYmUgcmVnZW5lcmF0ZWQuXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byBgZmFsc2VgIHdpbGwgc2ltcGx5IHVwZGF0ZSB0aGUgZXhpc3RpbmcgdGFiIGJ1dHRvbnMuIFNldHRpbmcgdGhpcyB2YWx1ZVxuICAgKiB0byBgdHJ1ZWAgaXMgb25seSBuZWNlc3Nhcnkgd2hlbiB0aGUgdW5kZXJseWluZyB0YWIgY29tcG9uZW50cyBoYXZlIGNoYW5nZWQgYW5kIHRoZSB0YWJcbiAgICogYnV0dG9ucyBtdXN0IHJlZmxlY3QgdGhvc2UgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVGFic2V0Q29tcG9uZW50KFxuICAgIGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCxcbiAgICByZWdlbmVyYXRlVGFiQnV0dG9ucyA9IGZhbHNlXG4gICk6IHZvaWQge1xuXG4gICAgLy8gQWN0aXZhdGUvZGVhY3RpdmF0ZSB0YWIgY29tcG9uZW50cy5cbiAgICB0aGlzLnRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KVxuICAgICAgICA/IHRhYi5hY3RpdmF0ZSgpXG4gICAgICAgIDogdGFiLmRlYWN0aXZhdGUoKTtcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgdGFiIGJ1dHRvbiBtb2RlbHMuXG4gICAgaWYgKHJlZ2VuZXJhdGVUYWJCdXR0b25zIHx8ICF0aGlzLnRhYkJ1dHRvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnRhYkJ1dHRvbnMgPSB0aGlzLmNyZWF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVRhYkJ1dHRvbnMoYWN0aXZlSW5kZXgpO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSB0aGUgZHJvcGRvd24gdHJpZ2dlciBidXR0b24gdGV4dC5cbiAgICB0aGlzLmRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgPSB0aGlzLnRhYkJ1dHRvbnMuZmluZChiID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKGIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICB9KT8uYnV0dG9uVGV4dDtcblxuICAgIC8vIFNldCB0aGUgcXVlcnkgcGFyYW1zIGJhc2VkIG9uIGFjdGl2ZSB0YWIuXG4gICAgaWYgKHRoaXMucGVybWFsaW5rSWQpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVRhYkNvbXBvbmVudCA9IHRoaXMudGFicy5maW5kKHRhYiA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgYWN0aXZlSW5kZXgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnBlcm1hbGlua1NlcnZpY2Uuc2V0UGFyYW0odGhpcy5wZXJtYWxpbmtJZCwgYWN0aXZlVGFiQ29tcG9uZW50LnBlcm1hbGlua1ZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBXYWl0IGZvciB0YWIgYnV0dG9uIHZpZXcgbW9kZWxzIHRvIHJlbmRlciBiZWZvcmUgZ2F1Z2luZyBkaW1lbnNpb25zLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5kZXRlY3RPdmVyZmxvdygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgIC8vIEVtaXQgdGhlIG5ldyBhY3RpdmUgaW5kZXggdmFsdWUgdG8gY29uc3VtZXJzLlxuICAgIGlmICh0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCAhPT0gYWN0aXZlSW5kZXgpIHtcbiAgICAgIHRoaXMubGFzdEFjdGl2ZVRhYkluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5nZS5lbWl0KGFjdGl2ZUluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGFic2V0XCJcbiAgcm9sZT1cInRhYmxpc3RcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktdGFic2V0LW1vZGUtJyArIHRhYkRpc3BsYXlNb2RlICsgJyBza3ktdGFic2V0LXN0eWxlLScgKyB0YWJTdHlsZVwiXG4gICh3aW5kb3c6cmVzaXplKT1cIm9uV2luZG93UmVzaXplKClcIlxuPlxuICA8c3BhbiBjbGFzcz1cInNreS10YWJzZXQtZHJvcGRvd25cIj5cbiAgICA8c2t5LWRyb3Bkb3duICpuZ0lmPVwidGFiRGlzcGxheU1vZGUgPT09ICdkcm9wZG93bidcIlxuICAgICAgYnV0dG9uVHlwZT1cInRhYlwiXG4gICAgPlxuICAgICAgPHNreS1kcm9wZG93bi1idXR0b24+XG4gICAgICAgIHt7IGRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQgfX1cbiAgICAgIDwvc2t5LWRyb3Bkb3duLWJ1dHRvbj5cbiAgICAgIDxza3ktZHJvcGRvd24tbWVudT5cbiAgICAgICAgPHNreS1kcm9wZG93bi1pdGVtICpuZ0Zvcj1cImxldCB0YWJCdXR0b24gb2YgdGFiQnV0dG9uc1wiXG4gICAgICAgICAgY2xhc3M9XCJza3ktdGFiLWRyb3Bkb3duLW1lbnUtaXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNreS10YWItZHJvcGRvd24taXRlbVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdza3ktdGFiLWRyb3Bkb3duLWl0ZW0tc2VsZWN0ZWQnOiB0YWJCdXR0b24uYWN0aXZlXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiQnV0dG9uVGVtcGxhdGU7IGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgJGltcGxpY2l0OiB0YWJCdXR0b25cbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9za3ktZHJvcGRvd24taXRlbT5cbiAgICAgIDwvc2t5LWRyb3Bkb3duLW1lbnU+XG4gICAgPC9za3ktZHJvcGRvd24+XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cInNreS10YWJzZXQtdGFic1wiXG4gID5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWJCdXR0b24gb2YgdGFiQnV0dG9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYkJ1dHRvblRlbXBsYXRlOyBjb250ZXh0OiB7XG4gICAgICAgICRpbXBsaWNpdDogdGFiQnV0dG9uXG4gICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cInNreS10YWJzZXQtYnRuc1wiXG4gID5cbiAgICA8YnV0dG9uICpuZ0lmPVwibmV3VGFiLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24gc2t5LXRhYnNldC1idG4tbmV3IHNreS1tYXJnaW4taW5saW5lLWNvbXBhY3RcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidza3l1eF90YWJfYWRkJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nXG4gICAgICB9XCJcbiAgICAgIChjbGljayk9XCJvbk5ld1RhYkNsaWNrKClcIlxuICAgID5cbiAgICAgIDxza3ktaWNvblxuICAgICAgICBpY29uPVwicGx1cy1jaXJjbGVcIlxuICAgICAgICBzaXplPVwibGdcIlxuICAgICAgPlxuICAgICAgPC9za3ktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwib3BlblRhYi5vYnNlcnZlcnMubGVuZ3RoID4gMFwiXG4gICAgICBjbGFzcz1cInNreS1idG4gc2t5LWJ0bi1pY29uIHNreS10YWJzZXQtYnRuLW9wZW4gc2t5LW1hcmdpbi1pbmxpbmUtY29tcGFjdFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3NreXV4X3RhYl9vcGVuJyB8IHNreUxpYlJlc291cmNlc1wiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktbWFyZ2luLWlubGluZS1zbSc6ICdtb2Rlcm4nXG4gICAgICB9XCJcbiAgICAgIChjbGljayk9XCJvbk9wZW5UYWJDbGljaygpXCJcbiAgICA+XG4gICAgICA8c2t5LWljb25cbiAgICAgICAgaWNvbj1cImZvbGRlci1vcGVuLW9cIlxuICAgICAgICBzaXplPVwibGdcIlxuICAgICAgPlxuICAgICAgPC9za3ktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxuZy10ZW1wbGF0ZVxuICBsZXQtdGFiQnV0dG9uXG4gICN0YWJCdXR0b25UZW1wbGF0ZVxuPlxuICA8c2t5LXRhYi1idXR0b25cbiAgICBbYWN0aXZlXT1cInRhYkJ1dHRvbi5hY3RpdmVcIlxuICAgIFthcmlhQ29udHJvbHNdPVwidGFiQnV0dG9uLmFyaWFDb250cm9sc1wiXG4gICAgW2J1dHRvbkhyZWZdPVwidGFiQnV0dG9uLmJ1dHRvbkhyZWZcIlxuICAgIFtidXR0b25JZF09XCJ0YWJCdXR0b24uYnV0dG9uSWRcIlxuICAgIFtidXR0b25UZXh0XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0XCJcbiAgICBbYnV0dG9uVGV4dENvdW50XT1cInRhYkJ1dHRvbi5idXR0b25UZXh0Q291bnRcIlxuICAgIFtjbG9zZWFibGVdPVwidGFiQnV0dG9uLmNsb3NlYWJsZVwiXG4gICAgW2Rpc2FibGVkXT1cInRhYkJ1dHRvbi5kaXNhYmxlZFwiXG4gICAgW3RhYlN0eWxlXT1cInRhYlN0eWxlXCJcbiAgICAoYnV0dG9uQ2xpY2spPVwib25UYWJCdXR0b25DbGljayh0YWJCdXR0b24pXCJcbiAgICAoY2xvc2VDbGljayk9XCJvblRhYkNsb3NlQ2xpY2sodGFiQnV0dG9uKVwiXG4gID48L3NreS10YWItYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,10 +1,10 @@
1
- import { __decorate } from "tslib";
2
1
  import { Injectable } from '@angular/core';
3
2
  import { BehaviorSubject, Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
4
  /**
5
5
  * @internal
6
6
  */
7
- let SkyTabsetService = class SkyTabsetService {
7
+ export class SkyTabsetService {
8
8
  constructor() {
9
9
  this.currentActiveTabIndex = 0;
10
10
  this._activeTabIndex = new BehaviorSubject(0);
@@ -27,6 +27,7 @@ let SkyTabsetService = class SkyTabsetService {
27
27
  if (value !== undefined &&
28
28
  !this.tabIndexesEqual(value, this.currentActiveTabIndex)) {
29
29
  this.currentActiveTabIndex = value;
30
+ /* istanbul ignore else */
30
31
  if (config.emitChange) {
31
32
  this._activeTabIndex.next(value);
32
33
  }
@@ -101,9 +102,10 @@ let SkyTabsetService = class SkyTabsetService {
101
102
  isTabIndexActive(tabIndex) {
102
103
  return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);
103
104
  }
104
- };
105
- SkyTabsetService = __decorate([
106
- Injectable()
107
- ], SkyTabsetService);
108
- export { SkyTabsetService };
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvdGFicy8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvdGFicy90YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQVVkOztHQUVHO0FBRUgsSUFBYSxnQkFBZ0IsR0FBN0IsTUFBYSxnQkFBZ0I7SUFBN0I7UUFVUywwQkFBcUIsR0FBZ0IsQ0FBQyxDQUFDO1FBRXRDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsQ0FBQyxDQUFDLENBQUM7UUFFdEQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQXNDLENBQUM7UUFFM0UsU0FBSSxHQUVOLEVBQUUsQ0FBQztRQUVELGVBQVUsR0FBRyxDQUFDLENBQUM7SUFzR3pCLENBQUM7SUF4SEMsSUFBVyxxQkFBcUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQWNEOztPQUVHO0lBQ0ksaUJBQWlCLENBQUMsS0FBa0IsRUFBRSxNQUFNLEdBQUc7UUFDcEQsVUFBVSxFQUFFLElBQUk7S0FDakI7UUFDQyxJQUNFLEtBQUssS0FBSyxTQUFTO1lBQ25CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ3hEO1lBQ0EsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztZQUNuQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFD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WSxnQkFBZ0I7SUFENUIsVUFBVSxFQUFFO0dBQ0EsZ0JBQWdCLENBMEg1QjtTQTFIWSxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIFNreVRhYkluZGV4XG59IGZyb20gJy4vdGFiLWluZGV4JztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0QWN0aXZlVGFiVW5yZWdpc3RlcmVkQXJnc1xufSBmcm9tICcuL3RhYnNldC1hY3RpdmUtdGFiLXVucmVnaXN0ZXJlZC1hcmdzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVRhYnNldFNlcnZpY2Uge1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiVW5yZWdpc3RlcmVkKCk6IE9ic2VydmFibGU8U2t5VGFic2V0QWN0aXZlVGFiVW5yZWdpc3RlcmVkQXJncz4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVUYWJVbnJlZ2lzdGVyZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVRhYkluZGV4KCk6IE9ic2VydmFibGU8U2t5VGFiSW5kZXg+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVGFiSW5kZXguYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgY3VycmVudEFjdGl2ZVRhYkluZGV4OiBTa3lUYWJJbmRleCA9IDA7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVGFiSW5kZXggPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4PigwKTtcblxuICBwcml2YXRlIF9hY3RpdmVUYWJVbnJlZ2lzdGVyZWQgPSBuZXcgU3ViamVjdDxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPigpO1xuXG4gIHByaXZhdGUgdGFiczoge1xuICAgIHRhYkluZGV4OiBTa3lUYWJJbmRleDtcbiAgfVtdID0gW107XG5cbiAgcHJpdmF0ZSB0YWJDb3VudGVyID0gMDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIHRhYiBieSBpdHMgdW5pcXVlIGB0YWJJbmRleGAgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgc2V0QWN0aXZlVGFiSW5kZXgodmFsdWU6IFNreVRhYkluZGV4LCBjb25maWcgPSB7XG4gICAgZW1pdENoYW5nZTogdHJ1ZVxuICB9KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgIXRoaXMudGFiSW5kZXhlc0VxdWFsKHZhbHVlLCB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleClcbiAgICApIHtcbiAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4ID0gdmFsdWU7XG4gICAgICBpZiAoY29uZmlnLmVtaXRDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlVGFiSW5kZXgubmV4dCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIHRhYiBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJUYWIodGFiSW5kZXg/OiBTa3lUYWJJbmRleCk6IFNreVRhYkluZGV4IHtcbiAgICBpZiAodGFiSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFiSW5kZXggPSB0aGlzLnRhYkNvdW50ZXI7XG4gICAgICB0aGlzLnRhYkNvdW50ZXIrKztcbiAgICB9XG5cbiAgICB0aGlzLnRhYnMucHVzaCh7IHRhYkluZGV4IH0pO1xuXG4gICAgcmV0dXJuIHRhYkluZGV4O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVRhYkluZGV4KGN1cnJlbnRUYWJJbmRleDogU2t5VGFiSW5kZXgsIG5ld1RhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIGNvbnN0IGZvdW5kID0gdGhpcy50YWJzLmZpbmQodGFiID0+IHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgY3VycmVudFRhYkluZGV4KSk7XG4gICAgZm91bmQudGFiSW5kZXggPSBuZXdUYWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVycyBhIHRhYiBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlclRhYih0YWJJbmRleDogU2t5VGFiSW5kZXgpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFicy5maW5kSW5kZXgodGFiID0+IHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGFiSW5kZXgpKTtcblxuICAgIC8vIE5vdGlmeSB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIGFuIGFjdGl2ZSB0YWIgaXMgdW5yZWdpc3RlcmVkLlxuICAgIGlmICh0aGlzLmlzVGFiSW5kZXhBY3RpdmUodGhpcy50YWJzW2luZGV4XS50YWJJbmRleCkpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZVRhYlVucmVnaXN0ZXJlZC5uZXh0KHtcbiAgICAgICAgYXJyYXlJbmRleDogaW5kZXhcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMudGFicy5zcGxpY2UoaW5kZXgsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGFsbCB0YWIgY29tcG9uZW50cyBhdCBvbmNlLlxuICAgKi9cbiAgcHVibGljIHVucmVnaXN0ZXJBbGwoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ29tcGFyZXMgdHdvIHRhYiBpbmRleGVzIGFuZCByZXR1cm5zIGB0cnVlYCBpZiB0aGV5IGFyZSBlcXVhbC5cbiAgICovXG4gIHB1YmxpYyB0YWJJbmRleGVzRXF1YWwodGFiSW5kZXgxOiBTa3lUYWJJbmRleCwgdGFiSW5kZXgyOiBTa3lUYWJJbmRleCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0YWJJbmRleDEgPT09IHRhYkluZGV4MiB8fFxuICAgICAgK3RhYkluZGV4MSA9PT0gK3RhYkluZGV4MlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYSBwcm92aWRlZCB0YWIgaW5kZXggaXMgcmVnaXN0ZXJlZC5cbiAgICovXG4gIHB1YmxpYyBpc1ZhbGlkVGFiSW5kZXgodGFiSW5kZXg6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicy5zb21lKHRhYiA9PiB0aGlzLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIHRhYkluZGV4KSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBmaXJzdCByZWdpc3RlcmVkIHRhYi5cbiAgICovXG4gIHB1YmxpYyBhY3RpdmF0ZUZpcnN0VGFiKCk6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBmaXJzdFRhYkluZGV4ID0gdGhpcy50YWJzWzBdICYmIHRoaXMudGFic1swXS50YWJJbmRleDtcbiAgICBpZiAoZmlyc3RUYWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNldEFjdGl2ZVRhYkluZGV4KGZpcnN0VGFiSW5kZXgpO1xuICAgICAgcmV0dXJuIGZpcnN0VGFiSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlcyB0aGUgbmV4dCByZWdpc3RlcmVkIHRhYiwgb3IgdGhlIHByZXZpb3VzIG9uZSBiYXNlZCBvbiBhIHByb3ZpZGVkIGFycmF5IGluZGV4LlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlTmVhcmVzdFRhYihhcnJheUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBuZXdBY3RpdmVUYWIgPSB0aGlzLnRhYnNbYXJyYXlJbmRleF0gfHwgdGhpcy50YWJzW2FycmF5SW5kZXggLSAxXTtcbiAgICBpZiAobmV3QWN0aXZlVGFiKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCA9IG5ld0FjdGl2ZVRhYi50YWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzVGFiSW5kZXhBY3RpdmUodGFiSW5kZXg6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYkluZGV4LCB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCk7XG4gIH1cbn1cbiJdfQ==
105
+ }
106
+ SkyTabsetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
107
+ SkyTabsetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService });
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyTabsetService, decorators: [{
109
+ type: Injectable
110
+ }] });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3RhYnMvdGFic2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQzs7QUFVZDs7R0FFRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFXUywwQkFBcUIsR0FBZ0IsQ0FBQyxDQUFDO1FBRXRDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQWMsQ0FBQyxDQUFDLENBQUM7UUFFdEQsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQXNDLENBQUM7UUFFM0UsU0FBSSxHQUVOLEVBQUUsQ0FBQztRQUVELGVBQVUsR0FBRyxDQUFDLENBQUM7S0F1R3hCO0lBekhDLElBQVcscUJBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFjRDs7T0FFRztJQUNJLGlCQUFpQixDQUFDLEtBQWtCLEVBQUUsTUFBTSxHQUFHO1FBQ3BELFVBQVUsRUFBRSxJQUFJO0tBQ2pCO1FBQ0MsSUFDRSxLQUFLLEtBQUssU0FBUztZQUNuQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUN4RDtZQUNBLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsMEJBQTBCO1lBQzFCLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FB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QTFIVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJJbmRleFxufSBmcm9tICcuL3RhYi1pbmRleCc7XG5cbmltcG9ydCB7XG4gIFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3Ncbn0gZnJvbSAnLi90YWJzZXQtYWN0aXZlLXRhYi11bnJlZ2lzdGVyZWQtYXJncyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRTZXJ2aWNlIHtcblxuICBwdWJsaWMgZ2V0IGFjdGl2ZVRhYlVucmVnaXN0ZXJlZCgpOiBPYnNlcnZhYmxlPFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVGFiVW5yZWdpc3RlcmVkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWJJbmRleCgpOiBPYnNlcnZhYmxlPFNreVRhYkluZGV4PiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVRhYkluZGV4LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGN1cnJlbnRBY3RpdmVUYWJJbmRleDogU2t5VGFiSW5kZXggPSAwO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVRhYkluZGV4ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lUYWJJbmRleD4oMCk7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlVGFiVW5yZWdpc3RlcmVkID0gbmV3IFN1YmplY3Q8U2t5VGFic2V0QWN0aXZlVGFiVW5yZWdpc3RlcmVkQXJncz4oKTtcblxuICBwcml2YXRlIHRhYnM6IHtcbiAgICB0YWJJbmRleDogU2t5VGFiSW5kZXg7XG4gIH1bXSA9IFtdO1xuXG4gIHByaXZhdGUgdGFiQ291bnRlciA9IDA7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFjdGl2ZSB0YWIgYnkgaXRzIHVuaXF1ZSBgdGFiSW5kZXhgIHByb3BlcnR5LlxuICAgKi9cbiAgcHVibGljIHNldEFjdGl2ZVRhYkluZGV4KHZhbHVlOiBTa3lUYWJJbmRleCwgY29uZmlnID0ge1xuICAgIGVtaXRDaGFuZ2U6IHRydWVcbiAgfSk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICF0aGlzLnRhYkluZGV4ZXNFcXVhbCh2YWx1ZSwgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXgpXG4gICAgKSB7XG4gICAgICB0aGlzLmN1cnJlbnRBY3RpdmVUYWJJbmRleCA9IHZhbHVlO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChjb25maWcuZW1pdENoYW5nZSkge1xuICAgICAgICB0aGlzLl9hY3RpdmVUYWJJbmRleC5uZXh0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclRhYih0YWJJbmRleD86IFNreVRhYkluZGV4KTogU2t5VGFiSW5kZXgge1xuICAgIGlmICh0YWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YWJJbmRleCA9IHRoaXMudGFiQ291bnRlcjtcbiAgICAgIHRoaXMudGFiQ291bnRlcisrO1xuICAgIH1cblxuICAgIHRoaXMudGFicy5wdXNoKHsgdGFiSW5kZXggfSk7XG5cbiAgICByZXR1cm4gdGFiSW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFiSW5kZXgoY3VycmVudFRhYkluZGV4OiBTa3lUYWJJbmRleCwgbmV3VGFiSW5kZXg6IFNreVRhYkluZGV4KTogdm9pZCB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBjdXJyZW50VGFiSW5kZXgpKTtcbiAgICBmb3VuZC50YWJJbmRleCA9IG5ld1RhYkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyVGFiKHRhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCh0YWIgPT4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJJbmRleCkpO1xuXG4gICAgLy8gTm90aWZ5IHRoZSB0YWJzZXQgY29tcG9uZW50IHdoZW4gYW4gYWN0aXZlIHRhYiBpcyB1bnJlZ2lzdGVyZWQuXG4gICAgaWYgKHRoaXMuaXNUYWJJbmRleEFjdGl2ZSh0aGlzLnRhYnNbaW5kZXhdLnRhYkluZGV4KSkge1xuICAgICAgdGhpcy5fYWN0aXZlVGFiVW5yZWdpc3RlcmVkLm5leHQoe1xuICAgICAgICBhcnJheUluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYWxsIHRhYiBjb21wb25lbnRzIGF0IG9uY2UuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlcyB0d28gdGFiIGluZGV4ZXMgYW5kIHJldHVybnMgYHRydWVgIGlmIHRoZXkgYXJlIGVxdWFsLlxuICAgKi9cbiAgcHVibGljIHRhYkluZGV4ZXNFcXVhbCh0YWJJbmRleDE6IFNreVRhYkluZGV4LCB0YWJJbmRleDI6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRhYkluZGV4MSA9PT0gdGFiSW5kZXgyIHx8XG4gICAgICArdGFiSW5kZXgxID09PSArdGFiSW5kZXgyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhIHByb3ZpZGVkIHRhYiBpbmRleCBpcyByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIGlzVmFsaWRUYWJJbmRleCh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnNvbWUodGFiID0+IHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGFiSW5kZXgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIGZpcnN0IHJlZ2lzdGVyZWQgdGFiLlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlRmlyc3RUYWIoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpcnN0VGFiSW5kZXggPSB0aGlzLnRhYnNbMF0gJiYgdGhpcy50YWJzWzBdLnRhYkluZGV4O1xuICAgIGlmIChmaXJzdFRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlVGFiSW5kZXgoZmlyc3RUYWJJbmRleCk7XG4gICAgICByZXR1cm4gZmlyc3RUYWJJbmRleDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBuZXh0IHJlZ2lzdGVyZWQgdGFiLCBvciB0aGUgcHJldmlvdXMgb25lIGJhc2VkIG9uIGEgcHJvdmlkZWQgYXJyYXkgaW5kZXguXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVOZWFyZXN0VGFiKGFycmF5SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMudGFic1thcnJheUluZGV4XSB8fCB0aGlzLnRhYnNbYXJyYXlJbmRleCAtIDFdO1xuICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4ID0gbmV3QWN0aXZlVGFiLnRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNUYWJJbmRleEFjdGl2ZSh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiSW5kZXgsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KTtcbiAgfVxufVxuIl19
@@ -1,11 +1,11 @@
1
- import { __decorate } from "tslib";
2
1
  import { Injectable } from '@angular/core';
3
2
  import { SkyMediaBreakpoints } from '@skyux/core';
4
3
  import { BehaviorSubject } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
5
  /**
6
6
  * @internal
7
7
  */
8
- let SkyVerticalTabMediaQueryService = class SkyVerticalTabMediaQueryService {
8
+ export class SkyVerticalTabMediaQueryService {
9
9
  constructor() {
10
10
  this.currentSubject = new BehaviorSubject(this.current);
11
11
  this._current = SkyMediaBreakpoints.xs;
@@ -63,9 +63,10 @@ let SkyVerticalTabMediaQueryService = class SkyVerticalTabMediaQueryService {
63
63
  destroy() {
64
64
  this.currentSubject.complete();
65
65
  }
66
- };
67
- SkyVerticalTabMediaQueryService = __decorate([
68
- Injectable()
69
- ], SkyVerticalTabMediaQueryService);
70
- export { SkyVerticalTabMediaQueryService };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvdGFicy8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYi1tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGVBQWUsRUFFaEIsTUFBTSxNQUFNLENBQUM7QUFFZDs7R0FFRztBQUVILElBQWEsK0JBQStCLEdBQTVDLE1BQWEsK0JBQStCO0lBVTFDO1FBSlEsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7UUFHeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFWRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFVTSxTQUFTLENBQUMsUUFBK0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7Z0JBQ3pDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWE7UUFDeEMsSUFBSSxVQUErQixDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMvRCxVQUFVLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RFLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7U0FDckM7YUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdEUsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBYSxFQUFFLFVBQStCO1FBQzNFLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRW5DLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxLQUFLLElBQUkscUJBQXFCLENBQUMsQ0FBQzthQUN6QztZQUNELEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxLQUFLLElBQUkscUJBQXFCLElBQUksS0FBSyxJQUFJLHFCQUFxQixDQUFDLENBQUM7YUFDM0U7WUFDRCxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxJQUFJLHFCQUFxQixJQUFJLEtBQUssSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEtBQUssSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGLENBQUE7QUFsRVksK0JBQStCO0lBRDNDLFVBQVUsRUFBRTtHQUNBLCtCQUErQixDQWtFM0M7U0FsRVksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5TWVkaWFCcmVha3BvaW50cyxcbiAgU2t5TWVkaWFRdWVyeUxpc3RlbmVyXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlIHtcblxuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBwcml2YXRlIGN1cnJlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lNZWRpYUJyZWFrcG9pbnRzPih0aGlzLmN1cnJlbnQpO1xuXG4gIHByaXZhdGUgX2N1cnJlbnQgPSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY3VycmVudFN1YmplY3QubmV4dCh0aGlzLl9jdXJyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmUobGlzdGVuZXI6IFNreU1lZGlhUXVlcnlMaXN0ZW5lcik6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFN1YmplY3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChicmVha3BvaW50czogU2t5TWVkaWFCcmVha3BvaW50cykgPT4ge1xuICAgICAgICBsaXN0ZW5lcihicmVha3BvaW50cyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0QnJlYWtwb2ludEZvcldpZHRoKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICBsZXQgYnJlYWtwb2ludDogU2t5TWVkaWFCcmVha3BvaW50cztcblxuICAgIGlmICh0aGlzLmlzV2lkdGhXaXRoaW5CcmVha3Bpb250KHdpZHRoLCBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzKSkge1xuICAgICAgYnJlYWtwb2ludCA9IFNreU1lZGlhQnJlYWtwb2ludHMueHM7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzV2lkdGhXaXRoaW5CcmVha3Bpb250KHdpZHRoLCBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtKSkge1xuICAgICAgYnJlYWtwb2ludCA9IFNreU1lZGlhQnJlYWtwb2ludHMuc207XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzV2lkdGhXaXRoaW5CcmVha3Bpb250KHdpZHRoLCBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kKSkge1xuICAgICAgYnJlYWtwb2ludCA9IFNreU1lZGlhQnJlYWtwb2ludHMubWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrcG9pbnQgPSBTa3lNZWRpYUJyZWFrcG9pbnRzLmxnO1xuICAgIH1cblxuICAgIHRoaXMuX2N1cnJlbnQgPSBicmVha3BvaW50O1xuICAgIHRoaXMuY3VycmVudFN1YmplY3QubmV4dCh0aGlzLl9jdXJyZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1dpZHRoV2l0aGluQnJlYWtwaW9udCh3aWR0aDogbnVtYmVyLCBicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzKTogYm9vbGVhbiB7XG4gICAgY29uc3QgeHNCcmVha3BvaW50TWF4UGl4ZWxzID0gNzY3O1xuICAgIGNvbnN0IHNtQnJlYWtwb2ludE1pblBpeGVscyA9IDc2ODtcbiAgICBjb25zdCBzbUJyZWFrcG9pbnRNYXhQaXhlbHMgPSA5OTE7XG4gICAgY29uc3QgbWRCcmVha3BvaW50TWluUGl4ZWxzID0gOTkyO1xuICAgIGNvbnN0IG1kQnJlYWtwb2ludE1heFBpeGVscyA9IDExOTk7XG4gICAgY29uc3QgbGdCcmVha3BvaW50TWluUGl4ZWxzID0gMTIwMDtcblxuICAgIHN3aXRjaCAoYnJlYWtwb2ludCkge1xuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzOiB7XG4gICAgICAgIHJldHVybiAod2lkdGggPD0geHNCcmVha3BvaW50TWF4UGl4ZWxzKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5zbToge1xuICAgICAgICByZXR1cm4gKHdpZHRoID49IHNtQnJlYWtwb2ludE1pblBpeGVscyAmJiB3aWR0aCA8PSBzbUJyZWFrcG9pbnRNYXhQaXhlbHMpO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kOiB7XG4gICAgICAgIHJldHVybiAod2lkdGggPj0gbWRCcmVha3BvaW50TWluUGl4ZWxzICYmIHdpZHRoIDw9IG1kQnJlYWtwb2ludE1heFBpeGVscyk7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiAod2lkdGggPj0gbGdCcmVha3BvaW50TWluUGl4ZWxzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRTdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
66
+ }
67
+ SkyVerticalTabMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
68
+ SkyVerticalTabMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: SkyVerticalTabMediaQueryService, decorators: [{
70
+ type: Injectable
71
+ }], ctorParameters: function () { return []; } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWItbWVkaWEtcXVlcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGVBQWUsRUFFaEIsTUFBTSxNQUFNLENBQUM7O0FBRWQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sK0JBQStCO0lBVTFDO1FBSlEsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhFLGFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7UUFHeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFWRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFVTSxTQUFTLENBQUMsUUFBK0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQztZQUNuQyxJQUFJLEVBQUUsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7Z0JBQ3pDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWE7UUFDeEMsSUFBSSxVQUErQixDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMvRCxVQUFVLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3RFLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7U0FDckM7YUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDdEUsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsVUFBVSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztTQUNyQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsS0FBYSxFQUFFLFVBQStCO1FBQzNFLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ2xDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQ25DLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRW5DLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxLQUFLLElBQUkscUJBQXFCLENBQUMsQ0FBQzthQUN6QztZQUNELEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sQ0FBQyxLQUFLLElBQUkscUJBQXFCLElBQUksS0FBSyxJQUFJLHFCQUFxQixDQUFDLENBQUM7YUFDM0U7WUFDRCxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxJQUFJLHFCQUFxQixJQUFJLEtBQUssSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1AsT0FBTyxDQUFDLEtBQUssSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO2FBQ3pDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQzs7NEhBakVVLCtCQUErQjtnSUFBL0IsK0JBQStCOzJGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lNZWRpYUJyZWFrcG9pbnRzLFxuICBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXJcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBTa3lNZWRpYUJyZWFrcG9pbnRzIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudDtcbiAgfVxuXG4gIHByaXZhdGUgY3VycmVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreU1lZGlhQnJlYWtwb2ludHM+KHRoaXMuY3VycmVudCk7XG5cbiAgcHJpdmF0ZSBfY3VycmVudCA9IFNreU1lZGlhQnJlYWtwb2ludHMueHM7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jdXJyZW50U3ViamVjdC5uZXh0KHRoaXMuX2N1cnJlbnQpO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZShsaXN0ZW5lcjogU2t5TWVkaWFRdWVyeUxpc3RlbmVyKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3ViamVjdC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGJyZWFrcG9pbnRzOiBTa3lNZWRpYUJyZWFrcG9pbnRzKSA9PiB7XG4gICAgICAgIGxpc3RlbmVyKGJyZWFrcG9pbnRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRCcmVha3BvaW50Rm9yV2lkdGgod2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgIGxldCBicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzO1xuXG4gICAgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMueHMpKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy54cztcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMuc20pKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy5zbTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNXaWR0aFdpdGhpbkJyZWFrcGlvbnQod2lkdGgsIFNreU1lZGlhQnJlYWtwb2ludHMubWQpKSB7XG4gICAgICBicmVha3BvaW50ID0gU2t5TWVkaWFCcmVha3BvaW50cy5tZDtcbiAgICB9IGVsc2Uge1xuICAgICAgYnJlYWtwb2ludCA9IFNreU1lZGlhQnJlYWtwb2ludHMubGc7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudCA9IGJyZWFrcG9pbnQ7XG4gICAgdGhpcy5jdXJyZW50U3ViamVjdC5uZXh0KHRoaXMuX2N1cnJlbnQpO1xuICB9XG5cbiAgcHVibGljIGlzV2lkdGhXaXRoaW5CcmVha3Bpb250KHdpZHRoOiBudW1iZXIsIGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpOiBib29sZWFuIHtcbiAgICBjb25zdCB4c0JyZWFrcG9pbnRNYXhQaXhlbHMgPSA3Njc7XG4gICAgY29uc3Qgc21CcmVha3BvaW50TWluUGl4ZWxzID0gNzY4O1xuICAgIGNvbnN0IHNtQnJlYWtwb2ludE1heFBpeGVscyA9IDk5MTtcbiAgICBjb25zdCBtZEJyZWFrcG9pbnRNaW5QaXhlbHMgPSA5OTI7XG4gICAgY29uc3QgbWRCcmVha3BvaW50TWF4UGl4ZWxzID0gMTE5OTtcbiAgICBjb25zdCBsZ0JyZWFrcG9pbnRNaW5QaXhlbHMgPSAxMjAwO1xuXG4gICAgc3dpdGNoIChicmVha3BvaW50KSB7XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMueHM6IHtcbiAgICAgICAgcmV0dXJuICh3aWR0aCA8PSB4c0JyZWFrcG9pbnRNYXhQaXhlbHMpO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtOiB7XG4gICAgICAgIHJldHVybiAod2lkdGggPj0gc21CcmVha3BvaW50TWluUGl4ZWxzICYmIHdpZHRoIDw9IHNtQnJlYWtwb2ludE1heFBpeGVscyk7XG4gICAgICB9XG4gICAgICBjYXNlIFNreU1lZGlhQnJlYWtwb2ludHMubWQ6IHtcbiAgICAgICAgcmV0dXJuICh3aWR0aCA+PSBtZEJyZWFrcG9pbnRNaW5QaXhlbHMgJiYgd2lkdGggPD0gbWRCcmVha3BvaW50TWF4UGl4ZWxzKTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuICh3aWR0aCA+PSBsZ0JyZWFrcG9pbnRNaW5QaXhlbHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxufVxuIl19