@sbb-esta/lyne-elements-dev 4.9.0-dev.1775022513 → 4.9.0-dev.1775049532
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.
- package/core/styles/core.scss +9 -0
- package/core.css +22 -0
- package/custom-elements.json +561 -561
- package/development/step-label.component-D3wrRPQ7.js +265 -0
- package/development/step.component-ewujsOVD.js +212 -0
- package/development/stepper/step/step.component.js +1 -1
- package/development/stepper/step-label/step-label.component.d.ts.map +1 -1
- package/development/stepper/step-label/step-label.component.js +1 -1
- package/development/stepper/step-label.js +1 -1
- package/development/stepper/step.js +1 -1
- package/development/stepper/stepper/stepper.component.d.ts.map +1 -1
- package/development/stepper/stepper/stepper.component.js +1 -1
- package/development/stepper/stepper.js +1 -1
- package/development/stepper.component-BJC_4cep.js +497 -0
- package/development/stepper.js +3 -3
- package/development/stepper.pure.js +3 -3
- package/off-brand-theme.css +22 -0
- package/package.json +2 -2
- package/safety-theme.css +22 -0
- package/standard-theme.css +22 -0
- package/step-label.component-Cu_Hck4P.js +80 -0
- package/{step.component-CbfVfpi6.js → step.component-DY61vAFB.js} +1 -1
- package/stepper/step/step.component.js +1 -1
- package/stepper/step-label/step-label.component.js +1 -1
- package/stepper/step-label.js +1 -1
- package/stepper/step.js +1 -1
- package/stepper/stepper/stepper.component.js +1 -1
- package/stepper/stepper.js +1 -1
- package/{stepper.component-CrMknCZm.js → stepper.component-83cngpic.js} +6 -8
- package/stepper.js +3 -3
- package/stepper.pure.js +3 -3
- package/development/step-label.component-C_obpSzp.js +0 -298
- package/development/step.component-DsXAckYS.js +0 -220
- package/development/stepper.component-yAkgcauE.js +0 -508
- package/step-label.component-BYaPBTcl.js +0 -82
package/standard-theme.css
CHANGED
|
@@ -1788,6 +1788,26 @@ slot[name=error]::slotted(*) {
|
|
|
1788
1788
|
--sbb-status-font-size: var(--sbb-text-font-size-s);
|
|
1789
1789
|
--sbb-status-title-color: var(--sbb-color-granite);
|
|
1790
1790
|
--sbb-status-title-color: light-dark(var(--sbb-color-granite), var(--sbb-color-smoke));
|
|
1791
|
+
--sbb-step-label-color: var(--sbb-color-4);
|
|
1792
|
+
--sbb-step-label-font-size: var(--sbb-text-font-size-l);
|
|
1793
|
+
--sbb-step-label-prefix-size: var(--sbb-size-element-xxs);
|
|
1794
|
+
--sbb-step-label-prefix-border-style: solid;
|
|
1795
|
+
--sbb-step-label-prefix-border-color: var(--sbb-border-color-4-inverted);
|
|
1796
|
+
--sbb-step-label-prefix-background-color: var(--sbb-background-color-1);
|
|
1797
|
+
--sbb-step-label-gap: var(--sbb-spacing-fixed-4x);
|
|
1798
|
+
--sbb-step-label-inset-block-start-size-m: calc(
|
|
1799
|
+
var(--sbb-text-font-size-l) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1800
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1801
|
+
);
|
|
1802
|
+
--sbb-step-label-inset-block-start-size-s: calc(
|
|
1803
|
+
var(--sbb-text-font-size-m) * (var(--sbb-typo-line-height-text) / 2) +
|
|
1804
|
+
(var(--sbb-border-width-1x) / 2)
|
|
1805
|
+
);
|
|
1806
|
+
--sbb-step-label-inset-block-start: var(--sbb-step-label-inset-block-start-size-m);
|
|
1807
|
+
--sbb-stepper-orientation: row;
|
|
1808
|
+
--sbb-stepper-border-width: var(--sbb-border-width-1x);
|
|
1809
|
+
--sbb-stepper-marker-width: var(--sbb-border-width-3x);
|
|
1810
|
+
--sbb-stepper-marker-color: var(--sbb-color-3);
|
|
1791
1811
|
--sbb-tab-group-content-gap-size-s: var(--sbb-spacing-responsive-xs);
|
|
1792
1812
|
--sbb-tab-group-content-gap-size-l: var(--sbb-spacing-responsive-s);
|
|
1793
1813
|
--sbb-tab-group-content-gap-size-xl: var(--sbb-spacing-responsive-m);
|
|
@@ -1862,6 +1882,8 @@ slot[name=error]::slotted(*) {
|
|
|
1862
1882
|
--sbb-signet-icon-color: Canvas !important;
|
|
1863
1883
|
--sbb-slider-selected-line-color: Highlight;
|
|
1864
1884
|
--sbb-slider-line-color: CanvasText;
|
|
1885
|
+
--sbb-step-label-color: ButtonText;
|
|
1886
|
+
--sbb-step-label-prefix-border-color: ButtonText;
|
|
1865
1887
|
}
|
|
1866
1888
|
}
|
|
1867
1889
|
:root {
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { css as e, html as t } from "lit";
|
|
2
|
+
import { SbbButtonBaseElement as n } from "./core/base-elements.js";
|
|
3
|
+
import { SbbDisabledMixin as r, appendAriaElements as i, removeAriaElements as a } from "./core/mixins.js";
|
|
4
|
+
import { boxSizingStyles as o } from "./core/styles.js";
|
|
5
|
+
import { SbbPropertyWatcherController as s } from "./core/controllers.js";
|
|
6
|
+
import { SbbIconNameMixin as c } from "./icon.js";
|
|
7
|
+
//#region src/elements/stepper/step-label/step-label.scss?lit&inline
|
|
8
|
+
var l = e`:host{--sbb-step-label-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-2x) );--_sbb-step-label-inset-block-start: var(--sbb-step-label-inset-block-start-size-m);--_sbb-step-label-inset-inline-start: calc(var(--sbb-step-label-prefix-size) / 2);--_sbb-step-label-transform-y: calc( -50% + var(--sbb-step-label-translate-y-content-hover, 0rem) );--_sbb-step-label-prefix-inset-block-start: calc( 1em * (var(--sbb-typo-line-height-text) / 2) + (var(--sbb-border-width-1x) / 2) - (var(--sbb-step-label-prefix-size) / 2) );position:relative;display:flex;min-width:0;max-width:fit-content;gap:var(--sbb-step-label-gap);cursor:var(--sbb-step-label-cursor);color:var(--sbb-step-label-color);font-size:var(--sbb-step-label-font-size);letter-spacing:var(--sbb-typo-letter-spacing-text)}:host:before{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:var(--sbb-text-font-size-xxs);font-weight:var(--sbb-step-label-font-weight-selected, normal);inset-block-start:var(--_sbb-step-label-inset-block-start);inset-inline-start:var(--_sbb-step-label-inset-inline-start);line-height:1;z-index:1;transform:translate(-50%,var(--_sbb-step-label-transform-y));transition:transform var(--sbb-step-label-animation-duration) var(--sbb-animation-easing)}:host(:is(:state(selected),[state--selected])){--sbb-step-label-color: var(--sbb-color-3);--sbb-step-label-font-weight-selected: bold}@media(forced-colors:active){:host(:is(:state(selected),[state--selected])){--sbb-step-label-color: Highlight !important}}:host(:is(:state(size-s),[state--size-s])){--sbb-step-label-gap: var(--sbb-spacing-fixed-3x);--sbb-step-label-prefix-size: var(--sbb-size-element-xxxs);--sbb-step-label-font-size: var(--sbb-text-font-size-m);--_sbb-step-label-inset-block-start: var(--sbb-step-label-inset-block-start-size-s)}:host(:disabled){--sbb-step-label-color: var(--sbb-color-granite);--sbb-step-label-color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));--sbb-step-label-prefix-border-style: dashed}@media(forced-colors:active){:host(:disabled){--sbb-step-label-color: GrayText !important}}@media(any-hover:hover){:host(:hover:not(:disabled)){--sbb-step-label-cursor: var(--sbb-cursor-pointer);--sbb-step-label-prefix-background-color: var(--sbb-background-color-3);--sbb-step-label-translate-y-content-hover: -.0625rem;--sbb-step-label-prefix-size-grow-hover: calc(var(--sbb-border-width-2x) * -1)}}:host(:focus-visible){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);border-radius:var(--sbb-border-radius-1x)}:host(:is(:state(orientation-vertical),[state--orientation-vertical])){transition:margin var(--sbb-stepper-animation-duration) var(--sbb-animation-easing)}:host(:is(:state(orientation-vertical),[state--orientation-vertical]):not(:first-of-type)){margin-block-start:var(--sbb-spacing-fixed-6x)}:host(:is(:state(selected),[state--selected]):is(:state(orientation-vertical),[state--orientation-vertical])){margin-block-end:var(--sbb-spacing-fixed-8x)}.sbb-step-label__prefix{position:relative;display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--sbb-step-label-prefix-size);height:var(--sbb-step-label-prefix-size);inset-block-start:var(--_sbb-step-label-prefix-inset-block-start)}.sbb-step-label__prefix:before{content:"";position:absolute;inset:calc(var(--sbb-step-label-prefix-size-grow-hover, 0rem));border-radius:var(--sbb-border-radius-infinity);border:var(--sbb-border-width-1x) var(--sbb-step-label-prefix-border-style) var(--sbb-step-label-prefix-border-color);background-color:var(--sbb-step-label-prefix-background-color);transition-duration:var(--sbb-step-label-animation-duration);transition-timing-function:var(--sbb-animation-easing);transition-property:background-color,inset}.sbb-step-label__text{font-weight:700}:host(:is(:state(orientation-horizontal),[state--orientation-horizontal])) .sbb-step-label__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}::slotted(sbb-icon),sbb-icon{z-index:1;background-color:var(--sbb-step-label-prefix-background-color);border-radius:var(--sbb-border-radius-infinity);transform:translateY(var(--sbb-step-label-translate-y-content-hover, 0rem));transition-duration:var(--sbb-step-label-animation-duration);transition-timing-function:var(--sbb-animation-easing);transition-property:background-color,transform}`, u = 0, d = class extends c(r(n)) {
|
|
9
|
+
static {
|
|
10
|
+
this.elementName = "sbb-step-label";
|
|
11
|
+
}
|
|
12
|
+
static {
|
|
13
|
+
this.role = "tab";
|
|
14
|
+
}
|
|
15
|
+
static {
|
|
16
|
+
this.styles = [o, l];
|
|
17
|
+
}
|
|
18
|
+
get step() {
|
|
19
|
+
return this._step;
|
|
20
|
+
}
|
|
21
|
+
get stepper() {
|
|
22
|
+
return this.closest("sbb-stepper");
|
|
23
|
+
}
|
|
24
|
+
set disabled(e) {
|
|
25
|
+
super.disabled = e, this.toggleState("user-disabled", e);
|
|
26
|
+
}
|
|
27
|
+
get disabled() {
|
|
28
|
+
return super.disabled;
|
|
29
|
+
}
|
|
30
|
+
constructor() {
|
|
31
|
+
super(), this._step = null, this.addEventListener?.("click", () => {
|
|
32
|
+
let e = this.stepper;
|
|
33
|
+
e && this.step && this._isNotDeactivatedByLinearMode(this.step) && (e.selected = this.step);
|
|
34
|
+
}), this.addController(new s(this, () => this.stepper, {
|
|
35
|
+
orientation: (e) => {
|
|
36
|
+
this._previousOrientation && this.internals.states.delete(`orientation-${this._previousOrientation}`), this._previousOrientation = e.orientation, this._previousOrientation && this.internals.states.add(`orientation-${this._previousOrientation}`);
|
|
37
|
+
},
|
|
38
|
+
size: (e) => {
|
|
39
|
+
this._previousSize && this.internals.states.delete(`size-${this._previousSize}`), this._previousSize = e.size, this._previousSize && this.internals.states.add(`size-${this._previousSize}`);
|
|
40
|
+
}
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
_isNotDeactivatedByLinearMode(e) {
|
|
44
|
+
let t = this.stepper;
|
|
45
|
+
if (t?.linear && t.selectedIndex !== null) {
|
|
46
|
+
let n = t.steps.indexOf(e);
|
|
47
|
+
return n < t.selectedIndex || n === t.selectedIndex + 1;
|
|
48
|
+
}
|
|
49
|
+
return !0;
|
|
50
|
+
}
|
|
51
|
+
connectedCallback() {
|
|
52
|
+
super.connectedCallback(), this.id ||= `sbb-step-label-${u++}`, this.slot ||= "step-label", this.internals.ariaSelected = "false", this.tabIndex = -1, this._assignStep();
|
|
53
|
+
}
|
|
54
|
+
select() {
|
|
55
|
+
this.tabIndex = 0, this.internals.ariaSelected = "true", this.internals.states.add("selected");
|
|
56
|
+
}
|
|
57
|
+
deselect() {
|
|
58
|
+
this.tabIndex = -1, this.internals.ariaSelected = "false", this.internals.states.delete("selected");
|
|
59
|
+
}
|
|
60
|
+
configure(e, t, n) {
|
|
61
|
+
n && this._assignStep(), this.internals.ariaPosInSet = `${e}`, this.internals.ariaSetSize = `${t}`;
|
|
62
|
+
}
|
|
63
|
+
_assignStep() {
|
|
64
|
+
let e = this.nextElementSibling;
|
|
65
|
+
for (; e && e.localName !== "sbb-step";) e = e.nextElementSibling;
|
|
66
|
+
let t = e;
|
|
67
|
+
this.internals.ariaControlsElements = a(this.internals.ariaControlsElements, this._step), this._step = t instanceof Element ? t : null, this.internals.ariaControlsElements = i(this.internals.ariaControlsElements, this._step);
|
|
68
|
+
}
|
|
69
|
+
disable(e) {
|
|
70
|
+
super.disabled = e;
|
|
71
|
+
}
|
|
72
|
+
render() {
|
|
73
|
+
return t`
|
|
74
|
+
<span class="sbb-step-label__prefix">${this.renderIconSlot()}</span>
|
|
75
|
+
<span class="sbb-step-label__text"><slot></slot></span>
|
|
76
|
+
`;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
//#endregion
|
|
80
|
+
export { d as t };
|
|
@@ -5,7 +5,7 @@ import { boxSizingStyles as a } from "./core/styles.js";
|
|
|
5
5
|
import { SbbPropertyWatcherController as o } from "./core/controllers.js";
|
|
6
6
|
import { ResizeController as s } from "@lit-labs/observers/resize-controller.js";
|
|
7
7
|
//#region src/elements/stepper/step/step.scss?lit&inline
|
|
8
|
-
var c = e`:host{--sbb-step-
|
|
8
|
+
var c = e`:host{--sbb-step-opacity: 0;--sbb-step-margin-inline-start: var(--sbb-spacing-fixed-4x);--sbb-step-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-2x) );display:contents;font-size:var(--sbb-text-font-size-m);letter-spacing:var(--sbb-typo-letter-spacing-text)}:host(:is(:state(selected),[state--selected])){--sbb-step-opacity: 1;--sbb-step-display: block;--sbb-step-height: fit-content;--sbb-step-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-4x) );--sbb-step-animation-delay: var(--sbb-step-animation-duration)}:host(:is(:state(orientation-horizontal),[state--orientation-horizontal])){--sbb-step-position: absolute;--sbb-step-inset-block-start: 0}:host(:is(:state(orientation-vertical),[state--orientation-vertical])) .sbb-step--wrapper{margin-inline-start:var(--sbb-step-margin-inline-start);opacity:0;height:0;transition:display var(--sbb-step-animation-duration) var(--sbb-animation-easing),height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing),opacity var(--sbb-step-animation-duration) var(--sbb-animation-easing);transition-behavior:allow-discrete}:host(:is(:state(selected),[state--selected]):is(:state(orientation-vertical),[state--orientation-vertical])) .sbb-step--wrapper{opacity:1;height:var(--sbb-stepper-content-height);transition:display var(--sbb-step-animation-duration) var(--sbb-animation-easing),height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing),opacity var(--sbb-step-animation-duration) var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);transition-behavior:allow-discrete}.sbb-step{position:var(--sbb-step-position, initial);width:100%;inset-block-start:var(--sbb-step-inset-block-start, unset);opacity:var(--sbb-step-opacity);display:var(--sbb-step-display, none);height:var(--sbb-step-height, 0);transition-property:display,opacity;transition-duration:var(--sbb-step-animation-duration);transition-delay:var(--sbb-step-animation-delay, 0);transition-timing-function:var(--sbb-animation-easing);transition-behavior:allow-discrete}@starting-style{.sbb-step{--sbb-step-opacity: 0}}`, l = 0, u = class extends n {
|
|
9
9
|
static {
|
|
10
10
|
this.elementName = "sbb-step";
|
|
11
11
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../step.component-
|
|
1
|
+
import { t as e } from "../../step.component-DY61vAFB.js";
|
|
2
2
|
export { e as SbbStepElement };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../../step-label.component-
|
|
1
|
+
import { t as e } from "../../step-label.component-Cu_Hck4P.js";
|
|
2
2
|
export { e as SbbStepLabelElement };
|
package/stepper/step-label.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "../step-label.component-
|
|
1
|
+
import { t as e } from "../step-label.component-Cu_Hck4P.js";
|
|
2
2
|
e.define(), console.warn("The entrypoint '@sbb-esta/elements/stepper/step-label.js' has been deprecated.\nUse either '@sbb-esta/elements/stepper.js' or '@sbb-esta/elements/stepper.pure.js' instead.");
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as SbbStepLabelElement };
|
package/stepper/step.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "../step.component-
|
|
1
|
+
import { t as e } from "../step.component-DY61vAFB.js";
|
|
2
2
|
e.define(), console.warn("The entrypoint '@sbb-esta/elements/stepper/step.js' has been deprecated.\nUse either '@sbb-esta/elements/stepper.js' or '@sbb-esta/elements/stepper.pure.js' instead.");
|
|
3
3
|
//#endregion
|
|
4
4
|
export { e as SbbStepElement };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../../stepper.component-
|
|
1
|
+
import { n as e, t } from "../../stepper.component-83cngpic.js";
|
|
2
2
|
export { t as SbbStepChangeEvent, e as SbbStepperElement };
|
package/stepper/stepper.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as e, t } from "../stepper.component-
|
|
1
|
+
import { n as e, t } from "../stepper.component-83cngpic.js";
|
|
2
2
|
e.define(), console.warn("The entrypoint '@sbb-esta/elements/stepper/stepper.js' has been deprecated.\nUse either '@sbb-esta/elements/stepper.js' or '@sbb-esta/elements/stepper.pure.js' instead.");
|
|
3
3
|
//#endregion
|
|
4
4
|
export { t as SbbStepChangeEvent, e as SbbStepperElement };
|
|
@@ -9,7 +9,7 @@ import { getNextElementIndex as l, isArrowKeyPressed as u } from "./core/a11y.js
|
|
|
9
9
|
import { IntersectionController as d } from "@lit-labs/observers/intersection-controller.js";
|
|
10
10
|
import { SbbMediaMatcherController as f, SbbMediaQueryBreakpointLargeAndAbove as p, SbbMediaQueryBreakpointSmallAndAbove as m, SbbMediaQueryBreakpointUltraAndAbove as h, SbbMediaQueryBreakpointZeroAndAbove as g } from "./core/controllers/media-matchers-controller.js";
|
|
11
11
|
//#region src/elements/stepper/stepper/stepper.scss?lit&inline
|
|
12
|
-
var _ = n`:host{--sbb-stepper-
|
|
12
|
+
var _ = n`:host{--sbb-stepper-animation-duration: var( --sbb-disable-animation-duration, var(--sbb-animation-duration-6x) );display:block;position:relative;counter-reset:step-label}@media(forced-colors:active){:host{--sbb-stepper-marker-color: ButtonText}}:host(:is(:state(disable-animation),[state--disable-animation])){--sbb-disable-animation-duration: 0s}:host([orientation=vertical]){--sbb-stepper-orientation: column}.sbb-stepper__labels{display:flex;flex-direction:var(--sbb-stepper-orientation);position:relative;justify-content:start;margin-block-end:var(--sbb-spacing-responsive-m)}.sbb-stepper__labels:before{content:"";position:absolute;inset-inline-start:calc(var(--sbb-stepper-border-width) * -1);background-color:var(--sbb-stepper-marker-color)}:host([orientation=horizontal]) .sbb-stepper__labels{gap:var(--sbb-spacing-responsive-m);padding-block-end:var(--sbb-spacing-fixed-4x);border-block-end:var(--sbb-stepper-border-width) solid var(--sbb-border-color-4-inverted)}:host([orientation=horizontal]) .sbb-stepper__labels:before{inset-block-end:calc(var(--sbb-stepper-border-width) * -1);height:var(--sbb-stepper-marker-width);width:var(--sbb-stepper-marker-size, 0);transition:width var(--sbb-stepper-animation-duration) var(--sbb-animation-easing)}:host([orientation=vertical]) .sbb-stepper__labels{padding-inline-start:var(--sbb-spacing-fixed-4x);border-inline-start:var(--sbb-stepper-border-width) solid var(--sbb-border-color-4-inverted)}:host([orientation=vertical]) .sbb-stepper__labels:before{inset-block-start:0;width:var(--sbb-stepper-marker-width);height:var(--sbb-stepper-marker-size, 0);transition:height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing)}.sbb-stepper__steps{position:relative}:host([orientation=horizontal]) .sbb-stepper__steps{height:var(--sbb-stepper-content-height);transition:height var(--sbb-stepper-animation-duration) var(--sbb-animation-easing)}::slotted(sbb-step-label):before{content:counter(step-label);counter-increment:step-label}`, v = 150, y = {
|
|
13
13
|
zero: g,
|
|
14
14
|
small: m,
|
|
15
15
|
large: p,
|
|
@@ -270,13 +270,11 @@ var _ = n`:host{--sbb-stepper-orientation: row;--sbb-stepper-border-width: var(-
|
|
|
270
270
|
}
|
|
271
271
|
render() {
|
|
272
272
|
return r`
|
|
273
|
-
<div class="sbb-
|
|
274
|
-
<
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
<
|
|
278
|
-
<slot name="step" @slotchange=${this._configure}></slot>
|
|
279
|
-
</div>
|
|
273
|
+
<div class="sbb-stepper__labels" role="tablist">
|
|
274
|
+
<slot name="step-label" @slotchange=${this._configure}></slot>
|
|
275
|
+
</div>
|
|
276
|
+
<div class="sbb-stepper__steps">
|
|
277
|
+
<slot name="step" @slotchange=${this._configure}></slot>
|
|
280
278
|
</div>
|
|
281
279
|
`;
|
|
282
280
|
}
|
package/stepper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as e } from "./step-label.component-
|
|
2
|
-
import { t } from "./step.component-
|
|
3
|
-
import { n, t as r } from "./stepper.component-
|
|
1
|
+
import { t as e } from "./step-label.component-Cu_Hck4P.js";
|
|
2
|
+
import { t } from "./step.component-DY61vAFB.js";
|
|
3
|
+
import { n, t as r } from "./stepper.component-83cngpic.js";
|
|
4
4
|
import "./stepper.pure.js";
|
|
5
5
|
t.define(), e.define(), n.define();
|
|
6
6
|
//#endregion
|
package/stepper.pure.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as e } from "./step-label.component-
|
|
2
|
-
import { t } from "./step.component-
|
|
3
|
-
import { n, t as r } from "./stepper.component-
|
|
1
|
+
import { t as e } from "./step-label.component-Cu_Hck4P.js";
|
|
2
|
+
import { t } from "./step.component-DY61vAFB.js";
|
|
3
|
+
import { n, t as r } from "./stepper.component-83cngpic.js";
|
|
4
4
|
export { r as SbbStepChangeEvent, t as SbbStepElement, e as SbbStepLabelElement, n as SbbStepperElement };
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
import { css, html } from "lit";
|
|
2
|
-
import { SbbButtonBaseElement } from "./core/base-elements.js";
|
|
3
|
-
import { SbbDisabledMixin, appendAriaElements, removeAriaElements } from "./core/mixins.js";
|
|
4
|
-
import { boxSizingStyles } from "./core/styles.js";
|
|
5
|
-
import { SbbPropertyWatcherController } from "./core/controllers.js";
|
|
6
|
-
import { SbbIconNameMixin } from "./icon.js";
|
|
7
|
-
//#region src/elements/stepper/step-label/step-label.scss?lit&inline
|
|
8
|
-
var step_label_default = css`:host {
|
|
9
|
-
--sbb-step-label-color: var(--sbb-color-4);
|
|
10
|
-
--sbb-step-label-animation-duration: var(
|
|
11
|
-
--sbb-disable-animation-duration,
|
|
12
|
-
var(--sbb-animation-duration-2x)
|
|
13
|
-
);
|
|
14
|
-
--sbb-step-label-prefix-size: var(--sbb-size-element-xxs);
|
|
15
|
-
--sbb-step-label-prefix-border-style: solid;
|
|
16
|
-
--sbb-step-label-prefix-border-color: var(--sbb-border-color-4-inverted);
|
|
17
|
-
--sbb-step-label-prefix-background-color: var(--sbb-background-color-1);
|
|
18
|
-
--sbb-step-label-gap: var(--sbb-spacing-fixed-4x);
|
|
19
|
-
position: relative;
|
|
20
|
-
min-width: 0;
|
|
21
|
-
max-width: fit-content;
|
|
22
|
-
}
|
|
23
|
-
:host::before {
|
|
24
|
-
--sbb-text-font-size: var(--sbb-text-font-size-xxs);
|
|
25
|
-
font-family: var(--sbb-typo-font-family);
|
|
26
|
-
font-weight: normal;
|
|
27
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
28
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
29
|
-
font-size: var(--sbb-text-font-size);
|
|
30
|
-
position: absolute;
|
|
31
|
-
top: 50%;
|
|
32
|
-
left: 50%;
|
|
33
|
-
transform: translate(-50%, -50%);
|
|
34
|
-
cursor: var(--sbb-step-label-cursor);
|
|
35
|
-
color: var(--sbb-step-label-color);
|
|
36
|
-
inset-block-start: calc(var(--sbb-text-font-size-l) * var(--sbb-typo-line-height-text) / 2 + var(--sbb-border-width-1x) / 2);
|
|
37
|
-
inset-inline-start: calc(var(--sbb-step-label-prefix-size) / 2);
|
|
38
|
-
line-height: 1;
|
|
39
|
-
z-index: 1;
|
|
40
|
-
transform: translate(-50%, calc(-50% + var(--sbb-step-label-translate-y-content-hover, 0rem)));
|
|
41
|
-
transition: transform var(--sbb-step-label-animation-duration) var(--sbb-animation-easing);
|
|
42
|
-
}
|
|
43
|
-
@media (forced-colors: active) {
|
|
44
|
-
:host {
|
|
45
|
-
--sbb-step-label-color: ButtonText;
|
|
46
|
-
--sbb-step-label-prefix-border-color: ButtonText;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
:host(:is(:state(selected),[state--selected])) {
|
|
51
|
-
--sbb-text-font-size: var(--sbb-text-font-size-xxs);
|
|
52
|
-
font-family: var(--sbb-typo-font-family);
|
|
53
|
-
font-weight: normal;
|
|
54
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
55
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
56
|
-
font-size: var(--sbb-text-font-size);
|
|
57
|
-
font-weight: bold;
|
|
58
|
-
--sbb-step-label-color: var(--sbb-color-3);
|
|
59
|
-
}
|
|
60
|
-
@media (forced-colors: active) {
|
|
61
|
-
:host(:is(:state(selected),[state--selected])) {
|
|
62
|
-
--sbb-step-label-color: Highlight !important;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
:host(:is(:state(size-s),[state--size-s])) {
|
|
67
|
-
--sbb-step-label-gap: var(--sbb-spacing-fixed-3x);
|
|
68
|
-
--sbb-step-label-prefix-size: var(--sbb-size-element-xxxs);
|
|
69
|
-
}
|
|
70
|
-
:host(:is(:state(size-s),[state--size-s]))::before {
|
|
71
|
-
inset-block-start: calc(var(--sbb-text-font-size-m) * var(--sbb-typo-line-height-text) / 2 + var(--sbb-border-width-1x) / 2);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
:host(:disabled) {
|
|
75
|
-
--sbb-step-label-color: var(--sbb-color-granite);
|
|
76
|
-
--sbb-step-label-color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));
|
|
77
|
-
--sbb-step-label-prefix-border-style: dashed;
|
|
78
|
-
}
|
|
79
|
-
@media (forced-colors: active) {
|
|
80
|
-
:host(:disabled) {
|
|
81
|
-
--sbb-step-label-color: GrayText !important;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@media (any-hover: hover) {
|
|
86
|
-
:host(:hover:not(:disabled)) {
|
|
87
|
-
--sbb-step-label-cursor: var(--sbb-cursor-pointer);
|
|
88
|
-
--sbb-step-label-prefix-background-color: var(--sbb-background-color-3);
|
|
89
|
-
--sbb-step-label-translate-y-content-hover: -0.0625rem;
|
|
90
|
-
--sbb-step-label-prefix-size-grow-hover: calc(var(--sbb-border-width-2x) * -1);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
:host(:focus-visible) {
|
|
95
|
-
outline-offset: var(--sbb-focus-outline-offset);
|
|
96
|
-
outline: var(--sbb-focus-outline-color) var(--sbb-focus-outline-style, solid) var(--sbb-focus-outline-width);
|
|
97
|
-
border-radius: var(--sbb-border-radius-1x);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
:host(:is(:state(orientation-vertical),[state--orientation-vertical])) {
|
|
101
|
-
transition: margin var(--sbb-stepper-animation-duration) var(--sbb-animation-easing);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
:host(:is(:state(orientation-vertical),[state--orientation-vertical]):not(:first-of-type)) {
|
|
105
|
-
margin-block-start: var(--sbb-spacing-fixed-6x);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
:host(:is(:state(selected),[state--selected]):is(:state(orientation-vertical),[state--orientation-vertical])) {
|
|
109
|
-
margin-block-end: var(--sbb-spacing-fixed-8x);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.sbb-step-label {
|
|
113
|
-
--sbb-text-font-size: var(--sbb-text-font-size-l);
|
|
114
|
-
font-family: var(--sbb-typo-font-family);
|
|
115
|
-
font-weight: normal;
|
|
116
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
117
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
118
|
-
font-size: var(--sbb-text-font-size);
|
|
119
|
-
font-weight: bold;
|
|
120
|
-
cursor: var(--sbb-step-label-cursor);
|
|
121
|
-
position: relative;
|
|
122
|
-
display: flex;
|
|
123
|
-
gap: var(--sbb-step-label-gap);
|
|
124
|
-
color: var(--sbb-step-label-color);
|
|
125
|
-
}
|
|
126
|
-
:host(:is(:state(size-s),[state--size-s])) .sbb-step-label {
|
|
127
|
-
--sbb-text-font-size: var(--sbb-text-font-size-m);
|
|
128
|
-
font-family: var(--sbb-typo-font-family);
|
|
129
|
-
font-weight: normal;
|
|
130
|
-
line-height: var(--sbb-typo-line-height-text);
|
|
131
|
-
letter-spacing: var(--sbb-typo-letter-spacing-text);
|
|
132
|
-
font-size: var(--sbb-text-font-size);
|
|
133
|
-
font-weight: bold;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.sbb-step-label__prefix {
|
|
137
|
-
position: relative;
|
|
138
|
-
display: flex;
|
|
139
|
-
flex-shrink: 0;
|
|
140
|
-
align-items: center;
|
|
141
|
-
justify-content: center;
|
|
142
|
-
width: var(--sbb-step-label-prefix-size);
|
|
143
|
-
height: var(--sbb-step-label-prefix-size);
|
|
144
|
-
inset-block-start: calc(1em * var(--sbb-typo-line-height-text) / 2 + var(--sbb-border-width-1x) / 2 - var(--sbb-step-label-prefix-size) / 2);
|
|
145
|
-
}
|
|
146
|
-
.sbb-step-label__prefix::before {
|
|
147
|
-
content: "";
|
|
148
|
-
position: absolute;
|
|
149
|
-
inset: calc(var(--sbb-step-label-prefix-size-grow-hover, 0rem));
|
|
150
|
-
border-radius: var(--sbb-border-radius-infinity);
|
|
151
|
-
border: var(--sbb-border-width-1x) var(--sbb-step-label-prefix-border-style) var(--sbb-step-label-prefix-border-color);
|
|
152
|
-
background-color: var(--sbb-step-label-prefix-background-color);
|
|
153
|
-
transition-duration: var(--sbb-step-label-animation-duration);
|
|
154
|
-
transition-timing-function: var(--sbb-animation-easing);
|
|
155
|
-
transition-property: background-color, inset;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
:host(:is(:state(orientation-horizontal),[state--orientation-horizontal])) .sbb-step-label__text {
|
|
159
|
-
overflow: hidden;
|
|
160
|
-
white-space: nowrap;
|
|
161
|
-
text-overflow: ellipsis;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
::slotted(sbb-icon),
|
|
165
|
-
sbb-icon {
|
|
166
|
-
z-index: 1;
|
|
167
|
-
background-color: var(--sbb-step-label-prefix-background-color);
|
|
168
|
-
border-radius: var(--sbb-border-radius-infinity);
|
|
169
|
-
transform: translateY(var(--sbb-step-label-translate-y-content-hover, 0rem));
|
|
170
|
-
transition-duration: var(--sbb-step-label-animation-duration);
|
|
171
|
-
transition-timing-function: var(--sbb-animation-easing);
|
|
172
|
-
transition-property: background-color, transform;
|
|
173
|
-
}`;
|
|
174
|
-
//#endregion
|
|
175
|
-
//#region src/elements/stepper/step-label/step-label.component.ts
|
|
176
|
-
var nextId = 0;
|
|
177
|
-
/**
|
|
178
|
-
* Combined with a `sbb-stepper`, it displays a step's label.
|
|
179
|
-
*
|
|
180
|
-
* @slot - Use the unnamed slot to provide a label.
|
|
181
|
-
* @slot icon - Use this to display an icon in the label bubble.
|
|
182
|
-
*/
|
|
183
|
-
var SbbStepLabelElement = class extends SbbIconNameMixin(SbbDisabledMixin(SbbButtonBaseElement)) {
|
|
184
|
-
static {
|
|
185
|
-
this.elementName = "sbb-step-label";
|
|
186
|
-
}
|
|
187
|
-
static {
|
|
188
|
-
this.role = "tab";
|
|
189
|
-
}
|
|
190
|
-
static {
|
|
191
|
-
this.styles = [boxSizingStyles, step_label_default];
|
|
192
|
-
}
|
|
193
|
-
/** The step controlled by the label. */
|
|
194
|
-
get step() {
|
|
195
|
-
return this._step;
|
|
196
|
-
}
|
|
197
|
-
get stepper() {
|
|
198
|
-
return this.closest("sbb-stepper");
|
|
199
|
-
}
|
|
200
|
-
set disabled(value) {
|
|
201
|
-
super.disabled = value;
|
|
202
|
-
this.toggleState("user-disabled", value);
|
|
203
|
-
}
|
|
204
|
-
get disabled() {
|
|
205
|
-
return super.disabled;
|
|
206
|
-
}
|
|
207
|
-
constructor() {
|
|
208
|
-
super();
|
|
209
|
-
this._step = null;
|
|
210
|
-
this.addEventListener?.("click", () => {
|
|
211
|
-
const stepper = this.stepper;
|
|
212
|
-
if (stepper && this.step && this._isNotDeactivatedByLinearMode(this.step)) stepper.selected = this.step;
|
|
213
|
-
});
|
|
214
|
-
this.addController(new SbbPropertyWatcherController(this, () => this.stepper, {
|
|
215
|
-
orientation: (s) => {
|
|
216
|
-
if (this._previousOrientation) this.internals.states.delete(`orientation-${this._previousOrientation}`);
|
|
217
|
-
this._previousOrientation = s.orientation;
|
|
218
|
-
if (this._previousOrientation) this.internals.states.add(`orientation-${this._previousOrientation}`);
|
|
219
|
-
},
|
|
220
|
-
size: (s) => {
|
|
221
|
-
if (this._previousSize) this.internals.states.delete(`size-${this._previousSize}`);
|
|
222
|
-
this._previousSize = s.size;
|
|
223
|
-
if (this._previousSize) this.internals.states.add(`size-${this._previousSize}`);
|
|
224
|
-
}
|
|
225
|
-
}));
|
|
226
|
-
}
|
|
227
|
-
_isNotDeactivatedByLinearMode(step) {
|
|
228
|
-
const stepper = this.stepper;
|
|
229
|
-
if (stepper?.linear && stepper.selectedIndex !== null) {
|
|
230
|
-
const index = stepper.steps.indexOf(step);
|
|
231
|
-
return index < stepper.selectedIndex || index === stepper.selectedIndex + 1;
|
|
232
|
-
}
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
connectedCallback() {
|
|
236
|
-
super.connectedCallback();
|
|
237
|
-
this.id ||= `sbb-step-label-${nextId++}`;
|
|
238
|
-
this.slot ||= "step-label";
|
|
239
|
-
this.internals.ariaSelected = "false";
|
|
240
|
-
this.tabIndex = -1;
|
|
241
|
-
this._assignStep();
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Selects and configures the step label.
|
|
245
|
-
* @internal
|
|
246
|
-
*/
|
|
247
|
-
select() {
|
|
248
|
-
this.tabIndex = 0;
|
|
249
|
-
this.internals.ariaSelected = "true";
|
|
250
|
-
this.internals.states.add("selected");
|
|
251
|
-
}
|
|
252
|
-
/**
|
|
253
|
-
* Deselects and configures the step label.
|
|
254
|
-
* @internal
|
|
255
|
-
*/
|
|
256
|
-
deselect() {
|
|
257
|
-
this.tabIndex = -1;
|
|
258
|
-
this.internals.ariaSelected = "false";
|
|
259
|
-
this.internals.states.delete("selected");
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Configures the step label.
|
|
263
|
-
* @internal
|
|
264
|
-
*/
|
|
265
|
-
configure(posInSet, setSize, stepperLoaded) {
|
|
266
|
-
if (stepperLoaded) this._assignStep();
|
|
267
|
-
this.internals.ariaPosInSet = `${posInSet}`;
|
|
268
|
-
this.internals.ariaSetSize = `${setSize}`;
|
|
269
|
-
}
|
|
270
|
-
_assignStep() {
|
|
271
|
-
let nextSibling = this.nextElementSibling;
|
|
272
|
-
while (nextSibling && nextSibling.localName !== "sbb-step") nextSibling = nextSibling.nextElementSibling;
|
|
273
|
-
const value = nextSibling;
|
|
274
|
-
this.internals.ariaControlsElements = removeAriaElements(this.internals.ariaControlsElements, this._step);
|
|
275
|
-
this._step = value instanceof Element ? value : null;
|
|
276
|
-
this.internals.ariaControlsElements = appendAriaElements(this.internals.ariaControlsElements, this._step);
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* @internal
|
|
280
|
-
* Disables the step label and avoids setting the `disabled` state to preserve the initial
|
|
281
|
-
* disabled state in case of switching between linear and non-linear mode.
|
|
282
|
-
*/
|
|
283
|
-
disable(value) {
|
|
284
|
-
super.disabled = value;
|
|
285
|
-
}
|
|
286
|
-
render() {
|
|
287
|
-
return html`
|
|
288
|
-
<div class="sbb-step-label">
|
|
289
|
-
<span class="sbb-step-label__prefix">${this.renderIconSlot()}</span>
|
|
290
|
-
<span class="sbb-step-label__text"><slot></slot></span>
|
|
291
|
-
</div>
|
|
292
|
-
`;
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
|
-
//#endregion
|
|
296
|
-
export { SbbStepLabelElement as t };
|
|
297
|
-
|
|
298
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1sYWJlbC5jb21wb25lbnQtQ19vYnBTenAuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL3N0ZXBwZXIvc3RlcC1sYWJlbC9zdGVwLWxhYmVsLnNjc3M/bGl0JmlubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9zdGVwcGVyL3N0ZXAtbGFiZWwvc3RlcC1sYWJlbC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vY29yZS9zdHlsZXMnIGFzIHNiYjtcblxuOmhvc3Qge1xuICAtLXNiYi1zdGVwLWxhYmVsLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItNCk7XG4gIC0tc2JiLXN0ZXAtbGFiZWwtYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoXG4gICAgLS1zYmItZGlzYWJsZS1hbmltYXRpb24tZHVyYXRpb24sXG4gICAgdmFyKC0tc2JiLWFuaW1hdGlvbi1kdXJhdGlvbi0yeClcbiAgKTtcbiAgLS1zYmItc3RlcC1sYWJlbC1wcmVmaXgtc2l6ZTogdmFyKC0tc2JiLXNpemUtZWxlbWVudC14eHMpO1xuICAtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1ib3JkZXItc3R5bGU6IHNvbGlkO1xuICAtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1ib3JkZXItY29sb3I6IHZhcigtLXNiYi1ib3JkZXItY29sb3ItNC1pbnZlcnRlZCk7XG4gIC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTEpO1xuICAtLXNiYi1zdGVwLWxhYmVsLWdhcDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtNHgpO1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXgtd2lkdGg6IGZpdC1jb250ZW50O1xuXG4gICY6OmJlZm9yZSB7XG4gICAgQGluY2x1ZGUgc2JiLnRleHQteHhzLS1yZWd1bGFyO1xuICAgIEBpbmNsdWRlIHNiYi5hYnNvbHV0ZS1jZW50ZXIteC15O1xuXG4gICAgY3Vyc29yOiB2YXIoLS1zYmItc3RlcC1sYWJlbC1jdXJzb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1zYmItc3RlcC1sYWJlbC1jb2xvcik7XG5cbiAgICAvLyBUaGUgYC0tc2JiLXRleHQtZm9udC1zaXplLWxgIGlzIGJlaW5nIHVzZWQgaGVyZSB0byBhbGlnbiB0aGUgYnViYmxlJ3MgaW5uZXIgdGV4dCB0b1xuICAgIC8vIHRoZSBsYWJlbCB0ZXh0IHdoaWNoIGluY2x1ZGVzIHRoZSBgc2JiLnRleHQtbC0tYm9sZGAgbWl4aW4uXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbCkgKiAodmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCkgLyAyKSArXG4gICAgICAgICh2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSAvIDIpXG4gICAgKTtcbiAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGModmFyKC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LXNpemUpIC8gMik7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgei1pbmRleDogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZShcbiAgICAgIC01MCUsXG4gICAgICBjYWxjKC01MCUgKyB2YXIoLS1zYmItc3RlcC1sYWJlbC10cmFuc2xhdGUteS1jb250ZW50LWhvdmVyLCAje3NiYi5weC10by1yZW0tYnVpbGQoMCl9KSlcbiAgICApO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zYmItc3RlcC1sYWJlbC1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi5pZi1mb3JjZWQtY29sb3JzIHtcbiAgICAtLXNiYi1zdGVwLWxhYmVsLWNvbG9yOiBCdXR0b25UZXh0O1xuICAgIC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LWJvcmRlci1jb2xvcjogQnV0dG9uVGV4dDtcbiAgfVxufVxuXG46aG9zdCg6c3RhdGUoc2VsZWN0ZWQpKSB7XG4gIEBpbmNsdWRlIHNiYi50ZXh0LXh4cy0tYm9sZDtcblxuICAtLXNiYi1zdGVwLWxhYmVsLWNvbG9yOiB2YXIoLS1zYmItY29sb3ItMyk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIC0tc2JiLXN0ZXAtbGFiZWwtY29sb3I6IEhpZ2hsaWdodCAhaW1wb3J0YW50O1xuICB9XG59XG5cbjpob3N0KDpzdGF0ZShzaXplLXMpKSB7XG4gIC0tc2JiLXN0ZXAtbGFiZWwtZ2FwOiB2YXIoLS1zYmItc3BhY2luZy1maXhlZC0zeCk7XG4gIC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LXNpemU6IHZhcigtLXNiYi1zaXplLWVsZW1lbnQteHh4cyk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICAvLyBUaGUgYC0tc2JiLXRleHQtZm9udC1zaXplLW1gIGlzIGJlaW5nIHVzZWQgaGVyZSB0byBhbGlnbiB0aGUgYnViYmxlJ3MgaW5uZXIgdGV4dCB0b1xuICAgIC8vIHRoZSBsYWJlbCB0ZXh0IHdoaWNoIGluY2x1ZGVzIHRoZSBgc2JiLnRleHQtbS0tYm9sZGAgbWl4aW4uXG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IGNhbGMoXG4gICAgICB2YXIoLS1zYmItdGV4dC1mb250LXNpemUtbSkgKiAodmFyKC0tc2JiLXR5cG8tbGluZS1oZWlnaHQtdGV4dCkgLyAyKSArXG4gICAgICAgICh2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSAvIDIpXG4gICAgKTtcbiAgfVxufVxuXG46aG9zdCg6ZGlzYWJsZWQpIHtcbiAgLS1zYmItc3RlcC1sYWJlbC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1ncmFwaGl0ZSkpO1xuICAtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1ib3JkZXItc3R5bGU6IGRhc2hlZDtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgLS1zYmItc3RlcC1sYWJlbC1jb2xvcjogR3JheVRleHQgIWltcG9ydGFudDtcbiAgfVxufVxuXG46aG9zdCg6aG92ZXI6bm90KDpkaXNhYmxlZCkpIHtcbiAgQGluY2x1ZGUgc2JiLmhvdmVyLW1xKCRob3ZlcjogdHJ1ZSkge1xuICAgIC0tc2JiLXN0ZXAtbGFiZWwtY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLXBvaW50ZXIpO1xuICAgIC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LWJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTMpO1xuICAgIC0tc2JiLXN0ZXAtbGFiZWwtdHJhbnNsYXRlLXktY29udGVudC1ob3ZlcjogI3tzYmIucHgtdG8tcmVtLWJ1aWxkKC0xKX07XG4gICAgLS1zYmItc3RlcC1sYWJlbC1wcmVmaXgtc2l6ZS1ncm93LWhvdmVyOiBjYWxjKHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMngpICogLTEpO1xuICB9XG59XG5cbjpob3N0KDpmb2N1cy12aXNpYmxlKSB7XG4gIEBpbmNsdWRlIHNiYi5mb2N1cy1vdXRsaW5lO1xuXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLTF4KTtcbn1cblxuOmhvc3QoOnN0YXRlKG9yaWVudGF0aW9uLXZlcnRpY2FsKSkge1xuICB0cmFuc2l0aW9uOiBtYXJnaW4gdmFyKC0tc2JiLXN0ZXBwZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1zYmItYW5pbWF0aW9uLWVhc2luZyk7XG59XG5cbjpob3N0KDpzdGF0ZShvcmllbnRhdGlvbi12ZXJ0aWNhbCk6bm90KDpmaXJzdC1vZi10eXBlKSkge1xuICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXNiYi1zcGFjaW5nLWZpeGVkLTZ4KTtcbn1cblxuOmhvc3QoOnN0YXRlKHNlbGVjdGVkKTpzdGF0ZShvcmllbnRhdGlvbi12ZXJ0aWNhbCkpIHtcbiAgbWFyZ2luLWJsb2NrLWVuZDogdmFyKC0tc2JiLXNwYWNpbmctZml4ZWQtOHgpO1xufVxuXG4uc2JiLXN0ZXAtbGFiZWwge1xuICBAaW5jbHVkZSBzYmIudGV4dC1sLS1ib2xkO1xuXG4gIGN1cnNvcjogdmFyKC0tc2JiLXN0ZXAtbGFiZWwtY3Vyc29yKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IHZhcigtLXNiYi1zdGVwLWxhYmVsLWdhcCk7XG4gIGNvbG9yOiB2YXIoLS1zYmItc3RlcC1sYWJlbC1jb2xvcik7XG5cbiAgOmhvc3QoOnN0YXRlKHNpemUtcykpICYge1xuICAgIEBpbmNsdWRlIHNiYi50ZXh0LW0tLWJvbGQ7XG4gIH1cbn1cblxuLnNiYi1zdGVwLWxhYmVsX19wcmVmaXgge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IHZhcigtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1zaXplKTtcbiAgaGVpZ2h0OiB2YXIoLS1zYmItc3RlcC1sYWJlbC1wcmVmaXgtc2l6ZSk7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiBjYWxjKFxuICAgIDFlbSAqICh2YXIoLS1zYmItdHlwby1saW5lLWhlaWdodC10ZXh0KSAvIDIpICsgKHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpIC8gMikgLVxuICAgICAgKHZhcigtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1zaXplKSAvIDIpXG4gICk7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IGNhbGModmFyKC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LXNpemUtZ3Jvdy1ob3ZlciwgI3tzYmIucHgtdG8tcmVtLWJ1aWxkKDApfSkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNiYi1ib3JkZXItcmFkaXVzLWluZmluaXR5KTtcbiAgICBib3JkZXI6IHZhcigtLXNiYi1ib3JkZXItd2lkdGgtMXgpIHZhcigtLXNiYi1zdGVwLWxhYmVsLXByZWZpeC1ib3JkZXItc3R5bGUpXG4gICAgICB2YXIoLS1zYmItc3RlcC1sYWJlbC1wcmVmaXgtYm9yZGVyLWNvbG9yKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItc3RlcC1sYWJlbC1wcmVmaXgtYmFja2dyb3VuZC1jb2xvcik7XG4gICAgdHJhbnNpdGlvbjoge1xuICAgICAgZHVyYXRpb246IHZhcigtLXNiYi1zdGVwLWxhYmVsLWFuaW1hdGlvbi1kdXJhdGlvbik7XG4gICAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICAgIHByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yLCBpbnNldDtcbiAgICB9XG4gIH1cbn1cblxuLnNiYi1zdGVwLWxhYmVsX190ZXh0IHtcbiAgOmhvc3QoOnN0YXRlKG9yaWVudGF0aW9uLWhvcml6b250YWwpKSAmIHtcbiAgICBAaW5jbHVkZSBzYmIuZWxsaXBzaXM7XG4gIH1cbn1cblxuOjpzbG90dGVkKHNiYi1pY29uKSxcbnNiYi1pY29uIHtcbiAgei1pbmRleDogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXN0ZXAtbGFiZWwtcHJlZml4LWJhY2tncm91bmQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy1pbmZpbml0eSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSh2YXIoLS1zYmItc3RlcC1sYWJlbC10cmFuc2xhdGUteS1jb250ZW50LWhvdmVyLCAje3NiYi5weC10by1yZW0tYnVpbGQoMCl9KSk7XG4gIHRyYW5zaXRpb246IHtcbiAgICBkdXJhdGlvbjogdmFyKC0tc2JiLXN0ZXAtbGFiZWwtYW5pbWF0aW9uLWR1cmF0aW9uKTtcbiAgICB0aW1pbmctZnVuY3Rpb246IHZhcigtLXNiYi1hbmltYXRpb24tZWFzaW5nKTtcbiAgICBwcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgdHJhbnNmb3JtO1xuICB9XG59XG4iLCJpbXBvcnQgeyB0eXBlIENTU1Jlc3VsdEdyb3VwLCBodG1sLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcblxuaW1wb3J0IHsgU2JiQnV0dG9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2UtZWxlbWVudHMudHMnO1xuaW1wb3J0IHsgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMudHMnO1xuaW1wb3J0IHsgYXBwZW5kQXJpYUVsZW1lbnRzLCByZW1vdmVBcmlhRWxlbWVudHMsIFNiYkRpc2FibGVkTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy50cyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICcuLi8uLi9jb3JlL3N0eWxlcy50cyc7XG5pbXBvcnQgeyBTYmJJY29uTmFtZU1peGluIH0gZnJvbSAnLi4vLi4vaWNvbi50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlN0ZXBFbGVtZW50IH0gZnJvbSAnLi4vc3RlcC9zdGVwLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYlN0ZXBwZXJFbGVtZW50IH0gZnJvbSAnLi4vc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0ZXAtbGFiZWwuc2Nzcz9saXQmaW5saW5lJztcblxubGV0IG5leHRJZCA9IDA7XG5cbi8qKlxuICogQ29tYmluZWQgd2l0aCBhIGBzYmItc3RlcHBlcmAsIGl0IGRpc3BsYXlzIGEgc3RlcCdzIGxhYmVsLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gcHJvdmlkZSBhIGxhYmVsLlxuICogQHNsb3QgaWNvbiAtIFVzZSB0aGlzIHRvIGRpc3BsYXkgYW4gaWNvbiBpbiB0aGUgbGFiZWwgYnViYmxlLlxuICovXG5leHBvcnQgY2xhc3MgU2JiU3RlcExhYmVsRWxlbWVudCBleHRlbmRzIFNiYkljb25OYW1lTWl4aW4oU2JiRGlzYWJsZWRNaXhpbihTYmJCdXR0b25CYXNlRWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zdGVwLWxhYmVsJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ3RhYic7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcblxuICAvKiogVGhlIHN0ZXAgY29udHJvbGxlZCBieSB0aGUgbGFiZWwuICovXG4gIHB1YmxpYyBnZXQgc3RlcCgpOiBTYmJTdGVwRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9zdGVwO1xuICB9XG4gIHByaXZhdGUgX3N0ZXA6IFNiYlN0ZXBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCBzdGVwcGVyKCk6IFNiYlN0ZXBwZXJFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VzdCgnc2JiLXN0ZXBwZXInKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBzdXBlci5kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgLy8gV2UgYWRkaXRpb25hbGx5IGtlZXAgdHJhY2sgb2YgdGhlIGBkaXNhYmxlZGAgc3RhdGUgdG8gcHJlc2VydmUgdGhlIHVzZXIgY29uZmlndXJlZCBkaXNhYmxlZCBzdGF0ZVxuICAgIC8vIG9mIHN0ZXAgbGFiZWxzIGluIGNhc2Ugb2Ygc3dpdGNoaW5nIGJldHdlZW4gbGluZWFyIGFuZCBub24tbGluZWFyIG1vZGUuXG4gICAgdGhpcy50b2dnbGVTdGF0ZSgndXNlci1kaXNhYmxlZCcsIHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5kaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX3ByZXZpb3VzT3JpZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaXZhdGUgX3ByZXZpb3VzU2l6ZT86IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdjbGljaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBwZXIgPSB0aGlzLnN0ZXBwZXI7XG4gICAgICBpZiAoc3RlcHBlciAmJiB0aGlzLnN0ZXAgJiYgdGhpcy5faXNOb3REZWFjdGl2YXRlZEJ5TGluZWFyTW9kZSh0aGlzLnN0ZXApKSB7XG4gICAgICAgIHN0ZXBwZXIuc2VsZWN0ZWQgPSB0aGlzLnN0ZXA7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5hZGRDb250cm9sbGVyKFxuICAgICAgbmV3IFNiYlByb3BlcnR5V2F0Y2hlckNvbnRyb2xsZXIodGhpcywgKCkgPT4gdGhpcy5zdGVwcGVyLCB7XG4gICAgICAgIG9yaWVudGF0aW9uOiAocykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9wcmV2aW91c09yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBvcmllbnRhdGlvbi0ke3RoaXMuX3ByZXZpb3VzT3JpZW50YXRpb259YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzT3JpZW50YXRpb24gPSBzLm9yaWVudGF0aW9uO1xuICAgICAgICAgIGlmICh0aGlzLl9wcmV2aW91c09yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBvcmllbnRhdGlvbi0ke3RoaXMuX3ByZXZpb3VzT3JpZW50YXRpb259YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBzaXplOiAocykgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1NpemUpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5kZWxldGUoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU2l6ZSA9IHMuc2l6ZTtcbiAgICAgICAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICAgICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9pc05vdERlYWN0aXZhdGVkQnlMaW5lYXJNb2RlKHN0ZXA6IFNiYlN0ZXBFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RlcHBlciA9IHRoaXMuc3RlcHBlcjtcbiAgICBpZiAoc3RlcHBlcj8ubGluZWFyICYmIHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgaW5kZXggPSBzdGVwcGVyLnN0ZXBzLmluZGV4T2Yoc3RlcCk7XG4gICAgICByZXR1cm4gaW5kZXggPCBzdGVwcGVyLnNlbGVjdGVkSW5kZXggfHwgaW5kZXggPT09IHN0ZXBwZXIuc2VsZWN0ZWRJbmRleCArIDE7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5pZCB8fD0gYHNiYi1zdGVwLWxhYmVsLSR7bmV4dElkKyt9YDtcbiAgICB0aGlzLnNsb3QgfHw9ICdzdGVwLWxhYmVsJztcbiAgICB0aGlzLmludGVybmFscy5hcmlhU2VsZWN0ZWQgPSAnZmFsc2UnO1xuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcbiAgICB0aGlzLl9hc3NpZ25TdGVwKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgc3RlcCBsYWJlbC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMudGFiSW5kZXggPSAwO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFTZWxlY3RlZCA9ICd0cnVlJztcbiAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKCdzZWxlY3RlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2VsZWN0cyBhbmQgY29uZmlndXJlcyB0aGUgc3RlcCBsYWJlbC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy50YWJJbmRleCA9IC0xO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFTZWxlY3RlZCA9ICdmYWxzZSc7XG4gICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZSgnc2VsZWN0ZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIHRoZSBzdGVwIGxhYmVsLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBjb25maWd1cmUocG9zSW5TZXQ6IG51bWJlciwgc2V0U2l6ZTogbnVtYmVyLCBzdGVwcGVyTG9hZGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHN0ZXBwZXJMb2FkZWQpIHtcbiAgICAgIHRoaXMuX2Fzc2lnblN0ZXAoKTtcbiAgICB9XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYVBvc0luU2V0ID0gYCR7cG9zSW5TZXR9YDtcbiAgICB0aGlzLmludGVybmFscy5hcmlhU2V0U2l6ZSA9IGAke3NldFNpemV9YDtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblN0ZXAoKTogdm9pZCB7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgd2hpbGUgKG5leHRTaWJsaW5nICYmIG5leHRTaWJsaW5nLmxvY2FsTmFtZSAhPT0gJ3NiYi1zdGVwJykge1xuICAgICAgbmV4dFNpYmxpbmcgPSBuZXh0U2libGluZy5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBuZXh0U2libGluZyBhcyBTYmJTdGVwRWxlbWVudCB8IG51bGw7XG4gICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNvbnRyb2xzRWxlbWVudHMgPSByZW1vdmVBcmlhRWxlbWVudHMoXG4gICAgICB0aGlzLmludGVybmFscy5hcmlhQ29udHJvbHNFbGVtZW50cyxcbiAgICAgIHRoaXMuX3N0ZXAsXG4gICAgKTtcbiAgICB0aGlzLl9zdGVwID0gdmFsdWUgaW5zdGFuY2VvZiBFbGVtZW50ID8gdmFsdWUgOiBudWxsO1xuICAgIHRoaXMuaW50ZXJuYWxzLmFyaWFDb250cm9sc0VsZW1lbnRzID0gYXBwZW5kQXJpYUVsZW1lbnRzKFxuICAgICAgdGhpcy5pbnRlcm5hbHMuYXJpYUNvbnRyb2xzRWxlbWVudHMsXG4gICAgICB0aGlzLl9zdGVwLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIERpc2FibGVzIHRoZSBzdGVwIGxhYmVsIGFuZCBhdm9pZHMgc2V0dGluZyB0aGUgYGRpc2FibGVkYCBzdGF0ZSB0byBwcmVzZXJ2ZSB0aGUgaW5pdGlhbFxuICAgKiBkaXNhYmxlZCBzdGF0ZSBpbiBjYXNlIG9mIHN3aXRjaGluZyBiZXR3ZWVuIGxpbmVhciBhbmQgbm9uLWxpbmVhciBtb2RlLlxuICAgKi9cbiAgcHVibGljIGRpc2FibGUodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBzdXBlci5kaXNhYmxlZCA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLXN0ZXAtbGFiZWxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItc3RlcC1sYWJlbF9fcHJlZml4XCI+JHt0aGlzLnJlbmRlckljb25TbG90KCl9PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1zdGVwLWxhYmVsX190ZXh0XCI+PHNsb3Q+PC9zbG90Pjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1zdGVwLWxhYmVsJzogU2JiU3RlcExhYmVsRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWUEsSUFBSSxTQUFTOzs7Ozs7O0FBUWIsSUFBYSxzQkFBYixjQUF5QyxpQkFBaUIsaUJBQWlCLHFCQUFxQixDQUFDLENBQUE7O0FBQy9ELE9BQUEsY0FBc0I7OztBQUN0QixPQUFBLE9BQU87OztBQUNoQixPQUFBLFNBQXlCLENBQUMsaUJBQWlCLG1CQUFNOzs7Q0FHeEUsSUFBVyxPQUFJO0FBQ2IsU0FBTyxLQUFLOztDQUlkLElBQVcsVUFBTztBQUNoQixTQUFPLEtBQUssUUFBUSxjQUFjOztDQUdwQyxJQUFvQixTQUFTLE9BQWM7QUFDekMsUUFBTSxXQUFXO0FBSWpCLE9BQUssWUFBWSxpQkFBaUIsTUFBTTs7Q0FFMUMsSUFBb0IsV0FBUTtBQUMxQixTQUFPLE1BQU07O0NBTWYsY0FBQTtBQUNFLFNBQU87QUFyQkQsT0FBQSxRQUErQjtBQXVCckMsT0FBSyxtQkFBbUIsZUFBYztHQUNwQyxNQUFNLFVBQVUsS0FBSztBQUNyQixPQUFJLFdBQVcsS0FBSyxRQUFRLEtBQUssOEJBQThCLEtBQUssS0FBSyxDQUN2RSxTQUFRLFdBQVcsS0FBSztJQUUxQjtBQUNGLE9BQUssY0FDSCxJQUFJLDZCQUE2QixZQUFZLEtBQUssU0FBUztHQUN6RCxjQUFjLE1BQUs7QUFDakIsUUFBSSxLQUFLLHFCQUNQLE1BQUssVUFBVSxPQUFPLE9BQU8sZUFBZSxLQUFLLHVCQUF1QjtBQUUxRSxTQUFLLHVCQUF1QixFQUFFO0FBQzlCLFFBQUksS0FBSyxxQkFDUCxNQUFLLFVBQVUsT0FBTyxJQUFJLGVBQWUsS0FBSyx1QkFBdUI7O0dBR3pFLE9BQU8sTUFBSztBQUNWLFFBQUksS0FBSyxjQUNQLE1BQUssVUFBVSxPQUFPLE9BQU8sUUFBUSxLQUFLLGdCQUFnQjtBQUU1RCxTQUFLLGdCQUFnQixFQUFFO0FBQ3ZCLFFBQUksS0FBSyxjQUNQLE1BQUssVUFBVSxPQUFPLElBQUksUUFBUSxLQUFLLGdCQUFnQjs7R0FHNUQsQ0FBQyxDQUNIOztDQUdLLDhCQUE4QixNQUFvQjtFQUN4RCxNQUFNLFVBQVUsS0FBSztBQUNyQixNQUFJLFNBQVMsVUFBVSxRQUFRLGtCQUFrQixNQUFNO0dBQ3JELE1BQU0sUUFBUSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ3pDLFVBQU8sUUFBUSxRQUFRLGlCQUFpQixVQUFVLFFBQVEsZ0JBQWdCOztBQUU1RSxTQUFPOztDQUdPLG9CQUFpQjtBQUMvQixRQUFNLG1CQUFtQjtBQUN6QixPQUFLLE9BQU8sa0JBQWtCO0FBQzlCLE9BQUssU0FBUztBQUNkLE9BQUssVUFBVSxlQUFlO0FBQzlCLE9BQUssV0FBVztBQUNoQixPQUFLLGFBQWE7Ozs7OztDQU9iLFNBQU07QUFDWCxPQUFLLFdBQVc7QUFDaEIsT0FBSyxVQUFVLGVBQWU7QUFDOUIsT0FBSyxVQUFVLE9BQU8sSUFBSSxXQUFXOzs7Ozs7Q0FPaEMsV0FBUTtBQUNiLE9BQUssV0FBVztBQUNoQixPQUFLLFVBQVUsZUFBZTtBQUM5QixPQUFLLFVBQVUsT0FBTyxPQUFPLFdBQVc7Ozs7OztDQU9uQyxVQUFVLFVBQWtCLFNBQWlCLGVBQXNCO0FBQ3hFLE1BQUksY0FDRixNQUFLLGFBQWE7QUFFcEIsT0FBSyxVQUFVLGVBQWUsR0FBRztBQUNqQyxPQUFLLFVBQVUsY0FBYyxHQUFHOztDQUcxQixjQUFXO0VBQ2pCLElBQUksY0FBYyxLQUFLO0FBQ3ZCLFNBQU8sZUFBZSxZQUFZLGNBQWMsV0FDOUMsZUFBYyxZQUFZO0VBRzVCLE1BQU0sUUFBUTtBQUNkLE9BQUssVUFBVSx1QkFBdUIsbUJBQ3BDLEtBQUssVUFBVSxzQkFDZixLQUFLLE1BQ047QUFDRCxPQUFLLFFBQVEsaUJBQWlCLFVBQVUsUUFBUTtBQUNoRCxPQUFLLFVBQVUsdUJBQXVCLG1CQUNwQyxLQUFLLFVBQVUsc0JBQ2YsS0FBSyxNQUNOOzs7Ozs7O0NBUUksUUFBUSxPQUFjO0FBQzNCLFFBQU0sV0FBVzs7Q0FHQSxTQUFNO0FBQ3ZCLFNBQU8sSUFBSTs7K0NBRWdDLEtBQUssZ0JBQWdCLENBQUEifQ==
|