@ethlete/core 4.2.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/structured-data/structured-data.component.mjs +3 -3
- package/esm2022/lib/directives/animatable/animatable.directive.mjs +3 -3
- package/esm2022/lib/directives/animated-if/animated-if.directive.mjs +3 -3
- package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
- package/esm2022/lib/directives/animated-overlay/animated-overlay.directive.mjs +3 -3
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +3 -3
- package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
- package/esm2022/lib/directives/debug/debug.directive.mjs +3 -3
- package/esm2022/lib/directives/delayable/delayable.directive.mjs +3 -3
- package/esm2022/lib/directives/is-active-element/is-active-element.directive.mjs +3 -3
- package/esm2022/lib/directives/is-element/is-element.directive.mjs +3 -3
- package/esm2022/lib/directives/let/let.directive.mjs +3 -3
- package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +3 -3
- package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
- package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +3 -3
- package/esm2022/lib/directives/observe-visibility/observe-visibility.directive.mjs +3 -3
- package/esm2022/lib/directives/repeat/repeat.directive.mjs +3 -3
- package/esm2022/lib/directives/root-boundary/root-boundary.directive.mjs +3 -3
- package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
- package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
- package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
- package/esm2022/lib/directives/seo/seo.directive.mjs +3 -3
- package/esm2022/lib/pipes/infer-mime-type/infer-mime-type.pipe.mjs +3 -3
- package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
- package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
- package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
- package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
- package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
- package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +3 -3
- package/esm2022/lib/services/click-observer.service.mjs +6 -6
- package/esm2022/lib/services/content-observer.service.mjs +6 -6
- package/esm2022/lib/services/focus-visible.service.mjs +3 -3
- package/esm2022/lib/services/intersection-observer.service.mjs +6 -6
- package/esm2022/lib/services/resize-observer.service.mjs +6 -6
- package/esm2022/lib/services/router-state.service.mjs +3 -3
- package/esm2022/lib/services/viewport.service.mjs +3 -3
- package/esm2022/lib/utils/intersection-observer.utils.mjs +27 -0
- package/esm2022/lib/utils/public-api.mjs +2 -1
- package/esm2022/lib/utils/scrollable.utils.mjs +67 -36
- package/esm2022/lib/utils/signal.utils.mjs +65 -21
- package/fesm2022/ethlete-core.mjs +280 -178
- package/fesm2022/ethlete-core.mjs.map +1 -1
- package/lib/utils/intersection-observer.utils.d.ts +14 -0
- package/lib/utils/public-api.d.ts +1 -0
- package/lib/utils/signal.utils.d.ts +7 -3
- package/package.json +6 -6
|
@@ -22,10 +22,10 @@ export class FocusVisibleService {
|
|
|
22
22
|
onPointerDown() {
|
|
23
23
|
this._hadKeyboardEvent = false;
|
|
24
24
|
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
26
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: FocusVisibleService, providedIn: 'root' }); }
|
|
27
27
|
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: FocusVisibleService, decorators: [{
|
|
29
29
|
type: Injectable,
|
|
30
30
|
args: [{
|
|
31
31
|
providedIn: 'root',
|
|
@@ -7,10 +7,10 @@ export class IntersectionObserverFactory {
|
|
|
7
7
|
create(callback) {
|
|
8
8
|
return typeof IntersectionObserver === 'undefined' ? null : new IntersectionObserver(callback);
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
11
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverFactory, providedIn: 'root' }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverFactory, decorators: [{
|
|
14
14
|
type: Injectable,
|
|
15
15
|
args: [{ providedIn: 'root' }]
|
|
16
16
|
}] });
|
|
@@ -65,10 +65,10 @@ export class IntersectionObserverService {
|
|
|
65
65
|
this._observedElements.delete(element);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverService, providedIn: 'root' }); }
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: IntersectionObserverService, decorators: [{
|
|
72
72
|
type: Injectable,
|
|
73
73
|
args: [{ providedIn: 'root' }]
|
|
74
74
|
}] });
|
|
@@ -7,10 +7,10 @@ export class ResizeObserverFactory {
|
|
|
7
7
|
create(callback) {
|
|
8
8
|
return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);
|
|
9
9
|
}
|
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
11
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' }); }
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverFactory, decorators: [{
|
|
14
14
|
type: Injectable,
|
|
15
15
|
args: [{ providedIn: 'root' }]
|
|
16
16
|
}] });
|
|
@@ -65,10 +65,10 @@ export class ResizeObserverService {
|
|
|
65
65
|
this._observedElements.delete(element);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
69
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
68
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
69
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ResizeObserverService, decorators: [{
|
|
72
72
|
type: Injectable,
|
|
73
73
|
args: [{ providedIn: 'root' }]
|
|
74
74
|
}] });
|
|
@@ -193,10 +193,10 @@ export class RouterStateService {
|
|
|
193
193
|
fragment,
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
197
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
196
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
197
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: RouterStateService, providedIn: 'root' }); }
|
|
198
198
|
}
|
|
199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: RouterStateService, decorators: [{
|
|
200
200
|
type: Injectable,
|
|
201
201
|
args: [{
|
|
202
202
|
providedIn: 'root',
|
|
@@ -216,8 +216,8 @@ export class ViewportService {
|
|
|
216
216
|
}
|
|
217
217
|
return 'xs';
|
|
218
218
|
}
|
|
219
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
220
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ViewportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
220
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ViewportService, providedIn: 'root' }); }
|
|
221
221
|
}
|
|
222
222
|
__decorate([
|
|
223
223
|
Memo(),
|
|
@@ -235,7 +235,7 @@ __decorate([
|
|
|
235
235
|
__metadata("design:paramtypes", [Object]),
|
|
236
236
|
__metadata("design:returntype", void 0)
|
|
237
237
|
], ViewportService.prototype, "_buildMediaQuery", null);
|
|
238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
238
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ViewportService, decorators: [{
|
|
239
239
|
type: Injectable,
|
|
240
240
|
args: [{
|
|
241
241
|
providedIn: 'root',
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const getFirstAndLastPartialIntersection = (intersections) => {
|
|
2
|
+
const firstIntersecting = intersections.find((i) => i.intersectionRatio > 0);
|
|
3
|
+
const lastIntersecting = [...intersections].reverse().find((i) => i.intersectionRatio > 0);
|
|
4
|
+
const firstIntersectingIndex = intersections.findIndex((i) => i === firstIntersecting);
|
|
5
|
+
const lastIntersectingIndex = intersections.findIndex((i) => i === lastIntersecting);
|
|
6
|
+
if (!firstIntersecting || !lastIntersecting)
|
|
7
|
+
return null;
|
|
8
|
+
const greaterIntersecting = firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio ? firstIntersecting : lastIntersecting;
|
|
9
|
+
const greaterIntersectingIndex = firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio
|
|
10
|
+
? firstIntersectingIndex
|
|
11
|
+
: lastIntersectingIndex;
|
|
12
|
+
return {
|
|
13
|
+
first: {
|
|
14
|
+
intersection: firstIntersecting,
|
|
15
|
+
index: firstIntersectingIndex,
|
|
16
|
+
},
|
|
17
|
+
last: {
|
|
18
|
+
intersection: lastIntersecting,
|
|
19
|
+
index: lastIntersectingIndex,
|
|
20
|
+
},
|
|
21
|
+
biggest: {
|
|
22
|
+
intersection: greaterIntersecting,
|
|
23
|
+
index: greaterIntersectingIndex,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmVyLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUMsYUFBMEMsRUFBRSxFQUFFO0lBQy9GLE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTNGLE1BQU0sc0JBQXNCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLGlCQUFpQixDQUFDLENBQUM7SUFDdkYsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssZ0JBQWdCLENBQUMsQ0FBQztJQUVyRixJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxnQkFBZ0I7UUFBRSxPQUFPLElBQUksQ0FBQztJQUV6RCxNQUFNLG1CQUFtQixHQUN2QixpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO0lBRWxILE1BQU0sd0JBQXdCLEdBQzVCLGlCQUFpQixDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGlCQUFpQjtRQUN0RSxDQUFDLENBQUMsc0JBQXNCO1FBQ3hCLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztJQUU1QixPQUFPO1FBQ0wsS0FBSyxFQUFFO1lBQ0wsWUFBWSxFQUFFLGlCQUFpQjtZQUMvQixLQUFLLEVBQUUsc0JBQXNCO1NBQzlCO1FBQ0QsSUFBSSxFQUFFO1lBQ0osWUFBWSxFQUFFLGdCQUFnQjtZQUM5QixLQUFLLEVBQUUscUJBQXFCO1NBQzdCO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsWUFBWSxFQUFFLG1CQUFtQjtZQUNqQyxLQUFLLEVBQUUsd0JBQXdCO1NBQ2hDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRGaXJzdEFuZExhc3RQYXJ0aWFsSW50ZXJzZWN0aW9uID0gKGludGVyc2VjdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlbXSkgPT4ge1xuICBjb25zdCBmaXJzdEludGVyc2VjdGluZyA9IGludGVyc2VjdGlvbnMuZmluZCgoaSkgPT4gaS5pbnRlcnNlY3Rpb25SYXRpbyA+IDApO1xuICBjb25zdCBsYXN0SW50ZXJzZWN0aW5nID0gWy4uLmludGVyc2VjdGlvbnNdLnJldmVyc2UoKS5maW5kKChpKSA9PiBpLmludGVyc2VjdGlvblJhdGlvID4gMCk7XG5cbiAgY29uc3QgZmlyc3RJbnRlcnNlY3RpbmdJbmRleCA9IGludGVyc2VjdGlvbnMuZmluZEluZGV4KChpKSA9PiBpID09PSBmaXJzdEludGVyc2VjdGluZyk7XG4gIGNvbnN0IGxhc3RJbnRlcnNlY3RpbmdJbmRleCA9IGludGVyc2VjdGlvbnMuZmluZEluZGV4KChpKSA9PiBpID09PSBsYXN0SW50ZXJzZWN0aW5nKTtcblxuICBpZiAoIWZpcnN0SW50ZXJzZWN0aW5nIHx8ICFsYXN0SW50ZXJzZWN0aW5nKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBncmVhdGVySW50ZXJzZWN0aW5nID1cbiAgICBmaXJzdEludGVyc2VjdGluZy5pbnRlcnNlY3Rpb25SYXRpbyA+IGxhc3RJbnRlcnNlY3RpbmcuaW50ZXJzZWN0aW9uUmF0aW8gPyBmaXJzdEludGVyc2VjdGluZyA6IGxhc3RJbnRlcnNlY3Rpbmc7XG5cbiAgY29uc3QgZ3JlYXRlckludGVyc2VjdGluZ0luZGV4ID1cbiAgICBmaXJzdEludGVyc2VjdGluZy5pbnRlcnNlY3Rpb25SYXRpbyA+IGxhc3RJbnRlcnNlY3RpbmcuaW50ZXJzZWN0aW9uUmF0aW9cbiAgICAgID8gZmlyc3RJbnRlcnNlY3RpbmdJbmRleFxuICAgICAgOiBsYXN0SW50ZXJzZWN0aW5nSW5kZXg7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXJzdDoge1xuICAgICAgaW50ZXJzZWN0aW9uOiBmaXJzdEludGVyc2VjdGluZyxcbiAgICAgIGluZGV4OiBmaXJzdEludGVyc2VjdGluZ0luZGV4LFxuICAgIH0sXG4gICAgbGFzdDoge1xuICAgICAgaW50ZXJzZWN0aW9uOiBsYXN0SW50ZXJzZWN0aW5nLFxuICAgICAgaW5kZXg6IGxhc3RJbnRlcnNlY3RpbmdJbmRleCxcbiAgICB9LFxuICAgIGJpZ2dlc3Q6IHtcbiAgICAgIGludGVyc2VjdGlvbjogZ3JlYXRlckludGVyc2VjdGluZyxcbiAgICAgIGluZGV4OiBncmVhdGVySW50ZXJzZWN0aW5nSW5kZXgsXG4gICAgfSxcbiAgfTtcbn07XG4iXX0=
|
|
@@ -7,6 +7,7 @@ export * from './cookie.util';
|
|
|
7
7
|
export * from './destroy.utils';
|
|
8
8
|
export * from './equal.util';
|
|
9
9
|
export * from './form.utils';
|
|
10
|
+
export * from './intersection-observer.utils';
|
|
10
11
|
export * from './key-press-manager.utils';
|
|
11
12
|
export * from './media-query-observable.util';
|
|
12
13
|
export * from './mutation-observable.util';
|
|
@@ -20,4 +21,4 @@ export * from './signal.utils';
|
|
|
20
21
|
export * from './smart-block-scroll-strategy.utils';
|
|
21
22
|
export * from './value.utils';
|
|
22
23
|
export * from './viewport.util';
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYWN0aXZlLXNlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2FuZ3VsYXIudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFtcC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvbmUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2VxdWFsLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJzZWN0aW9uLW9ic2VydmVyLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4va2V5LXByZXNzLW1hbmFnZXIudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9tZWRpYS1xdWVyeS1vYnNlcnZhYmxlLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tdXRhdGlvbi1vYnNlcnZhYmxlLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWFjdGl2ZS1iaW5kaW5nLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNpemUtb2JzZXJ2YWJsZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcm91bmQudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lLWVycm9yLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsYWJsZS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1tb2RlbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NpZ25hbC51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0LWJsb2NrLXNjcm9sbC1zdHJhdGVneS51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQudXRpbCc7XG4iXX0=
|
|
@@ -57,46 +57,77 @@ export const scrollToElement = (options) => {
|
|
|
57
57
|
}
|
|
58
58
|
const elementRect = element.getBoundingClientRect();
|
|
59
59
|
const containerRect = container.getBoundingClientRect();
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
60
|
+
const { scrollLeft, scrollTop } = container;
|
|
61
|
+
const { width: elementWidth, height: elementHeight, left: elementLeft, top: elementTop } = elementRect;
|
|
62
|
+
const { width: containerWidth, height: containerHeight, left: containerLeft, top: containerTop } = containerRect;
|
|
63
|
+
const shouldScrollLeft = direction === 'inline' || direction === 'both' || !direction;
|
|
64
|
+
const shouldScrollTop = direction === 'block' || direction === 'both' || !direction;
|
|
65
|
+
let scrollLeftTo = scrollLeft;
|
|
66
|
+
let scrollTopTo = scrollTop;
|
|
67
|
+
const scrollToElementStart = () => {
|
|
68
|
+
const relativeTop = elementTop - containerTop;
|
|
69
|
+
const relativeLeft = elementLeft - containerLeft;
|
|
70
|
+
const amountToScrollTop = relativeTop;
|
|
71
|
+
const amountToScrollLeft = relativeLeft;
|
|
72
|
+
const scrollTopPosition = scrollTop + amountToScrollTop;
|
|
73
|
+
const scrollLeftPosition = scrollLeft + amountToScrollLeft;
|
|
74
|
+
scrollLeftTo = scrollLeftPosition - scrollInlineMargin;
|
|
75
|
+
scrollTopTo = scrollTopPosition - scrollBlockMargin;
|
|
76
|
+
};
|
|
77
|
+
const scrollToElementEnd = () => {
|
|
78
|
+
const relativeTop = elementTop - containerTop;
|
|
79
|
+
const relativeLeft = elementLeft - containerLeft;
|
|
80
|
+
const amountToScrollTop = relativeTop - containerHeight + elementHeight;
|
|
81
|
+
const amountToScrollLeft = relativeLeft - containerWidth + elementWidth;
|
|
82
|
+
const scrollTopPosition = scrollTop + amountToScrollTop;
|
|
83
|
+
const scrollLeftPosition = scrollLeft + amountToScrollLeft;
|
|
84
|
+
scrollLeftTo = scrollLeftPosition + scrollInlineMargin;
|
|
85
|
+
scrollTopTo = scrollTopPosition + scrollBlockMargin;
|
|
86
|
+
};
|
|
87
|
+
const scrollToElementCenter = () => {
|
|
88
|
+
const relativeTop = elementTop - containerTop;
|
|
89
|
+
const relativeLeft = elementLeft - containerLeft;
|
|
90
|
+
const amountToScrollTop = relativeTop - containerHeight / 2 + elementHeight / 2;
|
|
91
|
+
const amountToScrollLeft = relativeLeft - containerWidth / 2 + elementWidth / 2;
|
|
92
|
+
const scrollTopPosition = scrollTop + amountToScrollTop;
|
|
93
|
+
const scrollLeftPosition = scrollLeft + amountToScrollLeft;
|
|
94
|
+
scrollLeftTo = scrollLeftPosition;
|
|
95
|
+
scrollTopTo = scrollTopPosition;
|
|
96
|
+
};
|
|
97
|
+
const scrollToElementNearest = () => {
|
|
98
|
+
const isAbove = elementRect.bottom < containerRect.top;
|
|
99
|
+
const isPartialAbove = elementRect.top < containerRect.top && elementRect.bottom > containerRect.top;
|
|
100
|
+
const isBelow = elementRect.top > containerRect.bottom;
|
|
101
|
+
const isPartialBelow = elementRect.top < containerRect.bottom && elementRect.bottom > containerRect.bottom;
|
|
102
|
+
const isLeft = elementRect.right < containerRect.left;
|
|
103
|
+
const isPartialLeft = elementRect.left < containerRect.left && elementRect.right > containerRect.left;
|
|
104
|
+
const isRight = elementRect.left > containerRect.right;
|
|
105
|
+
const isPartialRight = elementRect.left < containerRect.right && elementRect.right > containerRect.right;
|
|
106
|
+
if (isAbove || isPartialAbove || isLeft || isPartialLeft) {
|
|
107
|
+
scrollToElementStart();
|
|
91
108
|
}
|
|
92
|
-
if (
|
|
93
|
-
|
|
109
|
+
else if (isBelow || isPartialBelow || isRight || isPartialRight) {
|
|
110
|
+
scrollToElementEnd();
|
|
94
111
|
}
|
|
112
|
+
};
|
|
113
|
+
switch (origin) {
|
|
114
|
+
case 'start':
|
|
115
|
+
scrollToElementStart();
|
|
116
|
+
break;
|
|
117
|
+
case 'end':
|
|
118
|
+
scrollToElementEnd();
|
|
119
|
+
break;
|
|
120
|
+
case 'center':
|
|
121
|
+
scrollToElementCenter();
|
|
122
|
+
break;
|
|
123
|
+
case 'nearest':
|
|
124
|
+
scrollToElementNearest();
|
|
125
|
+
break;
|
|
95
126
|
}
|
|
96
127
|
container.scrollTo({
|
|
97
|
-
left: container.scrollLeft + (inlineScroll || 0),
|
|
98
|
-
top: container.scrollTop + (blockScroll || 0),
|
|
99
128
|
behavior,
|
|
129
|
+
left: shouldScrollLeft ? scrollLeftTo : undefined,
|
|
130
|
+
top: shouldScrollTop ? scrollTopTo : undefined,
|
|
100
131
|
});
|
|
101
132
|
};
|
|
102
133
|
export const getElementVisibleStates = (options) => {
|
|
@@ -113,4 +144,4 @@ export const getElementVisibleStates = (options) => {
|
|
|
113
144
|
.filter(Boolean);
|
|
114
145
|
return elementVisibleStates;
|
|
115
146
|
};
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3Njcm9sbGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsU0FBcUIsRUFBRSxFQUFFO0lBQzlFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFekUsSUFBSSxTQUFTLEtBQUssR0FBRyxFQUFFO1FBQ3JCLE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztLQUNsQztTQUFNLElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRTtRQUM1QixPQUFPLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDcEM7SUFFRCxPQUFPLFlBQVksR0FBRyxZQUFZLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFnREYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFnQyxFQUFtQyxFQUFFO0lBQ3BHLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDNUIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU1QixJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELFNBQVMsS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXZDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFB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QUFZLEdBQUcsU0FBUyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDekI7S0FDRjtJQUVELFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO1FBQ2hELEdBQUcsRUFBRSxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztRQUM3QyxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBZUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFrQyxFQUFFLEVBQUU7SUFDNUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM1QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdCLFNBQVMsS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXZDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRS9DLE1BQU0sb0JBQW9CLEdBQUcsUUFBUTtTQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNULElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEMsT0FBTyxnQkFBZ0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLENBQStCLENBQUM7SUFFakQsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGFtcCB9IGZyb20gJy4vY2xhbXAudXRpbCc7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q2FuU2Nyb2xsID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBkaXJlY3Rpb24/OiAneCcgfCAneScpID0+IHtcbiAgY29uc3QgeyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoIH0gPSBlbGVtZW50O1xuXG4gIGlmIChkaXJlY3Rpb24gPT09ICd4Jykge1xuICAgIHJldHVybiBzY3JvbGxXaWR0aCA+IGNsaWVudFdpZHRoO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3knKSB7XG4gICAgcmV0dXJuIHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodDtcbiAgfVxuXG4gIHJldHVybiBzY3JvbGxIZWlnaHQgPiBjbGllbnRIZWlnaHQgfHwgc2Nyb2xsV2lkdGggPiBjbGllbnRXaWR0aDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXNFbGVtZW50VmlzaWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gY2hlY2sgaWYgaXQgaXMgdmlzaWJsZSBpbnNpZGUgYSBjb250YWluZXIuXG4gICAqL1xuICBlbGVtZW50PzogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW5zaWRlLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lcidzIHJlY3QgdG8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbnNpZGUuIENhbiBiZSBzdXBwbGllZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBET00gcmVhZHMuXG4gICAqIEBkZWZhdWx0IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgKi9cbiAgY29udGFpbmVyUmVjdD86IERPTVJlY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRFbGVtZW50VmlzaWJpbGl0eSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIGlubGluZSBkaXJlY3Rpb24uXG4gICAqL1xuICBpbmxpbmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgYmxvY2sgZGlyZWN0aW9uLlxuICAgKi9cbiAgYmxvY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJjZW50YWdlIG9mIHRoZSBlbGVtZW50IHRoYXQgaXMgdmlzaWJsZSBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbi5cbiAgICovXG4gIGlubGluZUludGVyc2VjdGlvbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyY2VudGFnZSBvZiB0aGUgZWxlbWVudCB0aGF0IGlzIHZpc2libGUgaW4gdGhlIGJsb2NrIGRpcmVjdGlvbi5cbiAgICovXG4gIGJsb2NrSW50ZXJzZWN0aW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgaXMgYmVpbmcgY2hlY2tlZCBmb3IgdmlzaWJpbGl0eS5cbiAgICovXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgaXNFbGVtZW50VmlzaWJsZSA9IChvcHRpb25zOiBJc0VsZW1lbnRWaXNpYmxlT3B0aW9ucyk6IEN1cnJlbnRFbGVtZW50VmlzaWJpbGl0eSB8IG51bGwgPT4ge1xuICBsZXQgeyBjb250YWluZXIgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgZWxlbWVudCB9ID0gb3B0aW9ucztcblxuICBpZiAoIWVsZW1lbnQgfHwgY29udGFpbmVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb250YWluZXIgfHw9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICBjb25zdCBjYW5TY3JvbGwgPSBlbGVtZW50Q2FuU2Nyb2xsKGNvbnRhaW5lcik7XG5cbiAgaWYgKCFjYW5TY3JvbGwpIHtcbiAgICByZXR1cm4geyBpbmxpbmU6IHRydWUsIGJsb2NrOiB0cnVlLCBibG9ja0ludGVyc2VjdGlvbjogMTAwLCBpbmxpbmVJbnRlcnNlY3Rpb246IDEwMCwgZWxlbWVudCB9O1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gb3B0aW9ucy5jb250YWluZXJSZWN0IHx8IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBjb25zdCBlbGVtZW50SW5saW5lU3RhcnQgPSBlbGVtZW50UmVjdC5sZWZ0O1xuICBjb25zdCBlbGVtZW50QmxvY2tTdGFydCA9IGVsZW1lbnRSZWN0LnRvcDtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVTdGFydCA9IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgY29uc3QgY29udGFpbmVyQmxvY2tTdGFydCA9IGNvbnRhaW5lclJlY3QudG9wO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVFbmQgPSBlbGVtZW50SW5saW5lU3RhcnQgKyBlbGVtZW50UmVjdC53aWR0aDtcbiAgY29uc3QgZWxlbWVudEJsb2NrRW5kID0gZWxlbWVudEJsb2NrU3RhcnQgKyBlbGVtZW50UmVjdC5oZWlnaHQ7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lRW5kID0gY29udGFpbmVySW5saW5lU3RhcnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICBjb25zdCBjb250YWluZXJCbG9ja0VuZCA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBpc0VsZW1lbnRJbmxpbmVWaXNpYmxlID0gZWxlbWVudElubGluZVN0YXJ0ID49IGNvbnRhaW5lcklubGluZVN0YXJ0ICYmIGVsZW1lbnRJbmxpbmVFbmQgPD0gY29udGFpbmVySW5saW5lRW5kO1xuICBjb25zdCBpc0VsZW1lbnRCbG9ja1Zpc2libGUgPSBlbGVtZW50QmxvY2tTdGFydCA+PSBjb250YWluZXJCbG9ja1N0YXJ0ICYmIGVsZW1lbnRCbG9ja0VuZCA8PSBjb250YWluZXJCbG9ja0VuZDtcblxuICBjb25zdCBpbmxpbmVJbnRlcnNlY3Rpb24gPVxuICAgIE1hdGgubWluKGVsZW1lbnRJbmxpbmVFbmQsIGNvbnRhaW5lcklubGluZUVuZCkgLSBNYXRoLm1heChlbGVtZW50SW5saW5lU3RhcnQsIGNvbnRhaW5lcklubGluZVN0YXJ0KTtcbiAgY29uc3QgYmxvY2tJbnRlcnNlY3Rpb24gPVxuICAgIE1hdGgubWluKGVsZW1lbnRCbG9ja0VuZCwgY29udGFpbmVyQmxvY2tFbmQpIC0gTWF0aC5tYXgoZWxlbWVudEJsb2NrU3RhcnQsIGNvbnRhaW5lckJsb2NrU3RhcnQpO1xuXG4gIGNvbnN0IGlubGluZUludGVyc2VjdGlvblBlcmNlbnRhZ2UgPSBjbGFtcCgoaW5saW5lSW50ZXJzZWN0aW9uIC8gZWxlbWVudFJlY3Qud2lkdGgpICogMTAwKTtcbiAgY29uc3QgYmxvY2tJbnRlcnNlY3Rpb25QZXJjZW50YWdlID0gY2xhbXAoKGJsb2NrSW50ZXJzZWN0aW9uIC8gZWxlbWVudFJlY3QuaGVpZ2h0KSAqIDEwMCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbmxpbmU6IGlzRWxlbWVudElubGluZVZpc2libGUsXG4gICAgYmxvY2s6IGlzRWxlbWVudEJsb2NrVmlzaWJsZSxcbiAgICBpbmxpbmVJbnRlcnNlY3Rpb246IGlubGluZUludGVyc2VjdGlvblBlcmNlbnRhZ2UsXG4gICAgYmxvY2tJbnRlcnNlY3Rpb246IGJsb2NrSW50ZXJzZWN0aW9uUGVyY2VudGFnZSxcbiAgICBlbGVtZW50LFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxUb0VsZW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIHNjcm9sbCB0by5cbiAgICovXG4gIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgY29udGFpbmVyIHRvIHNjcm9sbCB0byB0aGUgZWxlbWVudCBpbi5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAqL1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdG8gc2Nyb2xsIGluLlxuICAgKiBAZGVmYXVsdCAnYm90aCdcbiAgICovXG4gIGRpcmVjdGlvbj86ICdpbmxpbmUnIHwgJ2Jsb2NrJyB8ICdib3RoJztcblxuICAvKipcbiAgICogVGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCB0byBzY3JvbGwgdG8uXG4gICAqIEBkZWZhdWx0ICduZWFyZXN0J1xuICAgKi9cbiAgb3JpZ2luPzogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgfCAnbmVhcmVzdCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0ICdzbW9vdGgnXG4gICAqL1xuICBiZWhhdmlvcj86IFNjcm9sbEJlaGF2aW9yO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGlubGluZS1tYXJnaW5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgc2Nyb2xsSW5saW5lTWFyZ2luPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGJsb2NrLW1hcmdpblxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBzY3JvbGxCbG9ja01hcmdpbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvRWxlbWVudCA9IChvcHRpb25zOiBTY3JvbGxUb0VsZW1lbnRPcHRpb25zKSA9PiB7XG4gIGxldCB7IGNvbnRhaW5lciB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVsZW1lbnQsXG4gICAgZGlyZWN0aW9uLFxuICAgIGJlaGF2aW9yID0gJ3Ntb290aCcsXG4gICAgb3JpZ2luID0gJ25lYXJlc3QnLFxuICAgIHNjcm9sbEJsb2NrTWFyZ2luID0gMCxcbiAgICBzY3JvbGxJbmxpbmVNYXJnaW4gPSAwLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAoIWVsZW1lbnQgfHwgY29udGFpbmVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGFpbmVyIHx8PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgY29uc3QgY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbChjb250YWluZXIpO1xuXG4gIGlmICghY2FuU2Nyb2xsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVTaXplID0gZWxlbWVudFJlY3Qud2lkdGg7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja1NpemUgPSBlbGVtZW50UmVjdC5oZWlnaHQ7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lU2l6ZSA9IGNvbnRhaW5lclJlY3Qud2lkdGg7XG4gIGNvbnN0IGNvbnRhaW5lckJsb2NrU2l6ZSA9IGNvbnRhaW5lclJlY3QuaGVpZ2h0O1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVTdGFydCA9IGVsZW1lbnRSZWN0LmxlZnQ7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja1N0YXJ0ID0gZWxlbWVudFJlY3QudG9wO1xuXG4gIGNvbnN0IGNvbnRhaW5lcklubGluZVN0YXJ0ID0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICBjb25zdCBjb250YWluZXJCbG9ja1N0YXJ0ID0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgY29uc3QgZWxlbWVudElubGluZUVuZCA9IGVsZW1lbnRJbmxpbmVTdGFydCArIGVsZW1lbnRJbmxpbmVTaXplO1xuICBjb25zdCBlbGVtZW50QmxvY2tFbmQgPSBlbGVtZW50QmxvY2tTdGFydCArIGVsZW1lbnRCbG9ja1NpemU7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lRW5kID0gY29udGFpbmVySW5saW5lU3RhcnQgKyBjb250YWluZXJJbmxpbmVTaXplO1xuICBjb25zdCBjb250YWluZXJCbG9ja0VuZCA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJCbG9ja1NpemU7XG5cbiAgY29uc3QgZWxlbWVudElubGluZUNlbnRlciA9IGVsZW1lbnRJbmxpbmVTdGFydCArIGVsZW1lbnRJbmxpbmVTaXplIC8gMjtcbiAgY29uc3QgZWxlbWVudEJsb2NrQ2VudGVyID0gZWxlbWVudEJsb2NrU3RhcnQgKyBlbGVtZW50QmxvY2tTaXplIC8gMjtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVDZW50ZXIgPSBjb250YWluZXJJbmxpbmVTdGFydCArIGNvbnRhaW5lcklubGluZVNpemUgLyAyO1xuICBjb25zdCBjb250YWluZXJCbG9ja0NlbnRlciA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJCbG9ja1NpemUgLyAyO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVPcmlnaW4gPVxuICAgIG9yaWdpbiA9PT0gJ2NlbnRlcicgPyBlbGVtZW50SW5saW5lQ2VudGVyIDogb3JpZ2luID09PSAnZW5kJyA/IGVsZW1lbnRJbmxpbmVFbmQgOiBlbGVtZW50SW5saW5lU3RhcnQ7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja09yaWdpbiA9XG4gICAgb3JpZ2luID09PSAnY2VudGVyJyA/IGVsZW1lbnRCbG9ja0NlbnRlciA6IG9yaWdpbiA9PT0gJ2VuZCcgPyBlbGVtZW50QmxvY2tFbmQgOiBlbGVtZW50QmxvY2tTdGFydDtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVPcmlnaW4gPVxuICAgIG9yaWdpbiA9PT0gJ2NlbnRlcicgPyBjb250YWluZXJJbmxpbmVDZW50ZXIgOiBvcmlnaW4gPT09ICdlbmQnID8gY29udGFpbmVySW5saW5lRW5kIDogY29udGFpbmVySW5saW5lU3RhcnQ7XG4gIGNvbnN0IGNvbnRhaW5lckJsb2NrT3JpZ2luID1cbiAgICBvcmlnaW4gPT09ICdjZW50ZXInID8gY29udGFpbmVyQmxvY2tDZW50ZXIgOiBvcmlnaW4gPT09ICdlbmQnID8gY29udGFpbmVyQmxvY2tFbmQgOiBjb250YWluZXJCbG9ja1N0YXJ0O1xuXG4gIGNvbnN0IGlubGluZU9mZnNldCA9IGVsZW1lbnRJbmxpbmVPcmlnaW4gLSBjb250YWluZXJJbmxpbmVPcmlnaW4gLSBzY3JvbGxJbmxpbmVNYXJnaW47XG4gIGNvbnN0IGJsb2NrT2Zmc2V0ID0gZWxlbWVudEJsb2NrT3JpZ2luIC0gY29udGFpbmVyQmxvY2tPcmlnaW4gLSBzY3JvbGxCbG9ja01hcmdpbjtcblxuICBsZXQgaW5saW5lU2Nyb2xsOiBudW1iZXIgfCB1bmRlZmluZWQgPSBkaXJlY3Rpb24gPT09ICdibG9jaycgPyB1bmRlZmluZWQgOiBpbmxpbmVPZmZzZXQ7XG4gIGxldCBibG9ja1Njcm9sbDogbnVtYmVyIHwgdW5kZWZpbmVkID0gZGlyZWN0aW9uID09PSAnaW5saW5lJyA/IHVuZGVmaW5lZCA6IGJsb2NrT2Zmc2V0O1xuXG4gIGlmIChvcmlnaW4gPT09ICduZWFyZXN0Jykge1xuICAgIGNvbnN0IGVsVmlzaWJsZSA9IGlzRWxlbWVudFZpc2libGUoeyBlbGVtZW50LCBjb250YWluZXIsIGNvbnRhaW5lclJlY3QgfSk7XG5cbiAgICBpZiAoZWxWaXNpYmxlPy5pbmxpbmUgJiYgZWxWaXNpYmxlPy5ibG9jaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbFZpc2libGU/LmlubGluZSkge1xuICAgICAgaW5saW5lU2Nyb2xsID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChlbFZpc2libGU/LmJsb2NrKSB7XG4gICAgICBibG9ja1Njcm9sbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjb250YWluZXIuc2Nyb2xsVG8oe1xuICAgIGxlZnQ6IGNvbnRhaW5lci5zY3JvbGxMZWZ0ICsgKGlubGluZVNjcm9sbCB8fCAwKSxcbiAgICB0b3A6IGNvbnRhaW5lci5zY3JvbGxUb3AgKyAoYmxvY2tTY3JvbGwgfHwgMCksXG4gICAgYmVoYXZpb3IsXG4gIH0pO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRWaXNpYmxlRWxlbWVudHNPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgdG8gY2hlY2sgZm9yIHZpc2libGUgZWxlbWVudHMuXG4gICAqIEBkZWZhdWx0IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICAgKi9cbiAgY29udGFpbmVyPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudHMgdG8gY2hlY2sgaWYgdGhleSBhcmUgdmlzaWJsZSBpbnNpZGUgYSBjb250YWluZXIuXG4gICAqL1xuICBlbGVtZW50czogSFRNTEVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRWaXNpYmxlU3RhdGVzID0gKG9wdGlvbnM6IEdldFZpc2libGVFbGVtZW50c09wdGlvbnMpID0+IHtcbiAgbGV0IHsgY29udGFpbmVyIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IGVsZW1lbnRzIH0gPSBvcHRpb25zO1xuXG4gIGNvbnRhaW5lciB8fD0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIGNvbnN0IHJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgY29uc3QgZWxlbWVudFZpc2libGVTdGF0ZXMgPSBlbGVtZW50c1xuICAgIC5tYXAoKGUpID0+IHtcbiAgICAgIGlmICghZSB8fCAhY29udGFpbmVyKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIGlzRWxlbWVudFZpc2libGUoeyBjb250YWluZXIsIGVsZW1lbnQ6IGUsIGNvbnRhaW5lclJlY3Q6IHJlY3QgfSk7XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pIGFzIEN1cnJlbnRFbGVtZW50VmlzaWJpbGl0eVtdO1xuXG4gIHJldHVybiBlbGVtZW50VmlzaWJsZVN0YXRlcztcbn07XG4iXX0=
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3Njcm9sbGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQW9CLEVBQUUsU0FBcUIsRUFBRSxFQUFFO0lBQzlFLE1BQU0sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFFekUsSUFBSSxTQUFTLEtBQUssR0FBRyxFQUFFO1FBQ3JCLE9BQU8sV0FBVyxHQUFHLFdBQVcsQ0FBQztLQUNsQztTQUFNLElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRTtRQUM1QixPQUFPLFlBQVksR0FBRyxZQUFZLENBQUM7S0FDcEM7SUFFRCxPQUFPLFlBQVksR0FBRyxZQUFZLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUFnREYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFnQyxFQUFtQyxFQUFFO0lBQ3BHLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDNUIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU1QixJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELFNBQVMsS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXZDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFB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S0FBSyxTQUFTO1lBQ1osc0JBQXNCLEVBQUUsQ0FBQztZQUN6QixNQUFNO0tBQ1Q7SUFFRCxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQ2pCLFFBQVE7UUFDUixJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUztRQUNqRCxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDL0MsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBZUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFrQyxFQUFFLEVBQUU7SUFDNUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUM1QixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRTdCLFNBQVMsS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXZDLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRS9DLE1BQU0sb0JBQW9CLEdBQUcsUUFBUTtTQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNULElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEMsT0FBTyxnQkFBZ0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUMsQ0FBQztTQUNELE1BQU0sQ0FBQyxPQUFPLENBQStCLENBQUM7SUFFakQsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGFtcCB9IGZyb20gJy4vY2xhbXAudXRpbCc7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q2FuU2Nyb2xsID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBkaXJlY3Rpb24/OiAneCcgfCAneScpID0+IHtcbiAgY29uc3QgeyBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCwgc2Nyb2xsV2lkdGgsIGNsaWVudFdpZHRoIH0gPSBlbGVtZW50O1xuXG4gIGlmIChkaXJlY3Rpb24gPT09ICd4Jykge1xuICAgIHJldHVybiBzY3JvbGxXaWR0aCA+IGNsaWVudFdpZHRoO1xuICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3knKSB7XG4gICAgcmV0dXJuIHNjcm9sbEhlaWdodCA+IGNsaWVudEhlaWdodDtcbiAgfVxuXG4gIHJldHVybiBzY3JvbGxIZWlnaHQgPiBjbGllbnRIZWlnaHQgfHwgc2Nyb2xsV2lkdGggPiBjbGllbnRXaWR0aDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXNFbGVtZW50VmlzaWJsZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8gY2hlY2sgaWYgaXQgaXMgdmlzaWJsZSBpbnNpZGUgYSBjb250YWluZXIuXG4gICAqL1xuICBlbGVtZW50PzogSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHRvIGNoZWNrIGlmIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW5zaWRlLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lcidzIHJlY3QgdG8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbnNpZGUuIENhbiBiZSBzdXBwbGllZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBET00gcmVhZHMuXG4gICAqIEBkZWZhdWx0IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgKi9cbiAgY29udGFpbmVyUmVjdD86IERPTVJlY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRFbGVtZW50VmlzaWJpbGl0eSB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gdGhlIGlubGluZSBkaXJlY3Rpb24uXG4gICAqL1xuICBpbmxpbmU6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgYmxvY2sgZGlyZWN0aW9uLlxuICAgKi9cbiAgYmxvY2s6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJjZW50YWdlIG9mIHRoZSBlbGVtZW50IHRoYXQgaXMgdmlzaWJsZSBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbi5cbiAgICovXG4gIGlubGluZUludGVyc2VjdGlvbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVyY2VudGFnZSBvZiB0aGUgZWxlbWVudCB0aGF0IGlzIHZpc2libGUgaW4gdGhlIGJsb2NrIGRpcmVjdGlvbi5cbiAgICovXG4gIGJsb2NrSW50ZXJzZWN0aW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgaXMgYmVpbmcgY2hlY2tlZCBmb3IgdmlzaWJpbGl0eS5cbiAgICovXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgaXNFbGVtZW50VmlzaWJsZSA9IChvcHRpb25zOiBJc0VsZW1lbnRWaXNpYmxlT3B0aW9ucyk6IEN1cnJlbnRFbGVtZW50VmlzaWJpbGl0eSB8IG51bGwgPT4ge1xuICBsZXQgeyBjb250YWluZXIgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IHsgZWxlbWVudCB9ID0gb3B0aW9ucztcblxuICBpZiAoIWVsZW1lbnQgfHwgY29udGFpbmVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb250YWluZXIgfHw9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICBjb25zdCBjYW5TY3JvbGwgPSBlbGVtZW50Q2FuU2Nyb2xsKGNvbnRhaW5lcik7XG5cbiAgaWYgKCFjYW5TY3JvbGwpIHtcbiAgICByZXR1cm4geyBpbmxpbmU6IHRydWUsIGJsb2NrOiB0cnVlLCBibG9ja0ludGVyc2VjdGlvbjogMTAwLCBpbmxpbmVJbnRlcnNlY3Rpb246IDEwMCwgZWxlbWVudCB9O1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gb3B0aW9ucy5jb250YWluZXJSZWN0IHx8IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICBjb25zdCBlbGVtZW50SW5saW5lU3RhcnQgPSBlbGVtZW50UmVjdC5sZWZ0O1xuICBjb25zdCBlbGVtZW50QmxvY2tTdGFydCA9IGVsZW1lbnRSZWN0LnRvcDtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVTdGFydCA9IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgY29uc3QgY29udGFpbmVyQmxvY2tTdGFydCA9IGNvbnRhaW5lclJlY3QudG9wO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVFbmQgPSBlbGVtZW50SW5saW5lU3RhcnQgKyBlbGVtZW50UmVjdC53aWR0aDtcbiAgY29uc3QgZWxlbWVudEJsb2NrRW5kID0gZWxlbWVudEJsb2NrU3RhcnQgKyBlbGVtZW50UmVjdC5oZWlnaHQ7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lRW5kID0gY29udGFpbmVySW5saW5lU3RhcnQgKyBjb250YWluZXJSZWN0LndpZHRoO1xuICBjb25zdCBjb250YWluZXJCbG9ja0VuZCA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBpc0VsZW1lbnRJbmxpbmVWaXNpYmxlID0gZWxlbWVudElubGluZVN0YXJ0ID49IGNvbnRhaW5lcklubGluZVN0YXJ0ICYmIGVsZW1lbnRJbmxpbmVFbmQgPD0gY29udGFpbmVySW5saW5lRW5kO1xuICBjb25zdCBpc0VsZW1lbnRCbG9ja1Zpc2libGUgPSBlbGVtZW50QmxvY2tTdGFydCA+PSBjb250YWluZXJCbG9ja1N0YXJ0ICYmIGVsZW1lbnRCbG9ja0VuZCA8PSBjb250YWluZXJCbG9ja0VuZDtcblxuICBjb25zdCBpbmxpbmVJbnRlcnNlY3Rpb24gPVxuICAgIE1hdGgubWluKGVsZW1lbnRJbmxpbmVFbmQsIGNvbnRhaW5lcklubGluZUVuZCkgLSBNYXRoLm1heChlbGVtZW50SW5saW5lU3RhcnQsIGNvbnRhaW5lcklubGluZVN0YXJ0KTtcbiAgY29uc3QgYmxvY2tJbnRlcnNlY3Rpb24gPVxuICAgIE1hdGgubWluKGVsZW1lbnRCbG9ja0VuZCwgY29udGFpbmVyQmxvY2tFbmQpIC0gTWF0aC5tYXgoZWxlbWVudEJsb2NrU3RhcnQsIGNvbnRhaW5lckJsb2NrU3RhcnQpO1xuXG4gIGNvbnN0IGlubGluZUludGVyc2VjdGlvblBlcmNlbnRhZ2UgPSBjbGFtcCgoaW5saW5lSW50ZXJzZWN0aW9uIC8gZWxlbWVudFJlY3Qud2lkdGgpICogMTAwKTtcbiAgY29uc3QgYmxvY2tJbnRlcnNlY3Rpb25QZXJjZW50YWdlID0gY2xhbXAoKGJsb2NrSW50ZXJzZWN0aW9uIC8gZWxlbWVudFJlY3QuaGVpZ2h0KSAqIDEwMCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbmxpbmU6IGlzRWxlbWVudElubGluZVZpc2libGUsXG4gICAgYmxvY2s6IGlzRWxlbWVudEJsb2NrVmlzaWJsZSxcbiAgICBpbmxpbmVJbnRlcnNlY3Rpb246IGlubGluZUludGVyc2VjdGlvblBlcmNlbnRhZ2UsXG4gICAgYmxvY2tJbnRlcnNlY3Rpb246IGJsb2NrSW50ZXJzZWN0aW9uUGVyY2VudGFnZSxcbiAgICBlbGVtZW50LFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxUb0VsZW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIHNjcm9sbCB0by5cbiAgICovXG4gIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgY29udGFpbmVyIHRvIHNjcm9sbCB0byB0aGUgZWxlbWVudCBpbi5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAqL1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdG8gc2Nyb2xsIGluLlxuICAgKiBAZGVmYXVsdCAnYm90aCdcbiAgICovXG4gIGRpcmVjdGlvbj86ICdpbmxpbmUnIHwgJ2Jsb2NrJyB8ICdib3RoJztcblxuICAvKipcbiAgICogVGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCB0byBzY3JvbGwgdG8uXG4gICAqIEBkZWZhdWx0ICduZWFyZXN0J1xuICAgKi9cbiAgb3JpZ2luPzogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgfCAnbmVhcmVzdCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0ICdzbW9vdGgnXG4gICAqL1xuICBiZWhhdmlvcj86IFNjcm9sbEJlaGF2aW9yO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGlubGluZS1tYXJnaW5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgc2Nyb2xsSW5saW5lTWFyZ2luPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGJsb2NrLW1hcmdpblxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBzY3JvbGxCbG9ja01hcmdpbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvRWxlbWVudCA9IChvcHRpb25zOiBTY3JvbGxUb0VsZW1lbnRPcHRpb25zKSA9PiB7XG4gIGxldCB7IGNvbnRhaW5lciB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVsZW1lbnQsXG4gICAgZGlyZWN0aW9uLFxuICAgIGJlaGF2aW9yID0gJ3Ntb290aCcsXG4gICAgb3JpZ2luID0gJ25lYXJlc3QnLFxuICAgIHNjcm9sbEJsb2NrTWFyZ2luID0gMCxcbiAgICBzY3JvbGxJbmxpbmVNYXJnaW4gPSAwLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAoIWVsZW1lbnQgfHwgY29udGFpbmVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGFpbmVyIHx8PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgY29uc3QgY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbChjb250YWluZXIpO1xuXG4gIGlmICghY2FuU2Nyb2xsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIGNvbnN0IHsgc2Nyb2xsTGVmdCwgc2Nyb2xsVG9wIH0gPSBjb250YWluZXI7XG4gIGNvbnN0IHsgd2lkdGg6IGVsZW1lbnRXaWR0aCwgaGVpZ2h0OiBlbGVtZW50SGVpZ2h0LCBsZWZ0OiBlbGVtZW50TGVmdCwgdG9wOiBlbGVtZW50VG9wIH0gPSBlbGVtZW50UmVjdDtcbiAgY29uc3QgeyB3aWR0aDogY29udGFpbmVyV2lkdGgsIGhlaWdodDogY29udGFpbmVySGVpZ2h0LCBsZWZ0OiBjb250YWluZXJMZWZ0LCB0b3A6IGNvbnRhaW5lclRvcCB9ID0gY29udGFpbmVyUmVjdDtcblxuICBjb25zdCBzaG91bGRTY3JvbGxMZWZ0ID0gZGlyZWN0aW9uID09PSAnaW5saW5lJyB8fCBkaXJlY3Rpb24gPT09ICdib3RoJyB8fCAhZGlyZWN0aW9uO1xuICBjb25zdCBzaG91bGRTY3JvbGxUb3AgPSBkaXJlY3Rpb24gPT09ICdibG9jaycgfHwgZGlyZWN0aW9uID09PSAnYm90aCcgfHwgIWRpcmVjdGlvbjtcblxuICBsZXQgc2Nyb2xsTGVmdFRvID0gc2Nyb2xsTGVmdDtcbiAgbGV0IHNjcm9sbFRvcFRvID0gc2Nyb2xsVG9wO1xuXG4gIGNvbnN0IHNjcm9sbFRvRWxlbWVudFN0YXJ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aXZlVG9wID0gZWxlbWVudFRvcCAtIGNvbnRhaW5lclRvcDtcbiAgICBjb25zdCByZWxhdGl2ZUxlZnQgPSBlbGVtZW50TGVmdCAtIGNvbnRhaW5lckxlZnQ7XG5cbiAgICBjb25zdCBhbW91bnRUb1Njcm9sbFRvcCA9IHJlbGF0aXZlVG9wO1xuICAgIGNvbnN0IGFtb3VudFRvU2Nyb2xsTGVmdCA9IHJlbGF0aXZlTGVmdDtcblxuICAgIGNvbnN0IHNjcm9sbFRvcFBvc2l0aW9uID0gc2Nyb2xsVG9wICsgYW1vdW50VG9TY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdFBvc2l0aW9uID0gc2Nyb2xsTGVmdCArIGFtb3VudFRvU2Nyb2xsTGVmdDtcblxuICAgIHNjcm9sbExlZnRUbyA9IHNjcm9sbExlZnRQb3NpdGlvbiAtIHNjcm9sbElubGluZU1hcmdpbjtcbiAgICBzY3JvbGxUb3BUbyA9IHNjcm9sbFRvcFBvc2l0aW9uIC0gc2Nyb2xsQmxvY2tNYXJnaW47XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9FbGVtZW50RW5kID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aXZlVG9wID0gZWxlbWVudFRvcCAtIGNvbnRhaW5lclRvcDtcbiAgICBjb25zdCByZWxhdGl2ZUxlZnQgPSBlbGVtZW50TGVmdCAtIGNvbnRhaW5lckxlZnQ7XG5cbiAgICBjb25zdCBhbW91bnRUb1Njcm9sbFRvcCA9IHJlbGF0aXZlVG9wIC0gY29udGFpbmVySGVpZ2h0ICsgZWxlbWVudEhlaWdodDtcbiAgICBjb25zdCBhbW91bnRUb1Njcm9sbExlZnQgPSByZWxhdGl2ZUxlZnQgLSBjb250YWluZXJXaWR0aCArIGVsZW1lbnRXaWR0aDtcblxuICAgIGNvbnN0IHNjcm9sbFRvcFBvc2l0aW9uID0gc2Nyb2xsVG9wICsgYW1vdW50VG9TY3JvbGxUb3A7XG4gICAgY29uc3Qgc2Nyb2xsTGVmdFBvc2l0aW9uID0gc2Nyb2xsTGVmdCArIGFtb3VudFRvU2Nyb2xsTGVmdDtcblxuICAgIHNjcm9sbExlZnRUbyA9IHNjcm9sbExlZnRQb3NpdGlvbiArIHNjcm9sbElubGluZU1hcmdpbjtcbiAgICBzY3JvbGxUb3BUbyA9IHNjcm9sbFRvcFBvc2l0aW9uICsgc2Nyb2xsQmxvY2tNYXJnaW47XG4gIH07XG5cbiAgY29uc3Qgc2Nyb2xsVG9FbGVtZW50Q2VudGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aXZlVG9wID0gZWxlbWVudFRvcCAtIGNvbnRhaW5lclRvcDtcbiAgICBjb25zdCByZWxhdGl2ZUxlZnQgPSBlbGVtZW50TGVmdCAtIGNvbnRhaW5lckxlZnQ7XG5cbiAgICBjb25zdCBhbW91bnRUb1Njcm9sbFRvcCA9IHJlbGF0aXZlVG9wIC0gY29udGFpbmVySGVpZ2h0IC8gMiArIGVsZW1lbnRIZWlnaHQgLyAyO1xuICAgIGNvbnN0IGFtb3VudFRvU2Nyb2xsTGVmdCA9IHJlbGF0aXZlTGVmdCAtIGNvbnRhaW5lcldpZHRoIC8gMiArIGVsZW1lbnRXaWR0aCAvIDI7XG5cbiAgICBjb25zdCBzY3JvbGxUb3BQb3NpdGlvbiA9IHNjcm9sbFRvcCArIGFtb3VudFRvU2Nyb2xsVG9wO1xuICAgIGNvbnN0IHNjcm9sbExlZnRQb3NpdGlvbiA9IHNjcm9sbExlZnQgKyBhbW91bnRUb1Njcm9sbExlZnQ7XG5cbiAgICBzY3JvbGxMZWZ0VG8gPSBzY3JvbGxMZWZ0UG9zaXRpb247XG4gICAgc2Nyb2xsVG9wVG8gPSBzY3JvbGxUb3BQb3NpdGlvbjtcbiAgfTtcblxuICBjb25zdCBzY3JvbGxUb0VsZW1lbnROZWFyZXN0ID0gKCkgPT4ge1xuICAgIGNvbnN0IGlzQWJvdmUgPSBlbGVtZW50UmVjdC5ib3R0b20gPCBjb250YWluZXJSZWN0LnRvcDtcbiAgICBjb25zdCBpc1BhcnRpYWxBYm92ZSA9IGVsZW1lbnRSZWN0LnRvcCA8IGNvbnRhaW5lclJlY3QudG9wICYmIGVsZW1lbnRSZWN0LmJvdHRvbSA+IGNvbnRhaW5lclJlY3QudG9wO1xuXG4gICAgY29uc3QgaXNCZWxvdyA9IGVsZW1lbnRSZWN0LnRvcCA+IGNvbnRhaW5lclJlY3QuYm90dG9tO1xuICAgIGNvbnN0IGlzUGFydGlhbEJlbG93ID0gZWxlbWVudFJlY3QudG9wIDwgY29udGFpbmVyUmVjdC5ib3R0b20gJiYgZWxlbWVudFJlY3QuYm90dG9tID4gY29udGFpbmVyUmVjdC5ib3R0b207XG5cbiAgICBjb25zdCBpc0xlZnQgPSBlbGVtZW50UmVjdC5yaWdodCA8IGNvbnRhaW5lclJlY3QubGVmdDtcbiAgICBjb25zdCBpc1BhcnRpYWxMZWZ0ID0gZWxlbWVudFJlY3QubGVmdCA8IGNvbnRhaW5lclJlY3QubGVmdCAmJiBlbGVtZW50UmVjdC5yaWdodCA+IGNvbnRhaW5lclJlY3QubGVmdDtcblxuICAgIGNvbnN0IGlzUmlnaHQgPSBlbGVtZW50UmVjdC5sZWZ0ID4gY29udGFpbmVyUmVjdC5yaWdodDtcbiAgICBjb25zdCBpc1BhcnRpYWxSaWdodCA9IGVsZW1lbnRSZWN0LmxlZnQgPCBjb250YWluZXJSZWN0LnJpZ2h0ICYmIGVsZW1lbnRSZWN0LnJpZ2h0ID4gY29udGFpbmVyUmVjdC5yaWdodDtcblxuICAgIGlmIChpc0Fib3ZlIHx8IGlzUGFydGlhbEFib3ZlIHx8IGlzTGVmdCB8fCBpc1BhcnRpYWxMZWZ0KSB7XG4gICAgICBzY3JvbGxUb0VsZW1lbnRTdGFydCgpO1xuICAgIH0gZWxzZSBpZiAoaXNCZWxvdyB8fCBpc1BhcnRpYWxCZWxvdyB8fCBpc1JpZ2h0IHx8IGlzUGFydGlhbFJpZ2h0KSB7XG4gICAgICBzY3JvbGxUb0VsZW1lbnRFbmQoKTtcbiAgICB9XG4gIH07XG5cbiAgc3dpdGNoIChvcmlnaW4pIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBzY3JvbGxUb0VsZW1lbnRTdGFydCgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kJzpcbiAgICAgIHNjcm9sbFRvRWxlbWVudEVuZCgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHNjcm9sbFRvRWxlbWVudENlbnRlcigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbmVhcmVzdCc6XG4gICAgICBzY3JvbGxUb0VsZW1lbnROZWFyZXN0KCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnRhaW5lci5zY3JvbGxUbyh7XG4gICAgYmVoYXZpb3IsXG4gICAgbGVmdDogc2hvdWxkU2Nyb2xsTGVmdCA/IHNjcm9sbExlZnRUbyA6IHVuZGVmaW5lZCxcbiAgICB0b3A6IHNob3VsZFNjcm9sbFRvcCA/IHNjcm9sbFRvcFRvIDogdW5kZWZpbmVkLFxuICB9KTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VmlzaWJsZUVsZW1lbnRzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHRvIGNoZWNrIGZvciB2aXNpYmxlIGVsZW1lbnRzLlxuICAgKiBAZGVmYXVsdCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRcbiAgICovXG4gIGNvbnRhaW5lcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnRzIHRvIGNoZWNrIGlmIHRoZXkgYXJlIHZpc2libGUgaW5zaWRlIGEgY29udGFpbmVyLlxuICAgKi9cbiAgZWxlbWVudHM6IEhUTUxFbGVtZW50W107XG59XG5cbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50VmlzaWJsZVN0YXRlcyA9IChvcHRpb25zOiBHZXRWaXNpYmxlRWxlbWVudHNPcHRpb25zKSA9PiB7XG4gIGxldCB7IGNvbnRhaW5lciB9ID0gb3B0aW9ucztcbiAgY29uc3QgeyBlbGVtZW50cyB9ID0gb3B0aW9ucztcblxuICBjb250YWluZXIgfHw9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIGNvbnN0IGVsZW1lbnRWaXNpYmxlU3RhdGVzID0gZWxlbWVudHNcbiAgICAubWFwKChlKSA9PiB7XG4gICAgICBpZiAoIWUgfHwgIWNvbnRhaW5lcikgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiBpc0VsZW1lbnRWaXNpYmxlKHsgY29udGFpbmVyLCBlbGVtZW50OiBlLCBjb250YWluZXJSZWN0OiByZWN0IH0pO1xuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKSBhcyBDdXJyZW50RWxlbWVudFZpc2liaWxpdHlbXTtcblxuICByZXR1cm4gZWxlbWVudFZpc2libGVTdGF0ZXM7XG59O1xuIl19
|