@sbb-esta/lyne-elements-dev 4.6.0-dev.1772088473 → 4.6.0-dev.1772094630
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/chip/chip-group/chip-group.component.js +69 -49
- package/custom-elements.json +31 -0
- package/development/chip/chip-group/chip-group.component.d.ts +6 -0
- package/development/chip/chip-group/chip-group.component.d.ts.map +1 -1
- package/development/chip/chip-group/chip-group.component.js +33 -4
- package/package.json +2 -2
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
var
|
|
1
|
+
var D = (i) => {
|
|
2
2
|
throw TypeError(i);
|
|
3
3
|
};
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
import { __esDecorate as
|
|
7
|
-
import { css as
|
|
8
|
-
import { customElement as
|
|
9
|
-
import { isArrowKeyPressed as
|
|
10
|
-
import { SbbLanguageController as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
var B = (i, a, r) => a.has(i) || D("Cannot " + r);
|
|
5
|
+
var _ = (i, a, r) => (B(i, a, "read from private field"), r ? r.call(i) : a.get(i)), g = (i, a, r) => a.has(i) ? D("Cannot add the same private member more than once") : a instanceof WeakSet ? a.add(i) : a.set(i, r), u = (i, a, r, p) => (B(i, a, "write to private field"), p ? p.call(i, r) : a.set(i, r), r);
|
|
6
|
+
import { __esDecorate as d, __runInitializers as h } from "tslib";
|
|
7
|
+
import { css as W, LitElement as T, isServer as K, html as F } from "lit";
|
|
8
|
+
import { customElement as q, property as y } from "lit/decorators.js";
|
|
9
|
+
import { isArrowKeyPressed as M, getNextElementIndex as V } from "../../core/a11y.js";
|
|
10
|
+
import { SbbLanguageController as R, SbbPropertyWatcherController as $ } from "../../core/controllers.js";
|
|
11
|
+
import { forceType as N } from "../../core/decorators.js";
|
|
12
|
+
import { isLean as j } from "../../core/dom/lean-context.js";
|
|
13
|
+
import { i18nSelectionRequired as G, i18nChipGroupInputDescription as U } from "../../core/i18n.js";
|
|
14
|
+
import { SbbRequiredMixin as J, SbbDisabledMixin as P, SbbNegativeMixin as H, SbbFormAssociatedMixin as Q, SbbElementInternalsMixin as X } from "../../core/mixins.js";
|
|
15
|
+
import { boxSizingStyles as Y } from "../../core/styles.js";
|
|
16
|
+
import { SbbChipElement as Z } from "../chip.js";
|
|
17
|
+
const tt = W`:host{width:100%;display:flex;flex-wrap:wrap;gap:var(--sbb-chip-group-gap);align-items:center;margin-block:var(--sbb-chip-group-margin-block)}:host(:is(:is(:state(size-s),[state--size-s]),:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: 0}:host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: .375rem .3125rem}@media(min-width:64rem){:host(:is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: .3125rem .1875rem}}:host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: 0 .4375rem}@media(min-width:64rem){:host(:is(:state(without-label),[state--without-label]):is(:state(size-s),[state--size-s]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: 0 .3125rem}}:host(:is(:is(:state(size-l),[state--size-l]),:is(:state(size-m),[state--size-m]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) 0}@media(min-width:64rem){:host(:is(:is(:state(size-l),[state--size-l]),:is(:state(size-m),[state--size-m]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 0}}:host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: .1875rem .6875rem}@media(min-width:64rem){:host(:is(:state(without-label),[state--without-label]):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: .1875rem .875rem}}:host(:is(:state(without-label),[state--without-label]):not(:is(:state(empty),[state--empty]),:is(:state(size-s),[state--size-s]),:is(:state(size-m),[state--size-m]),:is(:state(size-l),[state--size-l]))){--sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-no-label-not-empty)}:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) var(--_sbb-chip-group-margin-block-start-default-large)}@media(min-width:64rem){:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-m),[state--size-m]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) var(--_sbb-chip-group-margin-block-start-default-large)}}:host(:not(:is(:state(without-label),[state--without-label]),:is(:state(empty),[state--empty]),:is(:state(size-s),[state--size-s]),:is(:state(size-m),[state--size-m]),:is(:state(size-l),[state--size-l]))){--sbb-chip-group-margin-block: var(--sbb-chip-group-margin-block-with-label-not-empty)}:host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) 1rem}@media(min-width:64rem){:host(:is(:state(without-label),[state--without-label]):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) 1.25rem}}:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default) .46875rem}@media(min-width:64rem){:host(:not(:is(:state(without-label),[state--without-label])):is(:state(size-l),[state--size-l]):not(:is(:state(empty),[state--empty]))){--sbb-chip-group-margin-block: var(--_sbb-chip-group-margin-block-start-default-large) .46875rem}}::slotted(input){flex:1 1 var(--sbb-chip-group-input-min-width);max-height:1.5rem}::slotted(sbb-chip){max-width:100%}`;
|
|
18
|
+
let ct = (() => {
|
|
19
|
+
var b, m, c, l;
|
|
20
|
+
let i = [q("sbb-chip-group")], a, r = [], p, f = J(P(H(Q(X(T))))), v = [], z, w, k = [], E = [], C, S = [], x = [], I, O = [], A = [];
|
|
21
|
+
return l = class extends f {
|
|
21
22
|
constructor() {
|
|
22
23
|
super();
|
|
23
|
-
g(this,
|
|
24
|
-
g(this,
|
|
25
|
-
|
|
24
|
+
g(this, b);
|
|
25
|
+
g(this, m);
|
|
26
|
+
g(this, c);
|
|
27
|
+
u(this, b, (h(this, v), h(this, k, null))), u(this, m, (h(this, E), h(this, S, ["Enter"]))), u(this, c, (h(this, x), h(this, O, !1))), this._inputAttributeObserver = (h(this, A), K ? null : new MutationObserver(() => this._reactToInputChanges())), this._language = new R(this), this.addEventListener?.(Z.events.requestdelete, (t) => this._deleteChip(t.target)), this.addEventListener?.("keydown", (t) => this._onChipKeyDown(t)), this.addController(new $(this, () => this.closest("sbb-form-field"), {
|
|
26
28
|
size: (t) => this._updateSize(t.size),
|
|
27
29
|
label: (t) => this._updateLabelState(t),
|
|
28
30
|
hiddenLabel: (t) => this._updateLabelState(t)
|
|
@@ -32,30 +34,37 @@ let ot = (() => {
|
|
|
32
34
|
set value(t) {
|
|
33
35
|
t = t ?? [];
|
|
34
36
|
const e = this.value, s = [...e];
|
|
35
|
-
for (const
|
|
36
|
-
s.includes(
|
|
37
|
-
s.forEach((
|
|
37
|
+
for (const n of t)
|
|
38
|
+
s.includes(n) && s.splice(s.indexOf(n), 1);
|
|
39
|
+
s.forEach((n) => this._chipElements().find((L) => L.value === n)?.remove());
|
|
38
40
|
const o = [...t];
|
|
39
|
-
for (const
|
|
40
|
-
o.includes(
|
|
41
|
-
o.forEach((
|
|
41
|
+
for (const n of e)
|
|
42
|
+
o.includes(n) && o.splice(o.indexOf(n), 1);
|
|
43
|
+
o.forEach((n) => this._createChipElement(n));
|
|
42
44
|
}
|
|
43
45
|
get value() {
|
|
44
46
|
return this._chipElements().map((t) => t.value);
|
|
45
47
|
}
|
|
46
48
|
/** Function that maps a chip's value to its display value. */
|
|
47
49
|
get displayWith() {
|
|
48
|
-
return
|
|
50
|
+
return _(this, b);
|
|
49
51
|
}
|
|
50
52
|
set displayWith(t) {
|
|
51
|
-
|
|
53
|
+
u(this, b, t);
|
|
52
54
|
}
|
|
53
55
|
/** The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']` */
|
|
54
56
|
get separatorKeys() {
|
|
55
|
-
return
|
|
57
|
+
return _(this, m);
|
|
56
58
|
}
|
|
57
59
|
set separatorKeys(t) {
|
|
58
|
-
|
|
60
|
+
u(this, m, t);
|
|
61
|
+
}
|
|
62
|
+
/** Whether to automatically add a chip when the input loses focus if there's a value. */
|
|
63
|
+
get addOnBlur() {
|
|
64
|
+
return _(this, c);
|
|
65
|
+
}
|
|
66
|
+
set addOnBlur(t) {
|
|
67
|
+
u(this, c, t);
|
|
59
68
|
}
|
|
60
69
|
_updateLabelState(t) {
|
|
61
70
|
this.toggleState("without-label", !t.label || t.hiddenLabel);
|
|
@@ -85,7 +94,7 @@ let ot = (() => {
|
|
|
85
94
|
return super.shouldValidate(t) || t === "required" || t === "value";
|
|
86
95
|
}
|
|
87
96
|
validate() {
|
|
88
|
-
super.validate(), this.required && this.value.length === 0 ? this.setValidityFlag("valueMissing",
|
|
97
|
+
super.validate(), this.required && this.value.length === 0 ? this.setValidityFlag("valueMissing", G[this._language.current]) : this.removeValidityFlag("valueMissing");
|
|
89
98
|
}
|
|
90
99
|
/** Return the list of chip elements **/
|
|
91
100
|
_chipElements() {
|
|
@@ -99,6 +108,9 @@ let ot = (() => {
|
|
|
99
108
|
const t = this.querySelector("input");
|
|
100
109
|
t && t !== this._inputElement && (this._inputAbortController?.abort(), this._inputAttributeObserver?.disconnect(), this._inputElement = t, this._inputAbortController = new AbortController(), this._inputElement.addEventListener("keydown", (e) => this._onInputKeyDown(e), {
|
|
101
110
|
signal: this._inputAbortController.signal
|
|
111
|
+
}), this._inputElement.addEventListener("blur", () => this._onInputBlur(), {
|
|
112
|
+
signal: this._inputAbortController.signal,
|
|
113
|
+
capture: !0
|
|
102
114
|
}), this._inputElement.addEventListener("inputAutocomplete", (e) => {
|
|
103
115
|
this._createChipFromInput("autocomplete", e.detail?.option.value);
|
|
104
116
|
}, {
|
|
@@ -106,7 +118,7 @@ let ot = (() => {
|
|
|
106
118
|
}), this._inputAttributeObserver?.observe(this._inputElement, {
|
|
107
119
|
attributes: !0,
|
|
108
120
|
attributeFilter: ["readonly", "disabled"]
|
|
109
|
-
})), (!this._previousSize || !this.closest("sbb-form-field")) && this._updateSize(
|
|
121
|
+
})), (!this._previousSize || !this.closest("sbb-form-field")) && this._updateSize(j() ? "s" : "m"), this.toggleState("empty", this.value.length === 0), this._reactToInputChanges(), this._updateInputDescription(), this.updateFormValue();
|
|
110
122
|
}
|
|
111
123
|
/**
|
|
112
124
|
* Listen for keyboard events on the chip elements
|
|
@@ -114,8 +126,8 @@ let ot = (() => {
|
|
|
114
126
|
_onChipKeyDown(t) {
|
|
115
127
|
const e = t.target;
|
|
116
128
|
if (e.localName === "sbb-chip") {
|
|
117
|
-
if (
|
|
118
|
-
const s = this._enabledChipElements(), o =
|
|
129
|
+
if (M(t)) {
|
|
130
|
+
const s = this._enabledChipElements(), o = V(t, s.indexOf(e), s.length);
|
|
119
131
|
s[o].focus();
|
|
120
132
|
return;
|
|
121
133
|
}
|
|
@@ -142,6 +154,12 @@ let ot = (() => {
|
|
|
142
154
|
}
|
|
143
155
|
this.separatorKeys.includes(t.key) && (t.preventDefault(), this._createChipFromInput("input"));
|
|
144
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Handle blur event on the input
|
|
159
|
+
**/
|
|
160
|
+
_onInputBlur() {
|
|
161
|
+
this.addOnBlur && this._createChipFromInput("input");
|
|
162
|
+
}
|
|
145
163
|
/**
|
|
146
164
|
* If the input is not empty, create a chip with its value
|
|
147
165
|
*/
|
|
@@ -153,8 +171,8 @@ let ot = (() => {
|
|
|
153
171
|
origin: t,
|
|
154
172
|
value: s,
|
|
155
173
|
label: (e ? this.displayWith?.(e) : null) ?? void 0,
|
|
156
|
-
setValue: (
|
|
157
|
-
setLabel: (
|
|
174
|
+
setValue: (n) => o.value = n,
|
|
175
|
+
setLabel: (n) => o.label = n
|
|
158
176
|
};
|
|
159
177
|
this._dispatchChipInputTokenEnd(o) && (this._createChipElement(o.value, o.label), this._inputElement.value = "", this._emitInputEvents());
|
|
160
178
|
}
|
|
@@ -190,7 +208,7 @@ let ot = (() => {
|
|
|
190
208
|
this.dispatchEvent(new InputEvent("input", { bubbles: !0, composed: !0 })), this.dispatchEvent(new Event("change", { bubbles: !0 }));
|
|
191
209
|
}
|
|
192
210
|
_createChipElement(t, e) {
|
|
193
|
-
if (
|
|
211
|
+
if (K)
|
|
194
212
|
return;
|
|
195
213
|
const s = document.createElement("sbb-chip");
|
|
196
214
|
s.value = t, s.innerText = e ?? (t ? this.displayWith?.(t) : null) ?? "", this.insertBefore(s, this._inputElement ?? this.querySelector("input"));
|
|
@@ -207,26 +225,28 @@ let ot = (() => {
|
|
|
207
225
|
this._previousSize && this.internals.states.delete(`size-${this._previousSize}`), this._previousSize = t, this._previousSize && this.internals.states.add(`size-${this._previousSize}`);
|
|
208
226
|
}
|
|
209
227
|
_updateInputDescription() {
|
|
210
|
-
this._inputElement && this._inputElement.setAttribute("aria-description", `${
|
|
228
|
+
this._inputElement && this._inputElement.setAttribute("aria-description", `${U[this._language.current]} ${this.value.length}`);
|
|
211
229
|
}
|
|
212
230
|
render() {
|
|
213
|
-
return
|
|
231
|
+
return F`<slot @slotchange=${this._setupComponent}></slot>`;
|
|
214
232
|
}
|
|
215
|
-
},
|
|
216
|
-
const t = typeof Symbol == "function" && Symbol.metadata ? Object.create(
|
|
217
|
-
|
|
233
|
+
}, b = new WeakMap(), m = new WeakMap(), c = new WeakMap(), p = l, (() => {
|
|
234
|
+
const t = typeof Symbol == "function" && Symbol.metadata ? Object.create(f[Symbol.metadata] ?? null) : void 0;
|
|
235
|
+
z = [y({ type: Array })], w = [y({ attribute: !1 })], C = [y({ attribute: "separator-keys", type: Array })], I = [N(), y({ attribute: "add-on-blur", type: Boolean })], d(l, null, z, { kind: "setter", name: "value", static: !1, private: !1, access: { has: (e) => "value" in e, set: (e, s) => {
|
|
218
236
|
e.value = s;
|
|
219
|
-
} }, metadata: t }, null,
|
|
237
|
+
} }, metadata: t }, null, v), d(l, null, w, { kind: "accessor", name: "displayWith", static: !1, private: !1, access: { has: (e) => "displayWith" in e, get: (e) => e.displayWith, set: (e, s) => {
|
|
220
238
|
e.displayWith = s;
|
|
221
|
-
} }, metadata: t },
|
|
239
|
+
} }, metadata: t }, k, E), d(l, null, C, { kind: "accessor", name: "separatorKeys", static: !1, private: !1, access: { has: (e) => "separatorKeys" in e, get: (e) => e.separatorKeys, set: (e, s) => {
|
|
222
240
|
e.separatorKeys = s;
|
|
223
|
-
} }, metadata: t },
|
|
224
|
-
|
|
241
|
+
} }, metadata: t }, S, x), d(l, null, I, { kind: "accessor", name: "addOnBlur", static: !1, private: !1, access: { has: (e) => "addOnBlur" in e, get: (e) => e.addOnBlur, set: (e, s) => {
|
|
242
|
+
e.addOnBlur = s;
|
|
243
|
+
} }, metadata: t }, O, A), d(null, a = { value: p }, i, { kind: "class", name: p.name, metadata: t }, null, r), p = a.value, t && Object.defineProperty(p, Symbol.metadata, { enumerable: !0, configurable: !0, writable: !0, value: t });
|
|
244
|
+
})(), l.role = "listbox", l.styles = [Y, tt], l.events = {
|
|
225
245
|
input: "input",
|
|
226
246
|
change: "change",
|
|
227
247
|
chipinputtokenend: "chipinputtokenend"
|
|
228
|
-
},
|
|
248
|
+
}, h(p, r), p;
|
|
229
249
|
})();
|
|
230
250
|
export {
|
|
231
|
-
|
|
251
|
+
ct as SbbChipGroupElement
|
|
232
252
|
};
|
package/custom-elements.json
CHANGED
|
@@ -44613,6 +44613,17 @@
|
|
|
44613
44613
|
"description": "The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']`",
|
|
44614
44614
|
"attribute": "separator-keys"
|
|
44615
44615
|
},
|
|
44616
|
+
{
|
|
44617
|
+
"kind": "field",
|
|
44618
|
+
"name": "addOnBlur",
|
|
44619
|
+
"type": {
|
|
44620
|
+
"text": "boolean"
|
|
44621
|
+
},
|
|
44622
|
+
"privacy": "public",
|
|
44623
|
+
"default": "false",
|
|
44624
|
+
"description": "Whether to automatically add a chip when the input loses focus if there's a value.",
|
|
44625
|
+
"attribute": "add-on-blur"
|
|
44626
|
+
},
|
|
44616
44627
|
{
|
|
44617
44628
|
"kind": "field",
|
|
44618
44629
|
"name": "_inputAttributeObserver",
|
|
@@ -44793,6 +44804,17 @@
|
|
|
44793
44804
|
],
|
|
44794
44805
|
"description": "Listen for keyboard events on the input"
|
|
44795
44806
|
},
|
|
44807
|
+
{
|
|
44808
|
+
"kind": "method",
|
|
44809
|
+
"name": "_onInputBlur",
|
|
44810
|
+
"privacy": "private",
|
|
44811
|
+
"return": {
|
|
44812
|
+
"type": {
|
|
44813
|
+
"text": "void"
|
|
44814
|
+
}
|
|
44815
|
+
},
|
|
44816
|
+
"description": "Handle blur event on the input"
|
|
44817
|
+
},
|
|
44796
44818
|
{
|
|
44797
44819
|
"kind": "method",
|
|
44798
44820
|
"name": "_createChipFromInput",
|
|
@@ -45412,6 +45434,15 @@
|
|
|
45412
45434
|
"description": "The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']`",
|
|
45413
45435
|
"fieldName": "separatorKeys"
|
|
45414
45436
|
},
|
|
45437
|
+
{
|
|
45438
|
+
"name": "add-on-blur",
|
|
45439
|
+
"type": {
|
|
45440
|
+
"text": "boolean"
|
|
45441
|
+
},
|
|
45442
|
+
"default": "false",
|
|
45443
|
+
"description": "Whether to automatically add a chip when the input loses focus if there's a value.",
|
|
45444
|
+
"fieldName": "addOnBlur"
|
|
45445
|
+
},
|
|
45415
45446
|
{
|
|
45416
45447
|
"name": "required",
|
|
45417
45448
|
"description": "Whether the component is required.",
|
|
@@ -37,6 +37,8 @@ export declare class SbbChipGroupElement<T = string> extends SbbChipGroupElement
|
|
|
37
37
|
accessor displayWith: ((value: T) => string) | null;
|
|
38
38
|
/** The array of keys that will trigger a `chipinputtokenend` event. Default `['Enter']` */
|
|
39
39
|
accessor separatorKeys: string[];
|
|
40
|
+
/** Whether to automatically add a chip when the input loses focus if there's a value. */
|
|
41
|
+
accessor addOnBlur: boolean;
|
|
40
42
|
/**
|
|
41
43
|
* Listens to the changes on `readonly` and `disabled` attributes of `<input>`.
|
|
42
44
|
*/
|
|
@@ -69,6 +71,10 @@ export declare class SbbChipGroupElement<T = string> extends SbbChipGroupElement
|
|
|
69
71
|
* Listen for keyboard events on the input
|
|
70
72
|
**/
|
|
71
73
|
private _onInputKeyDown;
|
|
74
|
+
/**
|
|
75
|
+
* Handle blur event on the input
|
|
76
|
+
**/
|
|
77
|
+
private _onInputBlur;
|
|
72
78
|
/**
|
|
73
79
|
* If the input is not empty, create a chip with its value
|
|
74
80
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chip-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/chip/chip-group/chip-group.component.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"chip-group.component.d.ts","sourceRoot":"","sources":["../../../../../src/elements/chip/chip-group/chip-group.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { css, LitElement, isServer, html } from "lit";
|
|
|
10
10
|
import { customElement, property } from "lit/decorators.js";
|
|
11
11
|
import { isArrowKeyPressed, getNextElementIndex } from "../../core/a11y.js";
|
|
12
12
|
import { SbbLanguageController, SbbPropertyWatcherController } from "../../core/controllers.js";
|
|
13
|
+
import { forceType } from "../../core/decorators.js";
|
|
13
14
|
import { isLean } from "../../core/dom/lean-context.js";
|
|
14
15
|
import { i18nSelectionRequired, i18nChipGroupInputDescription } from "../../core/i18n.js";
|
|
15
16
|
import { SbbRequiredMixin, SbbDisabledMixin, SbbNegativeMixin, SbbFormAssociatedMixin, SbbElementInternalsMixin } from "../../core/mixins.js";
|
|
@@ -114,7 +115,7 @@ const style = css`:host {
|
|
|
114
115
|
max-width: 100%;
|
|
115
116
|
}`;
|
|
116
117
|
let SbbChipGroupElement = (() => {
|
|
117
|
-
var _displayWith_accessor_storage, _separatorKeys_accessor_storage, _a;
|
|
118
|
+
var _displayWith_accessor_storage, _separatorKeys_accessor_storage, _addOnBlur_accessor_storage, _a;
|
|
118
119
|
let _classDecorators = [customElement("sbb-chip-group")];
|
|
119
120
|
let _classDescriptor;
|
|
120
121
|
let _classExtraInitializers = [];
|
|
@@ -128,14 +129,19 @@ let SbbChipGroupElement = (() => {
|
|
|
128
129
|
let _separatorKeys_decorators;
|
|
129
130
|
let _separatorKeys_initializers = [];
|
|
130
131
|
let _separatorKeys_extraInitializers = [];
|
|
132
|
+
let _addOnBlur_decorators;
|
|
133
|
+
let _addOnBlur_initializers = [];
|
|
134
|
+
let _addOnBlur_extraInitializers = [];
|
|
131
135
|
_a = class extends _classSuper {
|
|
132
136
|
constructor() {
|
|
133
137
|
super();
|
|
134
138
|
__privateAdd(this, _displayWith_accessor_storage);
|
|
135
139
|
__privateAdd(this, _separatorKeys_accessor_storage);
|
|
140
|
+
__privateAdd(this, _addOnBlur_accessor_storage);
|
|
136
141
|
__privateSet(this, _displayWith_accessor_storage, (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _displayWith_initializers, null)));
|
|
137
142
|
__privateSet(this, _separatorKeys_accessor_storage, (__runInitializers(this, _displayWith_extraInitializers), __runInitializers(this, _separatorKeys_initializers, ["Enter"])));
|
|
138
|
-
this
|
|
143
|
+
__privateSet(this, _addOnBlur_accessor_storage, (__runInitializers(this, _separatorKeys_extraInitializers), __runInitializers(this, _addOnBlur_initializers, false)));
|
|
144
|
+
this._inputAttributeObserver = (__runInitializers(this, _addOnBlur_extraInitializers), !isServer ? new MutationObserver(() => this._reactToInputChanges()) : null);
|
|
139
145
|
this._language = new SbbLanguageController(this);
|
|
140
146
|
this.addEventListener?.(SbbChipElement.events.requestdelete, (ev) => this._deleteChip(ev.target));
|
|
141
147
|
this.addEventListener?.("keydown", (ev) => this._onChipKeyDown(ev));
|
|
@@ -181,6 +187,13 @@ let SbbChipGroupElement = (() => {
|
|
|
181
187
|
set separatorKeys(value) {
|
|
182
188
|
__privateSet(this, _separatorKeys_accessor_storage, value);
|
|
183
189
|
}
|
|
190
|
+
/** Whether to automatically add a chip when the input loses focus if there's a value. */
|
|
191
|
+
get addOnBlur() {
|
|
192
|
+
return __privateGet(this, _addOnBlur_accessor_storage);
|
|
193
|
+
}
|
|
194
|
+
set addOnBlur(value) {
|
|
195
|
+
__privateSet(this, _addOnBlur_accessor_storage, value);
|
|
196
|
+
}
|
|
184
197
|
_updateLabelState(formField) {
|
|
185
198
|
this.toggleState("without-label", !formField.label || formField.hiddenLabel);
|
|
186
199
|
}
|
|
@@ -238,6 +251,10 @@ let SbbChipGroupElement = (() => {
|
|
|
238
251
|
this._inputElement.addEventListener("keydown", (ev) => this._onInputKeyDown(ev), {
|
|
239
252
|
signal: this._inputAbortController.signal
|
|
240
253
|
});
|
|
254
|
+
this._inputElement.addEventListener("blur", () => this._onInputBlur(), {
|
|
255
|
+
signal: this._inputAbortController.signal,
|
|
256
|
+
capture: true
|
|
257
|
+
});
|
|
241
258
|
this._inputElement.addEventListener("inputAutocomplete", (event) => {
|
|
242
259
|
this._createChipFromInput("autocomplete", event.detail?.option.value);
|
|
243
260
|
}, {
|
|
@@ -300,6 +317,14 @@ let SbbChipGroupElement = (() => {
|
|
|
300
317
|
this._createChipFromInput("input");
|
|
301
318
|
}
|
|
302
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* Handle blur event on the input
|
|
322
|
+
**/
|
|
323
|
+
_onInputBlur() {
|
|
324
|
+
if (this.addOnBlur) {
|
|
325
|
+
this._createChipFromInput("input");
|
|
326
|
+
}
|
|
327
|
+
}
|
|
303
328
|
/**
|
|
304
329
|
* If the input is not empty, create a chip with its value
|
|
305
330
|
*/
|
|
@@ -394,11 +419,12 @@ let SbbChipGroupElement = (() => {
|
|
|
394
419
|
render() {
|
|
395
420
|
return html`<slot @slotchange=${this._setupComponent}></slot>`;
|
|
396
421
|
}
|
|
397
|
-
}, _displayWith_accessor_storage = new WeakMap(), _separatorKeys_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
422
|
+
}, _displayWith_accessor_storage = new WeakMap(), _separatorKeys_accessor_storage = new WeakMap(), _addOnBlur_accessor_storage = new WeakMap(), _classThis = _a, (() => {
|
|
398
423
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
399
424
|
_set_value_decorators = [property({ type: Array })];
|
|
400
425
|
_displayWith_decorators = [property({ attribute: false })];
|
|
401
426
|
_separatorKeys_decorators = [property({ attribute: "separator-keys", type: Array })];
|
|
427
|
+
_addOnBlur_decorators = [forceType(), property({ attribute: "add-on-blur", type: Boolean })];
|
|
402
428
|
__esDecorate(_a, null, _set_value_decorators, { kind: "setter", name: "value", static: false, private: false, access: { has: (obj) => "value" in obj, set: (obj, value) => {
|
|
403
429
|
obj.value = value;
|
|
404
430
|
} }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
@@ -408,6 +434,9 @@ let SbbChipGroupElement = (() => {
|
|
|
408
434
|
__esDecorate(_a, null, _separatorKeys_decorators, { kind: "accessor", name: "separatorKeys", static: false, private: false, access: { has: (obj) => "separatorKeys" in obj, get: (obj) => obj.separatorKeys, set: (obj, value) => {
|
|
409
435
|
obj.separatorKeys = value;
|
|
410
436
|
} }, metadata: _metadata }, _separatorKeys_initializers, _separatorKeys_extraInitializers);
|
|
437
|
+
__esDecorate(_a, null, _addOnBlur_decorators, { kind: "accessor", name: "addOnBlur", static: false, private: false, access: { has: (obj) => "addOnBlur" in obj, get: (obj) => obj.addOnBlur, set: (obj, value) => {
|
|
438
|
+
obj.addOnBlur = value;
|
|
439
|
+
} }, metadata: _metadata }, _addOnBlur_initializers, _addOnBlur_extraInitializers);
|
|
411
440
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
412
441
|
_classThis = _classDescriptor.value;
|
|
413
442
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
@@ -421,4 +450,4 @@ let SbbChipGroupElement = (() => {
|
|
|
421
450
|
export {
|
|
422
451
|
SbbChipGroupElement
|
|
423
452
|
};
|
|
424
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLCBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBpc0xlYW4gfSBmcm9tICcuLi8uLi9jb3JlL2RvbS9sZWFuLWNvbnRleHQudHMnO1xuaW1wb3J0IHsgaTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb24sIGkxOG5TZWxlY3Rpb25SZXF1aXJlZCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi50cyc7XG5pbXBvcnQge1xuICB0eXBlIEZvcm1SZXN0b3JlUmVhc29uLFxuICB0eXBlIEZvcm1SZXN0b3JlU3RhdGUsXG4gIFNiYkRpc2FibGVkTWl4aW4sXG4gIFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbixcbiAgU2JiRm9ybUFzc29jaWF0ZWRNaXhpbixcbiAgU2JiTmVnYXRpdmVNaXhpbixcbiAgU2JiUmVxdWlyZWRNaXhpbixcbn0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMudHMnO1xuaW1wb3J0IHsgYm94U2l6aW5nU3R5bGVzIH0gZnJvbSAnLi4vLi4vY29yZS9zdHlsZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZC9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50LnRzJztcbmltcG9ydCB0eXBlIHsgU2JiT3B0aW9uQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9vcHRpb24vb3B0aW9uL29wdGlvbi1iYXNlLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgU2JiQ2hpcEVsZW1lbnQgfSBmcm9tICcuLi9jaGlwLnRzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vY2hpcC1ncm91cC5zY3NzP2xpdCZpbmxpbmUnO1xuXG5sZXQgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gZmFsc2U7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VCA9IHN0cmluZz4ge1xuICAvKiogVGhlIGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGNoaXAgY3JlYXRpb24gKi9cbiAgb3JpZ2luOiAnaW5wdXQnIHwgJ2F1dG9jb21wbGV0ZSc7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIG5ldyBjaGlwLiBFaXRoZXIgdGhlIGlucHV0IG9yIHRoZSBvcHRpb24gdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBvcmlnaW4uXG4gICAqIEVpdGhlciB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgd2hpY2ggaXMgYWx3YXlzIGBzdHJpbmdgIG9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBzZWxlY3RlZCBvcHRpb25cbiAgICogZnJvbSBhbiBhdXRvY29tcGxldGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW55IG90aGVyIHR5cGUuXG4gICAqL1xuICB2YWx1ZTogVCB8IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBTZXQgYSBuZXcgdmFsdWUgZm9yIHRoZSBjaGlwIHRoYXQgd2lsbCBiZSBjcmVhdGVkICovXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZDtcbiAgLyoqIFNldCBhIGxhYmVsIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRMYWJlbCh2YWx1ZTogc3RyaW5nKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgYHNiYi1jaGlwLWdyb3VwYCBjb21wb25lbnQgaXMgdXNlZCBhcyBhIGNvbnRhaW5lciBmb3Igb25lIG9yIG11bHRpcGxlIGBzYmItY2hpcGAuXG4gKlxuICogQHNsb3QgLSBVc2UgdGhlIHVubmFtZWQgc2xvdCB0byBhZGQgYHNiYi1jaGlwYCBlbGVtZW50cy5cbiAqIEBvdmVycmlkZVR5cGUgdmFsdWUgLSAoVCA9IHN0cmluZ1tdKSB8IG51bGxcbiAqL1xuZXhwb3J0XG5AY3VzdG9tRWxlbWVudCgnc2JiLWNoaXAtZ3JvdXAnKVxuY2xhc3MgU2JiQ2hpcEdyb3VwRWxlbWVudDxUID0gc3RyaW5nPiBleHRlbmRzIFNiYlJlcXVpcmVkTWl4aW4oXG4gIFNiYkRpc2FibGVkTWl4aW4oU2JiTmVnYXRpdmVNaXhpbihTYmJGb3JtQXNzb2NpYXRlZE1peGluKFNiYkVsZW1lbnRJbnRlcm5hbHNNaXhpbihMaXRFbGVtZW50KSkpKSxcbikge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHJlYWRvbmx5IHJvbGUgPSAnbGlzdGJveCc7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IFtib3hTaXppbmdTdHlsZXMsIHN0eWxlXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBldmVudHMgPSB7XG4gICAgaW5wdXQ6ICdpbnB1dCcsXG4gICAgY2hhbmdlOiAnY2hhbmdlJyxcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogJ2NoaXBpbnB1dHRva2VuZW5kJyxcbiAgfSBhcyBjb25zdDtcblxuICAvKiogVmFsdWUgb2YgdGhlIGZvcm0gZWxlbWVudC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogKFQgfCBudWxsKVtdIHwgbnVsbCkge1xuICAgIHZhbHVlID0gdmFsdWUgPz8gW107XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuXG4gICAgLy8gU3VidHJhY3QgZnJvbSAnb2xkVmFsdWUnIHRoZSBuZXcgJ3ZhbHVlJ1xuICAgIC8vIFRoZSByZXN1bHQgYXJlIHRoZSBjaGlwcyB0byByZW1vdmUgKGhhbmRsZSBkdXBsaWNhdGVzKVxuICAgIGNvbnN0IHRvUmVtb3ZlID0gWy4uLm9sZFZhbHVlXTtcbiAgICBmb3IgKGNvbnN0IGMgb2YgdmFsdWUpIHtcbiAgICAgIGlmICh0b1JlbW92ZS5pbmNsdWRlcyhjKSkge1xuICAgICAgICB0b1JlbW92ZS5zcGxpY2UodG9SZW1vdmUuaW5kZXhPZihjKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRvUmVtb3ZlLmZvckVhY2goKHZhbHVlKSA9PlxuICAgICAgdGhpcy5fY2hpcEVsZW1lbnRzKClcbiAgICAgICAgLmZpbmQoKGMpID0+IGMudmFsdWUgPT09IHZhbHVlKVxuICAgICAgICA/LnJlbW92ZSgpLFxuICAgICk7XG5cbiAgICAvLyBTdWJ0cmFjdCBmcm9tIHRoZSBuZXcgJ3ZhbHVlJyB3aGF0IHdhcyBhbHJlYWR5IHByZXNlbnRcbiAgICAvLyBUaGUgcmVzdWx0IGFyZSB0aGUgbmV3IGNoaXBzIHRvIGFkZCAoaGFuZGxlIGR1cGxpY2F0ZXMpXG4gICAgY29uc3QgdG9BZGQgPSBbLi4udmFsdWVdO1xuICAgIGZvciAoY29uc3QgYyBvZiBvbGRWYWx1ZSkge1xuICAgICAgaWYgKHRvQWRkLmluY2x1ZGVzKGMpKSB7XG4gICAgICAgIHRvQWRkLnNwbGljZSh0b0FkZC5pbmRleE9mKGMpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdG9BZGQuZm9yRWFjaCgoYykgPT4gdGhpcy5fY3JlYXRlQ2hpcEVsZW1lbnQoYykpO1xuICB9XG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogKFQgfCBudWxsKVtdIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpcEVsZW1lbnRzKCkubWFwKChjKSA9PiBjLnZhbHVlKTtcbiAgfVxuXG4gIC8qKiBGdW5jdGlvbiB0aGF0IG1hcHMgYSBjaGlwJ3MgdmFsdWUgdG8gaXRzIGRpc3BsYXkgdmFsdWUuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogZmFsc2UgfSlcbiAgcHVibGljIGFjY2Vzc29yIGRpc3BsYXlXaXRoOiAoKHZhbHVlOiBUKSA9PiBzdHJpbmcpIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRoZSBhcnJheSBvZiBrZXlzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgYGNoaXBpbnB1dHRva2VuZW5kYCBldmVudC4gRGVmYXVsdCBgWydFbnRlciddYCAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdzZXBhcmF0b3Ita2V5cycsIHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzZXBhcmF0b3JLZXlzOiBzdHJpbmdbXSA9IFsnRW50ZXInXTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5wdXRBdHRyaWJ1dGVPYnNlcnZlciA9ICFpc1NlcnZlclxuICAgID8gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4gdGhpcy5fcmVhY3RUb0lucHV0Q2hhbmdlcygpKVxuICAgIDogbnVsbDtcblxuICBwcml2YXRlIF9pbnB1dEVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2lucHV0QWJvcnRDb250cm9sbGVyOiBBYm9ydENvbnRyb2xsZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTaXplPzogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oU2JiQ2hpcEVsZW1lbnQuZXZlbnRzLnJlcXVlc3RkZWxldGUsIChldikgPT5cbiAgICAgIHRoaXMuX2RlbGV0ZUNoaXAoZXYudGFyZ2V0IGFzIFNiYkNoaXBFbGVtZW50PFQ+KSxcbiAgICApO1xuXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyPy4oJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uQ2hpcEtleURvd24oZXYpKTtcblxuICAgIHRoaXMuYWRkQ29udHJvbGxlcihcbiAgICAgIG5ldyBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyKHRoaXMsICgpID0+IHRoaXMuY2xvc2VzdCgnc2JiLWZvcm0tZmllbGQnKSwge1xuICAgICAgICBzaXplOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVTaXplKGZvcm1GaWVsZC5zaXplKSxcbiAgICAgICAgbGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgICAgaGlkZGVuTGFiZWw6IChmb3JtRmllbGQpID0+IHRoaXMuX3VwZGF0ZUxhYmVsU3RhdGUoZm9ybUZpZWxkKSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZDogU2JiRm9ybUZpZWxkRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU3RhdGUoJ3dpdGhvdXQtbGFiZWwnLCAhZm9ybUZpZWxkLmxhYmVsIHx8IGZvcm1GaWVsZC5oaWRkZW5MYWJlbCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9zZXR1cENvbXBvbmVudCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Rpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnZm9ybURpc2FibGVkJykgfHxcbiAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmVnYXRpdmUnKVxuICAgICkge1xuICAgICAgdGhpcy5fcHJveHlTdGF0ZVRvQ2hpcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtUmVzZXRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGZvcm1TdGF0ZVJlc3RvcmVDYWxsYmFjayhcbiAgICBzdGF0ZTogRm9ybVJlc3RvcmVTdGF0ZSB8IG51bGwsXG4gICAgX3JlYXNvbjogRm9ybVJlc3RvcmVSZWFzb24sXG4gICk6IHZvaWQge1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3JlYWRGb3JtRGF0YShzdGF0ZSBhcyBGb3JtRGF0YSkudGhlbigoYXJyYXkpID0+ICh0aGlzLnZhbHVlID0gYXJyYXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlYWRGb3JtRGF0YShmb3JtRGF0YTogRm9ybURhdGEpOiBQcm9taXNlPFRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGZvcm1EYXRhXG4gICAgICAgIC5nZXRBbGwodGhpcy5uYW1lKVxuICAgICAgICAubWFwKGFzeW5jIChlbnRyeSkgPT5cbiAgICAgICAgICBlbnRyeSBpbnN0YW5jZW9mIEJsb2IgPyBKU09OLnBhcnNlKGF3YWl0IGVudHJ5LnRleHQoKSkgOiAoZW50cnkgYXMgVCksXG4gICAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRWYWxpZGF0ZShuYW1lOiBQcm9wZXJ0eUtleSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5zaG91bGRWYWxpZGF0ZShuYW1lKSB8fCBuYW1lID09PSAncmVxdWlyZWQnIHx8IG5hbWUgPT09ICd2YWx1ZSc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiB0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZXRWYWxpZGl0eUZsYWcoJ3ZhbHVlTWlzc2luZycsIGkxOG5TZWxlY3Rpb25SZXF1aXJlZFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlVmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnKTtcbiAgICB9XG4gIH1cblxuICAvKiogUmV0dXJuIHRoZSBsaXN0IG9mIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2NoaXBFbGVtZW50cygpOiBTYmJDaGlwRWxlbWVudDxUPltdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LjxTYmJDaGlwRWxlbWVudDxUPj4oJ3NiYi1jaGlwJykgPz8gW10pO1xuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBlbmFibGVkIGNoaXAgZWxlbWVudHMgKiovXG4gIHByaXZhdGUgX2VuYWJsZWRDaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy4oJ3NiYi1jaGlwOm5vdChbZGlzYWJsZWRdKScpID8/IFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpO1xuXG4gICAgLy8gQ29ubmVjdCB0byB0aGUgaW5wdXRcbiAgICBpZiAoaW5wdXQgJiYgaW5wdXQgIT09IHRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXI/LmFib3J0KCk7XG4gICAgICB0aGlzLl9pbnB1dEF0dHJpYnV0ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBpbnB1dDtcblxuICAgICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldikgPT4gdGhpcy5fb25JbnB1dEtleURvd24oZXYpLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0QXV0b2NvbXBsZXRlJyxcbiAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4pID0+IHtcbiAgICAgICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdhdXRvY29tcGxldGUnLCBldmVudC5kZXRhaWw/Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW5oZXJpdCBzaXplIGZyb20gdGhlIGZvcm0tZmllbGQgYW5kIG9ic2VydmUgZm9yIGNoYW5nZXNcbiAgICBpZiAoIXRoaXMuX3ByZXZpb3VzU2l6ZSB8fCAhdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpKSB7XG4gICAgICB0aGlzLl91cGRhdGVTaXplKGlzTGVhbigpID8gJ3MnIDogJ20nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdlbXB0eScsIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGNoaXAgZWxlbWVudHNcbiAgICoqL1xuICBwcml2YXRlIF9vbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgaWYgKGV2ZW50VGFyZ2V0LmxvY2FsTmFtZSAhPT0gJ3NiYi1jaGlwJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFycm93IGtleXMgYWxsb3cgbmF2aWdhdGlvbiBiZXR3ZWVuIGNoaXBzIGZvY3VzIHN0ZXBzXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgY29uc3QgZm9jdXNTdGVwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBmb2N1c1N0ZXBzLmluZGV4T2YoZXZlbnRUYXJnZXQpLCBmb2N1c1N0ZXBzLmxlbmd0aCk7XG4gICAgICBmb2N1c1N0ZXBzW25leHRdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0LnJlYWRPbmx5ICYmICFldmVudFRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldmVudFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3Iga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBpbnB1dFxuICAgKiovXG4gIHByaXZhdGUgX29uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0NoaXAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gUHJldmVudHMgdGhlIGZvcm0gc3VibWl0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHR5cGVkIG9uZSBvZiB0aGUgc2VwYXJhdG9yIGtleXMsIHRyaWdnZXIgYSAnY2hpcGlucHV0dG9rZW5lbmQnIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGlucHV0IGlzIG5vdCBlbXB0eSwgY3JlYXRlIGEgY2hpcCB3aXRoIGl0cyB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEZyb21JbnB1dChvcmlnaW46ICdpbnB1dCcgfCAnYXV0b2NvbXBsZXRlJyA9ICdpbnB1dCcsIHZhbHVlPzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0VmFsdWUgPSB2YWx1ZSA/PyB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlLnRyaW0oKTtcbiAgICBpZiAoIWlucHV0VmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4gPSB7XG4gICAgICBvcmlnaW46IG9yaWdpbixcbiAgICAgIHZhbHVlOiBpbnB1dFZhbHVlLFxuICAgICAgbGFiZWw6ICh2YWx1ZSA/IHRoaXMuZGlzcGxheVdpdGg/Lih2YWx1ZSkgOiBudWxsKSA/PyB1bmRlZmluZWQsXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBUKSA9PiAoZXZlbnREZXRhaWwudmFsdWUgPSB2YWx1ZSksXG4gICAgICBzZXRMYWJlbDogKGxhYmVsOiBzdHJpbmcpID0+IChldmVudERldGFpbC5sYWJlbCA9IGxhYmVsKSxcbiAgICB9O1xuXG4gICAgaWYgKCF0aGlzLl9kaXNwYXRjaENoaXBJbnB1dFRva2VuRW5kKGV2ZW50RGV0YWlsKSkge1xuICAgICAgcmV0dXJuOyAvLyBldmVudCBwcmV2ZW50ZWQ7IGRvIG5vdGhpbmcgKHRoZSBjb25zdW1lciBoYXMgdG8gY3JlYXRlIHRoZSBjaGlwKVxuICAgIH1cblxuICAgIHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGV2ZW50RGV0YWlsLnZhbHVlIGFzIFQsIGV2ZW50RGV0YWlsLmxhYmVsKTtcbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQhLnZhbHVlID0gJyc7IC8vIEVtcHR5IHRoZSBpbnB1dFxuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzcGF0Y2hDaGlwSW5wdXRUb2tlbkVuZChldmVudERldGFpbDogU2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8VD4pOiBib29sZWFuIHtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7Q3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM+fVxuICAgICAqIE5vdGlmaWVzIHRoYXQgYSBjaGlwIGlzIGFib3V0IHRvIGJlIGNyZWF0ZWQuIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAgICovXG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPj4oJ2NoaXBpbnB1dHRva2VuZW5kJywge1xuICAgICAgICBkZXRhaWw6IGV2ZW50RGV0YWlsLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVDaGlwKGNoaXA6IFNiYkNoaXBFbGVtZW50PFQ+KTogdm9pZCB7XG4gICAgY29uc3QgY2hpcHMgPSB0aGlzLl9lbmFibGVkQ2hpcEVsZW1lbnRzKCk7XG4gICAgY2hpcC5yZW1vdmUoKTtcbiAgICB0aGlzLl9lbWl0SW5wdXRFdmVudHMoKTtcbiAgICB0aGlzLl9mb2N1c0NoaXAoY2hpcHMuaW5kZXhPZihjaGlwKSk7IC8vIEZvY3VzIHRoZSBuZXh0IGNoaXBcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1cyBhbiBlbmFibGVkIGNoaXAuIElmIG5vbmUgYXJlIHByZXNlbnQsIGZvY3VzIHRoZSBpbnB1dFxuICAgKiBAcGFyYW0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBlbmFibGVkIGNoaXAuIElmIG51bGwsIGZvY3VzIHRoZSBsYXN0IG9uZS5cbiAgICovXG4gIHByaXZhdGUgX2ZvY3VzQ2hpcChpbmRleD86IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGVuYWJsZWRDaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcblxuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkICYmIGVuYWJsZWRDaGlwc1tpbmRleF0pIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tpbmRleF0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZW5hYmxlZENoaXBzLmxlbmd0aCA+IDApIHtcbiAgICAgIGVuYWJsZWRDaGlwc1tlbmFibGVkQ2hpcHMubGVuZ3RoIC0gMV0uZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0SW5wdXRFdmVudHMoKTogdm9pZCB7XG4gICAgLyoqIFRoZSBpbnB1dCBldmVudCBmaXJlcyB3aGVuIHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFzIGEgZGlyZWN0IHJlc3VsdCBvZiBhIHVzZXIgYWN0aW9uLiAqL1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5wdXRFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQgd2hlbiB0aGUgdXNlciBtb2RpZmllcyB0aGUgZWxlbWVudCdzIHZhbHVlLlxuICAgICAqIFVubGlrZSB0aGUgaW5wdXQgZXZlbnQsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IG5lY2Vzc2FyaWx5IGZpcmVkXG4gICAgICogZm9yIGVhY2ggYWx0ZXJhdGlvbiB0byBhbiBlbGVtZW50J3MgdmFsdWUuXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJywgeyBidWJibGVzOiB0cnVlIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoaXBFbGVtZW50KHZhbHVlOiBUIHwgbnVsbCwgbGFiZWw/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNTZXJ2ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbmV3Q2hpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NiYi1jaGlwJykgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgbmV3Q2hpcC52YWx1ZSA9IHZhbHVlO1xuICAgIG5ld0NoaXAuaW5uZXJUZXh0ID0gbGFiZWwgPz8gKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/ICcnO1xuICAgIGlmIChcbiAgICAgIGltcG9ydC5tZXRhLmVudi5ERVYgJiZcbiAgICAgICFkaXNwbGF5V2l0aFdhcm5pbmdMb2dnZWQgJiZcbiAgICAgICFsYWJlbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgIXRoaXMuZGlzcGxheVdpdGhcbiAgICApIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYGRpc3BsYXlXaXRoIGhhcyBub3QgYmVlbiBzZXQgeWV0IGZvciBzYmItY2hpcC1ncm91cCBhbmQgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICAgICAgICAgSWYgeW91IGFyZSB1c2luZyBvYmplY3QgdmFsdWVzLCB5b3UgbmVlZCB0byBwcm92aWRlIGRpc3BsYXlXaWR0aCBiZWZvcmVcbiAgICAgICAgIHNldHRpbmcgb3Igc2VsZWN0aW5nIGFueSB2YWx1ZS5gLFxuICAgICAgKTtcbiAgICAgIGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5ld0NoaXAsIHRoaXMuX2lucHV0RWxlbWVudCA/PyB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhY3RUb0lucHV0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5faW5wdXRFbGVtZW50Py5kaXNhYmxlZCA/PyBmYWxzZTtcbiAgICB0aGlzLl9wcm94eVN0YXRlVG9DaGlwcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJveHlTdGF0ZVRvQ2hpcHMoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpcEVsZW1lbnRzKCkuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5kaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5mb3JtRGlzYWJsZWQ7XG4gICAgICBjLnJlYWRPbmx5ID0gdGhpcy5faW5wdXRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykgPz8gZmFsc2U7XG4gICAgICBjLm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVNpemUoc2l6ZTogU2JiRm9ybUZpZWxkRWxlbWVudFsnc2l6ZSddKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzU2l6ZSkge1xuICAgICAgdGhpcy5pbnRlcm5hbHMuc3RhdGVzLmRlbGV0ZShgc2l6ZS0ke3RoaXMuX3ByZXZpb3VzU2l6ZX1gKTtcbiAgICB9XG4gICAgdGhpcy5fcHJldmlvdXNTaXplID0gc2l6ZTtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuYWRkKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUlucHV0RGVzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICdhcmlhLWRlc2NyaXB0aW9uJyxcbiAgICAgIGAke2kxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSAke3RoaXMudmFsdWUubGVuZ3RofWAsXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fc2V0dXBDb21wb25lbnR9Pjwvc2xvdD5gO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItY2hpcC1ncm91cCc6IFNiYkNoaXBHcm91cEVsZW1lbnQ7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRFdmVudE1hcCB7XG4gICAgY2hpcGlucHV0dG9rZW5lbmQ6IEN1c3RvbUV2ZW50PFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPGFueT4+O1xuICB9XG59XG4iXSwibmFtZXMiOlsidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3RE0sdUJBQW1CLE1BQUE7OzBCQUR4QixjQUFjLGdCQUFnQixDQUFDOzs7O0FBQ2MsTUFBQSxjQUFBLGlCQUM1QyxpQkFBaUIsaUJBQWlCLHVCQUF1Qix5QkFBeUIsVUFBVSxDQUFDLENBQUMs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
|
|
453
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy9jaGlwL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgaXNTZXJ2ZXIsXG4gIExpdEVsZW1lbnQsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgZ2V0TmV4dEVsZW1lbnRJbmRleCwgaXNBcnJvd0tleVByZXNzZWQgfSBmcm9tICcuLi8uLi9jb3JlL2ExMXkudHMnO1xuaW1wb3J0IHsgU2JiTGFuZ3VhZ2VDb250cm9sbGVyLCBTYmJQcm9wZXJ0eVdhdGNoZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy50cyc7XG5pbXBvcnQgeyBmb3JjZVR5cGUgfSBmcm9tICcuLi8uLi9jb3JlL2RlY29yYXRvcnMudHMnO1xuaW1wb3J0IHsgaXNMZWFuIH0gZnJvbSAnLi4vLi4vY29yZS9kb20vbGVhbi1jb250ZXh0LnRzJztcbmltcG9ydCB7IGkxOG5DaGlwR3JvdXBJbnB1dERlc2NyaXB0aW9uLCBpMThuU2VsZWN0aW9uUmVxdWlyZWQgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgdHlwZSBGb3JtUmVzdG9yZVJlYXNvbixcbiAgdHlwZSBGb3JtUmVzdG9yZVN0YXRlLFxuICBTYmJEaXNhYmxlZE1peGluLFxuICBTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4sXG4gIFNiYkZvcm1Bc3NvY2lhdGVkTWl4aW4sXG4gIFNiYk5lZ2F0aXZlTWl4aW4sXG4gIFNiYlJlcXVpcmVkTWl4aW4sXG59IGZyb20gJy4uLy4uL2NvcmUvbWl4aW5zLnRzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJy4uLy4uL2NvcmUvc3R5bGVzLnRzJztcbmltcG9ydCB0eXBlIHsgU2JiRm9ybUZpZWxkRWxlbWVudCB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgdHlwZSB7IFNiYk9wdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vb3B0aW9uL29wdGlvbi9vcHRpb24tYmFzZS1lbGVtZW50LnRzJztcbmltcG9ydCB7IFNiYkNoaXBFbGVtZW50IH0gZnJvbSAnLi4vY2hpcC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2NoaXAtZ3JvdXAuc2Nzcz9saXQmaW5saW5lJztcblxubGV0IGRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCA9IGZhbHNlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPFQgPSBzdHJpbmc+IHtcbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBjaGlwIGNyZWF0aW9uICovXG4gIG9yaWdpbjogJ2lucHV0JyB8ICdhdXRvY29tcGxldGUnO1xuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBuZXcgY2hpcC4gRWl0aGVyIHRoZSBpbnB1dCBvciB0aGUgb3B0aW9uIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgb3JpZ2luLlxuICAgKiBFaXRoZXIgdGhlIHZhbHVlIGZyb20gdGhlIGlucHV0IHdoaWNoIGlzIGFsd2F5cyBgc3RyaW5nYCBvciB0aGUgdmFsdWUgZnJvbSB0aGUgc2VsZWN0ZWQgb3B0aW9uXG4gICAqIGZyb20gYW4gYXV0b2NvbXBsZXRlLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFueSBvdGhlciB0eXBlLlxuICAgKi9cbiAgdmFsdWU6IFQgfCBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogU2V0IGEgbmV3IHZhbHVlIGZvciB0aGUgY2hpcCB0aGF0IHdpbGwgYmUgY3JlYXRlZCAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVCk6IHZvaWQ7XG4gIC8qKiBTZXQgYSBsYWJlbCBmb3IgdGhlIGNoaXAgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKi9cbiAgc2V0TGFiZWwodmFsdWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogVGhlIGBzYmItY2hpcC1ncm91cGAgY29tcG9uZW50IGlzIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIG9uZSBvciBtdWx0aXBsZSBgc2JiLWNoaXBgLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoZSB1bm5hbWVkIHNsb3QgdG8gYWRkIGBzYmItY2hpcGAgZWxlbWVudHMuXG4gKiBAb3ZlcnJpZGVUeXBlIHZhbHVlIC0gKFQgPSBzdHJpbmdbXSkgfCBudWxsXG4gKi9cbmV4cG9ydFxuQGN1c3RvbUVsZW1lbnQoJ3NiYi1jaGlwLWdyb3VwJylcbmNsYXNzIFNiYkNoaXBHcm91cEVsZW1lbnQ8VCA9IHN0cmluZz4gZXh0ZW5kcyBTYmJSZXF1aXJlZE1peGluKFxuICBTYmJEaXNhYmxlZE1peGluKFNiYk5lZ2F0aXZlTWl4aW4oU2JiRm9ybUFzc29jaWF0ZWRNaXhpbihTYmJFbGVtZW50SW50ZXJuYWxzTWl4aW4oTGl0RWxlbWVudCkpKSksXG4pIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSByb2xlID0gJ2xpc3Rib3gnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBbYm94U2l6aW5nU3R5bGVzLCBzdHlsZV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIGlucHV0OiAnaW5wdXQnLFxuICAgIGNoYW5nZTogJ2NoYW5nZScsXG4gICAgY2hpcGlucHV0dG9rZW5lbmQ6ICdjaGlwaW5wdXR0b2tlbmVuZCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFZhbHVlIG9mIHRoZSBmb3JtIGVsZW1lbnQuICovXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEFycmF5IH0pXG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IChUIHwgbnVsbClbXSB8IG51bGwpIHtcbiAgICB2YWx1ZSA9IHZhbHVlID8/IFtdO1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgIC8vIFN1YnRyYWN0IGZyb20gJ29sZFZhbHVlJyB0aGUgbmV3ICd2YWx1ZSdcbiAgICAvLyBUaGUgcmVzdWx0IGFyZSB0aGUgY2hpcHMgdG8gcmVtb3ZlIChoYW5kbGUgZHVwbGljYXRlcylcbiAgICBjb25zdCB0b1JlbW92ZSA9IFsuLi5vbGRWYWx1ZV07XG4gICAgZm9yIChjb25zdCBjIG9mIHZhbHVlKSB7XG4gICAgICBpZiAodG9SZW1vdmUuaW5jbHVkZXMoYykpIHtcbiAgICAgICAgdG9SZW1vdmUuc3BsaWNlKHRvUmVtb3ZlLmluZGV4T2YoYyksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICB0b1JlbW92ZS5mb3JFYWNoKCh2YWx1ZSkgPT5cbiAgICAgIHRoaXMuX2NoaXBFbGVtZW50cygpXG4gICAgICAgIC5maW5kKChjKSA9PiBjLnZhbHVlID09PSB2YWx1ZSlcbiAgICAgICAgPy5yZW1vdmUoKSxcbiAgICApO1xuXG4gICAgLy8gU3VidHJhY3QgZnJvbSB0aGUgbmV3ICd2YWx1ZScgd2hhdCB3YXMgYWxyZWFkeSBwcmVzZW50XG4gICAgLy8gVGhlIHJlc3VsdCBhcmUgdGhlIG5ldyBjaGlwcyB0byBhZGQgKGhhbmRsZSBkdXBsaWNhdGVzKVxuICAgIGNvbnN0IHRvQWRkID0gWy4uLnZhbHVlXTtcbiAgICBmb3IgKGNvbnN0IGMgb2Ygb2xkVmFsdWUpIHtcbiAgICAgIGlmICh0b0FkZC5pbmNsdWRlcyhjKSkge1xuICAgICAgICB0b0FkZC5zcGxpY2UodG9BZGQuaW5kZXhPZihjKSwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRvQWRkLmZvckVhY2goKGMpID0+IHRoaXMuX2NyZWF0ZUNoaXBFbGVtZW50KGMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IChUIHwgbnVsbClbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaXBFbGVtZW50cygpLm1hcCgoYykgPT4gYy52YWx1ZSk7XG4gIH1cblxuICAvKiogRnVuY3Rpb24gdGhhdCBtYXBzIGEgY2hpcCdzIHZhbHVlIHRvIGl0cyBkaXNwbGF5IHZhbHVlLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6IGZhbHNlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNwbGF5V2l0aDogKCh2YWx1ZTogVCkgPT4gc3RyaW5nKSB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUaGUgYXJyYXkgb2Yga2V5cyB0aGF0IHdpbGwgdHJpZ2dlciBhIGBjaGlwaW5wdXR0b2tlbmVuZGAgZXZlbnQuIERlZmF1bHQgYFsnRW50ZXInXWAgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VwYXJhdG9yLWtleXMnLCB0eXBlOiBBcnJheSB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2VwYXJhdG9yS2V5czogc3RyaW5nW10gPSBbJ0VudGVyJ107XG5cbiAgLyoqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBhZGQgYSBjaGlwIHdoZW4gdGhlIGlucHV0IGxvc2VzIGZvY3VzIGlmIHRoZXJlJ3MgYSB2YWx1ZS4gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2FkZC1vbi1ibHVyJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgYWRkT25CbHVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXIgPSAhaXNTZXJ2ZXJcbiAgICA/IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHRoaXMuX3JlYWN0VG9JbnB1dENoYW5nZXMoKSlcbiAgICA6IG51bGw7XG5cbiAgcHJpdmF0ZSBfaW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX3ByZXZpb3VzU2l6ZT86IFNiYkZvcm1GaWVsZEVsZW1lbnRbJ3NpemUnXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKFNiYkNoaXBFbGVtZW50LmV2ZW50cy5yZXF1ZXN0ZGVsZXRlLCAoZXYpID0+XG4gICAgICB0aGlzLl9kZWxldGVDaGlwKGV2LnRhcmdldCBhcyBTYmJDaGlwRWxlbWVudDxUPiksXG4gICAgKTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcj8uKCdrZXlkb3duJywgKGV2KSA9PiB0aGlzLl9vbkNoaXBLZXlEb3duKGV2KSk7XG5cbiAgICB0aGlzLmFkZENvbnRyb2xsZXIoXG4gICAgICBuZXcgU2JiUHJvcGVydHlXYXRjaGVyQ29udHJvbGxlcih0aGlzLCAoKSA9PiB0aGlzLmNsb3Nlc3QoJ3NiYi1mb3JtLWZpZWxkJyksIHtcbiAgICAgICAgc2l6ZTogKGZvcm1GaWVsZCkgPT4gdGhpcy5fdXBkYXRlU2l6ZShmb3JtRmllbGQuc2l6ZSksXG4gICAgICAgIGxhYmVsOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZCksXG4gICAgICAgIGhpZGRlbkxhYmVsOiAoZm9ybUZpZWxkKSA9PiB0aGlzLl91cGRhdGVMYWJlbFN0YXRlKGZvcm1GaWVsZCksXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlTGFiZWxTdGF0ZShmb3JtRmllbGQ6IFNiYkZvcm1GaWVsZEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCd3aXRob3V0LWxhYmVsJywgIWZvcm1GaWVsZC5sYWJlbCB8fCBmb3JtRmllbGQuaGlkZGVuTGFiZWwpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgdGhpcy5fc2V0dXBDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlcyk6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKFxuICAgICAgY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdkaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2Zvcm1EaXNhYmxlZCcpIHx8XG4gICAgICBjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJylcbiAgICApIHtcbiAgICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZm9ybVJlc2V0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyBmb3JtU3RhdGVSZXN0b3JlQ2FsbGJhY2soXG4gICAgc3RhdGU6IEZvcm1SZXN0b3JlU3RhdGUgfCBudWxsLFxuICAgIF9yZWFzb246IEZvcm1SZXN0b3JlUmVhc29uLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXN0YXRlKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkRm9ybURhdGEoc3RhdGUgYXMgRm9ybURhdGEpLnRoZW4oKGFycmF5KSA9PiAodGhpcy52YWx1ZSA9IGFycmF5KSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9yZWFkRm9ybURhdGEoZm9ybURhdGE6IEZvcm1EYXRhKTogUHJvbWlzZTxUW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBmb3JtRGF0YVxuICAgICAgICAuZ2V0QWxsKHRoaXMubmFtZSlcbiAgICAgICAgLm1hcChhc3luYyAoZW50cnkpID0+XG4gICAgICAgICAgZW50cnkgaW5zdGFuY2VvZiBCbG9iID8gSlNPTi5wYXJzZShhd2FpdCBlbnRyeS50ZXh0KCkpIDogKGVudHJ5IGFzIFQpLFxuICAgICAgICApLFxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc2hvdWxkVmFsaWRhdGUobmFtZTogUHJvcGVydHlLZXkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuc2hvdWxkVmFsaWRhdGUobmFtZSkgfHwgbmFtZSA9PT0gJ3JlcXVpcmVkJyB8fCBuYW1lID09PSAndmFsdWUnO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIHN1cGVyLnZhbGlkYXRlKCk7XG4gICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc2V0VmFsaWRpdHlGbGFnKCd2YWx1ZU1pc3NpbmcnLCBpMThuU2VsZWN0aW9uUmVxdWlyZWRbdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZVZhbGlkaXR5RmxhZygndmFsdWVNaXNzaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJldHVybiB0aGUgbGlzdCBvZiBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9jaGlwRWxlbWVudHMoKTogU2JiQ2hpcEVsZW1lbnQ8VD5bXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5xdWVyeVNlbGVjdG9yQWxsPy48U2JiQ2hpcEVsZW1lbnQ8VD4+KCdzYmItY2hpcCcpID8/IFtdKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gdGhlIGxpc3Qgb2YgZW5hYmxlZCBjaGlwIGVsZW1lbnRzICoqL1xuICBwcml2YXRlIF9lbmFibGVkQ2hpcEVsZW1lbnRzKCk6IFNiYkNoaXBFbGVtZW50PFQ+W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKCdzYmItY2hpcDpub3QoW2Rpc2FibGVkXSknKSA/PyBbXSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENvbXBvbmVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcblxuICAgIC8vIENvbm5lY3QgdG8gdGhlIGlucHV0XG4gICAgaWYgKGlucHV0ICYmIGlucHV0ICE9PSB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyPy5hYm9ydCgpO1xuICAgICAgdGhpcy5faW5wdXRBdHRyaWJ1dGVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50ID0gaW5wdXQ7XG5cbiAgICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXYpID0+IHRoaXMuX29uSW5wdXRLZXlEb3duKGV2KSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9vbklucHV0Qmx1cigpLCB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2lucHV0QXV0b2NvbXBsZXRlJyxcbiAgICAgICAgKGV2ZW50OiBDdXN0b21FdmVudDx7IG9wdGlvbjogU2JiT3B0aW9uQmFzZUVsZW1lbnQ8VD4gfT4pID0+IHtcbiAgICAgICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdhdXRvY29tcGxldGUnLCBldmVudC5kZXRhaWw/Lm9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX2lucHV0QXR0cmlidXRlT2JzZXJ2ZXI/Lm9ic2VydmUodGhpcy5faW5wdXRFbGVtZW50LCB7XG4gICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydyZWFkb25seScsICdkaXNhYmxlZCddLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSW5oZXJpdCBzaXplIGZyb20gdGhlIGZvcm0tZmllbGQgYW5kIG9ic2VydmUgZm9yIGNoYW5nZXNcbiAgICBpZiAoIXRoaXMuX3ByZXZpb3VzU2l6ZSB8fCAhdGhpcy5jbG9zZXN0KCdzYmItZm9ybS1maWVsZCcpKSB7XG4gICAgICB0aGlzLl91cGRhdGVTaXplKGlzTGVhbigpID8gJ3MnIDogJ20nKTtcbiAgICB9XG5cbiAgICB0aGlzLnRvZ2dsZVN0YXRlKCdlbXB0eScsIHRoaXMudmFsdWUubGVuZ3RoID09PSAwKTtcbiAgICB0aGlzLl9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk7XG4gICAgdGhpcy5fdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpO1xuICAgIHRoaXMudXBkYXRlRm9ybVZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBrZXlib2FyZCBldmVudHMgb24gdGhlIGNoaXAgZWxlbWVudHNcbiAgICoqL1xuICBwcml2YXRlIF9vbkNoaXBLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgU2JiQ2hpcEVsZW1lbnQ8VD47XG4gICAgaWYgKGV2ZW50VGFyZ2V0LmxvY2FsTmFtZSAhPT0gJ3NiYi1jaGlwJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFycm93IGtleXMgYWxsb3cgbmF2aWdhdGlvbiBiZXR3ZWVuIGNoaXBzIGZvY3VzIHN0ZXBzXG4gICAgaWYgKGlzQXJyb3dLZXlQcmVzc2VkKGV2ZW50KSkge1xuICAgICAgY29uc3QgZm9jdXNTdGVwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICAgIGNvbnN0IG5leHQgPSBnZXROZXh0RWxlbWVudEluZGV4KGV2ZW50LCBmb2N1c1N0ZXBzLmluZGV4T2YoZXZlbnRUYXJnZXQpLCBmb2N1c1N0ZXBzLmxlbmd0aCk7XG4gICAgICBmb2N1c1N0ZXBzW25leHRdLmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICBpZiAoIWV2ZW50VGFyZ2V0LnJlYWRPbmx5ICYmICFldmVudFRhcmdldC5kaXNhYmxlZCkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5fZGVsZXRlQ2hpcChldmVudFRhcmdldCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExpc3RlbiBmb3Iga2V5Ym9hcmQgZXZlbnRzIG9uIHRoZSBpbnB1dFxuICAgKiovXG4gIHByaXZhdGUgX29uSW5wdXRLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl9mb2N1c0NoaXAoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gUHJldmVudHMgdGhlIGZvcm0gc3VibWl0XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSB1c2VyIHR5cGVkIG9uZSBvZiB0aGUgc2VwYXJhdG9yIGtleXMsIHRyaWdnZXIgYSAnY2hpcGlucHV0dG9rZW5lbmQnIGV2ZW50XG4gICAgaWYgKHRoaXMuc2VwYXJhdG9yS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBwcmV2ZW50IHR5cGluZyB0aGUgc2VwYXJhdG9yIGtleSBpbnRvIHRoZSBpbnB1dFxuICAgICAgdGhpcy5fY3JlYXRlQ2hpcEZyb21JbnB1dCgnaW5wdXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGJsdXIgZXZlbnQgb24gdGhlIGlucHV0XG4gICAqKi9cbiAgcHJpdmF0ZSBfb25JbnB1dEJsdXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWRkT25CbHVyKSB7XG4gICAgICB0aGlzLl9jcmVhdGVDaGlwRnJvbUlucHV0KCdpbnB1dCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgaW5wdXQgaXMgbm90IGVtcHR5LCBjcmVhdGUgYSBjaGlwIHdpdGggaXRzIHZhbHVlXG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVDaGlwRnJvbUlucHV0KG9yaWdpbjogJ2lucHV0JyB8ICdhdXRvY29tcGxldGUnID0gJ2lucHV0JywgdmFsdWU/OiBUKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHZhbHVlID8/IHRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUudHJpbSgpO1xuICAgIGlmICghaW5wdXRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50RGV0YWlsOiBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPiA9IHtcbiAgICAgIG9yaWdpbjogb3JpZ2luLFxuICAgICAgdmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICBsYWJlbDogKHZhbHVlID8gdGhpcy5kaXNwbGF5V2l0aD8uKHZhbHVlKSA6IG51bGwpID8/IHVuZGVmaW5lZCxcbiAgICAgIHNldFZhbHVlOiAodmFsdWU6IFQpID0+IChldmVudERldGFpbC52YWx1ZSA9IHZhbHVlKSxcbiAgICAgIHNldExhYmVsOiAobGFiZWw6IHN0cmluZykgPT4gKGV2ZW50RGV0YWlsLmxhYmVsID0gbGFiZWwpLFxuICAgIH07XG5cbiAgICBpZiAoIXRoaXMuX2Rpc3BhdGNoQ2hpcElucHV0VG9rZW5FbmQoZXZlbnREZXRhaWwpKSB7XG4gICAgICByZXR1cm47IC8vIGV2ZW50IHByZXZlbnRlZDsgZG8gbm90aGluZyAodGhlIGNvbnN1bWVyIGhhcyB0byBjcmVhdGUgdGhlIGNoaXApXG4gICAgfVxuXG4gICAgdGhpcy5fY3JlYXRlQ2hpcEVsZW1lbnQoZXZlbnREZXRhaWwudmFsdWUgYXMgVCwgZXZlbnREZXRhaWwubGFiZWwpO1xuICAgIHRoaXMuX2lucHV0RWxlbWVudCEudmFsdWUgPSAnJzsgLy8gRW1wdHkgdGhlIGlucHV0XG4gICAgdGhpcy5fZW1pdElucHV0RXZlbnRzKCk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNwYXRjaENoaXBJbnB1dFRva2VuRW5kKGV2ZW50RGV0YWlsOiBTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlsczxUPik6IGJvb2xlYW4ge1xuICAgIC8qKlxuICAgICAqIEB0eXBlIHtDdXN0b21FdmVudDxTYmJDaGlwSW5wdXRUb2tlbkVuZEV2ZW50RGV0YWlscz59XG4gICAgICogTm90aWZpZXMgdGhhdCBhIGNoaXAgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZC4gQ2FuIGJlIHByZXZlbnRlZC5cbiAgICAgKi9cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50PFNiYkNoaXBJbnB1dFRva2VuRW5kRXZlbnREZXRhaWxzPFQ+PignY2hpcGlucHV0dG9rZW5lbmQnLCB7XG4gICAgICAgIGRldGFpbDogZXZlbnREZXRhaWwsXG4gICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2RlbGV0ZUNoaXAoY2hpcDogU2JiQ2hpcEVsZW1lbnQ8VD4pOiB2b2lkIHtcbiAgICBjb25zdCBjaGlwcyA9IHRoaXMuX2VuYWJsZWRDaGlwRWxlbWVudHMoKTtcbiAgICBjaGlwLnJlbW92ZSgpO1xuICAgIHRoaXMuX2VtaXRJbnB1dEV2ZW50cygpO1xuICAgIHRoaXMuX2ZvY3VzQ2hpcChjaGlwcy5pbmRleE9mKGNoaXApKTsgLy8gRm9jdXMgdGhlIG5leHQgY2hpcFxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIGFuIGVuYWJsZWQgY2hpcC4gSWYgbm9uZSBhcmUgcHJlc2VudCwgZm9jdXMgdGhlIGlucHV0XG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGVuYWJsZWQgY2hpcC4gSWYgbnVsbCwgZm9jdXMgdGhlIGxhc3Qgb25lLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9jdXNDaGlwKGluZGV4PzogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZW5hYmxlZENoaXBzID0gdGhpcy5fZW5hYmxlZENoaXBFbGVtZW50cygpO1xuXG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQgJiYgZW5hYmxlZENoaXBzW2luZGV4XSkge1xuICAgICAgZW5hYmxlZENoaXBzW2luZGV4XS5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbmFibGVkQ2hpcHMubGVuZ3RoID4gMCkge1xuICAgICAgZW5hYmxlZENoaXBzW2VuYWJsZWRDaGlwcy5sZW5ndGggLSAxXS5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lucHV0RWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2VtaXRJbnB1dEV2ZW50cygpOiB2b2lkIHtcbiAgICAvKiogVGhlIGlucHV0IGV2ZW50IGZpcmVzIHdoZW4gdGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXMgYSBkaXJlY3QgcmVzdWx0IG9mIGEgdXNlciBhY3Rpb24uICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNoYW5nZSBldmVudCBpcyBmaXJlZCB3aGVuIHRoZSB1c2VyIG1vZGlmaWVzIHRoZSBlbGVtZW50J3MgdmFsdWUuXG4gICAgICogVW5saWtlIHRoZSBpbnB1dCBldmVudCwgdGhlIGNoYW5nZSBldmVudCBpcyBub3QgbmVjZXNzYXJpbHkgZmlyZWRcbiAgICAgKiBmb3IgZWFjaCBhbHRlcmF0aW9uIHRvIGFuIGVsZW1lbnQncyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlQ2hpcEVsZW1lbnQodmFsdWU6IFQgfCBudWxsLCBsYWJlbD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChpc1NlcnZlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBuZXdDaGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2JiLWNoaXAnKSBhcyBTYmJDaGlwRWxlbWVudDxUPjtcbiAgICBuZXdDaGlwLnZhbHVlID0gdmFsdWU7XG4gICAgbmV3Q2hpcC5pbm5lclRleHQgPSBsYWJlbCA/PyAodmFsdWUgPyB0aGlzLmRpc3BsYXlXaXRoPy4odmFsdWUpIDogbnVsbCkgPz8gJyc7XG4gICAgaWYgKFxuICAgICAgaW1wb3J0Lm1ldGEuZW52LkRFViAmJlxuICAgICAgIWRpc3BsYXlXaXRoV2FybmluZ0xvZ2dlZCAmJlxuICAgICAgIWxhYmVsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhdGhpcy5kaXNwbGF5V2l0aFxuICAgICkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgZGlzcGxheVdpdGggaGFzIG5vdCBiZWVuIHNldCB5ZXQgZm9yIHNiYi1jaGlwLWdyb3VwIGFuZCB2YWx1ZSBpcyBhbiBvYmplY3QuXG4gICAgICAgICBJZiB5b3UgYXJlIHVzaW5nIG9iamVjdCB2YWx1ZXMsIHlvdSBuZWVkIHRvIHByb3ZpZGUgZGlzcGxheVdpZHRoIGJlZm9yZVxuICAgICAgICAgc2V0dGluZyBvciBzZWxlY3RpbmcgYW55IHZhbHVlLmAsXG4gICAgICApO1xuICAgICAgZGlzcGxheVdpdGhXYXJuaW5nTG9nZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pbnNlcnRCZWZvcmUobmV3Q2hpcCwgdGhpcy5faW5wdXRFbGVtZW50ID8/IHRoaXMucXVlcnlTZWxlY3RvcignaW5wdXQnKSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWFjdFRvSW5wdXRDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/LmRpc2FibGVkID8/IGZhbHNlO1xuICAgIHRoaXMuX3Byb3h5U3RhdGVUb0NoaXBzKCk7XG4gIH1cblxuICBwcml2YXRlIF9wcm94eVN0YXRlVG9DaGlwcygpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGlwRWxlbWVudHMoKS5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBjLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZCB8fCB0aGlzLmZvcm1EaXNhYmxlZDtcbiAgICAgIGMucmVhZE9ubHkgPSB0aGlzLl9pbnB1dEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSA/PyBmYWxzZTtcbiAgICAgIGMubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlU2l6ZShzaXplOiBTYmJGb3JtRmllbGRFbGVtZW50WydzaXplJ10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fcHJldmlvdXNTaXplKSB7XG4gICAgICB0aGlzLmludGVybmFscy5zdGF0ZXMuZGVsZXRlKGBzaXplLSR7dGhpcy5fcHJldmlvdXNTaXplfWApO1xuICAgIH1cbiAgICB0aGlzLl9wcmV2aW91c1NpemUgPSBzaXplO1xuICAgIGlmICh0aGlzLl9wcmV2aW91c1NpemUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxzLnN0YXRlcy5hZGQoYHNpemUtJHt0aGlzLl9wcmV2aW91c1NpemV9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlSW5wdXREZXNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ2FyaWEtZGVzY3JpcHRpb24nLFxuICAgICAgYCR7aTE4bkNoaXBHcm91cElucHV0RGVzY3JpcHRpb25bdGhpcy5fbGFuZ3VhZ2UuY3VycmVudF19ICR7dGhpcy52YWx1ZS5sZW5ndGh9YCxcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNsb3QgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zZXR1cENvbXBvbmVudH0+PC9zbG90PmA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1jaGlwLWdyb3VwJzogU2JiQ2hpcEdyb3VwRWxlbWVudDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudEV2ZW50TWFwIHtcbiAgICBjaGlwaW5wdXR0b2tlbmVuZDogQ3VzdG9tRXZlbnQ8U2JiQ2hpcElucHV0VG9rZW5FbmRFdmVudERldGFpbHM8YW55Pj47XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF5RE0sdUJBQW1CLE1BQUE7OzBCQUR4QixjQUFjLGdCQUFnQixDQUFDOzs7O0FBQ2MsTUFBQSxjQUFBLGlCQUM1QyxpQkFBaUIsaUJBQWlCLHVCQUF1Qix5QkFBeUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFENUQsRUFBQSxtQkFBUSxZQUU3QztBQUFBLElBb0VDLGNBQUE7QUFDRSxZQUFBO0FBeEJGO0FBSUE7QUFLQTtBQVRnQix5QkFBQSxnQ0EvQ1osa0JBQUEsTUFBQSwwQkFBQSxHQUFtQixrQkFBQSxNQUFBLDJCQStDc0MsSUFBSTtBQUlqRCx5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLDhCQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBMEIsQ0FBQyxPQUFPLENBQUM7QUFLbkMseUJBQUEsOEJBQUEsa0JBQUEsTUFBQSxnQ0FBQSxHQUFBLGtCQUFBLE1BQUEseUJBQXFCLEtBQUs7QUFL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
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sbb-esta/lyne-elements-dev",
|
|
3
|
-
"version": "4.6.0-dev.
|
|
3
|
+
"version": "4.6.0-dev.1772094630",
|
|
4
4
|
"description": "Lyne Design System",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"design system",
|
|
7
7
|
"web components",
|
|
8
8
|
"lit",
|
|
9
9
|
"storybook",
|
|
10
|
-
"https://github.com/sbb-design-systems/lyne-components/commit/
|
|
10
|
+
"https://github.com/sbb-design-systems/lyne-components/commit/de3c1c53c8e07f51393fcb6a281ba628e0362c19"
|
|
11
11
|
],
|
|
12
12
|
"type": "module",
|
|
13
13
|
"exports": {
|