@skyux/progress-indicator 7.0.0-beta.9 → 7.0.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.
Files changed (29) hide show
  1. package/documentation.json +547 -426
  2. package/esm2020/lib/modules/progress-indicator/progress-indicator-item/progress-indicator-item.component.mjs +47 -28
  3. package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-class.pipe.mjs +28 -0
  4. package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-disabled.pipe.mjs +19 -0
  5. package/esm2020/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button.component.mjs +73 -90
  6. package/esm2020/lib/modules/progress-indicator/progress-indicator-reset-button/progress-indicator-reset-button.component.mjs +7 -8
  7. package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker-class.pipe.mjs +31 -0
  8. package/esm2020/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker.component.mjs +26 -44
  9. package/esm2020/lib/modules/progress-indicator/progress-indicator-title/progress-indicator-title.component.mjs +4 -4
  10. package/esm2020/lib/modules/progress-indicator/progress-indicator.component.mjs +202 -212
  11. package/esm2020/lib/modules/progress-indicator/progress-indicator.module.mjs +14 -5
  12. package/esm2020/lib/modules/progress-indicator/types/progress-indicator-action-click-progress-handler.mjs +1 -1
  13. package/esm2020/lib/modules/progress-indicator/types/progress-indicator-message.mjs +1 -1
  14. package/esm2020/lib/modules/shared/sky-progress-indicator-resources.module.mjs +5 -5
  15. package/fesm2015/skyux-progress-indicator.mjs +443 -388
  16. package/fesm2015/skyux-progress-indicator.mjs.map +1 -1
  17. package/fesm2020/skyux-progress-indicator.mjs +449 -401
  18. package/fesm2020/skyux-progress-indicator.mjs.map +1 -1
  19. package/lib/modules/progress-indicator/progress-indicator-item/progress-indicator-item.component.d.ts +9 -9
  20. package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-class.pipe.d.ts +7 -0
  21. package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button-disabled.pipe.d.ts +9 -0
  22. package/lib/modules/progress-indicator/progress-indicator-nav-button/progress-indicator-nav-button.component.d.ts +12 -21
  23. package/lib/modules/progress-indicator/progress-indicator-reset-button/progress-indicator-reset-button.component.d.ts +4 -4
  24. package/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker-class.pipe.d.ts +8 -0
  25. package/lib/modules/progress-indicator/progress-indicator-status-marker/progress-indicator-status-marker.component.d.ts +3 -6
  26. package/lib/modules/progress-indicator/progress-indicator.component.d.ts +13 -39
  27. package/lib/modules/progress-indicator/progress-indicator.module.d.ts +14 -11
  28. package/lib/modules/progress-indicator/types/progress-indicator-action-click-progress-handler.d.ts +2 -2
  29. package/package.json +7 -7
@@ -1,69 +1,88 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
1
+ var _SkyProgressIndicatorItemComponent_instances, _SkyProgressIndicatorItemComponent_titlePrefix, _SkyProgressIndicatorItemComponent_changeDetector, _SkyProgressIndicatorItemComponent__title, _SkyProgressIndicatorItemComponent__status, _SkyProgressIndicatorItemComponent_updateFormattedTitle;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
4
  import { SkyProgressIndicatorItemStatus } from '../types/progress-indicator-item-status';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "@angular/common";
5
7
  import * as i2 from "@skyux/theme";
6
8
  import * as i3 from "@skyux/core";
7
9
  import * as i4 from "../progress-indicator-status-marker/progress-indicator-status-marker.component";
10
+ const STATUS_DEFAULT = SkyProgressIndicatorItemStatus.Incomplete;
11
+ const STATUS_NAME_DEFAULT = 'incomplete';
8
12
  /**
9
13
  * Specifies a step to include in the progress indicator. Each step requires a label,
10
14
  * and you can also specify step details within the `sky-progress-indicator-item` element.
11
15
  */
12
16
  export class SkyProgressIndicatorItemComponent {
13
17
  constructor(changeDetector) {
14
- this.changeDetector = changeDetector;
18
+ _SkyProgressIndicatorItemComponent_instances.add(this);
15
19
  this.isVisible = false;
16
20
  this.showStatusMarker = true;
17
21
  this.showTitle = true;
22
+ this.statusName = STATUS_NAME_DEFAULT;
23
+ _SkyProgressIndicatorItemComponent_titlePrefix.set(this, void 0);
24
+ _SkyProgressIndicatorItemComponent_changeDetector.set(this, void 0);
25
+ _SkyProgressIndicatorItemComponent__title.set(this, void 0);
26
+ _SkyProgressIndicatorItemComponent__status.set(this, STATUS_DEFAULT);
27
+ __classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_changeDetector, changeDetector, "f");
18
28
  }
19
- get formattedTitle() {
20
- return `${this.titlePrefix}${this.title}`;
29
+ /**
30
+ * Specifies a step label for the step in the progress indicator.
31
+ * @required
32
+ */
33
+ set title(value) {
34
+ __classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent__title, value, "f");
35
+ __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
21
36
  }
22
- get status() {
23
- /* istanbul ignore next */
24
- if (this._status === undefined) {
25
- return SkyProgressIndicatorItemStatus.Incomplete;
26
- }
27
- return this._status;
37
+ get title() {
38
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__title, "f");
28
39
  }
29
40
  set status(value) {
30
- if (value === this._status) {
41
+ if (value === __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f")) {
31
42
  return;
32
43
  }
33
- this._status = value;
34
- this.changeDetector.markForCheck();
35
- }
36
- get statusName() {
37
- let name;
38
- switch (this.status) {
44
+ /* istanbul ignore next */
45
+ __classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent__status, value ?? STATUS_DEFAULT, "f");
46
+ switch (__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f")) {
39
47
  case SkyProgressIndicatorItemStatus.Active:
40
- name = 'active';
48
+ this.statusName = 'active';
41
49
  break;
42
50
  case SkyProgressIndicatorItemStatus.Complete:
43
- name = 'complete';
51
+ this.statusName = 'complete';
44
52
  break;
45
53
  case SkyProgressIndicatorItemStatus.Incomplete:
46
- name = 'incomplete';
54
+ this.statusName = 'incomplete';
47
55
  break;
48
56
  case SkyProgressIndicatorItemStatus.Pending:
49
- name = 'pending';
57
+ this.statusName = 'pending';
50
58
  break;
51
59
  }
52
- return name;
60
+ __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_changeDetector, "f").markForCheck();
61
+ }
62
+ get status() {
63
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent__status, "f");
64
+ }
65
+ ngOnInit() {
66
+ __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
53
67
  }
54
68
  showStepNumber(step) {
55
- this.titlePrefix = `${step} - `;
69
+ __classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_titlePrefix, `${step} - `, "f");
70
+ __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
56
71
  }
57
72
  hideStepNumber() {
58
- this.titlePrefix = '';
73
+ __classPrivateFieldSet(this, _SkyProgressIndicatorItemComponent_titlePrefix, '', "f");
74
+ __classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_instances, "m", _SkyProgressIndicatorItemComponent_updateFormattedTitle).call(this);
59
75
  }
60
76
  }
61
- SkyProgressIndicatorItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyProgressIndicatorItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
62
- SkyProgressIndicatorItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyProgressIndicatorItemComponent, selector: "sky-progress-indicator-item", inputs: { title: "title" }, ngImport: i0, template: "<div\n *ngIf=\"isVisible\"\n class=\"sky-progress-indicator-item\"\n [ngClass]=\"'sky-progress-indicator-item-status-' + statusName\"\n>\n <sky-progress-indicator-status-marker\n *ngIf=\"showStatusMarker\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n\n <div class=\"sky-progress-indicator-item-content\">\n <div\n *ngIf=\"showTitle\"\n aria-level=\"2\"\n class=\"sky-progress-indicator-item-heading\"\n role=\"heading\"\n [ngClass]=\"{\n 'sky-deemphasized': statusName === 'pending'\n }\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n >\n {{ formattedTitle }}\n <span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n ></span>\n </div>\n <div class=\"sky-progress-indicator-item-body\">\n <ng-template [ngIf]=\"statusName !== 'incomplete'\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".sky-progress-indicator-item{display:flex;margin-bottom:-1px}.sky-progress-indicator-item-content{flex:1 1 100%}.sky-progress-indicator-item-body{min-height:20px;padding-top:10px;padding-bottom:30px}.sky-progress-indicator-item-status-incomplete .sky-progress-indicator-item-body{padding:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item{margin:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body{padding:20px 0 30px}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body:empty{padding:0}.sky-theme-modern .sky-progress-indicator-item{margin:0}.sky-theme-modern .sky-progress-indicator-item-body{padding:20px 0 30px}.sky-theme-modern .sky-progress-indicator-item-body:empty{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i3.λ4, selector: "[skyTrim]" }, { kind: "component", type: i4.SkyProgressIndicatorStatusMarkerComponent, selector: "sky-progress-indicator-status-marker", inputs: ["displayMode", "status"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyProgressIndicatorItemComponent, decorators: [{
77
+ _SkyProgressIndicatorItemComponent_titlePrefix = new WeakMap(), _SkyProgressIndicatorItemComponent_changeDetector = new WeakMap(), _SkyProgressIndicatorItemComponent__title = new WeakMap(), _SkyProgressIndicatorItemComponent__status = new WeakMap(), _SkyProgressIndicatorItemComponent_instances = new WeakSet(), _SkyProgressIndicatorItemComponent_updateFormattedTitle = function _SkyProgressIndicatorItemComponent_updateFormattedTitle() {
78
+ this.formattedTitle = `${__classPrivateFieldGet(this, _SkyProgressIndicatorItemComponent_titlePrefix, "f")}${this.title}`;
79
+ };
80
+ SkyProgressIndicatorItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorItemComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
81
+ SkyProgressIndicatorItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyProgressIndicatorItemComponent, selector: "sky-progress-indicator-item", inputs: { title: "title" }, ngImport: i0, template: "<div\n *ngIf=\"isVisible\"\n class=\"sky-progress-indicator-item\"\n [ngClass]=\"'sky-progress-indicator-item-status-' + statusName\"\n>\n <sky-progress-indicator-status-marker\n *ngIf=\"showStatusMarker\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n\n <div class=\"sky-progress-indicator-item-content\">\n <div\n *ngIf=\"showTitle\"\n aria-level=\"2\"\n class=\"sky-progress-indicator-item-heading\"\n role=\"heading\"\n [ngClass]=\"{\n 'sky-deemphasized': statusName === 'pending'\n }\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n >\n {{ formattedTitle }}\n <span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n ></span>\n </div>\n <div class=\"sky-progress-indicator-item-body\">\n <ng-template [ngIf]=\"statusName !== 'incomplete'\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".sky-progress-indicator-item{display:flex;margin-bottom:-1px}.sky-progress-indicator-item-content{flex:1 1 100%}.sky-progress-indicator-item-body{min-height:20px;padding-top:10px;padding-bottom:30px}.sky-progress-indicator-item-status-incomplete .sky-progress-indicator-item-body{padding:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item{margin:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body{padding:20px 0 30px}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body:empty{padding:0}.sky-theme-modern .sky-progress-indicator-item{margin:0}.sky-theme-modern .sky-progress-indicator-item-body{padding:20px 0 30px}.sky-theme-modern .sky-progress-indicator-item-body:empty{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.λ2, selector: "[skyThemeClass]", inputs: ["class", "skyThemeClass"] }, { kind: "directive", type: i3.λ4, selector: "[skyTrim]" }, { kind: "component", type: i4.SkyProgressIndicatorStatusMarkerComponent, selector: "sky-progress-indicator-status-marker", inputs: ["displayMode", "status"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorItemComponent, decorators: [{
64
83
  type: Component,
65
84
  args: [{ selector: 'sky-progress-indicator-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"isVisible\"\n class=\"sky-progress-indicator-item\"\n [ngClass]=\"'sky-progress-indicator-item-status-' + statusName\"\n>\n <sky-progress-indicator-status-marker\n *ngIf=\"showStatusMarker\"\n [status]=\"status\"\n >\n </sky-progress-indicator-status-marker>\n\n <div class=\"sky-progress-indicator-item-content\">\n <div\n *ngIf=\"showTitle\"\n aria-level=\"2\"\n class=\"sky-progress-indicator-item-heading\"\n role=\"heading\"\n [ngClass]=\"{\n 'sky-deemphasized': statusName === 'pending'\n }\"\n [skyThemeClass]=\"{\n 'sky-font-display-3': 'modern'\n }\"\n skyTrim\n >\n {{ formattedTitle }}\n <span class=\"sky-control-help-container\" skyTrim\n ><ng-content select=\".sky-control-help\"></ng-content\n ></span>\n </div>\n <div class=\"sky-progress-indicator-item-body\">\n <ng-template [ngIf]=\"statusName !== 'incomplete'\">\n <ng-content></ng-content>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".sky-progress-indicator-item{display:flex;margin-bottom:-1px}.sky-progress-indicator-item-content{flex:1 1 100%}.sky-progress-indicator-item-body{min-height:20px;padding-top:10px;padding-bottom:30px}.sky-progress-indicator-item-status-incomplete .sky-progress-indicator-item-body{padding:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item{margin:0}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body{padding:20px 0 30px}:host-context(.sky-theme-modern) .sky-progress-indicator-item-body:empty{padding:0}.sky-theme-modern .sky-progress-indicator-item{margin:0}.sky-theme-modern .sky-progress-indicator-item-body{padding:20px 0 30px}.sky-theme-modern .sky-progress-indicator-item-body:empty{padding:0}\n"] }]
66
85
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { title: [{
67
86
  type: Input
68
87
  }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1pdGVtL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7QUFFekY7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGlDQUFpQztJQThENUMsWUFBb0IsY0FBaUM7UUFBakMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBUjlDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxJQUFJLENBQUM7SUFNZ0MsQ0FBQztJQXREekQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDOUIsT0FBTyw4QkFBOEIsQ0FBQyxVQUFVLENBQUM7U0FDbEQ7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsTUFBTSxDQUFDLEtBQXFDO1FBQ3JELElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDMUIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLElBQUksSUFBWSxDQUFDO1FBRWpCLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLDhCQUE4QixDQUFDLE1BQU07Z0JBQ3hDLElBQUksR0FBRyxRQUFRLENBQUM7Z0JBQ2hCLE1BQU07WUFFUixLQUFLLDhCQUE4QixDQUFDLFFBQVE7Z0JBQzFDLElBQUksR0FBRyxVQUFVLENBQUM7Z0JBQ2xCLE1BQU07WUFFUixLQUFLLDhCQUE4QixDQUFDLFVBQVU7Z0JBQzVDLElBQUksR0FBRyxZQUFZLENBQUM7Z0JBQ3BCLE1BQU07WUFFUixLQUFLLDhCQUE4QixDQUFDLE9BQU87Z0JBQ3pDLElBQUksR0FBRyxTQUFTLENBQUM7Z0JBQ2pCLE1BQU07U0FDVDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVlNLGNBQWMsQ0FBQyxJQUFZO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDOzs4SEF0RVUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsK0ZDbkI5Qyx5aENBcUNBOzJGRGxCYSxpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0UsNkJBQTZCLG1CQUd0Qix1QkFBdUIsQ0FBQyxNQUFNO3dHQVF4QyxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS1zdGF0dXMnO1xuXG4vKipcbiAqIFNwZWNpZmllcyBhIHN0ZXAgdG8gaW5jbHVkZSBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLiBFYWNoIHN0ZXAgcmVxdWlyZXMgYSBsYWJlbCxcbiAqIGFuZCB5b3UgY2FuIGFsc28gc3BlY2lmeSBzdGVwIGRldGFpbHMgd2l0aGluIHRoZSBgc2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtYCBlbGVtZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHN0ZXAgbGFiZWwgZm9yIHRoZSBzdGVwIGluIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IuXG4gICAqIEByZXF1aXJlZFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBmb3JtYXR0ZWRUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnRpdGxlUHJlZml4fSR7dGhpcy50aXRsZX1gO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0dXMoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICh0aGlzLl9zdGF0dXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHN0YXR1cyh2YWx1ZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzKSB7XG4gICAgaWYgKHZhbHVlID09PSB0aGlzLl9zdGF0dXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0dXMgPSB2YWx1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdGF0dXNOYW1lKCk6IHN0cmluZyB7XG4gICAgbGV0IG5hbWU6IHN0cmluZztcblxuICAgIHN3aXRjaCAodGhpcy5zdGF0dXMpIHtcbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzLkFjdGl2ZTpcbiAgICAgICAgbmFtZSA9ICdhY3RpdmUnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQ29tcGxldGU6XG4gICAgICAgIG5hbWUgPSAnY29tcGxldGUnO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuSW5jb21wbGV0ZTpcbiAgICAgICAgbmFtZSA9ICdpbmNvbXBsZXRlJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzLlBlbmRpbmc6XG4gICAgICAgIG5hbWUgPSAncGVuZGluZyc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1N0YXR1c01hcmtlciA9IHRydWU7XG4gIHB1YmxpYyBzaG93VGl0bGUgPSB0cnVlO1xuXG4gIHByaXZhdGUgdGl0bGVQcmVmaXg6IHN0cmluZztcblxuICBwcml2YXRlIF9zdGF0dXM6IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBwdWJsaWMgc2hvd1N0ZXBOdW1iZXIoc3RlcDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50aXRsZVByZWZpeCA9IGAke3N0ZXB9IC0gYDtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlU3RlcE51bWJlcigpOiB2b2lkIHtcbiAgICB0aGlzLnRpdGxlUHJlZml4ID0gJyc7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJpc1Zpc2libGVcIlxuICBjbGFzcz1cInNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tc3RhdHVzLScgKyBzdGF0dXNOYW1lXCJcbj5cbiAgPHNreS1wcm9ncmVzcy1pbmRpY2F0b3Itc3RhdHVzLW1hcmtlclxuICAgICpuZ0lmPVwic2hvd1N0YXR1c01hcmtlclwiXG4gICAgW3N0YXR1c109XCJzdGF0dXNcIlxuICA+XG4gIDwvc2t5LXByb2dyZXNzLWluZGljYXRvci1zdGF0dXMtbWFya2VyPlxuXG4gIDxkaXYgY2xhc3M9XCJza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tY29udGVudFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2hvd1RpdGxlXCJcbiAgICAgIGFyaWEtbGV2ZWw9XCIyXCJcbiAgICAgIGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWhlYWRpbmdcIlxuICAgICAgcm9sZT1cImhlYWRpbmdcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6IHN0YXR1c05hbWUgPT09ICdwZW5kaW5nJ1xuICAgICAgfVwiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICBza3lUcmltXG4gICAgPlxuICAgICAge3sgZm9ybWF0dGVkVGl0bGUgfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIiBza3lUcmltXG4gICAgICAgID48bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiPjwvbmctY29udGVudFxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXNOYW1lICE9PSAnaW5jb21wbGV0ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1pdGVtL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7O0FBRXpGLE1BQU0sY0FBYyxHQUFHLDhCQUE4QixDQUFDLFVBQVUsQ0FBQztBQUNqRSxNQUFNLG1CQUFtQixHQUFHLFlBQVksQ0FBQztBQUV6Qzs7O0dBR0c7QUFPSCxNQUFNLE9BQU8saUNBQWlDO0lBeUQ1QyxZQUFZLGNBQWlDOztRQVh0QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxtQkFBbUIsQ0FBQztRQUV4QyxpRUFBaUM7UUFDakMsb0VBQW1DO1FBRW5DLDREQUE0QjtRQUM1QixxREFBVyxjQUFjLEVBQUM7UUFHeEIsdUJBQUEsSUFBSSxxREFBbUIsY0FBYyxNQUFBLENBQUM7SUFDeEMsQ0FBQztJQTFERDs7O09BR0c7SUFDSCxJQUNXLEtBQUssQ0FBQyxLQUF5QjtRQUN4Qyx1QkFBQSxJQUFJLDZDQUFXLEtBQUssTUFBQSxDQUFDO1FBQ3JCLHVCQUFBLElBQUksNkdBQXNCLE1BQTFCLElBQUksQ0FBd0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyx1QkFBQSxJQUFJLGlEQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsTUFBTSxDQUFDLEtBQWlEO1FBQ2pFLElBQUksS0FBSyxLQUFLLHVCQUFBLElBQUksa0RBQVMsRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCwwQkFBMEI7UUFDMUIsdUJBQUEsSUFBSSw4Q0FBWSxLQUFLLElBQUksY0FBYyxNQUFBLENBQUM7UUFFeEMsUUFBUSx1QkFBQSxJQUFJLGtEQUFTLEVBQUU7WUFDckIsS0FBSyw4QkFBOEIsQ0FBQyxNQUFNO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQztnQkFDM0IsTUFBTTtZQUNSLEtBQUssOEJBQThCLENBQUMsUUFBUTtnQkFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLDhCQUE4QixDQUFDLFVBQVU7Z0JBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyw4QkFBOEIsQ0FBQyxPQUFPO2dCQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztnQkFDNUIsTUFBTTtTQUNUO1FBRUQsdUJBQUEsSUFBSSx5REFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyx1QkFBQSxJQUFJLGtEQUFTLENBQUM7SUFDdkIsQ0FBQztJQWtCTSxRQUFRO1FBQ2IsdUJBQUEsSUFBSSw2R0FBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBQy9CLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyx1QkFBQSxJQUFJLGtEQUFnQixHQUFHLElBQUksS0FBSyxNQUFBLENBQUM7UUFDakMsdUJBQUEsSUFBSSw2R0FBc0IsTUFBMUIsSUFBSSxDQUF3QixDQUFDO0lBQy9CLENBQUM7SUFFTSxjQUFjO1FBQ25CLHVCQUFBLElBQUksa0RBQWdCLEVBQUUsTUFBQSxDQUFDO1FBQ3ZCLHVCQUFBLElBQUksNkdBQXNCLE1BQTFCLElBQUksQ0FBd0IsQ0FBQztJQUMvQixDQUFDOzs7SUFHQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsdUJBQUEsSUFBSSxzREFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1RCxDQUFDOytIQTdFVSxpQ0FBaUM7bUhBQWpDLGlDQUFpQywrRkN2QjlDLHloQ0FxQ0E7NEZEZGEsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLDZCQUE2QixtQkFHdEIsdUJBQXVCLENBQUMsTUFBTTt3R0FRcEMsS0FBSztzQkFEZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbS1zdGF0dXMnO1xuXG5jb25zdCBTVEFUVVNfREVGQVVMVCA9IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlO1xuY29uc3QgU1RBVFVTX05BTUVfREVGQVVMVCA9ICdpbmNvbXBsZXRlJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgYSBzdGVwIHRvIGluY2x1ZGUgaW4gdGhlIHByb2dyZXNzIGluZGljYXRvci4gRWFjaCBzdGVwIHJlcXVpcmVzIGEgbGFiZWwsXG4gKiBhbmQgeW91IGNhbiBhbHNvIHNwZWNpZnkgc3RlcCBkZXRhaWxzIHdpdGhpbiB0aGUgYHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbWAgZWxlbWVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBzdGVwIGxhYmVsIGZvciB0aGUgc3RlcCBpbiB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGl0bGUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI190aXRsZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvcm1hdHRlZFRpdGxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpdGxlKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI190aXRsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc3RhdHVzKHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHRoaXMuI19zdGF0dXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHRoaXMuI19zdGF0dXMgPSB2YWx1ZSA/PyBTVEFUVVNfREVGQVVMVDtcblxuICAgIHN3aXRjaCAodGhpcy4jX3N0YXR1cykge1xuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuQWN0aXZlOlxuICAgICAgICB0aGlzLnN0YXR1c05hbWUgPSAnYWN0aXZlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5Db21wbGV0ZTpcbiAgICAgICAgdGhpcy5zdGF0dXNOYW1lID0gJ2NvbXBsZXRlJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cy5JbmNvbXBsZXRlOlxuICAgICAgICB0aGlzLnN0YXR1c05hbWUgPSAnaW5jb21wbGV0ZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTa3lQcm9ncmVzc0luZGljYXRvckl0ZW1TdGF0dXMuUGVuZGluZzpcbiAgICAgICAgdGhpcy5zdGF0dXNOYW1lID0gJ3BlbmRpbmcnO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdHVzKCk6IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cyB7XG4gICAgcmV0dXJuIHRoaXMuI19zdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0dGVkVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHVibGljIGlzVmlzaWJsZSA9IGZhbHNlO1xuICBwdWJsaWMgc2hvd1N0YXR1c01hcmtlciA9IHRydWU7XG4gIHB1YmxpYyBzaG93VGl0bGUgPSB0cnVlO1xuICBwdWJsaWMgc3RhdHVzTmFtZSA9IFNUQVRVU19OQU1FX0RFRkFVTFQ7XG5cbiAgI3RpdGxlUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICNjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgI190aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3N0YXR1cyA9IFNUQVRVU19ERUZBVUxUO1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVGl0bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93U3RlcE51bWJlcihzdGVwOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLiN0aXRsZVByZWZpeCA9IGAke3N0ZXB9IC0gYDtcbiAgICB0aGlzLiN1cGRhdGVGb3JtYXR0ZWRUaXRsZSgpO1xuICB9XG5cbiAgcHVibGljIGhpZGVTdGVwTnVtYmVyKCk6IHZvaWQge1xuICAgIHRoaXMuI3RpdGxlUHJlZml4ID0gJyc7XG4gICAgdGhpcy4jdXBkYXRlRm9ybWF0dGVkVGl0bGUoKTtcbiAgfVxuXG4gICN1cGRhdGVGb3JtYXR0ZWRUaXRsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1hdHRlZFRpdGxlID0gYCR7dGhpcy4jdGl0bGVQcmVmaXh9JHt0aGlzLnRpdGxlfWA7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKm5nSWY9XCJpc1Zpc2libGVcIlxuICBjbGFzcz1cInNreS1wcm9ncmVzcy1pbmRpY2F0b3ItaXRlbVwiXG4gIFtuZ0NsYXNzXT1cIidza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tc3RhdHVzLScgKyBzdGF0dXNOYW1lXCJcbj5cbiAgPHNreS1wcm9ncmVzcy1pbmRpY2F0b3Itc3RhdHVzLW1hcmtlclxuICAgICpuZ0lmPVwic2hvd1N0YXR1c01hcmtlclwiXG4gICAgW3N0YXR1c109XCJzdGF0dXNcIlxuICA+XG4gIDwvc2t5LXByb2dyZXNzLWluZGljYXRvci1zdGF0dXMtbWFya2VyPlxuXG4gIDxkaXYgY2xhc3M9XCJza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLWl0ZW0tY29udGVudFwiPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwic2hvd1RpdGxlXCJcbiAgICAgIGFyaWEtbGV2ZWw9XCIyXCJcbiAgICAgIGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWhlYWRpbmdcIlxuICAgICAgcm9sZT1cImhlYWRpbmdcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnc2t5LWRlZW1waGFzaXplZCc6IHN0YXR1c05hbWUgPT09ICdwZW5kaW5nJ1xuICAgICAgfVwiXG4gICAgICBbc2t5VGhlbWVDbGFzc109XCJ7XG4gICAgICAgICdza3ktZm9udC1kaXNwbGF5LTMnOiAnbW9kZXJuJ1xuICAgICAgfVwiXG4gICAgICBza3lUcmltXG4gICAgPlxuICAgICAge3sgZm9ybWF0dGVkVGl0bGUgfX1cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LWNvbnRyb2wtaGVscC1jb250YWluZXJcIiBza3lUcmltXG4gICAgICAgID48bmctY29udGVudCBzZWxlY3Q9XCIuc2t5LWNvbnRyb2wtaGVscFwiPjwvbmctY29udGVudFxuICAgICAgPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXByb2dyZXNzLWluZGljYXRvci1pdGVtLWJvZHlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXNOYW1lICE9PSAnaW5jb21wbGV0ZSdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SkyProgressIndicatorNavButtonClass {
4
+ transform(buttonType) {
5
+ const classNames = [`sky-progress-indicator-nav-button-${buttonType}`];
6
+ switch (buttonType) {
7
+ case 'next':
8
+ case 'finish':
9
+ classNames.push('sky-btn-primary');
10
+ break;
11
+ case 'reset':
12
+ classNames.push('sky-btn-link');
13
+ break;
14
+ default:
15
+ classNames.push('sky-btn-default');
16
+ }
17
+ return classNames;
18
+ }
19
+ }
20
+ SkyProgressIndicatorNavButtonClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
21
+ SkyProgressIndicatorNavButtonClass.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, name: "skyProgressIndicatorNavButtonClass" });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonClass, decorators: [{
23
+ type: Pipe,
24
+ args: [{
25
+ name: 'skyProgressIndicatorNavButtonClass',
26
+ }]
27
+ }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24tY2xhc3MucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi1jbGFzcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUtwRCxNQUFNLE9BQU8sa0NBQWtDO0lBQ3RDLFNBQVMsQ0FBQyxVQUFrQjtRQUNqQyxNQUFNLFVBQVUsR0FBRyxDQUFDLHFDQUFxQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXZFLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxRQUFRO2dCQUNYLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssT0FBTztnQkFDVixVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNoQyxNQUFNO1lBQ1I7Z0JBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7Z0lBakJVLGtDQUFrQzs4SEFBbEMsa0NBQWtDOzRGQUFsQyxrQ0FBa0M7a0JBSDlDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG9DQUFvQztpQkFDM0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3NreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uQ2xhc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvbkNsYXNzIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oYnV0dG9uVHlwZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGNsYXNzTmFtZXMgPSBbYHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi0ke2J1dHRvblR5cGV9YF07XG5cbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGUpIHtcbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgY2FzZSAnZmluaXNoJzpcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdza3ktYnRuLXByaW1hcnknKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1saW5rJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdza3ktYnRuLWRlZmF1bHQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcztcbiAgfVxufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SkyProgressIndicatorNavButtonDisabledPipe {
4
+ transform(disabled, buttonType, activeIndex, itemStatuses) {
5
+ const isLastStep = itemStatuses && activeIndex === itemStatuses.length - 1;
6
+ return ((buttonType === 'next' && isLastStep) ||
7
+ (buttonType === 'previous' && activeIndex === 0) ||
8
+ disabled);
9
+ }
10
+ }
11
+ SkyProgressIndicatorNavButtonDisabledPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
12
+ SkyProgressIndicatorNavButtonDisabledPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, name: "skyProgressIndicatorNavButtonDisabled" });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonDisabledPipe, decorators: [{
14
+ type: Pipe,
15
+ args: [{
16
+ name: 'skyProgressIndicatorNavButtonDisabled',
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24tZGlzYWJsZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi1kaXNhYmxlZC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQVFwRCxNQUFNLE9BQU8seUNBQXlDO0lBRzdDLFNBQVMsQ0FDZCxRQUE2QixFQUM3QixVQUE2QyxFQUM3QyxXQUErQixFQUMvQixZQUEwRDtRQUUxRCxNQUFNLFVBQVUsR0FBRyxZQUFZLElBQUksV0FBVyxLQUFLLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sQ0FDTCxDQUFDLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxDQUFDO1lBQ3JDLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDO1lBQ2hELFFBQVEsQ0FDVCxDQUFDO0lBQ0osQ0FBQzs7dUlBaEJVLHlDQUF5QztxSUFBekMseUNBQXlDOzRGQUF6Qyx5Q0FBeUM7a0JBSHJELElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHVDQUF1QztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9ySXRlbVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1pdGVtLXN0YXR1cyc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi10eXBlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25EaXNhYmxlZCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uRGlzYWJsZWRQaXBlXG4gIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybVxue1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICAgIGJ1dHRvblR5cGU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSxcbiAgICBhY3RpdmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGl0ZW1TdGF0dXNlczogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JJdGVtU3RhdHVzW10gfCB1bmRlZmluZWRcbiAgKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaXNMYXN0U3RlcCA9IGl0ZW1TdGF0dXNlcyAmJiBhY3RpdmVJbmRleCA9PT0gaXRlbVN0YXR1c2VzLmxlbmd0aCAtIDE7XG5cbiAgICByZXR1cm4gKFxuICAgICAgKGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJiBpc0xhc3RTdGVwKSB8fFxuICAgICAgKGJ1dHRvblR5cGUgPT09ICdwcmV2aW91cycgJiYgYWN0aXZlSW5kZXggPT09IDApIHx8XG4gICAgICBkaXNhYmxlZFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,28 +1,40 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Optional, Output, } from '@angular/core';
1
+ var _SkyProgressIndicatorNavButtonComponent_instances, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, _SkyProgressIndicatorNavButtonComponent_parentTimeout, _SkyProgressIndicatorNavButtonComponent__buttonType, _SkyProgressIndicatorNavButtonComponent__disabled, _SkyProgressIndicatorNavButtonComponent__isVisible, _SkyProgressIndicatorNavButtonComponent__progressIndicator, _SkyProgressIndicatorNavButtonComponent_changeDetector, _SkyProgressIndicatorNavButtonComponent_parentComponent, _SkyProgressIndicatorNavButtonComponent_sendMessage, _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, } from '@angular/core';
2
4
  import { Subject } from 'rxjs';
3
5
  import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
4
- import { SkyProgressIndicatorComponent } from '../progress-indicator.component';
5
6
  import { SkyProgressIndicatorActionClickProgressHandler } from '../types/progress-indicator-action-click-progress-handler';
6
7
  import { SkyProgressIndicatorMessageType } from '../types/progress-indicator-message-type';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "../progress-indicator.component";
9
10
  import * as i2 from "@angular/common";
10
11
  import * as i3 from "@skyux/i18n";
12
+ import * as i4 from "./progress-indicator-nav-button-class.pipe";
13
+ import * as i5 from "./progress-indicator-nav-button-disabled.pipe";
14
+ const BUTTON_TYPE_DEFAULT = 'next';
11
15
  /**
12
16
  * Displays a button to navigate the steps in modal wizards. We recommend against using it in
13
17
  * passive progress indicators and waterfall progress indicators.
14
18
  */
15
19
  export class SkyProgressIndicatorNavButtonComponent {
16
20
  constructor(changeDetector, parentComponent) {
17
- this.changeDetector = changeDetector;
18
- this.parentComponent = parentComponent;
21
+ _SkyProgressIndicatorNavButtonComponent_instances.add(this);
19
22
  /**
20
23
  * Fires when users select the nav button and emits a `SkyProgressIndicatorActionClickArgs`
21
24
  * object that is passed into the callback function to allow consumers to decide whether
22
25
  * the button’s action should complete successfully.
23
26
  */
24
27
  this.actionClick = new EventEmitter();
25
- this.ngUnsubscribe = new Subject();
28
+ _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe.set(this, new Subject());
29
+ _SkyProgressIndicatorNavButtonComponent_parentTimeout.set(this, void 0);
30
+ _SkyProgressIndicatorNavButtonComponent__buttonType.set(this, BUTTON_TYPE_DEFAULT);
31
+ _SkyProgressIndicatorNavButtonComponent__disabled.set(this, void 0);
32
+ _SkyProgressIndicatorNavButtonComponent__isVisible.set(this, void 0);
33
+ _SkyProgressIndicatorNavButtonComponent__progressIndicator.set(this, void 0);
34
+ _SkyProgressIndicatorNavButtonComponent_changeDetector.set(this, void 0);
35
+ _SkyProgressIndicatorNavButtonComponent_parentComponent.set(this, void 0);
36
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, changeDetector, "f");
37
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, parentComponent, "f");
26
38
  }
27
39
  /**
28
40
  * Specifies the type of nav button to include.
@@ -30,57 +42,45 @@ export class SkyProgressIndicatorNavButtonComponent {
30
42
  * @default "next"
31
43
  */
32
44
  set buttonType(value) {
33
- this._buttonType = value;
45
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__buttonType, value || BUTTON_TYPE_DEFAULT, "f");
34
46
  }
35
47
  get buttonType() {
36
- if (this._buttonType === undefined) {
37
- return 'next';
38
- }
39
- return this._buttonType;
48
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__buttonType, "f");
40
49
  }
41
50
  /**
42
51
  * Indicates whether to disable the nav button.
43
52
  * @default false
44
53
  */
45
54
  set disabled(value) {
46
- this._disabled = value;
47
- this.changeDetector.markForCheck();
55
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__disabled, value, "f");
56
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, "f").markForCheck();
48
57
  }
49
58
  get disabled() {
50
- const buttonType = this.buttonType;
51
- const activeIndex = this.lastProgressChange.activeIndex;
52
- const isLastStep = activeIndex === this.lastProgressChange.itemStatuses.length - 1;
53
- if (buttonType === 'previous' && activeIndex === 0) {
54
- return true;
55
- }
56
- if (buttonType === 'next' && isLastStep) {
57
- return true;
58
- }
59
- return this._disabled || false;
59
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__disabled, "f");
60
60
  }
61
61
  /**
62
62
  * Specifies the progress indicator component to associate with the nav button.
63
63
  * @required
64
64
  */
65
65
  set progressIndicator(value) {
66
- this._progressIndicator = value;
67
- if (value) {
66
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, value, "f");
67
+ if (__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f")) {
68
68
  if (this.buttonType === 'finish') {
69
69
  // The `hasFinishButton` field was added to support legacy API.
70
70
  // Some implementations only include a next button; we cannot
71
71
  // assume that every implementation includes both a finish button and a next button.
72
- this._progressIndicator.hasFinishButton = true;
72
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f").hasFinishButton = true;
73
73
  }
74
- this._progressIndicator.progressChanges
75
- .pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe))
74
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f").progressChanges
75
+ .pipe(distinctUntilChanged(), takeUntil(__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f")))
76
76
  .subscribe((change) => {
77
77
  this.lastProgressChange = change;
78
- this.updateButtonVisibility(change);
78
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility).call(this, change);
79
79
  });
80
80
  }
81
81
  else {
82
- if (!this.parentTimeout) {
83
- this.parentTimeout = window.setTimeout(() => {
82
+ if (!__classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentTimeout, "f")) {
83
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent_parentTimeout, window.setTimeout(() => {
84
84
  /* istanbul ignore else */
85
85
  if (!this.progressIndicator) {
86
86
  throw new Error('The `<sky-progress-indicator-nav-button>` component requires a reference to ' +
@@ -94,51 +94,31 @@ export class SkyProgressIndicatorNavButtonComponent {
94
94
  '>\n' +
95
95
  '</sky-progress-indicator-nav-button>');
96
96
  }
97
- }, 50);
97
+ }, 50), "f");
98
98
  }
99
99
  }
100
100
  }
101
101
  get progressIndicator() {
102
- return this._progressIndicator;
103
- }
104
- get cssClassNames() {
105
- const buttonType = this.buttonType;
106
- const classNames = [`sky-progress-indicator-nav-button-${this.buttonType}`];
107
- switch (buttonType) {
108
- case 'next':
109
- case 'finish':
110
- classNames.push('sky-btn-primary');
111
- break;
112
- case 'reset':
113
- classNames.push('sky-btn-link');
114
- break;
115
- default:
116
- classNames.push('sky-btn-default');
117
- break;
118
- }
119
- return classNames.join(' ');
120
- }
121
- get buttonLabelResourceString() {
122
- return `skyux_progress_indicator_navigator_${this.buttonType}`;
102
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__progressIndicator, "f");
123
103
  }
124
104
  set isVisible(value) {
125
- this._isVisible = value;
126
- this.changeDetector.markForCheck();
105
+ __classPrivateFieldSet(this, _SkyProgressIndicatorNavButtonComponent__isVisible, value, "f");
106
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_changeDetector, "f").markForCheck();
127
107
  }
128
108
  get isVisible() {
129
- return this._isVisible || false;
109
+ return __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent__isVisible, "f");
130
110
  }
131
111
  ngAfterViewInit() {
132
- if (!this.progressIndicator && this.parentComponent) {
133
- this.progressIndicator = this.parentComponent;
112
+ if (!this.progressIndicator && __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, "f")) {
113
+ this.progressIndicator = __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_parentComponent, "f");
134
114
  }
135
115
  else if (!this.progressIndicator) {
136
116
  this.progressIndicator = undefined;
137
117
  }
138
118
  }
139
119
  ngOnDestroy() {
140
- this.ngUnsubscribe.next();
141
- this.ngUnsubscribe.complete();
120
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f").next();
121
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe, "f").complete();
142
122
  this.actionClick.complete();
143
123
  }
144
124
  onClick(event) {
@@ -157,8 +137,6 @@ export class SkyProgressIndicatorNavButtonComponent {
157
137
  case 'reset':
158
138
  type = SkyProgressIndicatorMessageType.Reset;
159
139
  break;
160
- default:
161
- break;
162
140
  }
163
141
  // If the consumer has subscribed to the `actionClick` event,
164
142
  // allow them to decide when to advance to the next step.
@@ -166,42 +144,47 @@ export class SkyProgressIndicatorNavButtonComponent {
166
144
  this.actionClick.emit({
167
145
  event,
168
146
  progressHandler: new SkyProgressIndicatorActionClickProgressHandler(() => {
169
- this.progressIndicator.sendMessage({ type });
147
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_sendMessage).call(this, type);
170
148
  }),
171
149
  });
172
150
  }
173
151
  else {
174
- this.progressIndicator.sendMessage({ type });
175
- }
176
- }
177
- updateButtonVisibility(change) {
178
- const isLastStep = change.activeIndex === change.itemStatuses.length - 1;
179
- const buttonType = this.buttonType;
180
- // Hide the button if all steps are complete
181
- // (except for the reset button)
182
- if (buttonType !== 'reset' && change.isComplete) {
183
- this.isVisible = false;
184
- return;
185
- }
186
- if (buttonType === 'finish') {
187
- this.isVisible = isLastStep;
188
- return;
152
+ __classPrivateFieldGet(this, _SkyProgressIndicatorNavButtonComponent_instances, "m", _SkyProgressIndicatorNavButtonComponent_sendMessage).call(this, type);
189
153
  }
190
- // Hide the next button on the last step only if a finish button exists.
191
- if (buttonType === 'next' &&
192
- isLastStep &&
193
- this.progressIndicator.hasFinishButton) {
194
- this.isVisible = false;
195
- return;
196
- }
197
- this.isVisible = true;
198
154
  }
199
155
  }
200
- SkyProgressIndicatorNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyProgressIndicatorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
201
- SkyProgressIndicatorNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyProgressIndicatorNavButtonComponent, selector: "sky-progress-indicator-nav-button", inputs: { buttonText: "buttonText", buttonType: "buttonType", disabled: "disabled", progressIndicator: "progressIndicator" }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"disabled\"\n [ngClass]=\"cssClassNames\"\n (click)=\"onClick($event)\"\n>\n {{ buttonText || (buttonLabelResourceString | skyLibResources) }}\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
202
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, decorators: [{
156
+ _SkyProgressIndicatorNavButtonComponent_ngUnsubscribe = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_parentTimeout = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__buttonType = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__disabled = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__isVisible = new WeakMap(), _SkyProgressIndicatorNavButtonComponent__progressIndicator = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_changeDetector = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_parentComponent = new WeakMap(), _SkyProgressIndicatorNavButtonComponent_instances = new WeakSet(), _SkyProgressIndicatorNavButtonComponent_sendMessage = function _SkyProgressIndicatorNavButtonComponent_sendMessage(type) {
157
+ if (type !== undefined) {
158
+ this.progressIndicator?.sendMessage({ type });
159
+ }
160
+ }, _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility = function _SkyProgressIndicatorNavButtonComponent_updateButtonVisibility(change) {
161
+ const isLastStep = change.itemStatuses &&
162
+ change.activeIndex === change.itemStatuses.length - 1;
163
+ const buttonType = this.buttonType;
164
+ // Hide the button if all steps are complete
165
+ // (except for the reset button)
166
+ if (buttonType !== 'reset' && change.isComplete) {
167
+ this.isVisible = false;
168
+ return;
169
+ }
170
+ if (buttonType === 'finish') {
171
+ this.isVisible = isLastStep;
172
+ return;
173
+ }
174
+ // Hide the next button on the last step only if a finish button exists.
175
+ if (buttonType === 'next' &&
176
+ isLastStep &&
177
+ this.progressIndicator?.hasFinishButton) {
178
+ this.isVisible = false;
179
+ return;
180
+ }
181
+ this.isVisible = true;
182
+ };
183
+ SkyProgressIndicatorNavButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkyProgressIndicatorComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
184
+ SkyProgressIndicatorNavButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.11", type: SkyProgressIndicatorNavButtonComponent, selector: "sky-progress-indicator-nav-button", inputs: { buttonText: "buttonText", buttonType: "buttonType", disabled: "disabled", progressIndicator: "progressIndicator" }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"\n disabled\n | skyProgressIndicatorNavButtonDisabled\n : buttonType\n : lastProgressChange?.activeIndex\n : lastProgressChange?.itemStatuses\n \"\n [ngClass]=\"buttonType | skyProgressIndicatorNavButtonClass\"\n (click)=\"onClick($event)\"\n>\n {{\n buttonText ||\n ('skyux_progress_indicator_navigator_' + buttonType | skyLibResources)\n }}\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: i4.SkyProgressIndicatorNavButtonClass, name: "skyProgressIndicatorNavButtonClass" }, { kind: "pipe", type: i5.SkyProgressIndicatorNavButtonDisabledPipe, name: "skyProgressIndicatorNavButtonDisabled" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.11", ngImport: i0, type: SkyProgressIndicatorNavButtonComponent, decorators: [{
203
186
  type: Component,
204
- args: [{ selector: 'sky-progress-indicator-nav-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"disabled\"\n [ngClass]=\"cssClassNames\"\n (click)=\"onClick($event)\"\n>\n {{ buttonText || (buttonLabelResourceString | skyLibResources) }}\n</button>\n" }]
187
+ args: [{ selector: 'sky-progress-indicator-nav-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"isVisible\"\n class=\"sky-btn sky-margin-inline-sm\"\n type=\"button\"\n [disabled]=\"\n disabled\n | skyProgressIndicatorNavButtonDisabled\n : buttonType\n : lastProgressChange?.activeIndex\n : lastProgressChange?.itemStatuses\n \"\n [ngClass]=\"buttonType | skyProgressIndicatorNavButtonClass\"\n (click)=\"onClick($event)\"\n>\n {{\n buttonText ||\n ('skyux_progress_indicator_navigator_' + buttonType | skyLibResources)\n }}\n</button>\n" }]
205
188
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkyProgressIndicatorComponent, decorators: [{
206
189
  type: Optional
207
190
  }] }]; }, propDecorators: { buttonText: [{
@@ -215,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
215
198
  }], actionClick: [{
216
199
  type: Output
217
200
  }] } });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTNILE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7OztBQUczRjs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sc0NBQXNDO0lBNkpqRCxZQUNVLGNBQWlDLEVBQ3JCLGVBQThDO1FBRDFELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNy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QUFLLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRW5DLDRDQUE0QztRQUM1QyxnQ0FBZ0M7UUFDaEMsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDdkIsT0FBTztTQUNSO1FBRUQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1lBQzVCLE9BQU87U0FDUjtRQUVELHdFQUF3RTtRQUN4RSxJQUNFLFVBQVUsS0FBSyxNQUFNO1lBQ3JCLFVBQVU7WUFDVixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUN0QztZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7O21JQXJQVSxzQ0FBc0M7dUhBQXRDLHNDQUFzQyxnUEMvQm5ELDJRQVVBOzJGRHFCYSxzQ0FBc0M7a0JBTGxELFNBQVM7K0JBQ0UsbUNBQW1DLG1CQUU1Qix1QkFBdUIsQ0FBQyxNQUFNOzswQkFpSzVDLFFBQVE7NENBdkpKLFVBQVU7c0JBRGhCLEtBQUs7Z0JBU0ssVUFBVTtzQkFEcEIsS0FBSztnQkFrQkssUUFBUTtzQkFEbEIsS0FBSztnQkE0QkssaUJBQWlCO3NCQUQzQixLQUFLO2dCQW1EQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vcHJvZ3Jlc3MtaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrQXJncyB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1hY3Rpb24tY2xpY2stYXJncyc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWFjdGlvbi1jbGljay1wcm9ncmVzcy1oYW5kbGVyJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWNoYW5nZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLW1lc3NhZ2UtdHlwZSc7XG5pbXBvcnQgeyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi10eXBlJztcblxuLyoqXG4gKiBEaXNwbGF5cyBhIGJ1dHRvbiB0byBuYXZpZ2F0ZSB0aGUgc3RlcHMgaW4gbW9kYWwgd2l6YXJkcy4gV2UgcmVjb21tZW5kIGFnYWluc3QgdXNpbmcgaXQgaW5cbiAqIHBhc3NpdmUgcHJvZ3Jlc3MgaW5kaWNhdG9ycyBhbmQgd2F0ZXJmYWxsIHByb2dyZXNzIGluZGljYXRvcnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCB0byBkaXNwbGF5IG9uIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBcIk5leHRcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGJ1dHRvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0eXBlIG9mIG5hdiBidXR0b24gdG8gaW5jbHVkZS5cbiAgICogVGhlIHZhbGlkIG9wdGlvbnMgYXJlIGBcImZpbmlzaFwiYCwgYFwibmV4dFwiYCwgYFwicHJldmlvdXNcImAsIGFuZCBgXCJyZXNldFwiYC5cbiAgICogQGRlZmF1bHQgXCJuZXh0XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYnV0dG9uVHlwZSh2YWx1ZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25UeXBlKSB7XG4gICAgdGhpcy5fYnV0dG9uVHlwZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBidXR0b25UeXBlKCk6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB7XG4gICAgaWYgKHRoaXMuX2J1dHRvblR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuICduZXh0JztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYnV0dG9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYnV0dG9uVHlwZSA9IHRoaXMuYnV0dG9uVHlwZTtcbiAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMubGFzdFByb2dyZXNzQ2hhbmdlLmFjdGl2ZUluZGV4O1xuICAgIGNvbnN0IGlzTGFzdFN0ZXAgPVxuICAgICAgYWN0aXZlSW5kZXggPT09IHRoaXMubGFzdFByb2dyZXNzQ2hhbmdlLml0ZW1TdGF0dXNlcy5sZW5ndGggLSAxO1xuXG4gICAgaWYgKGJ1dHRvblR5cGUgPT09ICdwcmV2aW91cycgJiYgYWN0aXZlSW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnbmV4dCcgJiYgaXNMYXN0U3RlcCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb2dyZXNzSW5kaWNhdG9yKHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCkge1xuICAgIHRoaXMuX3Byb2dyZXNzSW5kaWNhdG9yID0gdmFsdWU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09ICdmaW5pc2gnKSB7XG4gICAgICAgIC8vIFRoZSBgaGFzRmluaXNoQnV0dG9uYCBmaWVsZCB3YXMgYWRkZWQgdG8gc3VwcG9ydCBsZWdhY3kgQVBJLlxuICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBvbmx5IGluY2x1ZGUgYSBuZXh0IGJ1dHRvbjsgd2UgY2Fubm90XG4gICAgICAgIC8vIGFzc3VtZSB0aGF0IGV2ZXJ5IGltcGxlbWVudGF0aW9uIGluY2x1ZGVzIGJvdGggYSBmaW5pc2ggYnV0dG9uIGFuZCBhIG5leHQgYnV0dG9uLlxuICAgICAgICB0aGlzLl9wcm9ncmVzc0luZGljYXRvci5oYXNGaW5pc2hCdXR0b24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wcm9ncmVzc0luZGljYXRvci5wcm9ncmVzc0NoYW5nZXNcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RQcm9ncmVzc0NoYW5nZSA9IGNoYW5nZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvblZpc2liaWxpdHkoY2hhbmdlKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5wYXJlbnRUaW1lb3V0KSB7XG4gICAgICAgIHRoaXMucGFyZW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc0luZGljYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnVGhlIGA8c2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uPmAgY29tcG9uZW50IHJlcXVpcmVzIGEgcmVmZXJlbmNlIHRvICcgK1xuICAgICAgICAgICAgICAgICd0aGUgYDxza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yPmAgY29tcG9uZW50IGl0IGNvbnRyb2xzLiBGb3IgZXhhbXBsZTpcXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3JcXG4nICtcbiAgICAgICAgICAgICAgICAnICAjbXlQcm9ncmVzc0luZGljYXRvclxcbicgK1xuICAgICAgICAgICAgICAgICc+XFxuJyArXG4gICAgICAgICAgICAgICAgJzwvc2t5LXByb2dyZXNzLWluZGljYXRvcj5cXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvblxcbicgK1xuICAgICAgICAgICAgICAgICcgIFtwcm9ncmVzc0luZGljYXRvcl09XCJteVByb2dyZXNzSW5kaWNhdG9yXCJcXG4nICtcbiAgICAgICAgICAgICAgICAnPlxcbicgK1xuICAgICAgICAgICAgICAgICc8L3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbj4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3NJbmRpY2F0b3IoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzc0luZGljYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgbmF2IGJ1dHRvbiBhbmQgZW1pdHMgYSBgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JBY3Rpb25DbGlja0FyZ3NgXG4gICAqIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbnRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byBhbGxvdyBjb25zdW1lcnMgdG8gZGVjaWRlIHdoZXRoZXJcbiAgICogdGhlIGJ1dHRvbuKAmXMgYWN0aW9uIHNob3VsZCBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrQXJncz4oKTtcblxuICBwdWJsaWMgZ2V0IGNzc0NsYXNzTmFtZXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtgc2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLSR7dGhpcy5idXR0b25UeXBlfWBdO1xuXG4gICAgc3dpdGNoIChidXR0b25UeXBlKSB7XG4gICAgICBjYXNlICduZXh0JzpcbiAgICAgIGNhc2UgJ2ZpbmlzaCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1wcmltYXJ5Jyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaCgnc2t5LWJ0bi1saW5rJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjbGFzc05hbWVzLnB1c2goJ3NreS1idG4tZGVmYXVsdCcpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3NOYW1lcy5qb2luKCcgJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1dHRvbkxhYmVsUmVzb3VyY2VTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNreXV4X3Byb2dyZXNzX2luZGljYXRvcl9uYXZpZ2F0b3JfJHt0aGlzLmJ1dHRvblR5cGV9YDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgaXNWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNWaXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGUgfHwgZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxhc3RQcm9ncmVzc0NoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2U7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcGFyZW50VGltZW91dDogbnVtYmVyO1xuXG4gIHByaXZhdGUgX2J1dHRvblR5cGU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX2lzVmlzaWJsZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3NJbmRpY2F0b3I6IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50Q29tcG9uZW50OiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudFxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgJiYgdGhpcy5wYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgPSB0aGlzLnBhcmVudENvbXBvbmVudDtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnByb2dyZXNzSW5kaWNhdG9yKSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGxldCB0eXBlOiBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlO1xuXG4gICAgc3dpdGNoICh0aGlzLmJ1dHRvblR5cGUpIHtcbiAgICAgIGNhc2UgJ2ZpbmlzaCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLkZpbmlzaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICB0eXBlID0gU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5Qcm9ncmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVncmVzcztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVzZXQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29uc3VtZXIgaGFzIHN1YnNjcmliZWQgdG8gdGhlIGBhY3Rpb25DbGlja2AgZXZlbnQsXG4gICAgLy8gYWxsb3cgdGhlbSB0byBkZWNpZGUgd2hlbiB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IHN0ZXAuXG4gICAgaWYgKHRoaXMuYWN0aW9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwcm9ncmVzc0hhbmRsZXI6IG5ldyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3Iuc2VuZE1lc3NhZ2UoeyB0eXBlIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yLnNlbmRNZXNzYWdlKHsgdHlwZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJ1dHRvblZpc2liaWxpdHkoY2hhbmdlOiBTa3lQcm9ncmVzc0luZGljYXRvckNoYW5nZSk6IHZvaWQge1xuICAgIGNvbnN0IGlzTGFzdFN0ZXAgPSBjaGFuZ2UuYWN0aXZlSW5kZXggPT09IGNoYW5nZS5pdGVtU3RhdHVzZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgLy8gSGlkZSB0aGUgYnV0dG9uIGlmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVcbiAgICAvLyAoZXhjZXB0IGZvciB0aGUgcmVzZXQgYnV0dG9uKVxuICAgIGlmIChidXR0b25UeXBlICE9PSAncmVzZXQnICYmIGNoYW5nZS5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc0xhc3RTdGVwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhpZGUgdGhlIG5leHQgYnV0dG9uIG9uIHRoZSBsYXN0IHN0ZXAgb25seSBpZiBhIGZpbmlzaCBidXR0b24gZXhpc3RzLlxuICAgIGlmIChcbiAgICAgIGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJlxuICAgICAgaXNMYXN0U3RlcCAmJlxuICAgICAgdGhpcy5wcm9ncmVzc0luZGljYXRvci5oYXNGaW5pc2hCdXR0b25cbiAgICApIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICpuZ0lmPVwiaXNWaXNpYmxlXCJcbiAgY2xhc3M9XCJza3ktYnRuIHNreS1tYXJnaW4taW5saW5lLXNtXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cImNzc0NsYXNzTmFtZXNcIlxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbj5cbiAge3sgYnV0dG9uVGV4dCB8fCAoYnV0dG9uTGFiZWxSZXNvdXJjZVN0cmluZyB8IHNreUxpYlJlc291cmNlcykgfX1cbjwvYnV0dG9uPlxuIl19
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3Byb2dyZXNzLWluZGljYXRvci9zcmMvbGliL21vZHVsZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3Ivc3JjL2xpYi9tb2R1bGVzL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi9wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlqRSxPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUUzSCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7Ozs7OztBQUczRixNQUFNLG1CQUFtQixHQUFzQyxNQUFNLENBQUM7QUFFdEU7OztHQUdHO0FBTUgsTUFBTSxPQUFPLHNDQUFzQztJQXVIakQsWUFDRSxjQUFpQyxFQUNyQixlQUErQzs7UUFoQzdEOzs7O1dBSUc7UUFFSSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1QyxDQUFD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QURoQixLQUFLO2dCQVNLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBY0ssUUFBUTtzQkFEbEIsS0FBSztnQkFlSyxpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBcURDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tBcmdzIH0gZnJvbSAnLi4vdHlwZXMvcHJvZ3Jlc3MtaW5kaWNhdG9yLWFjdGlvbi1jbGljay1hcmdzJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tQcm9ncmVzc0hhbmRsZXIgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItYWN0aW9uLWNsaWNrLXByb2dyZXNzLWhhbmRsZXInO1xuaW1wb3J0IHsgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItY2hhbmdlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUgfSBmcm9tICcuLi90eXBlcy9wcm9ncmVzcy1pbmRpY2F0b3ItbWVzc2FnZS10eXBlJztcbmltcG9ydCB7IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB9IGZyb20gJy4uL3R5cGVzL3Byb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uLXR5cGUnO1xuXG5jb25zdCBCVVRUT05fVFlQRV9ERUZBVUxUOiBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUgPSAnbmV4dCc7XG5cbi8qKlxuICogRGlzcGxheXMgYSBidXR0b24gdG8gbmF2aWdhdGUgdGhlIHN0ZXBzIGluIG1vZGFsIHdpemFyZHMuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IHVzaW5nIGl0IGluXG4gKiBwYXNzaXZlIHByb2dyZXNzIGluZGljYXRvcnMgYW5kIHdhdGVyZmFsbCBwcm9ncmVzcyBpbmRpY2F0b3JzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yLW5hdi1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgdG8gZGlzcGxheSBvbiB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQGRlZmF1bHQgXCJOZXh0XCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBidXR0b25UZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdHlwZSBvZiBuYXYgYnV0dG9uIHRvIGluY2x1ZGUuXG4gICAqIFRoZSB2YWxpZCBvcHRpb25zIGFyZSBgXCJmaW5pc2hcImAsIGBcIm5leHRcImAsIGBcInByZXZpb3VzXCJgLCBhbmQgYFwicmVzZXRcImAuXG4gICAqIEBkZWZhdWx0IFwibmV4dFwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGJ1dHRvblR5cGUodmFsdWU6IFNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19idXR0b25UeXBlID0gdmFsdWUgfHwgQlVUVE9OX1RZUEVfREVGQVVMVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnV0dG9uVHlwZSgpOiBTa3lQcm9ncmVzc0luZGljYXRvck5hdkJ1dHRvblR5cGUge1xuICAgIHJldHVybiB0aGlzLiNfYnV0dG9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBuYXYgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19kaXNhYmxlZCA9IHZhbHVlO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgcHJvZ3Jlc3MgaW5kaWNhdG9yIGNvbXBvbmVudCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbmF2IGJ1dHRvbi5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb2dyZXNzSW5kaWNhdG9yKFxuICAgIHZhbHVlOiBTa3lQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICApIHtcbiAgICB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IpIHtcbiAgICAgIGlmICh0aGlzLmJ1dHRvblR5cGUgPT09ICdmaW5pc2gnKSB7XG4gICAgICAgIC8vIFRoZSBgaGFzRmluaXNoQnV0dG9uYCBmaWVsZCB3YXMgYWRkZWQgdG8gc3VwcG9ydCBsZWdhY3kgQVBJLlxuICAgICAgICAvLyBTb21lIGltcGxlbWVudGF0aW9ucyBvbmx5IGluY2x1ZGUgYSBuZXh0IGJ1dHRvbjsgd2UgY2Fubm90XG4gICAgICAgIC8vIGFzc3VtZSB0aGF0IGV2ZXJ5IGltcGxlbWVudGF0aW9uIGluY2x1ZGVzIGJvdGggYSBmaW5pc2ggYnV0dG9uIGFuZCBhIG5leHQgYnV0dG9uLlxuICAgICAgICB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3IuaGFzRmluaXNoQnV0dG9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jX3Byb2dyZXNzSW5kaWNhdG9yLnByb2dyZXNzQ2hhbmdlc1xuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RQcm9ncmVzc0NoYW5nZSA9IGNoYW5nZTtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVCdXR0b25WaXNpYmlsaXR5KGNoYW5nZSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuI3BhcmVudFRpbWVvdXQpIHtcbiAgICAgICAgdGhpcy4jcGFyZW50VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmICghdGhpcy5wcm9ncmVzc0luZGljYXRvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAnVGhlIGA8c2t5LXByb2dyZXNzLWluZGljYXRvci1uYXYtYnV0dG9uPmAgY29tcG9uZW50IHJlcXVpcmVzIGEgcmVmZXJlbmNlIHRvICcgK1xuICAgICAgICAgICAgICAgICd0aGUgYDxza3ktcHJvZ3Jlc3MtaW5kaWNhdG9yPmAgY29tcG9uZW50IGl0IGNvbnRyb2xzLiBGb3IgZXhhbXBsZTpcXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3JcXG4nICtcbiAgICAgICAgICAgICAgICAnICAjbXlQcm9ncmVzc0luZGljYXRvclxcbicgK1xuICAgICAgICAgICAgICAgICc+XFxuJyArXG4gICAgICAgICAgICAgICAgJzwvc2t5LXByb2dyZXNzLWluZGljYXRvcj5cXG4nICtcbiAgICAgICAgICAgICAgICAnPHNreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvblxcbicgK1xuICAgICAgICAgICAgICAgICcgIFtwcm9ncmVzc0luZGljYXRvcl09XCJteVByb2dyZXNzSW5kaWNhdG9yXCJcXG4nICtcbiAgICAgICAgICAgICAgICAnPlxcbicgK1xuICAgICAgICAgICAgICAgICc8L3NreS1wcm9ncmVzcy1pbmRpY2F0b3ItbmF2LWJ1dHRvbj4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3NJbmRpY2F0b3IoKTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfcHJvZ3Jlc3NJbmRpY2F0b3I7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIG5hdiBidXR0b24gYW5kIGVtaXRzIGEgYFNreVByb2dyZXNzSW5kaWNhdG9yQWN0aW9uQ2xpY2tBcmdzYFxuICAgKiBvYmplY3QgdGhhdCBpcyBwYXNzZWQgaW50byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYWxsb3cgY29uc3VtZXJzIHRvIGRlY2lkZSB3aGV0aGVyXG4gICAqIHRoZSBidXR0b27igJlzIGFjdGlvbiBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UHJvZ3Jlc3NJbmRpY2F0b3JBY3Rpb25DbGlja0FyZ3M+KCk7XG5cbiAgcHVibGljIHNldCBpc1Zpc2libGUodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaXNWaXNpYmxlID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzVmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UHJvZ3Jlc3NDaGFuZ2U6IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlIHwgdW5kZWZpbmVkO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI3BhcmVudFRpbWVvdXQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjX2J1dHRvblR5cGUgPSBCVVRUT05fVFlQRV9ERUZBVUxUO1xuICAjX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX2lzVmlzaWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgI19wcm9ncmVzc0luZGljYXRvcjogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgI3BhcmVudENvbXBvbmVudDogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpIHBhcmVudENvbXBvbmVudD86IFNreVByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50XG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jcGFyZW50Q29tcG9uZW50ID0gcGFyZW50Q29tcG9uZW50O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgJiYgdGhpcy4jcGFyZW50Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yID0gdGhpcy4jcGFyZW50Q29tcG9uZW50O1xuICAgIH0gZWxzZSBpZiAoIXRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3IgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBsZXQgdHlwZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZSB8IHVuZGVmaW5lZDtcblxuICAgIHN3aXRjaCAodGhpcy5idXR0b25UeXBlKSB7XG4gICAgICBjYXNlICdmaW5pc2gnOlxuICAgICAgICB0eXBlID0gU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZS5GaW5pc2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbmV4dCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLlByb2dyZXNzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ByZXZpb3VzJzpcbiAgICAgICAgdHlwZSA9IFNreVByb2dyZXNzSW5kaWNhdG9yTWVzc2FnZVR5cGUuUmVncmVzcztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIHR5cGUgPSBTa3lQcm9ncmVzc0luZGljYXRvck1lc3NhZ2VUeXBlLlJlc2V0O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgY29uc3VtZXIgaGFzIHN1YnNjcmliZWQgdG8gdGhlIGBhY3Rpb25DbGlja2AgZXZlbnQsXG4gICAgLy8gYWxsb3cgdGhlbSB0byBkZWNpZGUgd2hlbiB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IHN0ZXAuXG4gICAgaWYgKHRoaXMuYWN0aW9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBwcm9ncmVzc0hhbmRsZXI6IG5ldyBTa3lQcm9ncmVzc0luZGljYXRvckFjdGlvbkNsaWNrUHJvZ3Jlc3NIYW5kbGVyKFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI3NlbmRNZXNzYWdlKHR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNzZW5kTWVzc2FnZSh0eXBlKTtcbiAgICB9XG4gIH1cblxuICAjc2VuZE1lc3NhZ2UodHlwZTogU2t5UHJvZ3Jlc3NJbmRpY2F0b3JNZXNzYWdlVHlwZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGlmICh0eXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3I/LnNlbmRNZXNzYWdlKHsgdHlwZSB9KTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlQnV0dG9uVmlzaWJpbGl0eShjaGFuZ2U6IFNreVByb2dyZXNzSW5kaWNhdG9yQ2hhbmdlKTogdm9pZCB7XG4gICAgY29uc3QgaXNMYXN0U3RlcCA9XG4gICAgICBjaGFuZ2UuaXRlbVN0YXR1c2VzICYmXG4gICAgICBjaGFuZ2UuYWN0aXZlSW5kZXggPT09IGNoYW5nZS5pdGVtU3RhdHVzZXMubGVuZ3RoIC0gMTtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5idXR0b25UeXBlO1xuXG4gICAgLy8gSGlkZSB0aGUgYnV0dG9uIGlmIGFsbCBzdGVwcyBhcmUgY29tcGxldGVcbiAgICAvLyAoZXhjZXB0IGZvciB0aGUgcmVzZXQgYnV0dG9uKVxuICAgIGlmIChidXR0b25UeXBlICE9PSAncmVzZXQnICYmIGNoYW5nZS5pc0NvbXBsZXRlKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChidXR0b25UeXBlID09PSAnZmluaXNoJykge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSBpc0xhc3RTdGVwO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEhpZGUgdGhlIG5leHQgYnV0dG9uIG9uIHRoZSBsYXN0IHN0ZXAgb25seSBpZiBhIGZpbmlzaCBidXR0b24gZXhpc3RzLlxuICAgIGlmIChcbiAgICAgIGJ1dHRvblR5cGUgPT09ICduZXh0JyAmJlxuICAgICAgaXNMYXN0U3RlcCAmJlxuICAgICAgdGhpcy5wcm9ncmVzc0luZGljYXRvcj8uaGFzRmluaXNoQnV0dG9uXG4gICAgKSB7XG4gICAgICB0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cImlzVmlzaWJsZVwiXG4gIGNsYXNzPVwic2t5LWJ0biBza3ktbWFyZ2luLWlubGluZS1zbVwiXG4gIHR5cGU9XCJidXR0b25cIlxuICBbZGlzYWJsZWRdPVwiXG4gICAgZGlzYWJsZWRcbiAgICAgIHwgc2t5UHJvZ3Jlc3NJbmRpY2F0b3JOYXZCdXR0b25EaXNhYmxlZFxuICAgICAgICA6IGJ1dHRvblR5cGVcbiAgICAgICAgOiBsYXN0UHJvZ3Jlc3NDaGFuZ2U/LmFjdGl2ZUluZGV4XG4gICAgICAgIDogbGFzdFByb2dyZXNzQ2hhbmdlPy5pdGVtU3RhdHVzZXNcbiAgXCJcbiAgW25nQ2xhc3NdPVwiYnV0dG9uVHlwZSB8IHNreVByb2dyZXNzSW5kaWNhdG9yTmF2QnV0dG9uQ2xhc3NcIlxuICAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCJcbj5cbiAge3tcbiAgICBidXR0b25UZXh0IHx8XG4gICAgICAoJ3NreXV4X3Byb2dyZXNzX2luZGljYXRvcl9uYXZpZ2F0b3JfJyArIGJ1dHRvblR5cGUgfCBza3lMaWJSZXNvdXJjZXMpXG4gIH19XG48L2J1dHRvbj5cbiJdfQ==