@skyux/core 11.49.0 → 11.49.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,27 +1,8 @@
|
|
1
1
|
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
2
|
+
const CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';
|
3
|
+
const CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';
|
2
4
|
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
3
|
-
let styleEl;
|
4
5
|
let nextIdIndex;
|
5
|
-
function ensureStyleEl() {
|
6
|
-
if (!styleEl) {
|
7
|
-
styleEl = document.createElement('style');
|
8
|
-
const css = document.createTextNode(`
|
9
|
-
.${CLS_VIEWKEEPER_FIXED} {
|
10
|
-
position: fixed !important;
|
11
|
-
z-index: 999;
|
12
|
-
opacity: 0.95;
|
13
|
-
overflow: hidden;
|
14
|
-
}
|
15
|
-
|
16
|
-
.sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
|
17
|
-
box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
|
18
|
-
opacity: initial;
|
19
|
-
}
|
20
|
-
`);
|
21
|
-
styleEl.appendChild(css);
|
22
|
-
document.head.appendChild(styleEl);
|
23
|
-
}
|
24
|
-
}
|
25
6
|
function nextId() {
|
26
7
|
nextIdIndex = (nextIdIndex || 0) + 1;
|
27
8
|
return 'viewkeeper-' + nextIdIndex;
|
@@ -114,7 +95,7 @@ export class SkyViewkeeper {
|
|
114
95
|
window.addEventListener('scroll', this.#syncElPositionHandler, true);
|
115
96
|
window.addEventListener('resize', this.#syncElPositionHandler);
|
116
97
|
window.addEventListener('orientationchange', this.#syncElPositionHandler);
|
117
|
-
|
98
|
+
this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);
|
118
99
|
this.syncElPosition(el, boundaryEl);
|
119
100
|
}
|
120
101
|
syncElPosition(el, boundaryEl) {
|
@@ -129,9 +110,11 @@ export class SkyViewkeeper {
|
|
129
110
|
if (this.#needsUpdating(doFixEl, fixedStyles)) {
|
130
111
|
if (doFixEl) {
|
131
112
|
this.#fixEl(el, boundaryInfo, fixedStyles);
|
113
|
+
this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
132
114
|
}
|
133
115
|
else {
|
134
116
|
this.#unfixEl(el);
|
117
|
+
this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
135
118
|
}
|
136
119
|
}
|
137
120
|
const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
|
@@ -148,8 +131,10 @@ export class SkyViewkeeper {
|
|
148
131
|
}
|
149
132
|
if (this.#verticalOffsetEl) {
|
150
133
|
this.#verticalOffsetEl.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);
|
134
|
+
this.#verticalOffsetEl.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
151
135
|
}
|
152
136
|
this.#spacerResizeObserver?.disconnect();
|
137
|
+
this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);
|
153
138
|
this.#el =
|
154
139
|
this.#boundaryEl =
|
155
140
|
this.#verticalOffsetEl =
|
@@ -302,4 +287,4 @@ export class SkyViewkeeper {
|
|
302
287
|
};
|
303
288
|
}
|
304
289
|
}
|
305
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDO0FBRXhELElBQUksT0FBeUIsQ0FBQztBQUM5QixJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxhQUFhO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7R0FDckMsb0JBQW9COzs7Ozs7O3FCQU9GLG9CQUFvQjs7OztDQUl4QyxDQUFDLENBQUM7UUFFQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxNQUFNO0lBQ2IsV0FBVyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQyxPQUFPLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUNoQixFQUFlLEVBQ2YsY0FBNEI7SUFFNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFFMUUsT0FBTztRQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTO1FBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsS0FBc0I7SUFDaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3BCLEVBQWUsRUFDZixJQUFxQixFQUNyQixHQUFvQixFQUNwQixLQUFzQixFQUN0QixTQUEwQixFQUMxQixpQkFBcUMsRUFDckMsT0FBd0IsRUFDeEIsUUFBeUI7SUFFekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxpQkFBaUI7UUFDcEMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLGlCQUFpQixPQUFPO1FBQ3pELENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEIsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRO1FBQ2YsT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU3RSx3QkFBd0I7SUFDeEIsa0JBQWtCO0lBQ2xCLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsRUFBZTtJQUMxQyxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUUzQyxPQUFPLENBQ0wsRUFBRSxDQUFDLFlBQVk7UUFDZixRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDckMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQ3pDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxJQUFTO0lBQ2xDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFaEQsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUVuRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixXQUFXLENBQTBCO0lBRXJDLEdBQUcsQ0FBMEI7SUFFN0IsR0FBRyxDQUFTO0lBRVosU0FBUyxDQUFVO0lBRW5CLGVBQWUsQ0FBUztJQUV4QixpQkFBaUIsQ0FBMEI7SUFFM0Msa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBRXZCLHVCQUF1QixDQUE0QjtJQUVuRCxtQkFBbUIsQ0FBcUI7SUFFeEMsa0JBQWtCLENBQXFCO0lBRXZDLG9CQUFvQixDQUFxQjtJQUV6QyxrQkFBa0IsQ0FBcUI7SUFFdkMsaUJBQWlCLENBQXFCO0lBRXRDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFFckIsZUFBZSxDQUEwQjtJQUV6QyxzQkFBc0IsQ0FBYTtJQUVuQyxxQkFBcUIsQ0FBbUM7SUFFeEQscUJBQXFCLENBQTZCO0lBRWxELFlBQVksT0FBNkI7UUFDdkMsT0FBTyxHQUFHLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxFQUFFLENBQUM7UUFFbkQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRXBDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO1FBRWxELGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDO1lBQ3pELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7UUFDaEUsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFTLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQ3JDLHlCQUF5QixFQUN6QixJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFMUUsYUFBYSxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxFQUFlLEVBQUUsVUFBdUI7UUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFdkQsZ0hBQWdIO1FBQ2hILElBQUksRUFBRSxDQUFDLFdBQVcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDM0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFekQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDbEUsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUM1QixDQUFDO1lBRUYsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FDeEMseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUIsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFFekMsSUFBSSxDQUFDLEdBQUc7Z0JBQ04sSUFBSSxDQUFDLFdBQVc7b0JBQ2hCLElBQUksQ0FBQyxpQkFBaUI7d0JBQ3RCLElBQUksQ0FBQyxxQkFBcUI7NEJBQ3hCLFNBQVMsQ0FBQztZQUVkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFlO1FBQ3RCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFOUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFaEQsd0JBQXdCO1lBQ3hCLElBQUksUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMzQixRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUVELEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLG1CQUFtQjtZQUN0QixJQUFJLENBQUMsa0JBQWtCO2dCQUN2QixJQUFJLENBQUMsb0JBQW9CO29CQUN2QixTQUFTLENBQUM7UUFFZCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUVsQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDbEUsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXhFLE1BQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDO1FBQ3RFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUM3RCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVksQ0FDVixFQUFlLEVBQ2YsWUFBdUMsRUFDdkMsY0FBc0I7UUFFdEIsSUFBSSxTQUFpQixDQUFDO1FBRXRCLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLFNBQVMsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3pFLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDaEQsTUFBTSxzQkFBc0IsR0FDMUIsSUFBSSxDQUFDLHVCQUF1QjtZQUM1QixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQzlDLElBQUksQ0FBQyx1QkFBdUIsQ0FDN0IsQ0FBQztRQUNKLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUMzQixpQkFBaUIsSUFBSSxRQUFRLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUNYLFlBQVksQ0FBQyxTQUFTLEdBQUcsY0FBYyxHQUFHLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUUxRSxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZSxDQUNiLFlBQXVDLEVBQ3ZDLGNBQXNCO1FBRXRCLG9GQUFvRjtRQUNwRixtRkFBbUY7UUFDbkYsd0VBQXdFO1FBQ3hFLHdFQUF3RTtRQUN4RSxNQUFNLEtBQUssR0FDVCxZQUFZLENBQUMsY0FBYztZQUMzQixZQUFZLENBQUMsUUFBUTtZQUNyQixZQUFZLENBQUMsU0FBUyxDQUFDO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztRQUVuRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUNmLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7UUFDN0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpELE9BQU87WUFDTCxXQUFXO1lBQ1gsVUFBVTtZQUNWLFlBQVk7WUFDWixVQUFVO1lBQ1YsU0FBUztTQUNWLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUNaLE9BQWdCLEVBQ2hCLFdBQXFDO1FBRXJDLElBQ0UsQ0FBQyxPQUFPO1lBQ04sSUFBSSxDQUFDLG1CQUFtQixLQUFLLFdBQVcsQ0FBQyxXQUFXO1lBQ3BELElBQUksQ0FBQyxrQkFBa0IsS0FBSyxXQUFXLENBQUMsVUFBVTtZQUNsRCxJQUFJLENBQUMsa0JBQWtCLEtBQUssV0FBVyxDQUFDLFVBQVU7WUFDbEQsSUFBSSxDQUFDLGlCQUFpQixLQUFLLFdBQVcsQ0FBQyxTQUFTO1lBQ2hELElBQUksQ0FBQyxvQkFBb0IsS0FBSyxXQUFXLENBQUMsWUFBWSxDQUFDO1lBQ3pELENBQUMsQ0FBQyxPQUFPO2dCQUNQLENBQUMsQ0FDQyxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUztvQkFDdEMsSUFBSSxDQUFDLG1CQUFtQixLQUFLLElBQUksQ0FDbEMsQ0FBQyxFQUNKLENBQUM7WUFDRCwrRUFBK0U7WUFDL0Usa0ZBQWtGO1lBQ2xGLHlCQUF5QjtZQUN6QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLENBQ0osRUFBZSxFQUNmLFlBQXVDLEVBQ3ZDLFdBQXFDO1FBRXJDLDBCQUEwQjtRQUMxQixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBRTNDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsUUFBUSxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUV6Qyx3QkFBd0I7WUFDeEIsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2xCLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUNuRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FDOUIsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFFRCxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ2pELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBRXJELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLEtBQUssR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBQ25DLENBQUM7UUFFRCxhQUFhLENBQ1gsRUFBRSxFQUNGLFdBQVcsQ0FBQyxXQUFXLEVBQ3ZCLFdBQVcsQ0FBQyxVQUFVLEVBQ3RCLEtBQUssRUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsRUFDNUIsV0FBVyxDQUFDLFNBQVMsRUFDckIsV0FBVyxDQUFDLFVBQVUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxFQUFlLEVBQ2YsVUFBdUI7UUFFdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXJDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFbkQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkUsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FDbEIsV0FBVyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUUxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVO1lBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTO1lBQ2hDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsY0FBYztZQUNkLGNBQWM7WUFDZCxVQUFVO1lBQ1YsUUFBUTtZQUNSLFVBQVU7WUFDVixTQUFTO1lBQ1QsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB9IGZyb20gJy4vdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB9IGZyb20gJy4vdmlld2tlZXBlci1maXhlZC1zdHlsZXMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9mZnNldCB9IGZyb20gJy4vdmlld2tlZXBlci1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkJztcbmNvbnN0IEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMgPSAnYWZ0ZXJWaWV3a2VlcGVyU3luYyc7XG5cbmxldCBzdHlsZUVsOiBIVE1MU3R5bGVFbGVtZW50O1xubGV0IG5leHRJZEluZGV4OiBudW1iZXI7XG5cbmZ1bmN0aW9uIGVuc3VyZVN0eWxlRWwoKTogdm9pZCB7XG4gIGlmICghc3R5bGVFbCkge1xuICAgIHN0eWxlRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYFxuLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgcG9zaXRpb246IGZpeGVkICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDk5OTtcbiAgb3BhY2l0eTogMC45NTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNreS10aGVtZS1tb2Rlcm4gLiR7Q0xTX1ZJRVdLRUVQRVJfRklYRUR9IHtcbiAgYm94LXNoYWRvdzogMHB4IDFweCA4cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIG9wYWNpdHk6IGluaXRpYWw7XG59XG5gKTtcblxuICAgIHN0eWxlRWwuYXBwZW5kQ2hpbGQoY3NzKTtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dElkKCk6IHN0cmluZyB7XG4gIG5leHRJZEluZGV4ID0gKG5leHRJZEluZGV4IHx8IDApICsgMTtcblxuICByZXR1cm4gJ3ZpZXdrZWVwZXItJyArIG5leHRJZEluZGV4O1xufVxuXG5mdW5jdGlvbiBnZXRPZmZzZXQoXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgc2Nyb2xsYWJsZUhvc3Q/OiBIVE1MRWxlbWVudCxcbik6IFNreVZpZXdrZWVwZXJPZmZzZXQge1xuICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IHBhcmVudCA9IHNjcm9sbGFibGVIb3N0ID8gc2Nyb2xsYWJsZUhvc3QgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHJlY3QudG9wICsgcGFyZW50LnNjcm9sbFRvcCxcbiAgICBsZWZ0OiByZWN0LmxlZnQgKyBwYXJlbnQuc2Nyb2xsTGVmdCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHgodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBweFZhbHVlID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICBweFZhbHVlID0gdmFsdWUgKyAncHgnO1xuICB9XG5cbiAgcmV0dXJuIHB4VmFsdWU7XG59XG5cbmZ1bmN0aW9uIHNldEVsUG9zaXRpb24oXG4gIGVsOiBIVE1MRWxlbWVudCxcbiAgbGVmdDogbnVtYmVyIHwgc3RyaW5nLFxuICB0b3A6IG51bWJlciB8IHN0cmluZyxcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZyxcbiAgbWFyZ2luVG9wOiBudW1iZXIgfCBzdHJpbmcsXG4gIG1hcmdpblRvcFByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNsaXBUb3A6IG51bWJlciB8IHN0cmluZyxcbiAgY2xpcExlZnQ6IG51bWJlciB8IHN0cmluZyxcbik6IHZvaWQge1xuICBlbC5zdHlsZS50b3AgPSBweCh0b3ApO1xuICBlbC5zdHlsZS5sZWZ0ID0gcHgobGVmdCk7XG4gIGVsLnN0eWxlLm1hcmdpblRvcCA9IG1hcmdpblRvcFByb3BlcnR5XG4gICAgPyBgY2FsYygke3B4KG1hcmdpblRvcCl9ICsgdmFyKCR7bWFyZ2luVG9wUHJvcGVydHl9LCAwKSlgXG4gICAgOiBweChtYXJnaW5Ub3ApO1xuICBlbC5zdHlsZS5jbGlwUGF0aCA9XG4gICAgY2xpcFRvcCB8fCBjbGlwTGVmdCA/IGBpbnNldCgke3B4KGNsaXBUb3ApfSAwIDAgJHtweChjbGlwTGVmdCl9KWAgOiAnbm9uZSc7XG5cbiAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gIC8qIHNhbml0eSBjaGVjayAqL1xuICBpZiAod2lkdGggIT09IG51bGwpIHtcbiAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHdpZHRoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsOiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICByZXR1cm4gKFxuICAgIGVsLm9mZnNldEhlaWdodCArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsIDEwKSArXG4gICAgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sIDEwKVxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDdXN0b21FdmVudChuYW1lOiBhbnkpOiBDdXN0b21FdmVudDxhbnk+IHtcbiAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG5cbiAgZXZ0LmluaXRDdXN0b21FdmVudChuYW1lLCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCk7XG5cbiAgcmV0dXJuIGV2dDtcbn1cblxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXIge1xuICAjYm91bmRhcnlFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2VsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjaWQ6IHN0cmluZztcblxuICAjc2V0V2lkdGg6IGJvb2xlYW47XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0OiBudW1iZXI7XG5cbiAgI3ZlcnRpY2FsT2Zmc2V0RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICN2aWV3cG9ydE1hcmdpblRvcCA9IDA7XG5cbiAgI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHk6IGAtLSR7c3RyaW5nfWAgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbEZpeGVkTGVmdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxGaXhlZFdpZHRoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBMZWZ0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbENsaXBUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjaXNEZXN0cm95ZWQgPSBmYWxzZTtcblxuICAjc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNzeW5jRWxQb3NpdGlvbkhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgI2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IHVuZGVmaW5lZDtcblxuICAjc3BhY2VyUmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNreVZpZXdrZWVwZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8ge307XG5cbiAgICB0aGlzLiNlbCA9IG9wdGlvbnMuZWw7XG4gICAgdGhpcy4jYm91bmRhcnlFbCA9IG9wdGlvbnMuYm91bmRhcnlFbDtcblxuICAgIGlmICghdGhpcy4jZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1NreVZpZXdrZWVwZXJdIFRoZSBvcHRpb24gYGVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuI2JvdW5kYXJ5RWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1NreVZpZXdrZWVwZXJdIFRoZSBvcHRpb24gYGJvdW5kYXJ5RWxgIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsID0gdGhpcy4jZWw7XG4gICAgY29uc3QgYm91bmRhcnlFbCA9IHRoaXMuI2JvdW5kYXJ5RWw7XG5cbiAgICB0aGlzLiNzZXRXaWR0aCA9ICEhb3B0aW9ucy5zZXRXaWR0aDtcbiAgICB0aGlzLiNpZCA9IG5leHRJZCgpO1xuICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0ID0gb3B0aW9ucy5zY3JvbGxhYmxlSG9zdDtcbiAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXQgfHwgMDtcbiAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsID0gb3B0aW9ucy52ZXJ0aWNhbE9mZnNldEVsO1xuXG4gICAgLy8gT25seSBzZXQgdmlld3BvcnQgbWFyZ2luIGlmIHRoZSBzY3JvbGxhYmxlIGhvc3QgaXMgdW5kZWZpbmVkLlxuICAgIGlmICghdGhpcy4jc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luVG9wID0gb3B0aW9ucy52aWV3cG9ydE1hcmdpblRvcCA/PyAwO1xuICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eSA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKTogdm9pZCA9PlxuICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG5cbiAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG5cbiAgICBlbnN1cmVTdHlsZUVsKCk7XG5cbiAgICB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW5jRWxQb3NpdGlvbihlbDogSFRNTEVsZW1lbnQsIGJvdW5kYXJ5RWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmVydGljYWxPZmZzZXQgPSB0aGlzLiNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlLCBpdHMgc2l6ZSBjYW4ndCBiZSBjYWxjdWxhdGVkLCBzbyBkb24ndCBhdHRlbXB0IHN5bmNpbmcgcG9zaXRpb24gaW4gdGhpcyBjYXNlLlxuICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCAmJiBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGFyeUluZm8gPSB0aGlzLiNnZXRCb3VuZGFyeUluZm8oZWwsIGJvdW5kYXJ5RWwpO1xuICAgIGNvbnN0IGZpeGVkU3R5bGVzID0gdGhpcy4jZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy4jc2hvdWxkRml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuI25lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLiNmaXhFbChlbCwgYm91bmRhcnlJbmZvLCBmaXhlZFN0eWxlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiN1bmZpeEVsKGVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBldnQgPSBjcmVhdGVDdXN0b21FdmVudChFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DKTtcblxuICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jaXNEZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuI2ludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcixcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLiNlbCkge1xuICAgICAgICB0aGlzLiN1bmZpeEVsKHRoaXMuI2VsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgICAgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuXG4gICAgICB0aGlzLiNlbCA9XG4gICAgICAgIHRoaXMuI2JvdW5kYXJ5RWwgPVxuICAgICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsID1cbiAgICAgICAgdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIgPVxuICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy4jaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZCArICctc3BhY2VyJztcbiAgfVxuXG4gICN1bmZpeEVsKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy4jZ2V0U3BhY2VySWQoKSk7XG5cbiAgICBpZiAoc3BhY2VyRWwpIHtcbiAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUoc3BhY2VyRWwpO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChzcGFjZXJFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIHNwYWNlckVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3BhY2VyRWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRUQpO1xuXG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPVxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgd2lkdGggPSAnJztcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihlbCwgJycsICcnLCB3aWR0aCwgJycsICcnLCAwLCAwKTtcbiAgfVxuXG4gICNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpOiBudW1iZXIge1xuICAgIGxldCBvZmZzZXQgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldDtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUgPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnN0eWxlLnRvcDtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3AgPSBwYXJzZUludCh2ZXJ0aWNhbE9mZnNldEVsVG9wU3R5bGUsIDEwKSB8fCAwO1xuXG4gICAgICBvZmZzZXQgKz0gdGhpcy4jdmVydGljYWxPZmZzZXRFbC5vZmZzZXRIZWlnaHQgKyB2ZXJ0aWNhbE9mZnNldEVsVG9wO1xuICAgIH0gZWxzZSBpZiAodGhpcy4jc2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgIG9mZnNldCArPSB0aGlzLiNzY3JvbGxhYmxlSG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gICNzaG91bGRGaXhFbChcbiAgICBlbDogSFRNTEVsZW1lbnQsXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXIsXG4gICk6IGJvb2xlYW4ge1xuICAgIGxldCBhbmNob3JUb3A6IG51bWJlcjtcblxuICAgIGlmIChib3VuZGFyeUluZm8uc3BhY2VyRWwpIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldChib3VuZGFyeUluZm8uc3BhY2VyRWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuY2hvclRvcCA9IGdldE9mZnNldChlbCwgdGhpcy4jc2Nyb2xsYWJsZUhvc3QpLnRvcDtcbiAgICB9XG5cbiAgICBsZXQgdmlld3BvcnRNYXJnaW5Ub3AgPSB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcDtcbiAgICBjb25zdCB2aWV3cG9ydE1hcmdpblByb3BlcnR5ID1cbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHkgJiZcbiAgICAgIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eSxcbiAgICAgICk7XG4gICAgaWYgKHZpZXdwb3J0TWFyZ2luUHJvcGVydHkpIHtcbiAgICAgIHZpZXdwb3J0TWFyZ2luVG9wICs9IHBhcnNlSW50KHZpZXdwb3J0TWFyZ2luUHJvcGVydHksIDEwKTtcbiAgICB9XG5cbiAgICBjb25zdCBkb0ZpeEVsID1cbiAgICAgIGJvdW5kYXJ5SW5mby5zY3JvbGxUb3AgKyB2ZXJ0aWNhbE9mZnNldCArIHZpZXdwb3J0TWFyZ2luVG9wID4gYW5jaG9yVG9wO1xuXG4gICAgcmV0dXJuIGRvRml4RWw7XG4gIH1cblxuICAjZ2V0Rml4ZWRTdHlsZXMoXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXIsXG4gICk6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB7XG4gICAgLy8gSWYgdGhlIGVsZW1lbnQgbmVlZHMgdG8gYmUgZml4ZWQsIHRoaXMgd2lsbCBjYWxjdWxhdGUgaXRzIHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uXG4gICAgLy8gd2lsbCBiZSAwIChmdWxseSB2aXNpYmxlKSB1bmxlc3MgdGhlIHVzZXIgaXMgc2Nyb2xsaW5nIHRoZSBib3VuZGFyeSBvdXQgb2Ygdmlldy5cbiAgICAvLyBJbiB0aGF0IGNhc2UsIHRoZSBlbGVtZW50IHNob3VsZCBiZWdpbiB0byBzY3JvbGwgb3V0IG9mIHZpZXcgd2l0aCB0aGVcbiAgICAvLyByZXN0IG9mIHRoZSBib3VuZGFyeSBieSBzZXR0aW5nIGl0cyB0b3AgcG9zaXRpb24gdG8gYSBuZWdhdGl2ZSB2YWx1ZS5cbiAgICBjb25zdCBlbFRvcCA9XG4gICAgICBib3VuZGFyeUluZm8uYm91bmRhcnlCb3R0b20gLVxuICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgIGJvdW5kYXJ5SW5mby5zY3JvbGxUb3A7XG4gICAgY29uc3QgZWxDbGlwVG9wID0gZWxUb3AgPCB2ZXJ0aWNhbE9mZnNldCA/IHZlcnRpY2FsT2Zmc2V0IC0gZWxUb3AgOiAwO1xuICAgIGNvbnN0IGVsRml4ZWRUb3AgPSBNYXRoLm1pbihlbFRvcCwgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZWxGaXhlZFdpZHRoID0gYm91bmRhcnlJbmZvLmJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgY29uc3QgZWxGaXhlZExlZnQgPVxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5T2Zmc2V0LmxlZnQgLSBib3VuZGFyeUluZm8uc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBlbENsaXBMZWZ0ID0gZWxGaXhlZExlZnQgPCAwID8gMCAtIGVsRml4ZWRMZWZ0IDogMDtcblxuICAgIHJldHVybiB7XG4gICAgICBlbEZpeGVkTGVmdCxcbiAgICAgIGVsRml4ZWRUb3AsXG4gICAgICBlbEZpeGVkV2lkdGgsXG4gICAgICBlbENsaXBMZWZ0LFxuICAgICAgZWxDbGlwVG9wLFxuICAgIH07XG4gIH1cblxuICAjbmVlZHNVcGRhdGluZyhcbiAgICBkb0ZpeEVsOiBib29sZWFuLFxuICAgIGZpeGVkU3R5bGVzOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIChkb0ZpeEVsICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRUb3AgPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRUb3AgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcExlZnQgPT09IGZpeGVkU3R5bGVzLmVsQ2xpcExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcFRvcCA9PT0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRXaWR0aCkgfHxcbiAgICAgICghZG9GaXhFbCAmJlxuICAgICAgICAhKFxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ICE9PSBudWxsXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBlaXRoZXIgY3VycmVudGx5IGZpeGVkIGFuZCBpdHMgcG9zaXRpb24gYW5kIHdpZHRoIGRvIG5vdCBuZWVkXG4gICAgICAvLyB0byBjaGFuZ2UsIG9yIHRoZSBlbGVtZW50IGlzIG5vdCBjdXJyZW50bHkgZml4ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgZml4ZWQuXG4gICAgICAvLyBObyBjaGFuZ2VzIGFyZSBuZWVkZWQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjZml4RWwoXG4gICAgZWw6IEhUTUxFbGVtZW50LFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzLFxuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcigpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlci5vYnNlcnZlKHNwYWNlckVsKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxDbGlwVG9wID0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wO1xuICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID0gZml4ZWRTdHlsZXMuZWxDbGlwTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCxcbiAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHksXG4gICAgICBmaXhlZFN0eWxlcy5lbENsaXBUb3AsXG4gICAgICBmaXhlZFN0eWxlcy5lbENsaXBMZWZ0LFxuICAgICk7XG4gIH1cblxuICAjZ2V0Qm91bmRhcnlJbmZvKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUVsOiBIVE1MRWxlbWVudCxcbiAgKTogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gICAgY29uc3Qgc3BhY2VySWQgPSB0aGlzLiNnZXRTcGFjZXJJZCgpO1xuXG4gICAgY29uc3Qgc3BhY2VyRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzcGFjZXJJZCk7XG5cbiAgICBjb25zdCBib3VuZGFyeU9mZnNldCA9IGdldE9mZnNldChib3VuZGFyeUVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCk7XG4gICAgY29uc3QgYm91bmRhcnlUb3AgPSBib3VuZGFyeU9mZnNldC50b3A7XG4gICAgY29uc3QgYm91bmRhcnlCb3R0b20gPVxuICAgICAgYm91bmRhcnlUb3AgKyBib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSB0aGlzLiNzY3JvbGxhYmxlSG9zdFxuICAgICAgPyB0aGlzLiNzY3JvbGxhYmxlSG9zdC5zY3JvbGxMZWZ0XG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbFRvcFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xuXG4gICAgY29uc3QgZWxIZWlnaHQgPSBnZXRIZWlnaHRXaXRoTWFyZ2luKGVsKTtcblxuICAgIHJldHVybiB7XG4gICAgICBib3VuZGFyeUJvdHRvbSxcbiAgICAgIGJvdW5kYXJ5T2Zmc2V0LFxuICAgICAgYm91bmRhcnlFbCxcbiAgICAgIGVsSGVpZ2h0LFxuICAgICAgc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcCxcbiAgICAgIHNwYWNlcklkLFxuICAgICAgc3BhY2VyRWwsXG4gICAgfTtcbiAgfVxufVxuIl19
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLDZCQUE2QixHQUFHLCtCQUErQixDQUFDO0FBQ3RFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDMUQsTUFBTSx5QkFBeUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV4RCxJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxNQUFNO0lBQ2IsV0FBVyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQyxPQUFPLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUNoQixFQUFlLEVBQ2YsY0FBNEI7SUFFNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFFMUUsT0FBTztRQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTO1FBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVO0tBQ3BDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxFQUFFLENBQUMsS0FBc0I7SUFDaEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU1QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFD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TSxXQUFXLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FDbEIsV0FBVyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUUxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVO1lBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZTtZQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTO1lBQ2hDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUV2QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsY0FBYztZQUNkLGNBQWM7WUFDZCxVQUFVO1lBQ1YsUUFBUTtZQUNSLFVBQVU7WUFDVixTQUFTO1lBQ1QsUUFBUTtZQUNSLFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB9IGZyb20gJy4vdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB9IGZyb20gJy4vdmlld2tlZXBlci1maXhlZC1zdHlsZXMnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9mZnNldCB9IGZyb20gJy4vdmlld2tlZXBlci1vZmZzZXQnO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkJztcbmNvbnN0IENMU19WSUVXS0VFUEVSX0ZJWEVEX05PVF9MQVNUID0gJ3NreS12aWV3a2VlcGVyLWZpeGVkLW5vdC1sYXN0JztcbmNvbnN0IENMU19WSUVXS0VFUEVSX0JPVU5EQVJZID0gJ3NreS12aWV3a2VlcGVyLWJvdW5kYXJ5JztcbmNvbnN0IEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMgPSAnYWZ0ZXJWaWV3a2VlcGVyU3luYyc7XG5cbmxldCBuZXh0SWRJbmRleDogbnVtYmVyO1xuXG5mdW5jdGlvbiBuZXh0SWQoKTogc3RyaW5nIHtcbiAgbmV4dElkSW5kZXggPSAobmV4dElkSW5kZXggfHwgMCkgKyAxO1xuXG4gIHJldHVybiAndmlld2tlZXBlci0nICsgbmV4dElkSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGdldE9mZnNldChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50LFxuKTogU2t5Vmlld2tlZXBlck9mZnNldCB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50ID0gc2Nyb2xsYWJsZUhvc3QgPyBzY3JvbGxhYmxlSG9zdCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgIGxlZnQ6IHJlY3QubGVmdCArIHBhcmVudC5zY3JvbGxMZWZ0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBweCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHB4VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHB4VmFsdWUgPSB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gcHhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0RWxQb3NpdGlvbihcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBsZWZ0OiBudW1iZXIgfCBzdHJpbmcsXG4gIHRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nLFxuICBtYXJnaW5Ub3A6IG51bWJlciB8IHN0cmluZyxcbiAgbWFyZ2luVG9wUHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY2xpcFRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICBjbGlwTGVmdDogbnVtYmVyIHwgc3RyaW5nLFxuKTogdm9pZCB7XG4gIGVsLnN0eWxlLnRvcCA9IHB4KHRvcCk7XG4gIGVsLnN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgZWwuc3R5bGUubWFyZ2luVG9wID0gbWFyZ2luVG9wUHJvcGVydHlcbiAgICA/IGBjYWxjKCR7cHgobWFyZ2luVG9wKX0gKyB2YXIoJHttYXJnaW5Ub3BQcm9wZXJ0eX0sIDApKWBcbiAgICA6IHB4KG1hcmdpblRvcCk7XG4gIGVsLnN0eWxlLmNsaXBQYXRoID1cbiAgICBjbGlwVG9wIHx8IGNsaXBMZWZ0ID8gYGluc2V0KCR7cHgoY2xpcFRvcCl9IDAgMCAke3B4KGNsaXBMZWZ0KX0pYCA6ICdub25lJztcblxuICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgLyogc2FuaXR5IGNoZWNrICovXG4gIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgIGVsLnN0eWxlLndpZHRoID0gcHgod2lkdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEhlaWdodFdpdGhNYXJnaW4oZWw6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwpO1xuXG4gIHJldHVybiAoXG4gICAgZWwub2Zmc2V0SGVpZ2h0ICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpblRvcCwgMTApICtcbiAgICBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSwgMTApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUV2ZW50KG5hbWU6IGFueSk6IEN1c3RvbUV2ZW50PGFueT4ge1xuICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTtcblxuICBldnQuaW5pdEN1c3RvbUV2ZW50KG5hbWUsIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkKTtcblxuICByZXR1cm4gZXZ0O1xufVxuXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlciB7XG4gICNib3VuZGFyeUVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjZWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNpZDogc3RyaW5nO1xuXG4gICNzZXRXaWR0aDogYm9vbGVhbjtcblxuICAjdmVydGljYWxPZmZzZXQ6IG51bWJlcjtcblxuICAjdmVydGljYWxPZmZzZXRFbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdwb3J0TWFyZ2luVG9wID0gMDtcblxuICAjdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eTogYC0tJHtzdHJpbmd9YCB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRMZWZ0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbEZpeGVkVG9wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRFbEZpeGVkV2lkdGg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsQ2xpcExlZnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsQ2xpcFRvcDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICNzY3JvbGxhYmxlSG9zdDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI3N5bmNFbFBvc2l0aW9uSGFuZGxlcjogKCkgPT4gdm9pZDtcblxuICAjaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNzcGFjZXJSZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2t5Vmlld2tlZXBlck9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyB7fTtcblxuICAgIHRoaXMuI2VsID0gb3B0aW9ucy5lbDtcbiAgICB0aGlzLiNib3VuZGFyeUVsID0gb3B0aW9ucy5ib3VuZGFyeUVsO1xuXG4gICAgaWYgKCF0aGlzLiNlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbU2t5Vmlld2tlZXBlcl0gVGhlIG9wdGlvbiBgZWxgIGlzIHJlcXVpcmVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy4jYm91bmRhcnlFbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbU2t5Vmlld2tlZXBlcl0gVGhlIG9wdGlvbiBgYm91bmRhcnlFbGAgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWwgPSB0aGlzLiNlbDtcbiAgICBjb25zdCBib3VuZGFyeUVsID0gdGhpcy4jYm91bmRhcnlFbDtcblxuICAgIHRoaXMuI3NldFdpZHRoID0gISFvcHRpb25zLnNldFdpZHRoO1xuICAgIHRoaXMuI2lkID0gbmV4dElkKCk7XG4gICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3QgPSBvcHRpb25zLnNjcm9sbGFibGVIb3N0O1xuICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0ID0gb3B0aW9ucy52ZXJ0aWNhbE9mZnNldCB8fCAwO1xuICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0RWw7XG5cbiAgICAvLyBPbmx5IHNldCB2aWV3cG9ydCBtYXJnaW4gaWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyB1bmRlZmluZWQuXG4gICAgaWYgKCF0aGlzLiNzY3JvbGxhYmxlSG9zdCkge1xuICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Ub3AgPSBvcHRpb25zLnZpZXdwb3J0TWFyZ2luVG9wID8/IDA7XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblByb3BlcnR5ID0gb3B0aW9ucy52aWV3cG9ydE1hcmdpblByb3BlcnR5O1xuICAgIH1cblxuICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlciA9ICgpOiB2b2lkID0+XG4gICAgICB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcblxuICAgIGlmICh0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsKSB7XG4gICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlciwgdHJ1ZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29yaWVudGF0aW9uY2hhbmdlJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyKTtcblxuICAgIHRoaXMuI2JvdW5kYXJ5RWwuY2xhc3NMaXN0LmFkZChDTFNfVklFV0tFRVBFUl9CT1VOREFSWSk7XG5cbiAgICB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW5jRWxQb3NpdGlvbihlbDogSFRNTEVsZW1lbnQsIGJvdW5kYXJ5RWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmVydGljYWxPZmZzZXQgPSB0aGlzLiNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlLCBpdHMgc2l6ZSBjYW4ndCBiZSBjYWxjdWxhdGVkLCBzbyBkb24ndCBhdHRlbXB0IHN5bmNpbmcgcG9zaXRpb24gaW4gdGhpcyBjYXNlLlxuICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCAmJiBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGFyeUluZm8gPSB0aGlzLiNnZXRCb3VuZGFyeUluZm8oZWwsIGJvdW5kYXJ5RWwpO1xuICAgIGNvbnN0IGZpeGVkU3R5bGVzID0gdGhpcy4jZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy4jc2hvdWxkRml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuI25lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLiNmaXhFbChlbCwgYm91bmRhcnlJbmZvLCBmaXhlZFN0eWxlcyk7XG4gICAgICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWw/LmNsYXNzTGlzdC5hZGQoQ0xTX1ZJRVdLRUVQRVJfRklYRURfTk9UX0xBU1QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jdW5maXhFbChlbCk7XG4gICAgICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWw/LmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRURfTk9UX0xBU1QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV2dCA9IGNyZWF0ZUN1c3RvbUV2ZW50KEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMpO1xuXG4gICAgZWwuZGlzcGF0Y2hFdmVudChldnQpO1xuICB9XG5cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNpc0Rlc3Ryb3llZCkge1xuICAgICAgdGhpcy4jaW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ29yaWVudGF0aW9uY2hhbmdlJyxcbiAgICAgICAgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLFxuICAgICAgKTtcblxuICAgICAgaWYgKHRoaXMuI2VsKSB7XG4gICAgICAgIHRoaXMuI3VuZml4RWwodGhpcy4jZWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyxcbiAgICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwuY2xhc3NMaXN0LnJlbW92ZShDTFNfVklFV0tFRVBFUl9GSVhFRF9OT1RfTEFTVCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB0aGlzLiNib3VuZGFyeUVsPy5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0JPVU5EQVJZKTtcblxuICAgICAgdGhpcy4jZWwgPVxuICAgICAgICB0aGlzLiNib3VuZGFyeUVsID1cbiAgICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9XG4gICAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyID1cbiAgICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMuI2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAjZ2V0U3BhY2VySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy4jaWQgKyAnLXNwYWNlcic7XG4gIH1cblxuICAjdW5maXhFbChlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuI2dldFNwYWNlcklkKCkpO1xuXG4gICAgaWYgKHNwYWNlckVsKSB7XG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcj8udW5vYnNlcnZlKHNwYWNlckVsKTtcblxuICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgICBpZiAoc3BhY2VyRWwucGFyZW50RWxlbWVudCkge1xuICAgICAgICBzcGFjZXJFbC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHNwYWNlckVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCA9XG4gICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFRvcCA9XG4gICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID1cbiAgICAgICAgdW5kZWZpbmVkO1xuXG4gICAgbGV0IHdpZHRoID0gJyc7XG5cbiAgICBpZiAodGhpcy4jc2V0V2lkdGgpIHtcbiAgICAgIHdpZHRoID0gJ2F1dG8nO1xuICAgIH1cblxuICAgIHNldEVsUG9zaXRpb24oZWwsICcnLCAnJywgd2lkdGgsICcnLCAnJywgMCwgMCk7XG4gIH1cblxuICAjY2FsY3VsYXRlVmVydGljYWxPZmZzZXQoKTogbnVtYmVyIHtcbiAgICBsZXQgb2Zmc2V0ID0gdGhpcy4jdmVydGljYWxPZmZzZXQ7XG5cbiAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcFN0eWxlID0gdGhpcy4jdmVydGljYWxPZmZzZXRFbC5zdHlsZS50b3A7XG4gICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldEVsVG9wID0gcGFyc2VJbnQodmVydGljYWxPZmZzZXRFbFRvcFN0eWxlLCAxMCkgfHwgMDtcblxuICAgICAgb2Zmc2V0ICs9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwub2Zmc2V0SGVpZ2h0ICsgdmVydGljYWxPZmZzZXRFbFRvcDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuI3Njcm9sbGFibGVIb3N0KSB7XG4gICAgICBvZmZzZXQgKz0gdGhpcy4jc2Nyb2xsYWJsZUhvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG4gIH1cblxuICAjc2hvdWxkRml4RWwoXG4gICAgZWw6IEhUTUxFbGVtZW50LFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICB2ZXJ0aWNhbE9mZnNldDogbnVtYmVyLFxuICApOiBib29sZWFuIHtcbiAgICBsZXQgYW5jaG9yVG9wOiBudW1iZXI7XG5cbiAgICBpZiAoYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoYm91bmRhcnlJbmZvLnNwYWNlckVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCkudG9wO1xuICAgIH0gZWxzZSB7XG4gICAgICBhbmNob3JUb3AgPSBnZXRPZmZzZXQoZWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KS50b3A7XG4gICAgfVxuXG4gICAgbGV0IHZpZXdwb3J0TWFyZ2luVG9wID0gdGhpcy4jdmlld3BvcnRNYXJnaW5Ub3A7XG4gICAgY29uc3Qgdmlld3BvcnRNYXJnaW5Qcm9wZXJ0eSA9XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblByb3BlcnR5ICYmXG4gICAgICBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAgIHRoaXMuI3ZpZXdwb3J0TWFyZ2luUHJvcGVydHksXG4gICAgICApO1xuICAgIGlmICh2aWV3cG9ydE1hcmdpblByb3BlcnR5KSB7XG4gICAgICB2aWV3cG9ydE1hcmdpblRvcCArPSBwYXJzZUludCh2aWV3cG9ydE1hcmdpblByb3BlcnR5LCAxMCk7XG4gICAgfVxuXG4gICAgY29uc3QgZG9GaXhFbCA9XG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wICsgdmVydGljYWxPZmZzZXQgKyB2aWV3cG9ydE1hcmdpblRvcCA+IGFuY2hvclRvcDtcblxuICAgIHJldHVybiBkb0ZpeEVsO1xuICB9XG5cbiAgI2dldEZpeGVkU3R5bGVzKFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICB2ZXJ0aWNhbE9mZnNldDogbnVtYmVyLFxuICApOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICAgIC8vIElmIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIGZpeGVkLCB0aGlzIHdpbGwgY2FsY3VsYXRlIGl0cyBwb3NpdGlvbi4gIFRoZSBwb3NpdGlvblxuICAgIC8vIHdpbGwgYmUgMCAoZnVsbHkgdmlzaWJsZSkgdW5sZXNzIHRoZSB1c2VyIGlzIHNjcm9sbGluZyB0aGUgYm91bmRhcnkgb3V0IG9mIHZpZXcuXG4gICAgLy8gSW4gdGhhdCBjYXNlLCB0aGUgZWxlbWVudCBzaG91bGQgYmVnaW4gdG8gc2Nyb2xsIG91dCBvZiB2aWV3IHdpdGggdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgYm91bmRhcnkgYnkgc2V0dGluZyBpdHMgdG9wIHBvc2l0aW9uIHRvIGEgbmVnYXRpdmUgdmFsdWUuXG4gICAgY29uc3QgZWxUb3AgPVxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5Qm90dG9tIC1cbiAgICAgIGJvdW5kYXJ5SW5mby5lbEhlaWdodCAtXG4gICAgICBib3VuZGFyeUluZm8uc2Nyb2xsVG9wO1xuICAgIGNvbnN0IGVsQ2xpcFRvcCA9IGVsVG9wIDwgdmVydGljYWxPZmZzZXQgPyB2ZXJ0aWNhbE9mZnNldCAtIGVsVG9wIDogMDtcbiAgICBjb25zdCBlbEZpeGVkVG9wID0gTWF0aC5taW4oZWxUb3AsIHZlcnRpY2FsT2Zmc2V0KTtcblxuICAgIGNvbnN0IGVsRml4ZWRXaWR0aCA9IGJvdW5kYXJ5SW5mby5ib3VuZGFyeUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIGNvbnN0IGVsRml4ZWRMZWZ0ID1cbiAgICAgIGJvdW5kYXJ5SW5mby5ib3VuZGFyeU9mZnNldC5sZWZ0IC0gYm91bmRhcnlJbmZvLnNjcm9sbExlZnQ7XG4gICAgY29uc3QgZWxDbGlwTGVmdCA9IGVsRml4ZWRMZWZ0IDwgMCA/IDAgLSBlbEZpeGVkTGVmdCA6IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZWxGaXhlZExlZnQsXG4gICAgICBlbEZpeGVkVG9wLFxuICAgICAgZWxGaXhlZFdpZHRoLFxuICAgICAgZWxDbGlwTGVmdCxcbiAgICAgIGVsQ2xpcFRvcCxcbiAgICB9O1xuICB9XG5cbiAgI25lZWRzVXBkYXRpbmcoXG4gICAgZG9GaXhFbDogYm9vbGVhbixcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzLFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAoZG9GaXhFbCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRMZWZ0ICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID09PSBmaXhlZFN0eWxlcy5lbENsaXBMZWZ0ICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbENsaXBUb3AgPT09IGZpeGVkU3R5bGVzLmVsQ2xpcFRvcCAmJlxuICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID09PSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGgpIHx8XG4gICAgICAoIWRvRml4RWwgJiZcbiAgICAgICAgIShcbiAgICAgICAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gbnVsbFxuICAgICAgICApKVxuICAgICkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgZWl0aGVyIGN1cnJlbnRseSBmaXhlZCBhbmQgaXRzIHBvc2l0aW9uIGFuZCB3aWR0aCBkbyBub3QgbmVlZFxuICAgICAgLy8gdG8gY2hhbmdlLCBvciB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IGZpeGVkIGFuZCBkb2VzIG5vdCBuZWVkIHRvIGJlIGZpeGVkLlxuICAgICAgLy8gTm8gY2hhbmdlcyBhcmUgbmVlZGVkLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgI2ZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgZml4ZWRTdHlsZXM6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyxcbiAgKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICBpZiAoIWJvdW5kYXJ5SW5mby5zcGFjZXJFbCkge1xuICAgICAgY29uc3Qgc3BhY2VySGVpZ2h0ID0gYm91bmRhcnlJbmZvLmVsSGVpZ2h0O1xuXG4gICAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgc3BhY2VyRWwuaWQgPSBib3VuZGFyeUluZm8uc3BhY2VySWQ7XG4gICAgICBzcGFjZXJFbC5zdHlsZS5oZWlnaHQgPSBweChzcGFjZXJIZWlnaHQpO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChlbC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGVsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNwYWNlckVsLCBlbC5uZXh0U2libGluZyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT5cbiAgICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIoKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShzcGFjZXJFbCk7XG4gICAgfVxuXG4gICAgZWwuY2xhc3NMaXN0LmFkZChDTFNfVklFV0tFRVBFUl9GSVhFRCk7XG5cbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFRvcCA9IGZpeGVkU3R5bGVzLmVsRml4ZWRUb3A7XG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQ7XG4gICAgdGhpcy4jY3VycmVudEVsQ2xpcFRvcCA9IGZpeGVkU3R5bGVzLmVsQ2xpcFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxDbGlwTGVmdCA9IGZpeGVkU3R5bGVzLmVsQ2xpcExlZnQ7XG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRXaWR0aCA9IGZpeGVkU3R5bGVzLmVsRml4ZWRXaWR0aDtcblxuICAgIGxldCB3aWR0aCA9IDA7XG5cbiAgICBpZiAodGhpcy4jc2V0V2lkdGgpIHtcbiAgICAgIHdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuICAgIH1cblxuICAgIHNldEVsUG9zaXRpb24oXG4gICAgICBlbCxcbiAgICAgIGZpeGVkU3R5bGVzLmVsRml4ZWRMZWZ0LFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZFRvcCxcbiAgICAgIHdpZHRoLFxuICAgICAgdGhpcy4jdmlld3BvcnRNYXJnaW5Ub3AsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblByb3BlcnR5LFxuICAgICAgZml4ZWRTdHlsZXMuZWxDbGlwVG9wLFxuICAgICAgZml4ZWRTdHlsZXMuZWxDbGlwTGVmdCxcbiAgICApO1xuICB9XG5cbiAgI2dldEJvdW5kYXJ5SW5mbyhcbiAgICBlbDogSFRNTEVsZW1lbnQsXG4gICAgYm91bmRhcnlFbDogSFRNTEVsZW1lbnQsXG4gICk6IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8ge1xuICAgIGNvbnN0IHNwYWNlcklkID0gdGhpcy4jZ2V0U3BhY2VySWQoKTtcblxuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3BhY2VySWQpO1xuXG4gICAgY29uc3QgYm91bmRhcnlPZmZzZXQgPSBnZXRPZmZzZXQoYm91bmRhcnlFbCwgdGhpcy4jc2Nyb2xsYWJsZUhvc3QpO1xuICAgIGNvbnN0IGJvdW5kYXJ5VG9wID0gYm91bmRhcnlPZmZzZXQudG9wO1xuICAgIGNvbnN0IGJvdW5kYXJ5Qm90dG9tID1cbiAgICAgIGJvdW5kYXJ5VG9wICsgYm91bmRhcnlFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG5cbiAgICBjb25zdCBzY3JvbGxMZWZ0ID0gdGhpcy4jc2Nyb2xsYWJsZUhvc3RcbiAgICAgID8gdGhpcy4jc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsTGVmdFxuICAgICAgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLiNzY3JvbGxhYmxlSG9zdFxuICAgICAgPyB0aGlzLiNzY3JvbGxhYmxlSG9zdC5zY3JvbGxUb3BcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcblxuICAgIGNvbnN0IGVsSGVpZ2h0ID0gZ2V0SGVpZ2h0V2l0aE1hcmdpbihlbCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYm91bmRhcnlCb3R0b20sXG4gICAgICBib3VuZGFyeU9mZnNldCxcbiAgICAgIGJvdW5kYXJ5RWwsXG4gICAgICBlbEhlaWdodCxcbiAgICAgIHNjcm9sbExlZnQsXG4gICAgICBzY3JvbGxUb3AsXG4gICAgICBzcGFjZXJJZCxcbiAgICAgIHNwYWNlckVsLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/version.mjs
CHANGED
@@ -15,5 +15,5 @@ export class Version {
|
|
15
15
|
/**
|
16
16
|
* Represents the version of @skyux/core.
|
17
17
|
*/
|
18
|
-
export const VERSION = new Version('11.49.
|
18
|
+
export const VERSION = new Version('11.49.2');
|
19
19
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxtRkFBbUY7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBNEIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGFrZW4gZnJvbSBBbmd1bGFyJ3MgdmVyc2lvbi50cyBmaWxlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTYuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHNcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIGEgcGFja2FnZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbiB7XG4gIHB1YmxpYyByZWFkb25seSBtYWpvcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWlub3I6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhdGNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGZ1bGw6IHN0cmluZykge1xuICAgIHRoaXMubWFqb3IgPSBmdWxsLnNwbGl0KCcuJylbMF07XG4gICAgdGhpcy5taW5vciA9IGZ1bGwuc3BsaXQoJy4nKVsxXTtcbiAgICB0aGlzLnBhdGNoID0gZnVsbC5zcGxpdCgnLicpLnNsaWNlKDIpLmpvaW4oJy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgQHNreXV4L2NvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=
|
package/fesm2022/skyux-core.mjs
CHANGED
@@ -4097,29 +4097,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
4097
4097
|
}] });
|
4098
4098
|
|
4099
4099
|
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
4100
|
+
const CLS_VIEWKEEPER_FIXED_NOT_LAST = 'sky-viewkeeper-fixed-not-last';
|
4101
|
+
const CLS_VIEWKEEPER_BOUNDARY = 'sky-viewkeeper-boundary';
|
4100
4102
|
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
4101
|
-
let styleEl;
|
4102
4103
|
let nextIdIndex;
|
4103
|
-
function ensureStyleEl() {
|
4104
|
-
if (!styleEl) {
|
4105
|
-
styleEl = document.createElement('style');
|
4106
|
-
const css = document.createTextNode(`
|
4107
|
-
.${CLS_VIEWKEEPER_FIXED} {
|
4108
|
-
position: fixed !important;
|
4109
|
-
z-index: 999;
|
4110
|
-
opacity: 0.95;
|
4111
|
-
overflow: hidden;
|
4112
|
-
}
|
4113
|
-
|
4114
|
-
.sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
|
4115
|
-
box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
|
4116
|
-
opacity: initial;
|
4117
|
-
}
|
4118
|
-
`);
|
4119
|
-
styleEl.appendChild(css);
|
4120
|
-
document.head.appendChild(styleEl);
|
4121
|
-
}
|
4122
|
-
}
|
4123
4104
|
function nextId() {
|
4124
4105
|
nextIdIndex = (nextIdIndex || 0) + 1;
|
4125
4106
|
return 'viewkeeper-' + nextIdIndex;
|
@@ -4212,7 +4193,7 @@ class SkyViewkeeper {
|
|
4212
4193
|
window.addEventListener('scroll', this.#syncElPositionHandler, true);
|
4213
4194
|
window.addEventListener('resize', this.#syncElPositionHandler);
|
4214
4195
|
window.addEventListener('orientationchange', this.#syncElPositionHandler);
|
4215
|
-
|
4196
|
+
this.#boundaryEl.classList.add(CLS_VIEWKEEPER_BOUNDARY);
|
4216
4197
|
this.syncElPosition(el, boundaryEl);
|
4217
4198
|
}
|
4218
4199
|
syncElPosition(el, boundaryEl) {
|
@@ -4227,9 +4208,11 @@ class SkyViewkeeper {
|
|
4227
4208
|
if (this.#needsUpdating(doFixEl, fixedStyles)) {
|
4228
4209
|
if (doFixEl) {
|
4229
4210
|
this.#fixEl(el, boundaryInfo, fixedStyles);
|
4211
|
+
this.#verticalOffsetEl?.classList.add(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
4230
4212
|
}
|
4231
4213
|
else {
|
4232
4214
|
this.#unfixEl(el);
|
4215
|
+
this.#verticalOffsetEl?.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
4233
4216
|
}
|
4234
4217
|
}
|
4235
4218
|
const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
|
@@ -4246,8 +4229,10 @@ class SkyViewkeeper {
|
|
4246
4229
|
}
|
4247
4230
|
if (this.#verticalOffsetEl) {
|
4248
4231
|
this.#verticalOffsetEl.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);
|
4232
|
+
this.#verticalOffsetEl.classList.remove(CLS_VIEWKEEPER_FIXED_NOT_LAST);
|
4249
4233
|
}
|
4250
4234
|
this.#spacerResizeObserver?.disconnect();
|
4235
|
+
this.#boundaryEl?.classList.remove(CLS_VIEWKEEPER_BOUNDARY);
|
4251
4236
|
this.#el =
|
4252
4237
|
this.#boundaryEl =
|
4253
4238
|
this.#verticalOffsetEl =
|
@@ -4590,7 +4575,7 @@ class Version {
|
|
4590
4575
|
/**
|
4591
4576
|
* Represents the version of @skyux/core.
|
4592
4577
|
*/
|
4593
|
-
const VERSION = new Version('11.49.
|
4578
|
+
const VERSION = new Version('11.49.2');
|
4594
4579
|
|
4595
4580
|
/**
|
4596
4581
|
* Generated bundle index. Do not edit.
|