@skyux/tabs 8.9.0 → 8.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,6 @@
1
- var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent__tabElement, _SkyTabComponent_tabIndexChange, _SkyTabComponent_observingTab, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_mediaQueryService, _SkyTabComponent_setPermalinkValueOrDefault, _SkyTabComponent_observeTabResize;
1
+ var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent_tabIndexChange, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_setPermalinkValueOrDefault;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewChild, inject, } from '@angular/core';
4
- import { SkyMediaQueryService, SkyResizeObserverMediaQueryService, } from '@skyux/core';
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
5
4
  import { BehaviorSubject } from 'rxjs';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "./tabset-permalink.service";
@@ -84,7 +83,6 @@ export class SkyTabComponent {
84
83
  const layout = value || LAYOUT_DEFAULT;
85
84
  __classPrivateFieldSet(this, _SkyTabComponent__layout, layout, "f");
86
85
  this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;
87
- __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
88
86
  if (this.active) {
89
87
  __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").updateActiveTabLayout(layout);
90
88
  }
@@ -101,13 +99,6 @@ export class SkyTabComponent {
101
99
  get tabIndexChange() {
102
100
  return __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f");
103
101
  }
104
- set tabContentWrapper(tabContentWrapper) {
105
- __classPrivateFieldSet(this, _SkyTabComponent__tabElement, tabContentWrapper, "f");
106
- __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
107
- }
108
- get tabContentWrapper() {
109
- return __classPrivateFieldGet(this, _SkyTabComponent__tabElement, "f");
110
- }
111
102
  constructor(changeDetector, permalinkService, tabsetService) {
112
103
  _SkyTabComponent_instances.add(this);
113
104
  this.cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;
@@ -126,13 +117,10 @@ export class SkyTabComponent {
126
117
  _SkyTabComponent__tabHeading.set(this, void 0);
127
118
  _SkyTabComponent__tabIndex.set(this, void 0);
128
119
  _SkyTabComponent__layout.set(this, LAYOUT_DEFAULT);
129
- _SkyTabComponent__tabElement.set(this, void 0);
130
120
  _SkyTabComponent_tabIndexChange.set(this, void 0);
131
- _SkyTabComponent_observingTab.set(this, false);
132
121
  _SkyTabComponent_changeDetector.set(this, void 0);
133
122
  _SkyTabComponent_permalinkService.set(this, void 0);
134
123
  _SkyTabComponent_tabsetService.set(this, void 0);
135
- _SkyTabComponent_mediaQueryService.set(this, inject(SkyResizeObserverMediaQueryService));
136
124
  __classPrivateFieldSet(this, _SkyTabComponent_changeDetector, changeDetector, "f");
137
125
  __classPrivateFieldSet(this, _SkyTabComponent_permalinkService, permalinkService, "f");
138
126
  __classPrivateFieldSet(this, _SkyTabComponent_tabsetService, tabsetService, "f");
@@ -151,9 +139,6 @@ export class SkyTabComponent {
151
139
  (changes['permalinkValue'] && !changes['permalinkValue'].firstChange)) {
152
140
  __classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").next();
153
141
  }
154
- if (changes['layout'] && changes['layout'].currentValue === 'none') {
155
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
156
- }
157
142
  }
158
143
  ngOnDestroy() {
159
144
  __classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").complete();
@@ -162,8 +147,6 @@ export class SkyTabComponent {
162
147
  if (this.tabIndex !== undefined) {
163
148
  __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").unregisterTab(this.tabIndex);
164
149
  }
165
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
166
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
167
150
  }
168
151
  init() {
169
152
  __classPrivateFieldSet(this, _SkyTabComponent__tabIndex, __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").registerTab(this.tabIndex), "f");
@@ -182,41 +165,16 @@ export class SkyTabComponent {
182
165
  return this.close.observers.length > 0;
183
166
  }
184
167
  }
185
- _SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent__tabElement = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_observingTab = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_mediaQueryService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
168
+ _SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
186
169
  this.permalinkValueOrDefault =
187
170
  __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.permalinkValue) ||
188
171
  __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.tabHeading);
189
- }, _SkyTabComponent_observeTabResize = function _SkyTabComponent_observeTabResize() {
190
- if (this.tabContentWrapper) {
191
- if (this.layout !== 'none' && !__classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
192
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, true, "f");
193
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").observe(this.tabContentWrapper, {
194
- updateResponsiveClasses: true,
195
- });
196
- }
197
- else if (this.layout === 'none' && __classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
198
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
199
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
200
- }
201
- }
202
172
  };
203
173
  SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyTabsetPermalinkService }, { token: i2.SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
204
- SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, providers: [
205
- SkyResizeObserverMediaQueryService,
206
- {
207
- provide: SkyMediaQueryService,
208
- useExisting: SkyResizeObserverMediaQueryService,
209
- },
210
- ], viewQueries: [{ propertyName: "tabContentWrapper", first: true, predicate: ["tabContentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
174
+ SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, decorators: [{
212
176
  type: Component,
213
- args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
214
- SkyResizeObserverMediaQueryService,
215
- {
216
- provide: SkyMediaQueryService,
217
- useExisting: SkyResizeObserverMediaQueryService,
218
- },
219
- ], template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
177
+ args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
220
178
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyTabsetPermalinkService }, { type: i2.SkyTabsetService }]; }, propDecorators: { active: [{
221
179
  type: Input
222
180
  }], disabled: [{
@@ -236,8 +194,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
236
194
  args: ['class']
237
195
  }], close: [{
238
196
  type: Output
239
- }], tabContentWrapper: [{
240
- type: ViewChild,
241
- args: ['tabContentWrapper']
242
197
  }] } });
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGtDQUFrQyxHQUNuQyxNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7O0FBT25ELE1BQU0sbUJBQW1CLEdBQUcsa0JBQWtCLENBQUM7QUFDL0MsTUFBTSxjQUFjLEdBQXFCLE1BQU0sQ0FBQztBQUVoRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFlZixNQUFNLE9BQU8sZUFBZTtJQUMxQjs7OztPQUlHO0lBQ0gsSUFDVyxNQUFNLENBQUMsS0FBMEI7UUFDMUMsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssdUJBQUEsSUFBSSxnQ0FBUyxFQUFFO1lBQ3BELHVCQUFBLElBQUksNEJBQVksS0FBSyxNQUFBLENBQUM7WUFDdEIsdUJBQUEsSUFBSSxxQ0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNmLE9BQU8sdUJBQUEsSUFBSSxnQ0FBUyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyx1QkFBQSxJQUFJ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LHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Qsa0NBQWtDO3dCQUNsQzs0QkFDRSxPQUFPLEVBQUUsb0JBQW9COzRCQUM3QixXQUFXLEVBQUUsa0NBQWtDO3lCQUNoRDtxQkFDRjsrS0FTVSxNQUFNO3NCQURoQixLQUFLO2dCQXFCQyxRQUFRO3NCQURkLEtBQUs7Z0JBWUssY0FBYztzQkFEeEIsS0FBSztnQkFnQkMsY0FBYztzQkFEcEIsS0FBSztnQkFZSyxVQUFVO3NCQURwQixLQUFLO2dCQWdCSyxRQUFRO3NCQURsQixLQUFLO2dCQTBCSyxNQUFNO3NCQURoQixLQUFLO2dCQW1CQyxRQUFRO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFTYixLQUFLO3NCQURYLE1BQU07Z0JBZUksaUJBQWlCO3NCQUQzQixTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2UsXG4gIFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnLi90YWItaW5kZXgnO1xuaW1wb3J0IHsgU2t5VGFiTGF5b3V0VHlwZSB9IGZyb20gJy4vdGFiLWxheW91dC10eXBlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbmNvbnN0IExBWU9VVF9DTEFTU19QUkVGSVggPSAnc2t5LWxheW91dC1ob3N0LSc7XG5jb25zdCBMQVlPVVRfREVGQVVMVDogU2t5VGFiTGF5b3V0VHlwZSA9ICdub25lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreU1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNreVJlc2l6ZU9ic2VydmVyTWVkaWFRdWVyeVNlcnZpY2UsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFiIGlzIGFjdGl2ZSB3aGVuIHRoZSB0YWJzZXQgbG9hZHMuIEFmdGVyIGluaXRpYWxpemF0aW9uLCB0aGUgYGFjdGl2ZWBcbiAgICogcHJvcGVydHkgb24gdGhlIHRhYnNldCBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZSBhY3RpdmUgdGFiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhY3RpdmUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhIXZhbHVlICE9PSB0aGlzLiNfYWN0aXZlKSB7XG4gICAgICB0aGlzLiNfYWN0aXZlID0gdmFsdWU7XG4gICAgICB0aGlzLiNhY3RpdmVDaGFuZ2UubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfYWN0aXZlO1xuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVDaGFuZ2UoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuI2FjdGl2ZUNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIHRhYi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXIgdmFsdWUgZm9yIHRoZSB0YWIuXG4gICAqIFRoaXMgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgdGFic2V0J3MgYHBlcm1hbGlua0lkYCB0byBkaXN0aW5ndWlzaFxuICAgKiB0aGUgdGFiJ3MgdW5pcXVlIHN0YXRlIGluIHRoZSBVUkwgYnkgZ2VuZXJhdGluZyBhIHF1ZXJ5IHBhcmFtZXRlciB0aGF0IGlzXG4gICAqIHdyaXR0ZW4gYXMgYD88cXVlcnlQYXJhbT4tYWN0aXZlLXRhYj08c2FuaXRpemVkLXRhYi1oZWFkaW5nYC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIHF1ZXJ5IHBhcmFtZXRlcidzIHZhbHVlIGlzIHBhcnNlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHRhYidzIGhlYWRpbmcgdGV4dC5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwZXJtYWxpbmtWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3Blcm1hbGlua1ZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVybWFsaW5rVmFsdWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3Blcm1hbGlua1ZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgY291bnRlciBiZXNpZGUgdGhlIHRhYiBoZWFkZXIuXG4gICAqIFRoaXMgaW5wdXQgb25seSBhcHBsaWVzIHdoZW4gdGhlIHRhYnNldCdzIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICogQGRlcHJlY2F0ZWQgU0tZIFVYIG5vIGxvbmdlciByZWNvbW1lbmRzIGFkZGluZyBjb3VudHMgdG8gdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkZXJDb3VudDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGhlYWRlci5cbiAgICogV2hlbiB1c2luZyB0YWJzIGFzIHRoZSBtYWluIG5hdmlnYXRpb24gb24gYSBwYWdlLFxuICAgKiB1c2UgW3RoZSBBbmd1bGFyIGBUaXRsZWAgc2VydmljZV0oaHR0cHM6Ly9hbmd1bGFyLmlvL2RvY3MvdHMvbGF0ZXN0L2Nvb2tib29rL3NldC1kb2N1bWVudC10aXRsZS5odG1sKVxuICAgKiBhbmQgW3RoZSBTS1kgVVggYHRpdGxlYCBjb25maWd1cmF0aW9uIHByb3BlcnR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL3JlZmVyZW5jZS9jb25maWd1cmF0aW9uI2FwcClcbiAgICogdG8gcmVmbGVjdCB0aGUgdGFiIGhlYWRlciBpbiB0aGUgcGFnZSB0aXRsZS5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYkhlYWRpbmcodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190YWJIZWFkaW5nID0gdmFsdWU7XG5cbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJIZWFkaW5nKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJIZWFkaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHRhYi5cbiAgICogSWYgbm90IGRlZmluZWQsIHRoZSBpZGVudGlmaWVyIGlzIHNldCB0byB0aGUgcG9zaXRpb24gb2YgdGhlIHRhYiBvbiBsb2FkLCBzdGFydGluZyB3aXRoIGAwYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSW5kZXgodmFsdWU6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgIT09IHRoaXMuI190YWJJbmRleCAmJlxuICAgICAgdmFsdWUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy4jX3RhYkluZGV4ICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudXBkYXRlVGFiSW5kZXgodGhpcy4jX3RhYkluZGV4LCB2YWx1ZSk7XG4gICAgICB0aGlzLiN0YWJJbmRleENoYW5nZS5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfdGFiSW5kZXggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiSW5kZXgoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfdGFiSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRhYiBsYXlvdXQgdGhhdCBhcHBsaWVzIHNwYWNpbmcgdG8gdGhlIHRhYiBjb250YWluZXIgZWxlbWVudC4gVXNlIHRoZSBsYXlvdXRcbiAgICogdGhhdCBjb3JyZXNwb25kcyB3aXRoIHRoZSB0b3AtbGV2ZWwgY29tcG9uZW50IHR5cGUgdXNlZCB3aXRoaW4gdGhlIHRhYiwgb3IgdXNlIGBmaXRgIHRvXG4gICAqIGNvbnN0cmFpbiB0aGUgdGFiIGNvbnRlbnRzIHRvIHRoZSBhdmFpbGFibGUgdmlld3BvcnQuXG4gICAqIFVzZSBgbm9uZWAgZm9yIGN1c3RvbSBjb250ZW50IHRoYXQgZG9lcyBub3QgYWRoZXJlIHRvIHByZWRlZmluZWQgc3BhY2luZyBvciBjb25zdHJhaW50cy5cbiAgICogQGRlZmF1bHQgXCJub25lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbGF5b3V0KHZhbHVlOiBTa3lUYWJMYXlvdXRUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbGF5b3V0ID0gdmFsdWUgfHwgTEFZT1VUX0RFRkFVTFQ7XG5cbiAgICB0aGlzLiNfbGF5b3V0ID0gbGF5b3V0O1xuICAgIHRoaXMuY3NzQ2xhc3MgPSBgJHtMQVlPVVRfQ0xBU1NfUFJFRklYfSR7bGF5b3V0fWA7XG5cbiAgICB0aGlzLiNvYnNlcnZlVGFiUmVzaXplKCk7XG5cbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHRoaXMuI3RhYnNldFNlcnZpY2UudXBkYXRlQWN0aXZlVGFiTGF5b3V0KGxheW91dCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBsYXlvdXQoKTogU2t5VGFiTGF5b3V0VHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19sYXlvdXQ7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgcHVibGljIGNzc0NsYXNzID0gYCR7TEFZT1VUX0NMQVNTX1BSRUZJWH0ke0xBWU9VVF9ERUZBVUxUfWA7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBjbG9zZSB0aGUgdGFiLlxuICAgKiBUaGUgY2xvc2UgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKiBUaGlzIGV2ZW50IG9ubHkgYXBwbGllcyB3aGVuIHRoZSB0YWJzZXQncyBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImAuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG5cbiAgLyoqXG4gICAqIEFsZXJ0cyB0aGUgdGFic2V0IGNvbXBvbmVudCB3aGVuIHRoaXMgY29tcG9uZW50IGhhcyBjaGFuZ2VzIHRoYXQgbmVlZCB0byBiZSByZWZsZWN0ZWQgaW4gdGhlIFVJLlxuICAgKi9cbiAgcHVibGljIGdldCBzdGF0ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jc3RhdGVDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkluZGV4Q2hhbmdlKCk6IE9ic2VydmFibGU8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jdGFiSW5kZXhDaGFuZ2U7XG4gIH1cblxuICBAVmlld0NoaWxkKCd0YWJDb250ZW50V3JhcHBlcicpXG4gIHB1YmxpYyBzZXQgdGFiQ29udGVudFdyYXBwZXIodGFiQ29udGVudFdyYXBwZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfdGFiRWxlbWVudCA9IHRhYkNvbnRlbnRXcmFwcGVyO1xuICAgIHRoaXMuI29ic2VydmVUYWJSZXNpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiQ29udGVudFdyYXBwZXIoKTogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0ID0gJyc7XG5cbiAgcHVibGljIHNob3dDb250ZW50ID0gZmFsc2U7XG5cbiAgcHVibGljIHRhYkJ1dHRvbklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHRhYlBhbmVsSWQ6IHN0cmluZztcblxuICAjX2FjdGl2ZSA9IGZhbHNlO1xuXG4gICNhY3RpdmVDaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPjtcblxuICAjX3Blcm1hbGlua1ZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI3N0YXRlQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8dm9pZD47XG5cbiAgI190YWJIZWFkaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI190YWJJbmRleDogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQ7XG5cbiAgI19sYXlvdXQ6IFNreVRhYkxheW91dFR5cGUgPSBMQVlPVVRfREVGQVVMVDtcblxuICAjX3RhYkVsZW1lbnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgI3RhYkluZGV4Q2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+O1xuXG4gICNvYnNlcnZpbmdUYWIgPSBmYWxzZTtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZTtcbiAgI3RhYnNldFNlcnZpY2U6IFNreVRhYnNldFNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHBlcm1hbGlua1NlcnZpY2U6IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UgPSBwZXJtYWxpbmtTZXJ2aWNlO1xuICAgIHRoaXMuI3RhYnNldFNlcnZpY2UgPSB0YWJzZXRTZXJ2aWNlO1xuICAgIGNvbnN0IGlkID0gbmV4dElkKys7XG4gICAgdGhpcy50YWJQYW5lbElkID0gYHNreS10YWItJHtpZH1gO1xuICAgIHRoaXMudGFiQnV0dG9uSWQgPSBgJHt0aGlzLnRhYlBhbmVsSWR9LW5hdi1idG5gO1xuXG4gICAgdGhpcy4jYWN0aXZlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3N0YXRlQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lUYWJJbmRleCB8IHVuZGVmaW5lZD4oXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuXG4gICAgdGhpcy4jc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTtcbiAgfVxuXG4gICNtZWRpYVF1ZXJ5U2VydmljZSA9IGluamVjdChTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlKTtcblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIChjaGFuZ2VzWydkaXNhYmxlZCddICYmICFjaGFuZ2VzWydkaXNhYmxlZCddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3RhYkhlYWRpbmcnXSAmJiAhY2hhbmdlc1sndGFiSGVhZGluZyddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3RhYkhlYWRlckNvdW50J10gJiYgIWNoYW5nZXNbJ3RhYkhlYWRlckNvdW50J10uZmlyc3RDaGFuZ2UpIHx8XG4gICAgICAoY2hhbmdlc1sncGVybWFsaW5rVmFsdWUnXSAmJiAhY2hhbmdlc1sncGVybWFsaW5rVmFsdWUnXS5maXJzdENoYW5nZSlcbiAgICApIHtcbiAgICAgIHRoaXMuI3N0YXRlQ2hhbmdlLm5leHQoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1snbGF5b3V0J10gJiYgY2hhbmdlc1snbGF5b3V0J10uY3VycmVudFZhbHVlID09PSAnbm9uZScpIHtcbiAgICAgIHRoaXMuI21lZGlhUXVlcnlTZXJ2aWNlLnVub2JzZXJ2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhY3RpdmVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNzdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgaWYgKHRoaXMudGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51bnJlZ2lzdGVyVGFiKHRoaXMudGFiSW5kZXgpO1xuICAgIH1cbiAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS51bm9ic2VydmUoKTtcbiAgICB0aGlzLiNvYnNlcnZpbmdUYWIgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI190YWJJbmRleCA9IHRoaXMuI3RhYnNldFNlcnZpY2UucmVnaXN0ZXJUYWIodGhpcy50YWJJbmRleCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGUoKTogdm9pZCB7XG4gICAgdGhpcy4jX2FjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IHRydWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZGVhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29udGVudCA9IGZhbHNlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGlzQ2xvc2VhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsb3NlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMucGVybWFsaW5rVmFsdWVPckRlZmF1bHQgPVxuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS51cmxpZnkodGhpcy5wZXJtYWxpbmtWYWx1ZSkgfHxcbiAgICAgIHRoaXMuI3Blcm1hbGlua1NlcnZpY2UudXJsaWZ5KHRoaXMudGFiSGVhZGluZyk7XG4gIH1cblxuICAjb2JzZXJ2ZVRhYlJlc2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50YWJDb250ZW50V3JhcHBlcikge1xuICAgICAgaWYgKHRoaXMubGF5b3V0ICE9PSAnbm9uZScgJiYgIXRoaXMuI29ic2VydmluZ1RhYikge1xuICAgICAgICB0aGlzLiNvYnNlcnZpbmdUYWIgPSB0cnVlO1xuICAgICAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS5vYnNlcnZlKHRoaXMudGFiQ29udGVudFdyYXBwZXIsIHtcbiAgICAgICAgICB1cGRhdGVSZXNwb25zaXZlQ2xhc3NlczogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGF5b3V0ID09PSAnbm9uZScgJiYgdGhpcy4jb2JzZXJ2aW5nVGFiKSB7XG4gICAgICAgIHRoaXMuI29ic2VydmluZ1RhYiA9IGZhbHNlO1xuICAgICAgICB0aGlzLiNtZWRpYVF1ZXJ5U2VydmljZS51bm9ic2VydmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktdGFiXCJcbiAgcm9sZT1cInRhYnBhbmVsXCJcbiAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRhYkJ1dHRvbklkXCJcbiAgW2hpZGRlbl09XCIhc2hvd0NvbnRlbnRcIlxuICBbaWRdPVwidGFiUGFuZWxJZFwiXG4gICN0YWJDb250ZW50V3JhcHBlclxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90YWJzL3NyYy9saWIvbW9kdWxlcy90YWJzL3RhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvdGFicy9zcmMvbGliL21vZHVsZXMvdGFicy90YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQU9uRCxNQUFNLG1CQUFtQixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLE1BQU0sY0FBYyxHQUFxQixNQUFNLENBQUM7QUFFaEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBUWYsTUFBTSxPQUFPLGVBQWU7SUFDMUI7Ozs7T0FJRztJQUNILElBQ1csTUFBTSxDQUFDLEtBQTBCO1FBQzFDLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLHVCQUFBLElBQUksZ0NBQVMsRUFBRTtZQUNwRCx1QkFBQSxJQUFJLDRCQUFZLEtBQUssTUFBQSxDQUFDO1lBQ3RCLHVCQUFBLElBQUkscUNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLHVCQUFBLElBQUksZ0NBQVMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sdUJBQUEsSUFBSSxxQ0FBYyxDQUFDO0lBQzVCLENBQUM7SUFTRDs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxjQUFjLENBQUMsS0FBeUI7UUFDakQsdUJBQUEs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UTtzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBU2IsS0FBSztzQkFEWCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVRhYkluZGV4IH0gZnJvbSAnLi90YWItaW5kZXgnO1xuaW1wb3J0IHsgU2t5VGFiTGF5b3V0VHlwZSB9IGZyb20gJy4vdGFiLWxheW91dC10eXBlJztcbmltcG9ydCB7IFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UgfSBmcm9tICcuL3RhYnNldC1wZXJtYWxpbmsuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi90YWJzZXQuc2VydmljZSc7XG5cbmNvbnN0IExBWU9VVF9DTEFTU19QUkVGSVggPSAnc2t5LWxheW91dC1ob3N0LSc7XG5jb25zdCBMQVlPVVRfREVGQVVMVDogU2t5VGFiTGF5b3V0VHlwZSA9ICdub25lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB0YWIgaXMgYWN0aXZlIHdoZW4gdGhlIHRhYnNldCBsb2Fkcy4gQWZ0ZXIgaW5pdGlhbGl6YXRpb24sIHRoZSBgYWN0aXZlYFxuICAgKiBwcm9wZXJ0eSBvbiB0aGUgdGFic2V0IGNvbXBvbmVudCBzaG91bGQgYmUgdXNlZCB0byBzZXQgdGhlIGFjdGl2ZSB0YWIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZSh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICEhdmFsdWUgIT09IHRoaXMuI19hY3RpdmUpIHtcbiAgICAgIHRoaXMuI19hY3RpdmUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuI2FjdGl2ZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI19hY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjdGl2ZUNoYW5nZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYWN0aXZlQ2hhbmdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGFiLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHF1ZXJ5IHBhcmFtZXRlciB2YWx1ZSBmb3IgdGhlIHRhYi5cbiAgICogVGhpcyB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSB0YWJzZXQncyBgcGVybWFsaW5rSWRgIHRvIGRpc3Rpbmd1aXNoXG4gICAqIHRoZSB0YWIncyB1bmlxdWUgc3RhdGUgaW4gdGhlIFVSTCBieSBnZW5lcmF0aW5nIGEgcXVlcnkgcGFyYW1ldGVyIHRoYXQgaXNcbiAgICogd3JpdHRlbiBhcyBgPzxxdWVyeVBhcmFtPi1hY3RpdmUtdGFiPTxzYW5pdGl6ZWQtdGFiLWhlYWRpbmdgLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgcXVlcnkgcGFyYW1ldGVyJ3MgdmFsdWUgaXMgcGFyc2VkIGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgdGFiJ3MgaGVhZGluZyB0ZXh0LlxuICAgKiBUaGlzIGlucHV0IG9ubHkgYXBwbGllcyB3aGVuIHRoZSB0YWJzZXQncyBgdGFiU3R5bGVgIGlzIGBcInRhYnNcImAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1hbGlua1ZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfcGVybWFsaW5rVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJtYWxpbmtWYWx1ZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfcGVybWFsaW5rVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBjb3VudGVyIGJlc2lkZSB0aGUgdGFiIGhlYWRlci5cbiAgICogVGhpcyBpbnB1dCBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdGFic2V0J3MgYHRhYlN0eWxlYCBpcyBgXCJ0YWJzXCJgLlxuICAgKiBAZGVwcmVjYXRlZCBTS1kgVVggbm8gbG9uZ2VyIHJlY29tbWVuZHMgYWRkaW5nIGNvdW50cyB0byB0YWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYkhlYWRlckNvdW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWIgaGVhZGVyLlxuICAgKiBXaGVuIHVzaW5nIHRhYnMgYXMgdGhlIG1haW4gbmF2aWdhdGlvbiBvbiBhIHBhZ2UsXG4gICAqIHVzZSBbdGhlIEFuZ3VsYXIgYFRpdGxlYCBzZXJ2aWNlXShodHRwczovL2FuZ3VsYXIuaW8vZG9jcy90cy9sYXRlc3QvY29va2Jvb2svc2V0LWRvY3VtZW50LXRpdGxlLmh0bWwpXG4gICAqIGFuZCBbdGhlIFNLWSBVWCBgdGl0bGVgIGNvbmZpZ3VyYXRpb24gcHJvcGVydHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vcmVmZXJlbmNlL2NvbmZpZ3VyYXRpb24jYXBwKVxuICAgKiB0byByZWZsZWN0IHRoZSB0YWIgaGVhZGVyIGluIHRoZSBwYWdlIHRpdGxlLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiSGVhZGluZyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3RhYkhlYWRpbmcgPSB2YWx1ZTtcblxuICAgIHRoaXMuI3NldFBlcm1hbGlua1ZhbHVlT3JEZWZhdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkhlYWRpbmcoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3RhYkhlYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgdGFiLlxuICAgKiBJZiBub3QgZGVmaW5lZCwgdGhlIGlkZW50aWZpZXIgaXMgc2V0IHRvIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIG9uIGxvYWQsIHN0YXJ0aW5nIHdpdGggYDBgLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJJbmRleCh2YWx1ZTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy4jX3RhYkluZGV4ICYmXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLiNfdGFiSW5kZXggIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51cGRhdGVUYWJJbmRleCh0aGlzLiNfdGFiSW5kZXgsIHZhbHVlKTtcbiAgICAgIHRoaXMuI3RhYkluZGV4Q2hhbmdlLm5leHQodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuI190YWJJbmRleCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0YWJJbmRleCgpOiBTa3lUYWJJbmRleCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190YWJJbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGFiIGxheW91dCB0aGF0IGFwcGxpZXMgc3BhY2luZyB0byB0aGUgdGFiIGNvbnRhaW5lciBlbGVtZW50LiBVc2UgdGhlIGxheW91dFxuICAgKiB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIHRvcC1sZXZlbCBjb21wb25lbnQgdHlwZSB1c2VkIHdpdGhpbiB0aGUgdGFiLCBvciB1c2UgYGZpdGAgdG9cbiAgICogY29uc3RyYWluIHRoZSB0YWIgY29udGVudHMgdG8gdGhlIGF2YWlsYWJsZSB2aWV3cG9ydC5cbiAgICogVXNlIGBub25lYCBmb3IgY3VzdG9tIGNvbnRlbnQgdGhhdCBkb2VzIG5vdCBhZGhlcmUgdG8gcHJlZGVmaW5lZCBzcGFjaW5nIG9yIGNvbnN0cmFpbnRzLlxuICAgKiBAZGVmYXVsdCBcIm5vbmVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBsYXlvdXQodmFsdWU6IFNreVRhYkxheW91dFR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsYXlvdXQgPSB2YWx1ZSB8fCBMQVlPVVRfREVGQVVMVDtcblxuICAgIHRoaXMuI19sYXlvdXQgPSBsYXlvdXQ7XG4gICAgdGhpcy5jc3NDbGFzcyA9IGAke0xBWU9VVF9DTEFTU19QUkVGSVh9JHtsYXlvdXR9YDtcblxuICAgIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgICAgdGhpcy4jdGFic2V0U2VydmljZS51cGRhdGVBY3RpdmVUYWJMYXlvdXQobGF5b3V0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxheW91dCgpOiBTa3lUYWJMYXlvdXRUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jX2xheW91dDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBwdWJsaWMgY3NzQ2xhc3MgPSBgJHtMQVlPVVRfQ0xBU1NfUFJFRklYfSR7TEFZT1VUX0RFRkFVTFR9YDtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbGljayB0aGUgYnV0dG9uIHRvIGNsb3NlIHRoZSB0YWIuXG4gICAqIFRoZSBjbG9zZSBidXR0b24gaXMgYWRkZWQgdG8gdGhlIHRhYiB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqIFRoaXMgZXZlbnQgb25seSBhcHBsaWVzIHdoZW4gdGhlIHRhYnNldCdzIGB0YWJTdHlsZWAgaXMgYFwidGFic1wiYC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcblxuICAvKipcbiAgICogQWxlcnRzIHRoZSB0YWJzZXQgY29tcG9uZW50IHdoZW4gdGhpcyBjb21wb25lbnQgaGFzIGNoYW5nZXMgdGhhdCBuZWVkIHRvIGJlIHJlZmxlY3RlZCBpbiB0aGUgVUkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YXRlQ2hhbmdlKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLiNzdGF0ZUNoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiSW5kZXhDaGFuZ2UoKTogT2JzZXJ2YWJsZTxTa3lUYWJJbmRleCB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLiN0YWJJbmRleENoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBwZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCA9ICcnO1xuXG4gIHB1YmxpYyBzaG93Q29udGVudCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0YWJCdXR0b25JZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB0YWJQYW5lbElkOiBzdHJpbmc7XG5cbiAgI19hY3RpdmUgPSBmYWxzZTtcblxuICAjYWN0aXZlQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8dm9pZCB8IHVuZGVmaW5lZD47XG5cbiAgI19wZXJtYWxpbmtWYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNzdGF0ZUNoYW5nZTogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+O1xuXG4gICNfdGFiSGVhZGluZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICNfdGFiSW5kZXg6IFNreVRhYkluZGV4IHwgdW5kZWZpbmVkO1xuXG4gICNfbGF5b3V0OiBTa3lUYWJMYXlvdXRUeXBlID0gTEFZT1VUX0RFRkFVTFQ7XG5cbiAgI3RhYkluZGV4Q2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8U2t5VGFiSW5kZXggfCB1bmRlZmluZWQ+O1xuXG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICNwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlO1xuICAjdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcGVybWFsaW5rU2VydmljZTogU2t5VGFic2V0UGVybWFsaW5rU2VydmljZSxcbiAgICB0YWJzZXRTZXJ2aWNlOiBTa3lUYWJzZXRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcGVybWFsaW5rU2VydmljZSA9IHBlcm1hbGlua1NlcnZpY2U7XG4gICAgdGhpcy4jdGFic2V0U2VydmljZSA9IHRhYnNldFNlcnZpY2U7XG4gICAgY29uc3QgaWQgPSBuZXh0SWQrKztcbiAgICB0aGlzLnRhYlBhbmVsSWQgPSBgc2t5LXRhYi0ke2lkfWA7XG4gICAgdGhpcy50YWJCdXR0b25JZCA9IGAke3RoaXMudGFiUGFuZWxJZH0tbmF2LWJ0bmA7XG5cbiAgICB0aGlzLiNhY3RpdmVDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy4jc3RhdGVDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG4gICAgdGhpcy4jdGFiSW5kZXhDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreVRhYkluZGV4IHwgdW5kZWZpbmVkPihcbiAgICAgIHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICB0aGlzLiNzZXRQZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICAoY2hhbmdlc1snZGlzYWJsZWQnXSAmJiAhY2hhbmdlc1snZGlzYWJsZWQnXS5maXJzdENoYW5nZSkgfHxcbiAgICAgIChjaGFuZ2VzWyd0YWJIZWFkaW5nJ10gJiYgIWNoYW5nZXNbJ3RhYkhlYWRpbmcnXS5maXJzdENoYW5nZSkgfHxcbiAgICAgIChjaGFuZ2VzWyd0YWJIZWFkZXJDb3VudCddICYmICFjaGFuZ2VzWyd0YWJIZWFkZXJDb3VudCddLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgKGNoYW5nZXNbJ3Blcm1hbGlua1ZhbHVlJ10gJiYgIWNoYW5nZXNbJ3Blcm1hbGlua1ZhbHVlJ10uZmlyc3RDaGFuZ2UpXG4gICAgKSB7XG4gICAgICB0aGlzLiNzdGF0ZUNoYW5nZS5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI2FjdGl2ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3N0YXRlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jdGFiSW5kZXhDaGFuZ2UuY29tcGxldGUoKTtcbiAgICBpZiAodGhpcy50YWJJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLiN0YWJzZXRTZXJ2aWNlLnVucmVnaXN0ZXJUYWIodGhpcy50YWJJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jX3RhYkluZGV4ID0gdGhpcy4jdGFic2V0U2VydmljZS5yZWdpc3RlclRhYih0aGlzLnRhYkluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLiNfYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dDb250ZW50ID0gdHJ1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWFjdGl2YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuI19hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb250ZW50ID0gZmFsc2U7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaXNDbG9zZWFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2Uub2JzZXJ2ZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAjc2V0UGVybWFsaW5rVmFsdWVPckRlZmF1bHQoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJtYWxpbmtWYWx1ZU9yRGVmYXVsdCA9XG4gICAgICB0aGlzLiNwZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh0aGlzLnBlcm1hbGlua1ZhbHVlKSB8fFxuICAgICAgdGhpcy4jcGVybWFsaW5rU2VydmljZS51cmxpZnkodGhpcy50YWJIZWFkaW5nKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInNreS10YWJcIlxuICByb2xlPVwidGFicGFuZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGFiQnV0dG9uSWRcIlxuICBbaGlkZGVuXT1cIiFzaG93Q29udGVudFwiXG4gIFtpZF09XCJ0YWJQYW5lbElkXCJcbiAgI3RhYkNvbnRlbnRXcmFwcGVyXG4+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -1,12 +1,12 @@
1
1
  import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { NgModule, Injectable, Component, ChangeDetectionStrategy, Optional, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation, inject, HostBinding, Pipe } from '@angular/core';
4
+ import { NgModule, Injectable, Component, ChangeDetectionStrategy, Optional, Input, ViewChild, HostListener, ContentChildren, EventEmitter, Output, ViewEncapsulation, HostBinding, Pipe, inject } from '@angular/core';
5
5
  import { SkyCheckboxModule } from '@skyux/forms';
6
6
  import * as i7 from '@skyux/theme';
7
7
  import { SkyThemeModule } from '@skyux/theme';
8
8
  import * as i1 from '@skyux/core';
9
- import { SkyMediaBreakpoints, SkyMediaQueryService, SkyIdModule, SkyResizeObserverMediaQueryService, SkyLayoutHostService } from '@skyux/core';
9
+ import { SkyMediaBreakpoints, SkyMediaQueryService, SkyIdModule, SkyLayoutHostService } from '@skyux/core';
10
10
  import * as i6 from '@skyux/indicators';
11
11
  import { SkyIconModule, SkyExpansionIndicatorModule, SkyStatusIndicatorModule } from '@skyux/indicators';
12
12
  import * as i3 from '@skyux/i18n';
@@ -1674,7 +1674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1674
1674
  type: Injectable
1675
1675
  }], ctorParameters: function () { return [{ type: i1$1.ActivatedRoute }, { type: i4.Location }, { type: i1$1.Router }]; } });
1676
1676
 
1677
- var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent__tabElement, _SkyTabComponent_tabIndexChange, _SkyTabComponent_observingTab, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_mediaQueryService, _SkyTabComponent_setPermalinkValueOrDefault, _SkyTabComponent_observeTabResize;
1677
+ var _SkyTabComponent_instances, _SkyTabComponent__active, _SkyTabComponent_activeChange, _SkyTabComponent__permalinkValue, _SkyTabComponent_stateChange, _SkyTabComponent__tabHeading, _SkyTabComponent__tabIndex, _SkyTabComponent__layout, _SkyTabComponent_tabIndexChange, _SkyTabComponent_changeDetector, _SkyTabComponent_permalinkService, _SkyTabComponent_tabsetService, _SkyTabComponent_setPermalinkValueOrDefault;
1678
1678
  const LAYOUT_CLASS_PREFIX = 'sky-layout-host-';
1679
1679
  const LAYOUT_DEFAULT = 'none';
1680
1680
  let nextId = 0;
@@ -1753,7 +1753,6 @@ class SkyTabComponent {
1753
1753
  const layout = value || LAYOUT_DEFAULT;
1754
1754
  __classPrivateFieldSet(this, _SkyTabComponent__layout, layout, "f");
1755
1755
  this.cssClass = `${LAYOUT_CLASS_PREFIX}${layout}`;
1756
- __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
1757
1756
  if (this.active) {
1758
1757
  __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").updateActiveTabLayout(layout);
1759
1758
  }
@@ -1770,13 +1769,6 @@ class SkyTabComponent {
1770
1769
  get tabIndexChange() {
1771
1770
  return __classPrivateFieldGet(this, _SkyTabComponent_tabIndexChange, "f");
1772
1771
  }
1773
- set tabContentWrapper(tabContentWrapper) {
1774
- __classPrivateFieldSet(this, _SkyTabComponent__tabElement, tabContentWrapper, "f");
1775
- __classPrivateFieldGet(this, _SkyTabComponent_instances, "m", _SkyTabComponent_observeTabResize).call(this);
1776
- }
1777
- get tabContentWrapper() {
1778
- return __classPrivateFieldGet(this, _SkyTabComponent__tabElement, "f");
1779
- }
1780
1772
  constructor(changeDetector, permalinkService, tabsetService) {
1781
1773
  _SkyTabComponent_instances.add(this);
1782
1774
  this.cssClass = `${LAYOUT_CLASS_PREFIX}${LAYOUT_DEFAULT}`;
@@ -1795,13 +1787,10 @@ class SkyTabComponent {
1795
1787
  _SkyTabComponent__tabHeading.set(this, void 0);
1796
1788
  _SkyTabComponent__tabIndex.set(this, void 0);
1797
1789
  _SkyTabComponent__layout.set(this, LAYOUT_DEFAULT);
1798
- _SkyTabComponent__tabElement.set(this, void 0);
1799
1790
  _SkyTabComponent_tabIndexChange.set(this, void 0);
1800
- _SkyTabComponent_observingTab.set(this, false);
1801
1791
  _SkyTabComponent_changeDetector.set(this, void 0);
1802
1792
  _SkyTabComponent_permalinkService.set(this, void 0);
1803
1793
  _SkyTabComponent_tabsetService.set(this, void 0);
1804
- _SkyTabComponent_mediaQueryService.set(this, inject(SkyResizeObserverMediaQueryService));
1805
1794
  __classPrivateFieldSet(this, _SkyTabComponent_changeDetector, changeDetector, "f");
1806
1795
  __classPrivateFieldSet(this, _SkyTabComponent_permalinkService, permalinkService, "f");
1807
1796
  __classPrivateFieldSet(this, _SkyTabComponent_tabsetService, tabsetService, "f");
@@ -1820,9 +1809,6 @@ class SkyTabComponent {
1820
1809
  (changes['permalinkValue'] && !changes['permalinkValue'].firstChange)) {
1821
1810
  __classPrivateFieldGet(this, _SkyTabComponent_stateChange, "f").next();
1822
1811
  }
1823
- if (changes['layout'] && changes['layout'].currentValue === 'none') {
1824
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
1825
- }
1826
1812
  }
1827
1813
  ngOnDestroy() {
1828
1814
  __classPrivateFieldGet(this, _SkyTabComponent_activeChange, "f").complete();
@@ -1831,8 +1817,6 @@ class SkyTabComponent {
1831
1817
  if (this.tabIndex !== undefined) {
1832
1818
  __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").unregisterTab(this.tabIndex);
1833
1819
  }
1834
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
1835
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
1836
1820
  }
1837
1821
  init() {
1838
1822
  __classPrivateFieldSet(this, _SkyTabComponent__tabIndex, __classPrivateFieldGet(this, _SkyTabComponent_tabsetService, "f").registerTab(this.tabIndex), "f");
@@ -1851,41 +1835,16 @@ class SkyTabComponent {
1851
1835
  return this.close.observers.length > 0;
1852
1836
  }
1853
1837
  }
1854
- _SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent__tabElement = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_observingTab = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_mediaQueryService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
1838
+ _SkyTabComponent__active = new WeakMap(), _SkyTabComponent_activeChange = new WeakMap(), _SkyTabComponent__permalinkValue = new WeakMap(), _SkyTabComponent_stateChange = new WeakMap(), _SkyTabComponent__tabHeading = new WeakMap(), _SkyTabComponent__tabIndex = new WeakMap(), _SkyTabComponent__layout = new WeakMap(), _SkyTabComponent_tabIndexChange = new WeakMap(), _SkyTabComponent_changeDetector = new WeakMap(), _SkyTabComponent_permalinkService = new WeakMap(), _SkyTabComponent_tabsetService = new WeakMap(), _SkyTabComponent_instances = new WeakSet(), _SkyTabComponent_setPermalinkValueOrDefault = function _SkyTabComponent_setPermalinkValueOrDefault() {
1855
1839
  this.permalinkValueOrDefault =
1856
1840
  __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.permalinkValue) ||
1857
1841
  __classPrivateFieldGet(this, _SkyTabComponent_permalinkService, "f").urlify(this.tabHeading);
1858
- }, _SkyTabComponent_observeTabResize = function _SkyTabComponent_observeTabResize() {
1859
- if (this.tabContentWrapper) {
1860
- if (this.layout !== 'none' && !__classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
1861
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, true, "f");
1862
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").observe(this.tabContentWrapper, {
1863
- updateResponsiveClasses: true,
1864
- });
1865
- }
1866
- else if (this.layout === 'none' && __classPrivateFieldGet(this, _SkyTabComponent_observingTab, "f")) {
1867
- __classPrivateFieldSet(this, _SkyTabComponent_observingTab, false, "f");
1868
- __classPrivateFieldGet(this, _SkyTabComponent_mediaQueryService, "f").unobserve();
1869
- }
1870
- }
1871
1842
  };
1872
1843
  SkyTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component });
1873
- SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, providers: [
1874
- SkyResizeObserverMediaQueryService,
1875
- {
1876
- provide: SkyMediaQueryService,
1877
- useExisting: SkyResizeObserverMediaQueryService,
1878
- },
1879
- ], viewQueries: [{ propertyName: "tabContentWrapper", first: true, predicate: ["tabContentWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1844
+ SkyTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyTabComponent, selector: "sky-tab", inputs: { active: "active", disabled: "disabled", permalinkValue: "permalinkValue", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", tabIndex: "tabIndex", layout: "layout" }, outputs: { close: "close" }, host: { properties: { "class": "this.cssClass" } }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1880
1845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTabComponent, decorators: [{
1881
1846
  type: Component,
1882
- args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
1883
- SkyResizeObserverMediaQueryService,
1884
- {
1885
- provide: SkyMediaQueryService,
1886
- useExisting: SkyResizeObserverMediaQueryService,
1887
- },
1888
- ], template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
1847
+ args: [{ selector: 'sky-tab', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n #tabContentWrapper\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host.sky-layout-host-fit{display:flex;flex-grow:1;position:static}:host.sky-layout-host-fit .sky-tab{flex-grow:1;position:relative}.sky-tab{flex-grow:var(--sky-layout-host-content-flex-grow, 0);overflow:var(--sky-layout-host-content-overflow, visible);padding:var(--sky-layout-host-content-spacing, 0);position:var(--sky-layout-host-content-position, static)}\n"] }]
1889
1848
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: SkyTabsetPermalinkService }, { type: SkyTabsetService }]; }, propDecorators: { active: [{
1890
1849
  type: Input
1891
1850
  }], disabled: [{
@@ -1905,9 +1864,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
1905
1864
  args: ['class']
1906
1865
  }], close: [{
1907
1866
  type: Output
1908
- }], tabContentWrapper: [{
1909
- type: ViewChild,
1910
- args: ['tabContentWrapper']
1911
1867
  }] } });
1912
1868
 
1913
1869
  class SkyTabsetNavButtonDisabledPipe {