angular-three-soba 2.2.0 → 2.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/abstractions/lib/catmull-rom-line.d.ts +148 -148
- package/abstractions/lib/edges.d.ts +166 -166
- package/abstractions/lib/grid.d.ts +30 -30
- package/abstractions/lib/line.d.ts +10 -9
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +3 -3
- package/abstractions/lib/text-3d.d.ts +38 -38
- package/abstractions/lib/text.d.ts +2 -3
- package/cameras/lib/cube-camera.d.ts +2 -2
- package/cameras/lib/orthographic-camera.d.ts +7 -8
- package/cameras/lib/perspective-camera.d.ts +2 -3
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/abstractions/lib/billboard.mjs +3 -3
- package/esm2022/abstractions/lib/catmull-rom-line.mjs +3 -3
- package/esm2022/abstractions/lib/cubic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/edges.mjs +30 -34
- package/esm2022/abstractions/lib/gradient-texture.mjs +3 -3
- package/esm2022/abstractions/lib/grid.mjs +3 -3
- package/esm2022/abstractions/lib/helper.mjs +18 -20
- package/esm2022/abstractions/lib/line.mjs +25 -28
- package/esm2022/abstractions/lib/prism-geometry.mjs +3 -3
- package/esm2022/abstractions/lib/quadratic-bezier-line.mjs +3 -3
- package/esm2022/abstractions/lib/rounded-box.mjs +11 -17
- package/esm2022/abstractions/lib/text-3d.mjs +14 -17
- package/esm2022/abstractions/lib/text.mjs +11 -16
- package/esm2022/cameras/lib/camera-content.mjs +3 -3
- package/esm2022/cameras/lib/cube-camera.mjs +18 -27
- package/esm2022/cameras/lib/orthographic-camera.mjs +20 -20
- package/esm2022/cameras/lib/perspective-camera.mjs +21 -21
- package/esm2022/controls/lib/camera-controls.mjs +3 -3
- package/esm2022/controls/lib/orbit-controls.mjs +3 -3
- package/esm2022/controls/lib/scroll-controls.mjs +124 -130
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +6 -6
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +12 -12
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +9 -9
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +6 -4
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +44 -47
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +3 -3
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +3 -3
- package/esm2022/gizmos/lib/transform-controls.mjs +3 -3
- package/esm2022/loaders/lib/loader.mjs +3 -3
- package/esm2022/materials/lib/custom-shader-material.mjs +8 -12
- package/esm2022/materials/lib/mesh-distort-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-reflector-material.mjs +11 -15
- package/esm2022/materials/lib/mesh-refraction-material.mjs +26 -30
- package/esm2022/materials/lib/mesh-transmission-material.mjs +3 -3
- package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -3
- package/esm2022/materials/lib/point-material.mjs +3 -3
- package/esm2022/misc/lib/bake-shadows.mjs +8 -10
- package/esm2022/misc/lib/computed-attribute.mjs +15 -19
- package/esm2022/misc/lib/decal.mjs +56 -53
- package/esm2022/misc/lib/fbo.mjs +10 -10
- package/esm2022/misc/lib/html/html-content.mjs +62 -67
- package/esm2022/misc/lib/html/html.mjs +3 -3
- package/esm2022/misc/lib/intersect.mjs +6 -9
- package/esm2022/misc/lib/sampler.mjs +42 -42
- package/esm2022/performances/lib/adaptive-dpr.mjs +29 -35
- package/esm2022/performances/lib/adaptive-events.mjs +12 -16
- package/esm2022/performances/lib/detailed.mjs +14 -18
- package/esm2022/performances/lib/instances/instances.mjs +16 -22
- package/esm2022/performances/lib/points/points.mjs +19 -25
- package/esm2022/performances/lib/segments/segments.mjs +11 -14
- package/esm2022/shaders/lib/mesh-refraction-material.mjs +1 -1
- package/esm2022/staging/index.mjs +3 -2
- package/esm2022/staging/lib/accumulative-shadows.mjs +19 -21
- package/esm2022/staging/lib/backdrop.mjs +19 -23
- package/esm2022/staging/lib/bb-anchor.mjs +3 -3
- package/esm2022/staging/lib/bounds.mjs +39 -43
- package/esm2022/staging/lib/camera-shake.mjs +14 -18
- package/esm2022/staging/lib/caustics.mjs +24 -28
- package/esm2022/staging/lib/center.mjs +28 -32
- package/esm2022/staging/lib/contact-shadows.mjs +3 -3
- package/esm2022/staging/lib/environment/environment.mjs +338 -0
- package/esm2022/staging/lib/environment/inject-environment.mjs +184 -0
- package/esm2022/staging/lib/float.mjs +3 -3
- package/esm2022/staging/lib/lightformer.mjs +18 -22
- package/esm2022/staging/lib/mask.mjs +8 -12
- package/esm2022/staging/lib/matcap-texture.mjs +9 -11
- package/esm2022/staging/lib/normal-texture.mjs +9 -11
- package/esm2022/staging/lib/randomized-lights.mjs +9 -13
- package/esm2022/staging/lib/render-texture.mjs +19 -20
- package/esm2022/staging/lib/sky.mjs +3 -3
- package/esm2022/staging/lib/spot-light.mjs +32 -40
- package/esm2022/staging/lib/stage.mjs +13 -17
- package/esm2022/stats/lib/stats.mjs +21 -27
- package/fesm2022/angular-three-soba-abstractions.mjs +119 -138
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +57 -64
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +129 -135
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -88
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +3 -3
- package/fesm2022/angular-three-soba-materials.mjs +52 -62
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +188 -195
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +90 -114
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-shaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +427 -430
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +20 -26
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +3 -3
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/decal.d.ts +5 -5
- package/misc/lib/html/html-content.d.ts +6 -6
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +2 -4
- package/package.json +12 -12
- package/performances/lib/instances/instances.d.ts +11 -11
- package/performances/lib/points/points.d.ts +20 -20
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -5
- package/staging/index.d.ts +2 -1
- package/staging/lib/camera-shake.d.ts +0 -1
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/{environment.d.ts → environment/environment.d.ts} +20 -49
- package/staging/lib/environment/inject-environment.d.ts +33 -0
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +1 -1
- package/staging/lib/matcap-texture.d.ts +0 -1
- package/staging/lib/normal-texture.d.ts +0 -1
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +7 -6
- package/esm2022/staging/lib/environment.mjs +0 -481
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, effect, input, untracked, viewChild, } from '@angular/core';
|
|
2
2
|
import { extend, injectBeforeRender, injectStore, is, pick } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { Box3, Group, Matrix4, Quaternion, Vector3 } from 'three';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
@@ -54,44 +53,41 @@ export class NgtsBounds {
|
|
|
54
53
|
this.t = 0;
|
|
55
54
|
this.box = new Box3();
|
|
56
55
|
extend({ Group });
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
controls.target.copy(camera.position).addScaledVector(front, -d);
|
|
70
|
-
controls.update();
|
|
71
|
-
}
|
|
72
|
-
this.animationState = AnimationState.NONE;
|
|
73
|
-
};
|
|
74
|
-
controls.addEventListener('start', callback);
|
|
75
|
-
return () => controls.removeEventListener('start', callback);
|
|
76
|
-
});
|
|
77
|
-
let count = 0;
|
|
78
|
-
autoEffect(() => {
|
|
79
|
-
const [clip, fit, observe] = [
|
|
80
|
-
this.clipOption(),
|
|
81
|
-
this.fitOption(),
|
|
82
|
-
this.observe(),
|
|
83
|
-
this.size(),
|
|
84
|
-
this.camera(),
|
|
85
|
-
this.controls(),
|
|
86
|
-
];
|
|
87
|
-
if (observe || count++ === 0) {
|
|
88
|
-
this.refresh();
|
|
89
|
-
if (fit)
|
|
90
|
-
this.reset().fit();
|
|
91
|
-
if (clip)
|
|
92
|
-
this.clip();
|
|
56
|
+
effect((onCleanup) => {
|
|
57
|
+
const [controls, camera] = [this.controls(), untracked(this.camera)];
|
|
58
|
+
if (!controls)
|
|
59
|
+
return;
|
|
60
|
+
const callback = () => {
|
|
61
|
+
if (controls && this.goal.target && this.animationState !== AnimationState.NONE) {
|
|
62
|
+
const front = new Vector3().setFromMatrixColumn(camera.matrix, 2);
|
|
63
|
+
const d0 = this.origin.camPos.distanceTo(controls.target);
|
|
64
|
+
const d1 = (this.goal.camPos || this.origin.camPos).distanceTo(this.goal.target);
|
|
65
|
+
const d = (1 - this.t) * d0 + this.t * d1;
|
|
66
|
+
controls.target.copy(camera.position).addScaledVector(front, -d);
|
|
67
|
+
controls.update();
|
|
93
68
|
}
|
|
94
|
-
|
|
69
|
+
this.animationState = AnimationState.NONE;
|
|
70
|
+
};
|
|
71
|
+
controls.addEventListener('start', callback);
|
|
72
|
+
onCleanup(() => controls.removeEventListener('start', callback));
|
|
73
|
+
});
|
|
74
|
+
let count = 0;
|
|
75
|
+
effect(() => {
|
|
76
|
+
const [clip, fit, observe] = [
|
|
77
|
+
this.clipOption(),
|
|
78
|
+
this.fitOption(),
|
|
79
|
+
this.observe(),
|
|
80
|
+
this.size(),
|
|
81
|
+
this.camera(),
|
|
82
|
+
this.controls(),
|
|
83
|
+
];
|
|
84
|
+
if (observe || count++ === 0) {
|
|
85
|
+
this.refresh();
|
|
86
|
+
if (fit)
|
|
87
|
+
this.reset().fit();
|
|
88
|
+
if (clip)
|
|
89
|
+
this.clip();
|
|
90
|
+
}
|
|
95
91
|
});
|
|
96
92
|
injectBeforeRender(({ delta }) => {
|
|
97
93
|
// This [additional animation step START] is needed to guarantee that delta used in animation isn't absurdly high (2-3 seconds) which is actually possible if rendering happens on demand...
|
|
@@ -262,14 +258,14 @@ export class NgtsBounds {
|
|
|
262
258
|
invalidate();
|
|
263
259
|
return this;
|
|
264
260
|
}
|
|
265
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsBounds, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.4", type: NgtsBounds, isStandalone: true, selector: "ngts-bounds", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
267
263
|
<ngt-group #group>
|
|
268
264
|
<ng-content />
|
|
269
265
|
</ngt-group>
|
|
270
266
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
271
267
|
}
|
|
272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsBounds, decorators: [{
|
|
273
269
|
type: Component,
|
|
274
270
|
args: [{
|
|
275
271
|
selector: 'ngts-bounds',
|
|
@@ -283,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
283
279
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
284
280
|
}]
|
|
285
281
|
}], ctorParameters: () => [] });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2xpYi9ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULHNCQUFzQixFQUV0QixLQUFLLEVBRUwsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQVksSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQVksVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFXNUUsSUFBSyxjQUlKO0FBSkQsV0FBSyxjQUFjO0lBQ2xCLG1EQUFRLENBQUE7SUFDUixxREFBUyxDQUFBO0lBQ1QsdURBQVUsQ0FBQTtBQUNYLENBQUMsRUFKSSxjQUFjLEtBQWQsY0FBYyxRQUlsQjtBQUVELFNBQVMsTUFBTSxDQUFDLEdBQVk7SUFDM0IsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQVksQ0FBQyxNQUFNLENBQUM7QUFDdEMsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsQ0FBUztJQUN4QyxvREFBb0Q7SUFDcEQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFXRCxNQUFNLGNBQWMsR0FBc0I7SUFDekMsV0FBVyxFQUFFLEdBQUc7SUFDaEIsTUFBTSxFQUFF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QyxDQUFDO1lBQzNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQzNELENBQUM7UUFFRix1REFBdUQ7UUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQ25ELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsTUFBTTtZQUN0QixDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ2pFLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFDN0IsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMxQixDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxTQUFTLElBQUksQ0FBQyxDQUFDO1FBQ2YsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNkLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQy9ELE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRTdELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUVuRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFWCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUc7WUFDdEMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDMUIsQ0FBQztRQUNGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFcEMsTUFBTSxDQUFDLElBQUksR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUM1QixNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVoQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2QsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ3JDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQixDQUFDO1FBRUQsVUFBVSxFQUFFLENBQUM7UUFFYixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7OEdBdFJXLFVBQVU7a0dBQVYsVUFBVSxvVUFSWjs7OztFQUlUOzsyRkFJVyxVQUFVO2tCQVh0QixTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG5cdFNpZ25hbCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBpcywgTmd0R3JvdXAsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGluamVjdEF1dG9FZmZlY3QgfSBmcm9tICduZ3h0ZW5zaW9uL2F1dG8tZWZmZWN0JztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEJveDMsIEdyb3VwLCBNYXRyaXg0LCBPYmplY3QzRCwgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuaW50ZXJmYWNlIENvbnRyb2xzUHJvdG8ge1xuXHR1cGRhdGUoKTogdm9pZDtcblxuXHR0YXJnZXQ6IFZlY3RvcjM7XG5cdG1heERpc3RhbmNlOiBudW1iZXI7XG5cdGFkZEV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG5cdHJlbW92ZUV2ZW50TGlzdGVuZXI6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogKGV2ZW50OiBhbnkpID0+IHZvaWQpID0+IHZvaWQ7XG59XG5cbmVudW0gQW5pbWF0aW9uU3RhdGUge1xuXHROT05FID0gMCxcblx0U1RBUlQgPSAxLFxuXHRBQ1RJVkUgPSAyLFxufVxuXG5mdW5jdGlvbiBpc0JveDMoZGVmOiB1bmtub3duKTogZGVmIGlzIEJveDMge1xuXHRyZXR1cm4gISFkZWYgJiYgKGRlZiBhcyBCb3gzKS5pc0JveDM7XG59XG5cbmZ1bmN0aW9uIGludGVycG9sYXRlRnVuY0RlZmF1bHQodDogbnVtYmVyKSB7XG5cdC8vIEltaXRhdGVzIHRoZSBwcmV2aW91c2x5IHVzZWQgVEhSRUUuTWF0aFV0aWxzLmRhbXBcblx0cmV0dXJuIDEgLSBNYXRoLmV4cCgtNSAqIHQpICsgMC4wMDcgKiB0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNCb3VuZHNPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RHcm91cD4ge1xuXHRtYXhEdXJhdGlvbjogbnVtYmVyO1xuXHRtYXJnaW46IG51bWJlcjtcblx0b2JzZXJ2ZTogYm9vbGVhbjtcblx0Zml0OiBib29sZWFuO1xuXHRjbGlwOiBib29sZWFuO1xuXHRpbnRlcnBvbGF0ZUZ1bmM6ICh0OiBudW1iZXIpID0+IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNCb3VuZHNPcHRpb25zID0ge1xuXHRtYXhEdXJhdGlvbjogMS4wLFxuXHRtYXJnaW46IDEuMixcblx0aW50ZXJwb2xhdGVGdW5jOiBpbnRlcnBvbGF0ZUZ1bmNEZWZhdWx0LFxuXHRjbGlwOiBmYWxzZSxcblx0Zml0OiBmYWxzZSxcblx0b2JzZXJ2ZTogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWJvdW5kcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjZ3JvdXA+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQm91bmRzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cdHByaXZhdGUgc2l6ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzaXplJyk7XG5cdHByaXZhdGUgY29udHJvbHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY29udHJvbHMnKSBhcyB1bmtub3duIGFzIFNpZ25hbDxDb250cm9sc1Byb3RvPjtcblxuXHRwcml2YXRlIGNsaXBPcHRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NsaXAnKTtcblx0cHJpdmF0ZSBmaXRPcHRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZpdCcpO1xuXHRwcml2YXRlIG9ic2VydmUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29ic2VydmUnKTtcblxuXHRwcml2YXRlIG9yaWdpbiA9IHtcblx0XHRjYW1Qb3M6IG5ldyBWZWN0b3IzKCksXG5cdFx0Y2FtUm90OiBuZXcgUXVhdGVybmlvbigpLFxuXHRcdGNhbVpvb206IDEsXG5cdH07XG5cdHByaXZhdGUgZ29hbCA9IHtcblx0XHRjYW1Qb3M6IHVuZGVmaW5lZCBhcyBWZWN0b3IzIHwgdW5kZWZpbmVkLFxuXHRcdGNhbVJvdDogdW5kZWZpbmVkIGFzIFF1YXRlcm5pb24gfCB1bmRlZmluZWQsXG5cdFx0Y2FtWm9vbTogdW5kZWZpbmVkIGFzIG51bWJlciB8IHVuZGVmaW5lZCxcblx0XHRjYW1VcDogdW5kZWZpbmVkIGFzIFZlY3RvcjMgfCB1bmRlZmluZWQsXG5cdFx0dGFyZ2V0OiB1bmRlZmluZWQgYXMgVmVjdG9yMyB8IHVuZGVmaW5lZCxcblx0fTtcblx0cHJpdmF0ZSBhbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLk5PTkU7XG5cblx0Ly8gcmVwcmVzZW50IGFuaW1hdGlvbiBzdGF0ZSBmcm9tIDAgdG8gMVxuXHRwcml2YXRlIHQgPSAwO1xuXHRwcml2YXRlIGJveCA9IG5ldyBCb3gzKCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgR3JvdXAgfSk7XG5cblx0XHRjb25zdCBhdXRvRWZmZWN0ID0gaW5qZWN0QXV0b0VmZmVjdCgpO1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHRhdXRvRWZmZWN0KCgpID0+IHtcblx0XHRcdFx0Y29uc3QgW2NvbnRyb2xzLCBjYW1lcmFdID0gW3RoaXMuY29udHJvbHMoKSwgdW50cmFja2VkKHRoaXMuY2FtZXJhKV07XG5cdFx0XHRcdGlmICghY29udHJvbHMpIHJldHVybjtcblx0XHRcdFx0Y29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGNvbnRyb2xzICYmIHRoaXMuZ29hbC50YXJnZXQgJiYgdGhpcy5hbmltYXRpb25TdGF0ZSAhPT0gQW5pbWF0aW9uU3RhdGUuTk9ORSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZnJvbnQgPSBuZXcgVmVjdG9yMygpLnNldEZyb21NYXRyaXhDb2x1bW4oY2FtZXJhLm1hdHJpeCwgMik7XG5cdFx0XHRcdFx0XHRjb25zdCBkMCA9IHRoaXMub3JpZ2luLmNhbVBvcy5kaXN0YW5jZVRvKGNvbnRyb2xzLnRhcmdldCk7XG5cdFx0XHRcdFx0XHRjb25zdCBkMSA9ICh0aGlzLmdvYWwuY2FtUG9zIHx8IHRoaXMub3JpZ2luLmNhbVBvcykuZGlzdGFuY2VUbyh0aGlzLmdvYWwudGFyZ2V0KTtcblx0XHRcdFx0XHRcdGNvbnN0IGQgPSAoMSAtIHRoaXMudCkgKiBkMCArIHRoaXMudCAqIGQxO1xuXG5cdFx0XHRcdFx0XHRjb250cm9scy50YXJnZXQuY29weShjYW1lcmEucG9zaXRpb24pLmFkZFNjYWxlZFZlY3Rvcihmcm9udCwgLWQpO1xuXHRcdFx0XHRcdFx0Y29udHJvbHMudXBkYXRlKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLk5PTkU7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Y29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignc3RhcnQnLCBjYWxsYmFjayk7XG5cdFx0XHRcdHJldHVybiAoKSA9PiBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRsZXQgY291bnQgPSAwO1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IFtjbGlwLCBmaXQsIG9ic2VydmVdID0gW1xuXHRcdFx0XHRcdHRoaXMuY2xpcE9wdGlvbigpLFxuXHRcdFx0XHRcdHRoaXMuZml0T3B0aW9uKCksXG5cdFx0XHRcdFx0dGhpcy5vYnNlcnZlKCksXG5cdFx0XHRcdFx0dGhpcy5zaXplKCksXG5cdFx0XHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0XHR0aGlzLmNvbnRyb2xzKCksXG5cdFx0XHRcdF07XG5cdFx0XHRcdGlmIChvYnNlcnZlIHx8IGNvdW50KysgPT09IDApIHtcblx0XHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcblx0XHRcdFx0XHRpZiAoZml0KSB0aGlzLnJlc2V0KCkuZml0KCk7XG5cdFx0XHRcdFx0aWYgKGNsaXApIHRoaXMuY2xpcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHQvLyBUaGlzIFthZGRpdGlvbmFsIGFuaW1hdGlvbiBzdGVwIFNUQVJUXSBpcyBuZWVkZWQgdG8gZ3VhcmFudGVlIHRoYXQgZGVsdGEgdXNlZCBpbiBhbmltYXRpb24gaXNuJ3QgYWJzdXJkbHkgaGlnaCAoMi0zIHNlY29uZHMpIHdoaWNoIGlzIGFjdHVhbGx5IHBvc3NpYmxlIGlmIHJlbmRlcmluZyBoYXBwZW5zIG9uIGRlbWFuZC4uLlxuXHRcdFx0aWYgKHRoaXMuYW5pbWF0aW9uU3RhdGUgPT09IEFuaW1hdGlvblN0YXRlLlNUQVJUKSB7XG5cdFx0XHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZS5BQ1RJVkU7XG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLmFuaW1hdGlvblN0YXRlID09PSBBbmltYXRpb25TdGF0ZS5BQ1RJVkUpIHtcblx0XHRcdFx0Y29uc3QgW3sgbWF4RHVyYXRpb24sIGludGVycG9sYXRlRnVuYyB9LCBjYW1lcmEsIGNvbnRyb2xzLCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0XHR0aGlzLmNhbWVyYSgpLFxuXHRcdFx0XHRcdHRoaXMuY29udHJvbHMoKSxcblx0XHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0XTtcblx0XHRcdFx0dGhpcy50ICs9IGRlbHRhIC8gbWF4RHVyYXRpb247XG5cblx0XHRcdFx0aWYgKHRoaXMudCA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVBvcyAmJiBjYW1lcmEucG9zaXRpb24uY29weSh0aGlzLmdvYWwuY2FtUG9zKTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtUm90ICYmIGNhbWVyYS5xdWF0ZXJuaW9uLmNvcHkodGhpcy5nb2FsLmNhbVJvdCk7XG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVVwICYmIGNhbWVyYS51cC5jb3B5KHRoaXMuZ29hbC5jYW1VcCk7XG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVpvb20gJiYgaXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgJiYgKGNhbWVyYS56b29tID0gdGhpcy5nb2FsLmNhbVpvb20pO1xuXG5cdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblxuXHRcdFx0XHRcdGlmIChjb250cm9scyAmJiB0aGlzLmdvYWwudGFyZ2V0KSB7XG5cdFx0XHRcdFx0XHRjb250cm9scy50YXJnZXQuY29weSh0aGlzLmdvYWwudGFyZ2V0KTtcblx0XHRcdFx0XHRcdGNvbnRyb2xzLnVwZGF0ZSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZS5OT05FO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGsgPSBpbnRlcnBvbGF0ZUZ1bmModGhpcy50KTtcblxuXHRcdFx0XHRcdHRoaXMuZ29hbC5jYW1Qb3MgJiYgY2FtZXJhLnBvc2l0aW9uLmxlcnBWZWN0b3JzKHRoaXMub3JpZ2luLmNhbVBvcywgdGhpcy5nb2FsLmNhbVBvcywgayk7XG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVJvdCAmJiBjYW1lcmEucXVhdGVybmlvbi5zbGVycFF1YXRlcm5pb25zKHRoaXMub3JpZ2luLmNhbVJvdCwgdGhpcy5nb2FsLmNhbVJvdCwgayk7XG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVVwICYmIGNhbWVyYS51cC5zZXQoMCwgMSwgMCkuYXBwbHlRdWF0ZXJuaW9uKGNhbWVyYS5xdWF0ZXJuaW9uKTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtWm9vbSAmJlxuXHRcdFx0XHRcdFx0aXMub3J0aG9ncmFwaGljQ2FtZXJhKGNhbWVyYSkgJiZcblx0XHRcdFx0XHRcdChjYW1lcmEuem9vbSA9ICgxIC0gaykgKiB0aGlzLm9yaWdpbi5jYW1ab29tICsgayAqIHRoaXMuZ29hbC5jYW1ab29tKTtcblxuXHRcdFx0XHRcdGNhbWVyYS51cGRhdGVNYXRyaXhXb3JsZCgpO1xuXHRcdFx0XHRcdGNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRTaXplKCkge1xuXHRcdGNvbnN0IFtjYW1lcmEsIHsgbWFyZ2luIH1dID0gW3VudHJhY2tlZCh0aGlzLmNhbWVyYSksIHVudHJhY2tlZCh0aGlzLm9wdGlvbnMpXTtcblxuXHRcdGNvbnN0IGJveFNpemUgPSB0aGlzLmJveC5nZXRTaXplKG5ldyBWZWN0b3IzKCkpO1xuXHRcdGNvbnN0IGNlbnRlciA9IHRoaXMuYm94LmdldENlbnRlcihuZXcgVmVjdG9yMygpKTtcblx0XHRjb25zdCBtYXhTaXplID0gTWF0aC5tYXgoYm94U2l6ZS54LCBib3hTaXplLnksIGJveFNpemUueik7XG5cdFx0Y29uc3QgZml0SGVpZ2h0RGlzdGFuY2UgPSBpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKVxuXHRcdFx0PyBtYXhTaXplICogNFxuXHRcdFx0OiBtYXhTaXplIC8gKDIgKiBNYXRoLmF0YW4oKE1hdGguUEkgKiBjYW1lcmEuZm92KSAvIDM2MCkpO1xuXHRcdGNvbnN0IGZpdFdpZHRoRGlzdGFuY2UgPSBpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSA/IG1heFNpemUgKiA0IDogZml0SGVpZ2h0RGlzdGFuY2UgLyBjYW1lcmEuYXNwZWN0O1xuXHRcdGNvbnN0IGRpc3RhbmNlID0gbWFyZ2luICogTWF0aC5tYXgoZml0SGVpZ2h0RGlzdGFuY2UsIGZpdFdpZHRoRGlzdGFuY2UpO1xuXG5cdFx0cmV0dXJuIHsgYm94OiB0aGlzLmJveCwgc2l6ZTogYm94U2l6ZSwgY2VudGVyLCBkaXN0YW5jZSB9O1xuXHR9XG5cblx0cmVmcmVzaChvYmplY3Q/OiBPYmplY3QzRCB8IEJveDMpIHtcblx0XHRjb25zdCBbZ3JvdXAsIGNhbWVyYV0gPSBbdW50cmFja2VkKHRoaXMuZ3JvdXBSZWYpLm5hdGl2ZUVsZW1lbnQsIHVudHJhY2tlZCh0aGlzLmNhbWVyYSldO1xuXG5cdFx0aWYgKGlzQm94MyhvYmplY3QpKSB0aGlzLmJveC5jb3B5KG9iamVjdCk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRjb25zdCB0YXJnZXQgPSBvYmplY3QgfHwgZ3JvdXA7XG5cdFx0XHRpZiAoIXRhcmdldCkgcmV0dXJuIHRoaXM7XG5cdFx0XHR0YXJnZXQudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG5cdFx0XHR0aGlzLmJveC5zZXRGcm9tT2JqZWN0KHRhcmdldCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJveC5pc0VtcHR5KCkpIHtcblx0XHRcdGNvbnN0IG1heCA9IGNhbWVyYS5wb3NpdGlvbi5sZW5ndGgoKSB8fCAxMDtcblx0XHRcdHRoaXMuYm94LnNldEZyb21DZW50ZXJBbmRTaXplKG5ldyBWZWN0b3IzKCksIG5ldyBWZWN0b3IzKG1heCwgbWF4LCBtYXgpKTtcblx0XHR9XG5cblx0XHR0aGlzLm9yaWdpbi5jYW1Qb3MuY29weShjYW1lcmEucG9zaXRpb24pO1xuXHRcdHRoaXMub3JpZ2luLmNhbVJvdC5jb3B5KGNhbWVyYS5xdWF0ZXJuaW9uKTtcblx0XHRpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSAmJiAodGhpcy5vcmlnaW4uY2FtWm9vbSA9IGNhbWVyYS56b29tKTtcblxuXHRcdHRoaXMuZ29hbC5jYW1Qb3MgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy5nb2FsLmNhbVJvdCA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmdvYWwuY2FtWm9vbSA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmdvYWwuY2FtVXAgPSB1bmRlZmluZWQ7XG5cdFx0dGhpcy5nb2FsLnRhcmdldCA9IHVuZGVmaW5lZDtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cmVzZXQoKSB7XG5cdFx0Y29uc3QgW2NhbWVyYV0gPSBbdW50cmFja2VkKHRoaXMuY2FtZXJhKV07XG5cdFx0Y29uc3QgeyBjZW50ZXIsIGRpc3RhbmNlIH0gPSB0aGlzLmdldFNpemUoKTtcblxuXHRcdGNvbnN0IGRpcmVjdGlvbiA9IGNhbWVyYS5wb3NpdGlvbi5jbG9uZSgpLnN1YihjZW50ZXIpLm5vcm1hbGl6ZSgpO1xuXHRcdHRoaXMuZ29hbC5jYW1Qb3MgPSBjZW50ZXIuY2xvbmUoKS5hZGRTY2FsZWRWZWN0b3IoZGlyZWN0aW9uLCBkaXN0YW5jZSk7XG5cdFx0dGhpcy5nb2FsLnRhcmdldCA9IGNlbnRlci5jbG9uZSgpO1xuXHRcdGNvbnN0IG1DYW1Sb3QgPSBuZXcgTWF0cml4NCgpLmxvb2tBdCh0aGlzLmdvYWwuY2FtUG9zLCB0aGlzLmdvYWwudGFyZ2V0LCBjYW1lcmEudXApO1xuXHRcdHRoaXMuZ29hbC5jYW1Sb3QgPSBuZXcgUXVhdGVybmlvbigpLnNldEZyb21Sb3RhdGlvbk1hdHJpeChtQ2FtUm90KTtcblxuXHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZS5TVEFSVDtcblx0XHR0aGlzLnQgPSAwO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRtb3ZlVG8ocG9zaXRpb246IFZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0pIHtcblx0XHR0aGlzLmdvYWwuY2FtUG9zID0gQXJyYXkuaXNBcnJheShwb3NpdGlvbikgPyBuZXcgVmVjdG9yMyguLi5wb3NpdGlvbikgOiBwb3NpdGlvbi5jbG9uZSgpO1xuXG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLlNUQVJUO1xuXHRcdHRoaXMudCA9IDA7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGxvb2tBdCh7IHRhcmdldCwgdXAgfTogeyB0YXJnZXQ6IFZlY3RvcjMgfCBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07IHVwPzogVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB9KSB7XG5cdFx0Y29uc3QgW2NhbWVyYV0gPSBbdW50cmFja2VkKHRoaXMuY2FtZXJhKV07XG5cblx0XHR0aGlzLmdvYWwudGFyZ2V0ID0gQXJyYXkuaXNBcnJheSh0YXJnZXQpID8gbmV3IFZlY3RvcjMoLi4udGFyZ2V0KSA6IHRhcmdldC5jbG9uZSgpO1xuXHRcdGlmICh1cCkge1xuXHRcdFx0dGhpcy5nb2FsLmNhbVVwID0gQXJyYXkuaXNBcnJheSh1cCkgPyBuZXcgVmVjdG9yMyguLi51cCkgOiB1cC5jbG9uZSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmdvYWwuY2FtVXAgPSBjYW1lcmEudXAuY2xvbmUoKTtcblx0XHR9XG5cdFx0Y29uc3QgbUNhbVJvdCA9IG5ldyBNYXRyaXg0KCkubG9va0F0KHRoaXMuZ29hbC5jYW1Qb3MgfHwgY2FtZXJhLnBvc2l0aW9uLCB0aGlzLmdvYWwudGFyZ2V0LCB0aGlzLmdvYWwuY2FtVXApO1xuXHRcdHRoaXMuZ29hbC5jYW1Sb3QgPSBuZXcgUXVhdGVybmlvbigpLnNldEZyb21Sb3RhdGlvbk1hdHJpeChtQ2FtUm90KTtcblxuXHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZS5TVEFSVDtcblx0XHR0aGlzLnQgPSAwO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRmaXQoKSB7XG5cdFx0Y29uc3QgW2NhbWVyYSwgY29udHJvbHMsIHsgbWFyZ2luIH1dID0gW3VudHJhY2tlZCh0aGlzLmNhbWVyYSksIHVudHJhY2tlZCh0aGlzLmNvbnRyb2xzKSwgdW50cmFja2VkKHRoaXMub3B0aW9ucyldO1xuXG5cdFx0aWYgKCFpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSkge1xuXHRcdFx0Ly8gRm9yIG5vbi1vcnRob2dyYXBoaWMgY2FtZXJhcywgZml0IHNob3VsZCBiZWhhdmUgZXhhY3RseSBsaWtlIHJlc2V0XG5cdFx0XHRyZXR1cm4gdGhpcy5yZXNldCgpO1xuXHRcdH1cblxuXHRcdC8vIEZvciBvcnRob2dyYXBoaWMgY2FtZXJhcywgZml0IHNob3VsZCBvbmx5IG1vZGlmeSB0aGUgem9vbSB2YWx1ZVxuXHRcdGxldCBtYXhIZWlnaHQgPSAwO1xuXHRcdGxldCBtYXhXaWR0aCA9IDA7XG5cdFx0Y29uc3QgdmVydGljZXMgPSBbXG5cdFx0XHRuZXcgVmVjdG9yMyh0aGlzLmJveC5taW4ueCwgdGhpcy5ib3gubWluLnksIHRoaXMuYm94Lm1pbi56KSxcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1pbi54LCB0aGlzLmJveC5tYXgueSwgdGhpcy5ib3gubWluLnopLFxuXHRcdFx0bmV3IFZlY3RvcjModGhpcy5ib3gubWluLngsIHRoaXMuYm94Lm1pbi55LCB0aGlzLmJveC5tYXgueiksXG5cdFx0XHRuZXcgVmVjdG9yMyh0aGlzLmJveC5taW4ueCwgdGhpcy5ib3gubWF4LnksIHRoaXMuYm94Lm1heC56KSxcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1heC54LCB0aGlzLmJveC5tYXgueSwgdGhpcy5ib3gubWF4LnopLFxuXHRcdFx0bmV3IFZlY3RvcjModGhpcy5ib3gubWF4LngsIHRoaXMuYm94Lm1heC55LCB0aGlzLmJveC5taW4ueiksXG5cdFx0XHRuZXcgVmVjdG9yMyh0aGlzLmJveC5tYXgueCwgdGhpcy5ib3gubWluLnksIHRoaXMuYm94Lm1heC56KSxcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1heC54LCB0aGlzLmJveC5taW4ueSwgdGhpcy5ib3gubWluLnopLFxuXHRcdF07XG5cblx0XHQvLyBUcmFuc2Zvcm0gdGhlIGNlbnRlciBhbmQgZWFjaCBjb3JuZXIgdG8gY2FtZXJhIHNwYWNlXG5cdFx0Y29uc3QgcG9zID0gdGhpcy5nb2FsLmNhbVBvcyB8fCBjYW1lcmEucG9zaXRpb247XG5cdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy5nb2FsLnRhcmdldCB8fCBjb250cm9scy50YXJnZXQ7XG5cdFx0Y29uc3QgdXAgPSB0aGlzLmdvYWwuY2FtVXAgfHwgY2FtZXJhLnVwO1xuXHRcdGNvbnN0IG1DYW1XSW52ID0gdGFyZ2V0XG5cdFx0XHQ/IG5ldyBNYXRyaXg0KCkubG9va0F0KHBvcywgdGFyZ2V0LCB1cCkuc2V0UG9zaXRpb24ocG9zKS5pbnZlcnQoKVxuXHRcdFx0OiBjYW1lcmEubWF0cml4V29ybGRJbnZlcnNlO1xuXHRcdGZvciAoY29uc3QgdiBvZiB2ZXJ0aWNlcykge1xuXHRcdFx0di5hcHBseU1hdHJpeDQobUNhbVdJbnYpO1xuXHRcdFx0bWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBNYXRoLmFicyh2LnkpKTtcblx0XHRcdG1heFdpZHRoID0gTWF0aC5tYXgobWF4V2lkdGgsIE1hdGguYWJzKHYueCkpO1xuXHRcdH1cblx0XHRtYXhIZWlnaHQgKj0gMjtcblx0XHRtYXhXaWR0aCAqPSAyO1xuXHRcdGNvbnN0IHpvb21Gb3JIZWlnaHQgPSAoY2FtZXJhLnRvcCAtIGNhbWVyYS5ib3R0b20pIC8gbWF4SGVpZ2h0O1xuXHRcdGNvbnN0IHpvb21Gb3JXaWR0aCA9IChjYW1lcmEucmlnaHQgLSBjYW1lcmEubGVmdCkgLyBtYXhXaWR0aDtcblxuXHRcdHRoaXMuZ29hbC5jYW1ab29tID0gTWF0aC5taW4oem9vbUZvckhlaWdodCwgem9vbUZvcldpZHRoKSAvIG1hcmdpbjtcblxuXHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUgPSBBbmltYXRpb25TdGF0ZS5TVEFSVDtcblx0XHR0aGlzLnQgPSAwO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjbGlwKCkge1xuXHRcdGNvbnN0IFtjYW1lcmEsIGNvbnRyb2xzLCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdHVudHJhY2tlZCh0aGlzLmNhbWVyYSksXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5jb250cm9scyksXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5pbnZhbGlkYXRlKSxcblx0XHRdO1xuXHRcdGNvbnN0IHsgZGlzdGFuY2UgfSA9IHRoaXMuZ2V0U2l6ZSgpO1xuXG5cdFx0Y2FtZXJhLm5lYXIgPSBkaXN0YW5jZSAvIDEwMDtcblx0XHRjYW1lcmEuZmFyID0gZGlzdGFuY2UgKiAxMDA7XG5cdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblxuXHRcdGlmIChjb250cm9scykge1xuXHRcdFx0Y29udHJvbHMubWF4RGlzdGFuY2UgPSBkaXN0YW5jZSAqIDEwO1xuXHRcdFx0Y29udHJvbHMudXBkYXRlKCk7XG5cdFx0fVxuXG5cdFx0aW52YWxpZGF0ZSgpO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbiJdfQ==
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2xpYi9ib3VuZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBRUwsU0FBUyxFQUNULFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQVksSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQVksVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFXNUUsSUFBSyxjQUlKO0FBSkQsV0FBSyxjQUFjO0lBQ2xCLG1EQUFRLENBQUE7SUFDUixxREFBUyxDQUFBO0lBQ1QsdURBQVUsQ0FBQTtBQUNYLENBQUMsRUFKSSxjQUFjLEtBQWQsY0FBYyxRQUlsQjtBQUVELFNBQVMsTUFBTSxDQUFDLEdBQVk7SUFDM0IsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFLLEdBQVksQ0FBQyxNQUFNLENBQUM7QUFDdEMsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsQ0FBUztJQUN4QyxvREFBb0Q7SUFDcEQsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFXRCxNQUFNLGNBQWMsR0FBc0I7SUFDekMsV0FBVyxFQUFFLEdBQUc7SUFDaEIsTUFBTSxFQUFFLEdBQUc7SUFDWCxlQUFlLEVBQUUsc0JBQXNCO0lBQ3ZDLElBQUksRUFBRSxL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QkFBb0IsQ0FBQyxJQUFJLE9BQU8sRUFBRSxFQUFFLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBRTdCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELEtBQUs7UUFDSixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUss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QyxDQUFDLENBQUM7UUFFbkgsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3BDLHFFQUFxRTtZQUNyRSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsa0VBQWtFO1FBQ2xFLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDakIsTUFBTSxRQUFRLEdBQUc7WUFDaEIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMs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QztRQUVwQyxNQUFNLENBQUMsSUFBSSxHQUFHLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBRWhDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDZCxRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDckMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25CLENBQUM7UUFFRCxVQUFVLEVBQUUsQ0FBQztRQUViLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQzs4R0FwUlcsVUFBVTtrR0FBVixVQUFVLG9VQVJaOzs7O0VBSVQ7OzJGQUlXLFVBQVU7a0JBWHRCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0U2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGluamVjdEJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIGlzLCBOZ3RHcm91cCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE9iamVjdDNELCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuXG5pbnRlcmZhY2UgQ29udHJvbHNQcm90byB7XG5cdHVwZGF0ZSgpOiB2b2lkO1xuXG5cdHRhcmdldDogVmVjdG9yMztcblx0bWF4RGlzdGFuY2U6IG51bWJlcjtcblx0YWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcblx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZW51bSBBbmltYXRpb25TdGF0ZSB7XG5cdE5PTkUgPSAwLFxuXHRTVEFSVCA9IDEsXG5cdEFDVElWRSA9IDIsXG59XG5cbmZ1bmN0aW9uIGlzQm94MyhkZWY6IHVua25vd24pOiBkZWYgaXMgQm94MyB7XG5cdHJldHVybiAhIWRlZiAmJiAoZGVmIGFzIEJveDMpLmlzQm94Mztcbn1cblxuZnVuY3Rpb24gaW50ZXJwb2xhdGVGdW5jRGVmYXVsdCh0OiBudW1iZXIpIHtcblx0Ly8gSW1pdGF0ZXMgdGhlIHByZXZpb3VzbHkgdXNlZCBUSFJFRS5NYXRoVXRpbHMuZGFtcFxuXHRyZXR1cm4gMSAtIE1hdGguZXhwKC01ICogdCkgKyAwLjAwNyAqIHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0JvdW5kc09wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPE5ndEdyb3VwPiB7XG5cdG1heER1cmF0aW9uOiBudW1iZXI7XG5cdG1hcmdpbjogbnVtYmVyO1xuXHRvYnNlcnZlOiBib29sZWFuO1xuXHRmaXQ6IGJvb2xlYW47XG5cdGNsaXA6IGJvb2xlYW47XG5cdGludGVycG9sYXRlRnVuYzogKHQ6IG51bWJlcikgPT4gbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c0JvdW5kc09wdGlvbnMgPSB7XG5cdG1heER1cmF0aW9uOiAxLjAsXG5cdG1hcmdpbjogMS4yLFxuXHRpbnRlcnBvbGF0ZUZ1bmM6IGludGVycG9sYXRlRnVuY0RlZmF1bHQsXG5cdGNsaXA6IGZhbHNlLFxuXHRmaXQ6IGZhbHNlLFxuXHRvYnNlcnZlOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtYm91bmRzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LWdyb3VwICNncm91cD5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNCb3VuZHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGNhbWVyYSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0cHJpdmF0ZSBjb250cm9scyA9IHRoaXMuc3RvcmUuc2VsZWN0KCdjb250cm9scycpIGFzIHVua25vd24gYXMgU2lnbmFsPENvbnRyb2xzUHJvdG8+O1xuXG5cdHByaXZhdGUgY2xpcE9wdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnY2xpcCcpO1xuXHRwcml2YXRlIGZpdE9wdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnZml0Jyk7XG5cdHByaXZhdGUgb2JzZXJ2ZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnb2JzZXJ2ZScpO1xuXG5cdHByaXZhdGUgb3JpZ2luID0ge1xuXHRcdGNhbVBvczogbmV3IFZlY3RvcjMoKSxcblx0XHRjYW1Sb3Q6IG5ldyBRdWF0ZXJuaW9uKCksXG5cdFx0Y2FtWm9vbTogMSxcblx0fTtcblx0cHJpdmF0ZSBnb2FsID0ge1xuXHRcdGNhbVBvczogdW5kZWZpbmVkIGFzIFZlY3RvcjMgfCB1bmRlZmluZWQsXG5cdFx0Y2FtUm90OiB1bmRlZmluZWQgYXMgUXVhdGVybmlvbiB8IHVuZGVmaW5lZCxcblx0XHRjYW1ab29tOiB1bmRlZmluZWQgYXMgbnVtYmVyIHwgdW5kZWZpbmVkLFxuXHRcdGNhbVVwOiB1bmRlZmluZWQgYXMgVmVjdG9yMyB8IHVuZGVmaW5lZCxcblx0XHR0YXJnZXQ6IHVuZGVmaW5lZCBhcyBWZWN0b3IzIHwgdW5kZWZpbmVkLFxuXHR9O1xuXHRwcml2YXRlIGFuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3RhdGUuTk9ORTtcblxuXHQvLyByZXByZXNlbnQgYW5pbWF0aW9uIHN0YXRlIGZyb20gMCB0byAxXG5cdHByaXZhdGUgdCA9IDA7XG5cdHByaXZhdGUgYm94ID0gbmV3IEJveDMoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBHcm91cCB9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbY29udHJvbHMsIGNhbWVyYV0gPSBbdGhpcy5jb250cm9scygpLCB1bnRyYWNrZWQodGhpcy5jYW1lcmEpXTtcblx0XHRcdGlmICghY29udHJvbHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChjb250cm9scyAmJiB0aGlzLmdvYWwudGFyZ2V0ICYmIHRoaXMuYW5pbWF0aW9uU3RhdGUgIT09IEFuaW1hdGlvblN0YXRlLk5PTkUpIHtcblx0XHRcdFx0XHRjb25zdCBmcm9udCA9IG5ldyBWZWN0b3IzKCkuc2V0RnJvbU1hdHJpeENvbHVtbihjYW1lcmEubWF0cml4LCAyKTtcblx0XHRcdFx0XHRjb25zdCBkMCA9IHRoaXMub3JpZ2luLmNhbVBvcy5kaXN0YW5jZVRvKGNvbnRyb2xzLnRhcmdldCk7XG5cdFx0XHRcdFx0Y29uc3QgZDEgPSAodGhpcy5nb2FsLmNhbVBvcyB8fCB0aGlzLm9yaWdpbi5jYW1Qb3MpLmRpc3RhbmNlVG8odGhpcy5nb2FsLnRhcmdldCk7XG5cdFx0XHRcdFx0Y29uc3QgZCA9ICgxIC0gdGhpcy50KSAqIGQwICsgdGhpcy50ICogZDE7XG5cblx0XHRcdFx0XHRjb250cm9scy50YXJnZXQuY29weShjYW1lcmEucG9zaXRpb24pLmFkZFNjYWxlZFZlY3Rvcihmcm9udCwgLWQpO1xuXHRcdFx0XHRcdGNvbnRyb2xzLnVwZGF0ZSgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLk5PTkU7XG5cdFx0XHR9O1xuXG5cdFx0XHRjb250cm9scy5hZGRFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjb250cm9scy5yZW1vdmVFdmVudExpc3RlbmVyKCdzdGFydCcsIGNhbGxiYWNrKSk7XG5cdFx0fSk7XG5cblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbY2xpcCwgZml0LCBvYnNlcnZlXSA9IFtcblx0XHRcdFx0dGhpcy5jbGlwT3B0aW9uKCksXG5cdFx0XHRcdHRoaXMuZml0T3B0aW9uKCksXG5cdFx0XHRcdHRoaXMub2JzZXJ2ZSgpLFxuXHRcdFx0XHR0aGlzLnNpemUoKSxcblx0XHRcdFx0dGhpcy5jYW1lcmEoKSxcblx0XHRcdFx0dGhpcy5jb250cm9scygpLFxuXHRcdFx0XTtcblx0XHRcdGlmIChvYnNlcnZlIHx8IGNvdW50KysgPT09IDApIHtcblx0XHRcdFx0dGhpcy5yZWZyZXNoKCk7XG5cdFx0XHRcdGlmIChmaXQpIHRoaXMucmVzZXQoKS5maXQoKTtcblx0XHRcdFx0aWYgKGNsaXApIHRoaXMuY2xpcCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdC8vIFRoaXMgW2FkZGl0aW9uYWwgYW5pbWF0aW9uIHN0ZXAgU1RBUlRdIGlzIG5lZWRlZCB0byBndWFyYW50ZWUgdGhhdCBkZWx0YSB1c2VkIGluIGFuaW1hdGlvbiBpc24ndCBhYnN1cmRseSBoaWdoICgyLTMgc2Vjb25kcykgd2hpY2ggaXMgYWN0dWFsbHkgcG9zc2libGUgaWYgcmVuZGVyaW5nIGhhcHBlbnMgb24gZGVtYW5kLi4uXG5cdFx0XHRpZiAodGhpcy5hbmltYXRpb25TdGF0ZSA9PT0gQW5pbWF0aW9uU3RhdGUuU1RBUlQpIHtcblx0XHRcdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLkFDVElWRTtcblx0XHRcdFx0dGhpcy5pbnZhbGlkYXRlKCk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuYW5pbWF0aW9uU3RhdGUgPT09IEFuaW1hdGlvblN0YXRlLkFDVElWRSkge1xuXHRcdFx0XHRjb25zdCBbeyBtYXhEdXJhdGlvbiwgaW50ZXJwb2xhdGVGdW5jIH0sIGNhbWVyYSwgY29udHJvbHMsIGludmFsaWRhdGVdID0gW1xuXHRcdFx0XHRcdHRoaXMub3B0aW9ucygpLFxuXHRcdFx0XHRcdHRoaXMuY2FtZXJhKCksXG5cdFx0XHRcdFx0dGhpcy5jb250cm9scygpLFxuXHRcdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHRdO1xuXHRcdFx0XHR0aGlzLnQgKz0gZGVsdGEgLyBtYXhEdXJhdGlvbjtcblxuXHRcdFx0XHRpZiAodGhpcy50ID49IDEpIHtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtUG9zICYmIGNhbWVyYS5wb3NpdGlvbi5jb3B5KHRoaXMuZ29hbC5jYW1Qb3MpO1xuXHRcdFx0XHRcdHRoaXMuZ29hbC5jYW1Sb3QgJiYgY2FtZXJhLnF1YXRlcm5pb24uY29weSh0aGlzLmdvYWwuY2FtUm90KTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtVXAgJiYgY2FtZXJhLnVwLmNvcHkodGhpcy5nb2FsLmNhbVVwKTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtWm9vbSAmJiBpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSAmJiAoY2FtZXJhLnpvb20gPSB0aGlzLmdvYWwuY2FtWm9vbSk7XG5cblx0XHRcdFx0XHRjYW1lcmEudXBkYXRlTWF0cml4V29ybGQoKTtcblx0XHRcdFx0XHRjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuXG5cdFx0XHRcdFx0aWYgKGNvbnRyb2xzICYmIHRoaXMuZ29hbC50YXJnZXQpIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xzLnRhcmdldC5jb3B5KHRoaXMuZ29hbC50YXJnZXQpO1xuXHRcdFx0XHRcdFx0Y29udHJvbHMudXBkYXRlKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLk5PTkU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgayA9IGludGVycG9sYXRlRnVuYyh0aGlzLnQpO1xuXG5cdFx0XHRcdFx0dGhpcy5nb2FsLmNhbVBvcyAmJiBjYW1lcmEucG9zaXRpb24ubGVycFZlY3RvcnModGhpcy5vcmlnaW4uY2FtUG9zLCB0aGlzLmdvYWwuY2FtUG9zLCBrKTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtUm90ICYmIGNhbWVyYS5xdWF0ZXJuaW9uLnNsZXJwUXVhdGVybmlvbnModGhpcy5vcmlnaW4uY2FtUm90LCB0aGlzLmdvYWwuY2FtUm90LCBrKTtcblx0XHRcdFx0XHR0aGlzLmdvYWwuY2FtVXAgJiYgY2FtZXJhLnVwLnNldCgwLCAxLCAwKS5hcHBseVF1YXRlcm5pb24oY2FtZXJhLnF1YXRlcm5pb24pO1xuXHRcdFx0XHRcdHRoaXMuZ29hbC5jYW1ab29tICYmXG5cdFx0XHRcdFx0XHRpcy5vcnRob2dyYXBoaWNDYW1lcmEoY2FtZXJhKSAmJlxuXHRcdFx0XHRcdFx0KGNhbWVyYS56b29tID0gKDEgLSBrKSAqIHRoaXMub3JpZ2luLmNhbVpvb20gKyBrICogdGhpcy5nb2FsLmNhbVpvb20pO1xuXG5cdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZU1hdHJpeFdvcmxkKCk7XG5cdFx0XHRcdFx0Y2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldFNpemUoKSB7XG5cdFx0Y29uc3QgW2NhbWVyYSwgeyBtYXJnaW4gfV0gPSBbdW50cmFja2VkKHRoaXMuY2FtZXJhKSwgdW50cmFja2VkKHRoaXMub3B0aW9ucyldO1xuXG5cdFx0Y29uc3QgYm94U2l6ZSA9IHRoaXMuYm94LmdldFNpemUobmV3IFZlY3RvcjMoKSk7XG5cdFx0Y29uc3QgY2VudGVyID0gdGhpcy5ib3guZ2V0Q2VudGVyKG5ldyBWZWN0b3IzKCkpO1xuXHRcdGNvbnN0IG1heFNpemUgPSBNYXRoLm1heChib3hTaXplLngsIGJveFNpemUueSwgYm94U2l6ZS56KTtcblx0XHRjb25zdCBmaXRIZWlnaHREaXN0YW5jZSA9IGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpXG5cdFx0XHQ/IG1heFNpemUgKiA0XG5cdFx0XHQ6IG1heFNpemUgLyAoMiAqIE1hdGguYXRhbigoTWF0aC5QSSAqIGNhbWVyYS5mb3YpIC8gMzYwKSk7XG5cdFx0Y29uc3QgZml0V2lkdGhEaXN0YW5jZSA9IGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpID8gbWF4U2l6ZSAqIDQgOiBmaXRIZWlnaHREaXN0YW5jZSAvIGNhbWVyYS5hc3BlY3Q7XG5cdFx0Y29uc3QgZGlzdGFuY2UgPSBtYXJnaW4gKiBNYXRoLm1heChmaXRIZWlnaHREaXN0YW5jZSwgZml0V2lkdGhEaXN0YW5jZSk7XG5cblx0XHRyZXR1cm4geyBib3g6IHRoaXMuYm94LCBzaXplOiBib3hTaXplLCBjZW50ZXIsIGRpc3RhbmNlIH07XG5cdH1cblxuXHRyZWZyZXNoKG9iamVjdD86IE9iamVjdDNEIHwgQm94Mykge1xuXHRcdGNvbnN0IFtncm91cCwgY2FtZXJhXSA9IFt1bnRyYWNrZWQodGhpcy5ncm91cFJlZikubmF0aXZlRWxlbWVudCwgdW50cmFja2VkKHRoaXMuY2FtZXJhKV07XG5cblx0XHRpZiAoaXNCb3gzKG9iamVjdCkpIHRoaXMuYm94LmNvcHkob2JqZWN0KTtcblx0XHRlbHNlIHtcblx0XHRcdGNvbnN0IHRhcmdldCA9IG9iamVjdCB8fCBncm91cDtcblx0XHRcdGlmICghdGFyZ2V0KSByZXR1cm4gdGhpcztcblx0XHRcdHRhcmdldC51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCB0cnVlKTtcblx0XHRcdHRoaXMuYm94LnNldEZyb21PYmplY3QodGFyZ2V0KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuYm94LmlzRW1wdHkoKSkge1xuXHRcdFx0Y29uc3QgbWF4ID0gY2FtZXJhLnBvc2l0aW9uLmxlbmd0aCgpIHx8IDEwO1xuXHRcdFx0dGhpcy5ib3guc2V0RnJvbUNlbnRlckFuZFNpemUobmV3IFZlY3RvcjMoKSwgbmV3IFZlY3RvcjMobWF4LCBtYXgsIG1heCkpO1xuXHRcdH1cblxuXHRcdHRoaXMub3JpZ2luLmNhbVBvcy5jb3B5KGNhbWVyYS5wb3NpdGlvbik7XG5cdFx0dGhpcy5vcmlnaW4uY2FtUm90LmNvcHkoY2FtZXJhLnF1YXRlcm5pb24pO1xuXHRcdGlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpICYmICh0aGlzLm9yaWdpbi5jYW1ab29tID0gY2FtZXJhLnpvb20pO1xuXG5cdFx0dGhpcy5nb2FsLmNhbVBvcyA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmdvYWwuY2FtUm90ID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZ29hbC5jYW1ab29tID0gdW5kZWZpbmVkO1xuXHRcdHRoaXMuZ29hbC5jYW1VcCA9IHVuZGVmaW5lZDtcblx0XHR0aGlzLmdvYWwudGFyZ2V0ID0gdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRyZXNldCgpIHtcblx0XHRjb25zdCBbY2FtZXJhXSA9IFt1bnRyYWNrZWQodGhpcy5jYW1lcmEpXTtcblx0XHRjb25zdCB7IGNlbnRlciwgZGlzdGFuY2UgfSA9IHRoaXMuZ2V0U2l6ZSgpO1xuXG5cdFx0Y29uc3QgZGlyZWN0aW9uID0gY2FtZXJhLnBvc2l0aW9uLmNsb25lKCkuc3ViKGNlbnRlcikubm9ybWFsaXplKCk7XG5cdFx0dGhpcy5nb2FsLmNhbVBvcyA9IGNlbnRlci5jbG9uZSgpLmFkZFNjYWxlZFZlY3RvcihkaXJlY3Rpb24sIGRpc3RhbmNlKTtcblx0XHR0aGlzLmdvYWwudGFyZ2V0ID0gY2VudGVyLmNsb25lKCk7XG5cdFx0Y29uc3QgbUNhbVJvdCA9IG5ldyBNYXRyaXg0KCkubG9va0F0KHRoaXMuZ29hbC5jYW1Qb3MsIHRoaXMuZ29hbC50YXJnZXQsIGNhbWVyYS51cCk7XG5cdFx0dGhpcy5nb2FsLmNhbVJvdCA9IG5ldyBRdWF0ZXJuaW9uKCkuc2V0RnJvbVJvdGF0aW9uTWF0cml4KG1DYW1Sb3QpO1xuXG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLlNUQVJUO1xuXHRcdHRoaXMudCA9IDA7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdG1vdmVUbyhwb3NpdGlvbjogVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSkge1xuXHRcdHRoaXMuZ29hbC5jYW1Qb3MgPSBBcnJheS5pc0FycmF5KHBvc2l0aW9uKSA/IG5ldyBWZWN0b3IzKC4uLnBvc2l0aW9uKSA6IHBvc2l0aW9uLmNsb25lKCk7XG5cblx0XHR0aGlzLmFuaW1hdGlvblN0YXRlID0gQW5pbWF0aW9uU3RhdGUuU1RBUlQ7XG5cdFx0dGhpcy50ID0gMDtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bG9va0F0KHsgdGFyZ2V0LCB1cCB9OiB7IHRhcmdldDogVmVjdG9yMyB8IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTsgdXA/OiBWZWN0b3IzIHwgW251bWJlciwgbnVtYmVyLCBudW1iZXJdIH0pIHtcblx0XHRjb25zdCBbY2FtZXJhXSA9IFt1bnRyYWNrZWQodGhpcy5jYW1lcmEpXTtcblxuXHRcdHRoaXMuZ29hbC50YXJnZXQgPSBBcnJheS5pc0FycmF5KHRhcmdldCkgPyBuZXcgVmVjdG9yMyguLi50YXJnZXQpIDogdGFyZ2V0LmNsb25lKCk7XG5cdFx0aWYgKHVwKSB7XG5cdFx0XHR0aGlzLmdvYWwuY2FtVXAgPSBBcnJheS5pc0FycmF5KHVwKSA/IG5ldyBWZWN0b3IzKC4uLnVwKSA6IHVwLmNsb25lKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZ29hbC5jYW1VcCA9IGNhbWVyYS51cC5jbG9uZSgpO1xuXHRcdH1cblx0XHRjb25zdCBtQ2FtUm90ID0gbmV3IE1hdHJpeDQoKS5sb29rQXQodGhpcy5nb2FsLmNhbVBvcyB8fCBjYW1lcmEucG9zaXRpb24sIHRoaXMuZ29hbC50YXJnZXQsIHRoaXMuZ29hbC5jYW1VcCk7XG5cdFx0dGhpcy5nb2FsLmNhbVJvdCA9IG5ldyBRdWF0ZXJuaW9uKCkuc2V0RnJvbVJvdGF0aW9uTWF0cml4KG1DYW1Sb3QpO1xuXG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLlNUQVJUO1xuXHRcdHRoaXMudCA9IDA7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGZpdCgpIHtcblx0XHRjb25zdCBbY2FtZXJhLCBjb250cm9scywgeyBtYXJnaW4gfV0gPSBbdW50cmFja2VkKHRoaXMuY2FtZXJhKSwgdW50cmFja2VkKHRoaXMuY29udHJvbHMpLCB1bnRyYWNrZWQodGhpcy5vcHRpb25zKV07XG5cblx0XHRpZiAoIWlzLm9ydGhvZ3JhcGhpY0NhbWVyYShjYW1lcmEpKSB7XG5cdFx0XHQvLyBGb3Igbm9uLW9ydGhvZ3JhcGhpYyBjYW1lcmFzLCBmaXQgc2hvdWxkIGJlaGF2ZSBleGFjdGx5IGxpa2UgcmVzZXRcblx0XHRcdHJldHVybiB0aGlzLnJlc2V0KCk7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yIG9ydGhvZ3JhcGhpYyBjYW1lcmFzLCBmaXQgc2hvdWxkIG9ubHkgbW9kaWZ5IHRoZSB6b29tIHZhbHVlXG5cdFx0bGV0IG1heEhlaWdodCA9IDA7XG5cdFx0bGV0IG1heFdpZHRoID0gMDtcblx0XHRjb25zdCB2ZXJ0aWNlcyA9IFtcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1pbi54LCB0aGlzLmJveC5taW4ueSwgdGhpcy5ib3gubWluLnopLFxuXHRcdFx0bmV3IFZlY3RvcjModGhpcy5ib3gubWluLngsIHRoaXMuYm94Lm1heC55LCB0aGlzLmJveC5taW4ueiksXG5cdFx0XHRuZXcgVmVjdG9yMyh0aGlzLmJveC5taW4ueCwgdGhpcy5ib3gubWluLnksIHRoaXMuYm94Lm1heC56KSxcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1pbi54LCB0aGlzLmJveC5tYXgueSwgdGhpcy5ib3gubWF4LnopLFxuXHRcdFx0bmV3IFZlY3RvcjModGhpcy5ib3gubWF4LngsIHRoaXMuYm94Lm1heC55LCB0aGlzLmJveC5tYXgueiksXG5cdFx0XHRuZXcgVmVjdG9yMyh0aGlzLmJveC5tYXgueCwgdGhpcy5ib3gubWF4LnksIHRoaXMuYm94Lm1pbi56KSxcblx0XHRcdG5ldyBWZWN0b3IzKHRoaXMuYm94Lm1heC54LCB0aGlzLmJveC5taW4ueSwgdGhpcy5ib3gubWF4LnopLFxuXHRcdFx0bmV3IFZlY3RvcjModGhpcy5ib3gubWF4LngsIHRoaXMuYm94Lm1pbi55LCB0aGlzLmJveC5taW4ueiksXG5cdFx0XTtcblxuXHRcdC8vIFRyYW5zZm9ybSB0aGUgY2VudGVyIGFuZCBlYWNoIGNvcm5lciB0byBjYW1lcmEgc3BhY2Vcblx0XHRjb25zdCBwb3MgPSB0aGlzLmdvYWwuY2FtUG9zIHx8IGNhbWVyYS5wb3NpdGlvbjtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLmdvYWwudGFyZ2V0IHx8IGNvbnRyb2xzLnRhcmdldDtcblx0XHRjb25zdCB1cCA9IHRoaXMuZ29hbC5jYW1VcCB8fCBjYW1lcmEudXA7XG5cdFx0Y29uc3QgbUNhbVdJbnYgPSB0YXJnZXRcblx0XHRcdD8gbmV3IE1hdHJpeDQoKS5sb29rQXQocG9zLCB0YXJnZXQsIHVwKS5zZXRQb3NpdGlvbihwb3MpLmludmVydCgpXG5cdFx0XHQ6IGNhbWVyYS5tYXRyaXhXb3JsZEludmVyc2U7XG5cdFx0Zm9yIChjb25zdCB2IG9mIHZlcnRpY2VzKSB7XG5cdFx0XHR2LmFwcGx5TWF0cml4NChtQ2FtV0ludik7XG5cdFx0XHRtYXhIZWlnaHQgPSBNYXRoLm1heChtYXhIZWlnaHQsIE1hdGguYWJzKHYueSkpO1xuXHRcdFx0bWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgTWF0aC5hYnModi54KSk7XG5cdFx0fVxuXHRcdG1heEhlaWdodCAqPSAyO1xuXHRcdG1heFdpZHRoICo9IDI7XG5cdFx0Y29uc3Qgem9vbUZvckhlaWdodCA9IChjYW1lcmEudG9wIC0gY2FtZXJhLmJvdHRvbSkgLyBtYXhIZWlnaHQ7XG5cdFx0Y29uc3Qgem9vbUZvcldpZHRoID0gKGNhbWVyYS5yaWdodCAtIGNhbWVyYS5sZWZ0KSAvIG1heFdpZHRoO1xuXG5cdFx0dGhpcy5nb2FsLmNhbVpvb20gPSBNYXRoLm1pbih6b29tRm9ySGVpZ2h0LCB6b29tRm9yV2lkdGgpIC8gbWFyZ2luO1xuXG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IEFuaW1hdGlvblN0YXRlLlNUQVJUO1xuXHRcdHRoaXMudCA9IDA7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdGNsaXAoKSB7XG5cdFx0Y29uc3QgW2NhbWVyYSwgY29udHJvbHMsIGludmFsaWRhdGVdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMuY2FtZXJhKSxcblx0XHRcdHVudHJhY2tlZCh0aGlzLmNvbnRyb2xzKSxcblx0XHRcdHVudHJhY2tlZCh0aGlzLmludmFsaWRhdGUpLFxuXHRcdF07XG5cdFx0Y29uc3QgeyBkaXN0YW5jZSB9ID0gdGhpcy5nZXRTaXplKCk7XG5cblx0XHRjYW1lcmEubmVhciA9IGRpc3RhbmNlIC8gMTAwO1xuXHRcdGNhbWVyYS5mYXIgPSBkaXN0YW5jZSAqIDEwMDtcblx0XHRjYW1lcmEudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1xuXG5cdFx0aWYgKGNvbnRyb2xzKSB7XG5cdFx0XHRjb250cm9scy5tYXhEaXN0YW5jZSA9IGRpc3RhbmNlICogMTA7XG5cdFx0XHRjb250cm9scy51cGRhdGUoKTtcblx0XHR9XG5cblx0XHRpbnZhbGlkYXRlKCk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxufVxuIl19
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Directive,
|
|
1
|
+
import { Directive, effect, input, untracked } from '@angular/core';
|
|
2
2
|
import { injectBeforeRender, injectStore } from 'angular-three';
|
|
3
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
4
3
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
5
4
|
import { SimplexNoise } from 'three-stdlib';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
@@ -23,7 +22,6 @@ export class NgtsCameraShake {
|
|
|
23
22
|
}
|
|
24
23
|
constructor() {
|
|
25
24
|
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
26
|
-
this.autoEffect = injectAutoEffect();
|
|
27
25
|
this.store = injectStore();
|
|
28
26
|
this.camera = this.store.select('camera');
|
|
29
27
|
this.defaultControls = this.store.select('controls');
|
|
@@ -32,17 +30,15 @@ export class NgtsCameraShake {
|
|
|
32
30
|
this.yawNoise = new SimplexNoise();
|
|
33
31
|
this.pitchNoise = new SimplexNoise();
|
|
34
32
|
this.rollNoise = new SimplexNoise();
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return () => void defaultControls.removeEventListener('change', callback);
|
|
45
|
-
});
|
|
33
|
+
effect((onCleanup) => {
|
|
34
|
+
const defaultControls = this.defaultControls();
|
|
35
|
+
if (!defaultControls)
|
|
36
|
+
return;
|
|
37
|
+
const camera = this.camera();
|
|
38
|
+
const callback = () => void (this.initialRotation = camera.rotation.clone());
|
|
39
|
+
defaultControls.addEventListener('change', callback);
|
|
40
|
+
callback();
|
|
41
|
+
onCleanup(() => void defaultControls.removeEventListener('change', callback));
|
|
46
42
|
});
|
|
47
43
|
injectBeforeRender(({ delta, clock }) => {
|
|
48
44
|
const [{ maxYaw, yawFrequency, maxPitch, pitchFrequency, maxRoll, rollFrequency, decay, decayRate }, camera] = [
|
|
@@ -59,11 +55,11 @@ export class NgtsCameraShake {
|
|
|
59
55
|
}
|
|
60
56
|
});
|
|
61
57
|
}
|
|
62
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
63
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCameraShake, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
59
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.4", type: NgtsCameraShake, isStandalone: true, selector: "ngts-camera-shake", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
64
60
|
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCameraShake, decorators: [{
|
|
66
62
|
type: Directive,
|
|
67
63
|
args: [{ selector: 'ngts-camera-shake', standalone: true }]
|
|
68
64
|
}], ctorParameters: () => [] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLXNoYWtlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL3N0YWdpbmcvc3JjL2xpYi9jYW1lcmEtc2hha2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQXFCNUMsTUFBTSxjQUFjLEdBQTJCO0lBQzlDLFNBQVMsRUFBRSxDQUFDO0lBQ1osU0FBUyxFQUFFLElBQUk7SUFDZixNQUFNLEVBQUUsR0FBRztJQUNYLFFBQVEsRUFBRSxHQUFHO0lBQ2IsT0FBTyxFQUFFLEdBQUc7SUFDWixZQUFZLEVBQUUsR0FBRztJQUNqQixjQUFjLEVBQUUsR0FBRztJQUNuQixhQUFhLEVBQUUsR0FBRztDQUNsQixDQUFDO0FBR0YsTUFBTSxPQUFPLGVBQWU7SUFVM0IsSUFBSSxTQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxHQUFXO1FBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBTUQ7UUFyQkEsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRSxVQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFD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QWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBTaWduYWwsIGVmZmVjdCwgaW5wdXQsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IFNpbXBsZXhOb2lzZSB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbmludGVyZmFjZSBDb250cm9sc1Byb3RvIHtcblx0dXBkYXRlKCk6IHZvaWQ7XG5cdHRhcmdldDogVmVjdG9yMztcblx0YWRkRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcblx0cmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ2FtZXJhU2hha2VPcHRpb25zIHtcblx0aW50ZW5zaXR5OiBudW1iZXI7XG5cdGRlY2F5PzogYm9vbGVhbjtcblx0ZGVjYXlSYXRlOiBudW1iZXI7XG5cdG1heFlhdzogbnVtYmVyO1xuXHRtYXhQaXRjaDogbnVtYmVyO1xuXHRtYXhSb2xsOiBudW1iZXI7XG5cdHlhd0ZyZXF1ZW5jeTogbnVtYmVyO1xuXHRwaXRjaEZyZXF1ZW5jeTogbnVtYmVyO1xuXHRyb2xsRnJlcXVlbmN5OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzQ2FtZXJhU2hha2VPcHRpb25zID0ge1xuXHRpbnRlbnNpdHk6IDEsXG5cdGRlY2F5UmF0ZTogMC42NSxcblx0bWF4WWF3OiAwLjEsXG5cdG1heFBpdGNoOiAwLjEsXG5cdG1heFJvbGw6IDAuMSxcblx0eWF3RnJlcXVlbmN5OiAwLjEsXG5cdHBpdGNoRnJlcXVlbmN5OiAwLjEsXG5cdHJvbGxGcmVxdWVuY3k6IDAuMSxcbn07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtY2FtZXJhLXNoYWtlJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIE5ndHNDYW1lcmFTaGFrZSB7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBjYW1lcmEgPSB0aGlzLnN0b3JlLnNlbGVjdCgnY2FtZXJhJyk7XG5cdHByaXZhdGUgZGVmYXVsdENvbnRyb2xzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2NvbnRyb2xzJykgYXMgdW5rbm93biBhcyBTaWduYWw8Q29udHJvbHNQcm90bz47XG5cblx0cHJpdmF0ZSBpbml0aWFsUm90YXRpb24gPSB1bnRyYWNrZWQodGhpcy5jYW1lcmEpLnJvdGF0aW9uLmNsb25lKCk7XG5cdHByaXZhdGUgaW50ZW5zaXR5T3B0aW9uID0gdW50cmFja2VkKHRoaXMub3B0aW9ucykuaW50ZW5zaXR5O1xuXG5cdGdldCBpbnRlbnNpdHkoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaW50ZW5zaXR5T3B0aW9uO1xuXHR9XG5cblx0c2V0IGludGVuc2l0eSh2YWw6IG51bWJlcikge1xuXHRcdHRoaXMuaW50ZW5zaXR5T3B0aW9uID0gTWF0aC5taW4oMSwgTWF0aC5tYXgoMCwgdmFsKSk7XG5cdH1cblxuXHRwcml2YXRlIHlhd05vaXNlID0gbmV3IFNpbXBsZXhOb2lzZSgpO1xuXHRwcml2YXRlIHBpdGNoTm9pc2UgPSBuZXcgU2ltcGxleE5vaXNlKCk7XG5cdHByaXZhdGUgcm9sbE5vaXNlID0gbmV3IFNpbXBsZXhOb2lzZSgpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBkZWZhdWx0Q29udHJvbHMgPSB0aGlzLmRlZmF1bHRDb250cm9scygpO1xuXHRcdFx0aWYgKCFkZWZhdWx0Q29udHJvbHMpIHJldHVybjtcblx0XHRcdGNvbnN0IGNhbWVyYSA9IHRoaXMuY2FtZXJhKCk7XG5cblx0XHRcdGNvbnN0IGNhbGxiYWNrID0gKCkgPT4gdm9pZCAodGhpcy5pbml0aWFsUm90YXRpb24gPSBjYW1lcmEucm90YXRpb24uY2xvbmUoKSk7XG5cdFx0XHRkZWZhdWx0Q29udHJvbHMuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgY2FsbGJhY2spO1xuXHRcdFx0Y2FsbGJhY2soKTtcblxuXHRcdFx0b25DbGVhbnVwKCgpID0+IHZvaWQgZGVmYXVsdENvbnRyb2xzLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGNhbGxiYWNrKSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZGVsdGEsIGNsb2NrIH0pID0+IHtcblx0XHRcdGNvbnN0IFt7IG1heFlhdywgeWF3RnJlcXVlbmN5LCBtYXhQaXRjaCwgcGl0Y2hGcmVxdWVuY3ksIG1heFJvbGwsIHJvbGxGcmVxdWVuY3ksIGRlY2F5LCBkZWNheVJhdGUgfSwgY2FtZXJhXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuY2FtZXJhKCksXG5cdFx0XHRdO1xuXHRcdFx0Y29uc3Qgc2hha2UgPSBNYXRoLnBvdyh0aGlzLmludGVuc2l0eSwgMik7XG5cdFx0XHRjb25zdCB5YXcgPSBtYXhZYXcgKiBzaGFrZSAqIHRoaXMueWF3Tm9pc2Uubm9pc2UoY2xvY2suZWxhcHNlZFRpbWUgKiB5YXdGcmVxdWVuY3ksIDEpO1xuXHRcdFx0Y29uc3QgcGl0Y2ggPSBtYXhQaXRjaCAqIHNoYWtlICogdGhpcy5waXRjaE5vaXNlLm5vaXNlKGNsb2NrLmVsYXBzZWRUaW1lICogcGl0Y2hGcmVxdWVuY3ksIDEpO1xuXHRcdFx0Y29uc3Qgcm9sbCA9IG1heFJvbGwgKiBzaGFrZSAqIHRoaXMucm9sbE5vaXNlLm5vaXNlKGNsb2NrLmVsYXBzZWRUaW1lICogcm9sbEZyZXF1ZW5jeSwgMSk7XG5cblx0XHRcdGNhbWVyYS5yb3RhdGlvbi5zZXQodGhpcy5pbml0aWFsUm90YXRpb24ueCArIHBpdGNoLCB0aGlzLmluaXRpYWxSb3RhdGlvbi55ICsgeWF3LCB0aGlzLmluaXRpYWxSb3RhdGlvbi56ICsgcm9sbCk7XG5cblx0XHRcdGlmIChkZWNheSAmJiB0aGlzLmludGVuc2l0eSA+IDApIHtcblx0XHRcdFx0dGhpcy5pbnRlbnNpdHkgLT0gZGVjYXlSYXRlICogZGVsdGE7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, viewChild, } from '@angular/core';
|
|
2
2
|
import { extend, getLocalState, injectBeforeRender, omit, pick, resolveRef } from 'angular-three';
|
|
3
3
|
import { injectHelper, NgtsEdges } from 'angular-three-soba/abstractions';
|
|
4
4
|
import { injectFBO } from 'angular-three-soba/misc';
|
|
5
5
|
import { CausticsProjectionMaterial, createCausticsUpdate } from 'angular-three-soba/vanilla-exports';
|
|
6
|
-
import { injectAutoEffect } from 'ngxtension/auto-effect';
|
|
7
6
|
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
8
7
|
import { CameraHelper, CustomBlending, FloatType, Group, LinearFilter, LinearMipmapLinearFilter, LineBasicMaterial, Mesh, OneFactor, OrthographicCamera, PlaneGeometry, Scene, SrcAlphaFactor, UnsignedByteType, Vector3, } from 'three';
|
|
9
8
|
import * as i0 from "@angular/core";
|
|
@@ -76,7 +75,25 @@ export class NgtsCaustics {
|
|
|
76
75
|
this.causticsTargetB = injectFBO(this.causticsTargetParams);
|
|
77
76
|
this.cameraHelper = injectHelper(() => (this.debug() ? this.cameraRef().nativeElement : null), () => CameraHelper);
|
|
78
77
|
extend({ CausticsProjectionMaterial, Group, Scene, Mesh, PlaneGeometry, LineBasicMaterial, OrthographicCamera });
|
|
79
|
-
|
|
78
|
+
effect(() => {
|
|
79
|
+
// track all changes
|
|
80
|
+
const [group, scene, plane] = [
|
|
81
|
+
this.groupRef().nativeElement,
|
|
82
|
+
this.sceneRef().nativeElement,
|
|
83
|
+
this.planeRef().nativeElement,
|
|
84
|
+
this.options(),
|
|
85
|
+
];
|
|
86
|
+
const groupLocalState = getLocalState(group);
|
|
87
|
+
const sceneLocalState = getLocalState(scene);
|
|
88
|
+
const planeLocalState = getLocalState(plane);
|
|
89
|
+
if (!groupLocalState || !sceneLocalState || !planeLocalState)
|
|
90
|
+
return;
|
|
91
|
+
groupLocalState.objects();
|
|
92
|
+
sceneLocalState.objects();
|
|
93
|
+
planeLocalState.objects();
|
|
94
|
+
planeLocalState.nonObjects();
|
|
95
|
+
group.updateWorldMatrix(false, true);
|
|
96
|
+
});
|
|
80
97
|
const update = createCausticsUpdate(() => {
|
|
81
98
|
const { lightSource, ...rest } = this.options();
|
|
82
99
|
return {
|
|
@@ -95,30 +112,9 @@ export class NgtsCaustics {
|
|
|
95
112
|
};
|
|
96
113
|
});
|
|
97
114
|
injectBeforeRender(({ gl }) => update(gl));
|
|
98
|
-
afterNextRender(() => {
|
|
99
|
-
autoEffect(() => {
|
|
100
|
-
// track all changes
|
|
101
|
-
this.options();
|
|
102
|
-
const [group, scene, plane] = [
|
|
103
|
-
this.groupRef().nativeElement,
|
|
104
|
-
this.sceneRef().nativeElement,
|
|
105
|
-
this.planeRef().nativeElement,
|
|
106
|
-
];
|
|
107
|
-
const groupLocalState = getLocalState(group);
|
|
108
|
-
const sceneLocalState = getLocalState(scene);
|
|
109
|
-
const planeLocalState = getLocalState(plane);
|
|
110
|
-
if (!groupLocalState || !sceneLocalState || !planeLocalState)
|
|
111
|
-
return;
|
|
112
|
-
groupLocalState.objects();
|
|
113
|
-
sceneLocalState.objects();
|
|
114
|
-
planeLocalState.objects();
|
|
115
|
-
planeLocalState.nonObjects();
|
|
116
|
-
group.updateWorldMatrix(false, true);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
115
|
}
|
|
120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
116
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCaustics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
117
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtsCaustics, isStandalone: true, selector: "ngts-caustics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "groupRef", first: true, predicate: ["group"], descendants: true, isSignal: true }, { propertyName: "sceneRef", first: true, predicate: ["scene"], descendants: true, isSignal: true }, { propertyName: "cameraRef", first: true, predicate: ["camera"], descendants: true, isSignal: true }, { propertyName: "planeRef", first: true, predicate: ["plane"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
122
118
|
<ngt-group #group [parameters]="parameters()">
|
|
123
119
|
<ngt-scene #scene>
|
|
124
120
|
<ngt-orthographic-camera #camera [up]="[0, 1, 0]" />
|
|
@@ -147,7 +143,7 @@ export class NgtsCaustics {
|
|
|
147
143
|
</ngt-group>
|
|
148
144
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtsEdges, selector: "ngts-edges", inputs: ["options"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
149
145
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtsCaustics, decorators: [{
|
|
151
147
|
type: Component,
|
|
152
148
|
args: [{
|
|
153
149
|
selector: 'ngts-caustics',
|
|
@@ -185,4 +181,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
185
181
|
imports: [NgtsEdges],
|
|
186
182
|
}]
|
|
187
183
|
}], ctorParameters: () => [] });
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL2NhdXN0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBRXRCLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQVksSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFDTixZQUFZLEVBRVosY0FBYyxFQUNkLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsSUFBSSxFQUVKLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLEtBQUssRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FDUCxNQUFNLE9BQU8sQ0FBQzs7QUFFZixNQUFNLGNBQWMsR0FBRztJQUN0QixLQUFLLEVBQUUsSUFBSTtJQUNYLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxnQkFBZ0I7Q0FDdEIsQ0FBQztBQUVGLE1B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Ozs7Ozs7OztFQTJCVCw0REFHUyxTQUFTOzsyRkFFUCxZQUFZO2tCQW5DeEIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMkJUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdEVsZW1lbnRSZWYsXG5cdGlucHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEdyb3VwLCBvbWl0LCBwaWNrLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3RIZWxwZXIsIE5ndHNFZGdlcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9hYnN0cmFjdGlvbnMnO1xuaW1wb3J0IHsgaW5qZWN0RkJPIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwsIGNyZWF0ZUNhdXN0aWNzVXBkYXRlIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3ZhbmlsbGEtZXhwb3J0cyc7XG5pbXBvcnQgeyBpbmplY3RBdXRvRWZmZWN0IH0gZnJvbSAnbmd4dGVuc2lvbi9hdXRvLWVmZmVjdCc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQge1xuXHRDYW1lcmFIZWxwZXIsXG5cdENvbG9yUmVwcmVzZW50YXRpb24sXG5cdEN1c3RvbUJsZW5kaW5nLFxuXHRGbG9hdFR5cGUsXG5cdEdyb3VwLFxuXHRMaW5lYXJGaWx0ZXIsXG5cdExpbmVhck1pcG1hcExpbmVhckZpbHRlcixcblx0TGluZUJhc2ljTWF0ZXJpYWwsXG5cdE1lc2gsXG5cdE9iamVjdDNELFxuXHRPbmVGYWN0b3IsXG5cdE9ydGhvZ3JhcGhpY0NhbWVyYSxcblx0UGxhbmVHZW9tZXRyeSxcblx0U2NlbmUsXG5cdFNyY0FscGhhRmFjdG9yLFxuXHRVbnNpZ25lZEJ5dGVUeXBlLFxuXHRWZWN0b3IzLFxufSBmcm9tICd0aHJlZSc7XG5cbmNvbnN0IE5PUk1BTF9PUFRJT05TID0ge1xuXHRkZXB0aDogdHJ1ZSxcblx0bWluRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHR0eXBlOiBVbnNpZ25lZEJ5dGVUeXBlLFxufTtcblxuY29uc3QgQ0FVU1RJQ19PUFRJT05TID0ge1xuXHRtaW5GaWx0ZXI6IExpbmVhck1pcG1hcExpbmVhckZpbHRlcixcblx0bWFnRmlsdGVyOiBMaW5lYXJGaWx0ZXIsXG5cdHR5cGU6IEZsb2F0VHlwZSxcblx0Z2VuZXJhdGVNaXBtYXBzOiB0cnVlLFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzQ2F1c3RpY3NPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RHcm91cD4ge1xuXHQvKiogSG93IG1hbnkgZnJhbWVzIGl0IHdpbGwgcmVuZGVyLCBzZXQgaXQgdG8gSW5maW5pdHkgZm9yIHJ1bnRpbWUsIGRlZmF1bHQ6IDEgKi9cblx0ZnJhbWVzOiBudW1iZXI7XG5cdC8qKiBFbmFibGVzIHZpc3VhbCBjdWVzIHRvIGhlbHAgeW91IHN0YWdlIHlvdXIgc2NlbmUsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGRlYnVnOiBib29sZWFuO1xuXHQvKiogV2lsbCBkaXNwbGF5IGNhdXN0aWNzIG9ubHkgYW5kIHNraXAgdGhlIG1vZGVscywgZGVmYXVsdDogZmFsc2UgKi9cblx0Y2F1c3RpY3NPbmx5OiBib29sZWFuO1xuXHQvKiogV2lsbCBpbmNsdWRlIGJhY2sgZmFjZXMgYW5kIGVuYWJsZSB0aGUgYmFja3NpZGVJT1IgcHJvcCwgZGVmYXVsdDogZmFsc2UgKi9cblx0YmFja3NpZGU6IGJvb2xlYW47XG5cdC8qKiBUaGUgSU9SIHJlZnJhY3Rpb24gaW5kZXgsIGRlZmF1bHQ6IDEuMSAqL1xuXHRpb3I6IG51bWJlcjtcblx0LyoqIFRoZSBJT1IgcmVmcmFjdGlvbiBpbmRleCBmb3IgYmFjayBmYWNlcyAob25seSBhdmFpbGFibGUgd2hlbiBiYWNrc2lkZSBpcyBlbmFibGVkKSwgZGVmYXVsdDogMS4xICovXG5cdGJhY2tzaWRlSU9SOiBudW1iZXI7XG5cdC8qKiBUaGUgdGV4ZWwgc2l6ZSwgZGVmYXVsdDogMC4zMTI1ICovXG5cdHdvcmxkUmFkaXVzOiBudW1iZXI7XG5cdC8qKiBJbnRlbnNpdHkgb2YgdGhlIHByamVjdGVkIGNhdXN0aWNzLCBkZWZhdWx0OiAwLjA1ICovXG5cdGludGVuc2l0eTogbnVtYmVyO1xuXHQvKiogQ2F1c3RpY3MgY29sb3IsIGRlZmF1bHQ6IHdoaXRlICovXG5cdGNvbG9yOiBDb2xvclJlcHJlc2VudGF0aW9uO1xuXHQvKiogQnVmZmVyIHJlc29sdXRpb24sIGRlZmF1bHQ6IDIwNDggKi9cblx0cmVzb2x1dGlvbjogbnVtYmVyO1xuXHQvKiogQ2FtZXJhIHBvc2l0aW9uLCBpdCB3aWxsIHBvaW50IHRvd2FyZHMgdGhlIGNvbnRlbnRzIGJvdW5kcyBjZW50ZXIsIGRlZmF1bHQ6IFs1LCA1LCA1XSAqL1xuXHRsaWdodFNvdXJjZTogW3g6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXJdIHwgRWxlbWVudFJlZjxPYmplY3QzRD4gfCBPYmplY3QzRDtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNDYXVzdGljc09wdGlvbnMgPSB7XG5cdGZyYW1lczogMSxcblx0ZGVidWc6IGZhbHNlLFxuXHRjYXVzdGljc09ubHk6IGZhbHNlLFxuXHRiYWNrc2lkZTogZmFsc2UsXG5cdGlvcjogMS4xLFxuXHRiYWNrc2lkZUlPUjogMS4xLFxuXHR3b3JsZFJhZGl1czogMC4zMTI1LFxuXHRpbnRlbnNpdHk6IDAuMDUsXG5cdGNvbG9yOiAnd2hpdGUnLFxuXHRyZXNvbHV0aW9uOiAyMDI0LFxuXHRsaWdodFNvdXJjZTogWzUsIDUsIDVdLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jYXVzdGljcycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjZ3JvdXAgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmd0LXNjZW5lICNzY2VuZT5cblx0XHRcdFx0PG5ndC1vcnRob2dyYXBoaWMtY2FtZXJhICNjYW1lcmEgW3VwXT1cIlswLCAxLCAwXVwiIC8+XG5cdFx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0XHQ8L25ndC1zY2VuZT5cblxuXHRcdFx0PG5ndC1tZXNoICNwbGFuZSBbcmVuZGVyT3JkZXJdPVwiMlwiIFtyb3RhdGlvbl09XCJbLU1hdGguUEkgLyAyLCAwLCAwXVwiPlxuXHRcdFx0XHQ8bmd0LXBsYW5lLWdlb21ldHJ5IC8+XG5cdFx0XHRcdDxuZ3QtY2F1c3RpY3MtcHJvamVjdGlvbi1tYXRlcmlhbFxuXHRcdFx0XHRcdFt0cmFuc3BhcmVudF09XCJ0cnVlXCJcblx0XHRcdFx0XHRbY29sb3JdPVwiY29sb3IoKVwiXG5cdFx0XHRcdFx0W2NhdXN0aWNzVGV4dHVyZV09XCJjYXVzdGljc1RhcmdldCgpLnRleHR1cmVcIlxuXHRcdFx0XHRcdFtjYXVzdGljc1RleHR1cmVCXT1cImNhdXN0aWNzVGFyZ2V0QigpLnRleHR1cmVcIlxuXHRcdFx0XHRcdFtibGVuZGluZ109XCJDdXN0b21CbGVuZGluZ1wiXG5cdFx0XHRcdFx0W2JsZW5kU3JjXT1cIk9uZUZhY3RvclwiXG5cdFx0XHRcdFx0W2JsZW5kRHN0XT1cIlNyY0FscGhhRmFjdG9yXCJcblx0XHRcdFx0XHRbZGVwdGhXcml0ZV09XCJmYWxzZVwiXG5cdFx0XHRcdC8+XG5cblx0XHRcdFx0QGlmIChkZWJ1ZygpKSB7XG5cdFx0XHRcdFx0PG5ndHMtZWRnZXM+XG5cdFx0XHRcdFx0XHQ8bmd0LWxpbmUtYmFzaWMtbWF0ZXJpYWwgY29sb3I9XCIjZmZmZjAwXCIgW3RvbmVNYXBwZWRdPVwiZmFsc2VcIiAvPlxuXHRcdFx0XHRcdDwvbmd0cy1lZGdlcz5cblx0XHRcdFx0fVxuXHRcdFx0PC9uZ3QtbWVzaD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNFZGdlc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDYXVzdGljcyB7XG5cdHByb3RlY3RlZCByZWFkb25seSBNYXRoID0gTWF0aDtcblx0cHJvdGVjdGVkIHJlYWRvbmx5IEN1c3RvbUJsZW5kaW5nID0gQ3VzdG9tQmxlbmRpbmc7XG5cdHByb3RlY3RlZCByZWFkb25seSBPbmVGYWN0b3IgPSBPbmVGYWN0b3I7XG5cdHByb3RlY3RlZCByZWFkb25seSBTcmNBbHBoYUZhY3RvciA9IFNyY0FscGhhRmFjdG9yO1xuXG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbXG5cdFx0J2ZyYW1lcycsXG5cdFx0J2RlYnVnJyxcblx0XHQnY2F1c3RpY3NPbmx5Jyxcblx0XHQnYmFja3NpZGUnLFxuXHRcdCdpb3InLFxuXHRcdCdiYWNrc2lkZUlPUicsXG5cdFx0J3dvcmxkUmFkaXVzJyxcblx0XHQnaW50ZW5zaXR5Jyxcblx0XHQnY29sb3InLFxuXHRcdCdyZXNvbHV0aW9uJyxcblx0XHQnbGlnaHRTb3VyY2UnLFxuXHRdKTtcblxuXHRkZWJ1ZyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVidWcnKTtcblx0Y29sb3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbG9yJyk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXG5cdGdyb3VwUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ3JvdXAnKTtcblx0cHJpdmF0ZSBzY2VuZVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPFNjZW5lPj4oJ3NjZW5lJyk7XG5cdHByaXZhdGUgY2FtZXJhUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8T3J0aG9ncmFwaGljQ2FtZXJhPj4oJ2NhbWVyYScpO1xuXHRwcml2YXRlIHBsYW5lUmVmID1cblx0XHR2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxNZXNoPFBsYW5lR2VvbWV0cnksIEluc3RhbmNlVHlwZTx0eXBlb2YgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWw+Pj4+KCdwbGFuZScpO1xuXG5cdHByaXZhdGUgbm9ybWFsVGFyZ2V0UGFyYW1zID0gY29tcHV0ZWQoKCkgPT4gKHtcblx0XHR3aWR0aDogdGhpcy5yZXNvbHV0aW9uKCksXG5cdFx0aGVpZ2h0OiB0aGlzLnJlc29sdXRpb24oKSxcblx0XHRzZXR0aW5nczogTk9STUFMX09QVElPTlMsXG5cdH0pKTtcblxuXHQvLyBCdWZmZXJzIGZvciBmcm9udCBhbmQgYmFjayBmYWNlc1xuXHRwcml2YXRlIG5vcm1hbFRhcmdldCA9IGluamVjdEZCTyh0aGlzLm5vcm1hbFRhcmdldFBhcmFtcyk7XG5cdHByaXZhdGUgbm9ybWFsVGFyZ2V0QiA9IGluamVjdEZCTyh0aGlzLm5vcm1hbFRhcmdldFBhcmFtcyk7XG5cblx0cHJpdmF0ZSBjYXVzdGljc1RhcmdldFBhcmFtcyA9IGNvbXB1dGVkKCgpID0+ICh7XG5cdFx0d2lkdGg6IHRoaXMucmVzb2x1dGlvbigpLFxuXHRcdGhlaWdodDogdGhpcy5yZXNvbHV0aW9uKCksXG5cdFx0c2V0dGluZ3M6IENBVVNUSUNfT1BUSU9OUyxcblx0fSkpO1xuXHRjYXVzdGljc1RhcmdldCA9IGluamVjdEZCTyh0aGlzLmNhdXN0aWNzVGFyZ2V0UGFyYW1zKTtcblx0Y2F1c3RpY3NUYXJnZXRCID0gaW5qZWN0RkJPKHRoaXMuY2F1c3RpY3NUYXJnZXRQYXJhbXMpO1xuXG5cdHByaXZhdGUgY2FtZXJhSGVscGVyID0gaW5qZWN0SGVscGVyKFxuXHRcdCgpID0+ICh0aGlzLmRlYnVnKCkgPyB0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQgOiBudWxsKSxcblx0XHQoKSA9PiBDYW1lcmFIZWxwZXIsXG5cdCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgQ2F1c3RpY3NQcm9qZWN0aW9uTWF0ZXJpYWwsIEdyb3VwLCBTY2VuZSwgTWVzaCwgUGxhbmVHZW9tZXRyeSwgTGluZUJhc2ljTWF0ZXJpYWwsIE9ydGhvZ3JhcGhpY0NhbWVyYSB9KTtcblxuXHRcdGNvbnN0IGF1dG9FZmZlY3QgPSBpbmplY3RBdXRvRWZmZWN0KCk7XG5cblx0XHRjb25zdCB1cGRhdGUgPSBjcmVhdGVDYXVzdGljc1VwZGF0ZSgoKSA9PiB7XG5cdFx0XHRjb25zdCB7IGxpZ2h0U291cmNlLCAuLi5yZXN0IH0gPSB0aGlzLm9wdGlvbnMoKTtcblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cGFyYW1zOiBPYmplY3QuYXNzaWduKHJlc3QsIHtcblx0XHRcdFx0XHRsaWdodFNvdXJjZTogQXJyYXkuaXNBcnJheShsaWdodFNvdXJjZSkgPyBuZXcgVmVjdG9yMyguLi5saWdodFNvdXJjZSkgOiByZXNvbHZlUmVmKGxpZ2h0U291cmNlKSxcblx0XHRcdFx0fSksXG5cdFx0XHRcdG5vcm1hbFRhcmdldDogdGhpcy5ub3JtYWxUYXJnZXQoKSxcblx0XHRcdFx0bm9ybWFsVGFyZ2V0QjogdGhpcy5ub3JtYWxUYXJnZXRCKCksXG5cdFx0XHRcdGNhdXN0aWNzVGFyZ2V0OiB0aGlzLmNhdXN0aWNzVGFyZ2V0KCksXG5cdFx0XHRcdGNhdXN0aWNzVGFyZ2V0QjogdGhpcy5jYXVzdGljc1RhcmdldEIoKSxcblx0XHRcdFx0Y2FtZXJhOiB0aGlzLmNhbWVyYVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHNjZW5lOiB0aGlzLnNjZW5lUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0Z3JvdXA6IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRwbGFuZTogdGhpcy5wbGFuZVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdGhlbHBlcjogdGhpcy5jYW1lcmFIZWxwZXIoKSxcblx0XHRcdH07XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKHsgZ2wgfSkgPT4gdXBkYXRlKGdsKSk7XG5cblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0YXV0b0VmZmVjdCgoKSA9PiB7XG5cdFx0XHRcdC8vIHRyYWNrIGFsbCBjaGFuZ2VzXG5cdFx0XHRcdHRoaXMub3B0aW9ucygpO1xuXHRcdFx0XHRjb25zdCBbZ3JvdXAsIHNjZW5lLCBwbGFuZV0gPSBbXG5cdFx0XHRcdFx0dGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0dGhpcy5zY2VuZVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdFx0dGhpcy5wbGFuZVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdF07XG5cdFx0XHRcdGNvbnN0IGdyb3VwTG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoZ3JvdXApO1xuXHRcdFx0XHRjb25zdCBzY2VuZUxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHNjZW5lKTtcblx0XHRcdFx0Y29uc3QgcGxhbmVMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShwbGFuZSk7XG5cblx0XHRcdFx0aWYgKCFncm91cExvY2FsU3RhdGUgfHwgIXNjZW5lTG9jYWxTdGF0ZSB8fCAhcGxhbmVMb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdFx0Z3JvdXBMb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdFx0c2NlbmVMb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdFx0cGxhbmVMb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdFx0cGxhbmVMb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblxuXHRcdFx0XHRncm91cC51cGRhdGVXb3JsZE1hdHJpeChmYWxzZSwgdHJ1ZSk7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvc3RhZ2luZy9zcmMvbGliL2NhdXN0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssRUFDTCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQVksSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFDTixZQUFZLEVBRVosY0FBYyxFQUNkLFNBQVMsRUFDVCxLQUFLLEVBQ0wsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsSUFBSSxFQUVKLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLEtBQUssRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FDUCxNQUFNLE9BQU8sQ0FBQzs7QUFFZixNQUFNLGNBQWMsR0FBRztJQUN0QixLQUFLLEVBQUUsSUFBSTtJQUNYLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLElBQUksRUFBRSxnQkFBZ0I7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHO0lBQ3ZCLFNBQVMsRUFBRSx3QkFBd0I7SUFDbkMsU0FB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VDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgZ2V0TG9jYWxTdGF0ZSwgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RHcm91cCwgb21pdCwgcGljaywgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0SGVscGVyLCBOZ3RzRWRnZXMgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvYWJzdHJhY3Rpb25zJztcbmltcG9ydCB7IGluamVjdEZCTyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsLCBjcmVhdGVDYXVzdGljc1VwZGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHtcblx0Q2FtZXJhSGVscGVyLFxuXHRDb2xvclJlcHJlc2VudGF0aW9uLFxuXHRDdXN0b21CbGVuZGluZyxcblx0RmxvYXRUeXBlLFxuXHRHcm91cCxcblx0TGluZWFyRmlsdGVyLFxuXHRMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXIsXG5cdExpbmVCYXNpY01hdGVyaWFsLFxuXHRNZXNoLFxuXHRPYmplY3QzRCxcblx0T25lRmFjdG9yLFxuXHRPcnRob2dyYXBoaWNDYW1lcmEsXG5cdFBsYW5lR2VvbWV0cnksXG5cdFNjZW5lLFxuXHRTcmNBbHBoYUZhY3Rvcixcblx0VW5zaWduZWRCeXRlVHlwZSxcblx0VmVjdG9yMyxcbn0gZnJvbSAndGhyZWUnO1xuXG5jb25zdCBOT1JNQUxfT1BUSU9OUyA9IHtcblx0ZGVwdGg6IHRydWUsXG5cdG1pbkZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHRtYWdGaWx0ZXI6IExpbmVhckZpbHRlcixcblx0dHlwZTogVW5zaWduZWRCeXRlVHlwZSxcbn07XG5cbmNvbnN0IENBVVNUSUNfT1BUSU9OUyA9IHtcblx0bWluRmlsdGVyOiBMaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXIsXG5cdG1hZ0ZpbHRlcjogTGluZWFyRmlsdGVyLFxuXHR0eXBlOiBGbG9hdFR5cGUsXG5cdGdlbmVyYXRlTWlwbWFwczogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c0NhdXN0aWNzT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0R3JvdXA+IHtcblx0LyoqIEhvdyBtYW55IGZyYW1lcyBpdCB3aWxsIHJlbmRlciwgc2V0IGl0IHRvIEluZmluaXR5IGZvciBydW50aW1lLCBkZWZhdWx0OiAxICovXG5cdGZyYW1lczogbnVtYmVyO1xuXHQvKiogRW5hYmxlcyB2aXN1YWwgY3VlcyB0byBoZWxwIHlvdSBzdGFnZSB5b3VyIHNjZW5lLCBkZWZhdWx0OiBmYWxzZSAqL1xuXHRkZWJ1ZzogYm9vbGVhbjtcblx0LyoqIFdpbGwgZGlzcGxheSBjYXVzdGljcyBvbmx5IGFuZCBza2lwIHRoZSBtb2RlbHMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGNhdXN0aWNzT25seTogYm9vbGVhbjtcblx0LyoqIFdpbGwgaW5jbHVkZSBiYWNrIGZhY2VzIGFuZCBlbmFibGUgdGhlIGJhY2tzaWRlSU9SIHByb3AsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGJhY2tzaWRlOiBib29sZWFuO1xuXHQvKiogVGhlIElPUiByZWZyYWN0aW9uIGluZGV4LCBkZWZhdWx0OiAxLjEgKi9cblx0aW9yOiBudW1iZXI7XG5cdC8qKiBUaGUgSU9SIHJlZnJhY3Rpb24gaW5kZXggZm9yIGJhY2sgZmFjZXMgKG9ubHkgYXZhaWxhYmxlIHdoZW4gYmFja3NpZGUgaXMgZW5hYmxlZCksIGRlZmF1bHQ6IDEuMSAqL1xuXHRiYWNrc2lkZUlPUjogbnVtYmVyO1xuXHQvKiogVGhlIHRleGVsIHNpemUsIGRlZmF1bHQ6IDAuMzEyNSAqL1xuXHR3b3JsZFJhZGl1czogbnVtYmVyO1xuXHQvKiogSW50ZW5zaXR5IG9mIHRoZSBwcmplY3RlZCBjYXVzdGljcywgZGVmYXVsdDogMC4wNSAqL1xuXHRpbnRlbnNpdHk6IG51bWJlcjtcblx0LyoqIENhdXN0aWNzIGNvbG9yLCBkZWZhdWx0OiB3aGl0ZSAqL1xuXHRjb2xvcjogQ29sb3JSZXByZXNlbnRhdGlvbjtcblx0LyoqIEJ1ZmZlciByZXNvbHV0aW9uLCBkZWZhdWx0OiAyMDQ4ICovXG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0LyoqIENhbWVyYSBwb3NpdGlvbiwgaXQgd2lsbCBwb2ludCB0b3dhcmRzIHRoZSBjb250ZW50cyBib3VuZHMgY2VudGVyLCBkZWZhdWx0OiBbNSwgNSwgNV0gKi9cblx0bGlnaHRTb3VyY2U6IFt4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyXSB8IEVsZW1lbnRSZWY8T2JqZWN0M0Q+IHwgT2JqZWN0M0Q7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzQ2F1c3RpY3NPcHRpb25zID0ge1xuXHRmcmFtZXM6IDEsXG5cdGRlYnVnOiBmYWxzZSxcblx0Y2F1c3RpY3NPbmx5OiBmYWxzZSxcblx0YmFja3NpZGU6IGZhbHNlLFxuXHRpb3I6IDEuMSxcblx0YmFja3NpZGVJT1I6IDEuMSxcblx0d29ybGRSYWRpdXM6IDAuMzEyNSxcblx0aW50ZW5zaXR5OiAwLjA1LFxuXHRjb2xvcjogJ3doaXRlJyxcblx0cmVzb2x1dGlvbjogMjAyNCxcblx0bGlnaHRTb3VyY2U6IFs1LCA1LCA1XSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtY2F1c3RpY3MnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtZ3JvdXAgI2dyb3VwIFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiPlxuXHRcdFx0PG5ndC1zY2VuZSAjc2NlbmU+XG5cdFx0XHRcdDxuZ3Qtb3J0aG9ncmFwaGljLWNhbWVyYSAjY2FtZXJhIFt1cF09XCJbMCwgMSwgMF1cIiAvPlxuXHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0PC9uZ3Qtc2NlbmU+XG5cblx0XHRcdDxuZ3QtbWVzaCAjcGxhbmUgW3JlbmRlck9yZGVyXT1cIjJcIiBbcm90YXRpb25dPVwiWy1NYXRoLlBJIC8gMiwgMCwgMF1cIj5cblx0XHRcdFx0PG5ndC1wbGFuZS1nZW9tZXRyeSAvPlxuXHRcdFx0XHQ8bmd0LWNhdXN0aWNzLXByb2plY3Rpb24tbWF0ZXJpYWxcblx0XHRcdFx0XHRbdHJhbnNwYXJlbnRdPVwidHJ1ZVwiXG5cdFx0XHRcdFx0W2NvbG9yXT1cImNvbG9yKClcIlxuXHRcdFx0XHRcdFtjYXVzdGljc1RleHR1cmVdPVwiY2F1c3RpY3NUYXJnZXQoKS50ZXh0dXJlXCJcblx0XHRcdFx0XHRbY2F1c3RpY3NUZXh0dXJlQl09XCJjYXVzdGljc1RhcmdldEIoKS50ZXh0dXJlXCJcblx0XHRcdFx0XHRbYmxlbmRpbmddPVwiQ3VzdG9tQmxlbmRpbmdcIlxuXHRcdFx0XHRcdFtibGVuZFNyY109XCJPbmVGYWN0b3JcIlxuXHRcdFx0XHRcdFtibGVuZERzdF09XCJTcmNBbHBoYUZhY3RvclwiXG5cdFx0XHRcdFx0W2RlcHRoV3JpdGVdPVwiZmFsc2VcIlxuXHRcdFx0XHQvPlxuXG5cdFx0XHRcdEBpZiAoZGVidWcoKSkge1xuXHRcdFx0XHRcdDxuZ3RzLWVkZ2VzPlxuXHRcdFx0XHRcdFx0PG5ndC1saW5lLWJhc2ljLW1hdGVyaWFsIGNvbG9yPVwiI2ZmZmYwMFwiIFt0b25lTWFwcGVkXT1cImZhbHNlXCIgLz5cblx0XHRcdFx0XHQ8L25ndHMtZWRnZXM+XG5cdFx0XHRcdH1cblx0XHRcdDwvbmd0LW1lc2g+XG5cdFx0PC9uZ3QtZ3JvdXA+XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtOZ3RzRWRnZXNdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzQ2F1c3RpY3Mge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgTWF0aCA9IE1hdGg7XG5cdHByb3RlY3RlZCByZWFkb25seSBDdXN0b21CbGVuZGluZyA9IEN1c3RvbUJsZW5kaW5nO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgT25lRmFjdG9yID0gT25lRmFjdG9yO1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgU3JjQWxwaGFGYWN0b3IgPSBTcmNBbHBoYUZhY3RvcjtcblxuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdmcmFtZXMnLFxuXHRcdCdkZWJ1ZycsXG5cdFx0J2NhdXN0aWNzT25seScsXG5cdFx0J2JhY2tzaWRlJyxcblx0XHQnaW9yJyxcblx0XHQnYmFja3NpZGVJT1InLFxuXHRcdCd3b3JsZFJhZGl1cycsXG5cdFx0J2ludGVuc2l0eScsXG5cdFx0J2NvbG9yJyxcblx0XHQncmVzb2x1dGlvbicsXG5cdFx0J2xpZ2h0U291cmNlJyxcblx0XSk7XG5cblx0ZGVidWcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RlYnVnJyk7XG5cdGNvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xvcicpO1xuXHRwcml2YXRlIHJlc29sdXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Jlc29sdXRpb24nKTtcblxuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cdHByaXZhdGUgc2NlbmVSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxTY2VuZT4+KCdzY2VuZScpO1xuXHRwcml2YXRlIGNhbWVyYVJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE9ydGhvZ3JhcGhpY0NhbWVyYT4+KCdjYW1lcmEnKTtcblx0cHJpdmF0ZSBwbGFuZVJlZiA9XG5cdFx0dmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8TWVzaDxQbGFuZUdlb21ldHJ5LCBJbnN0YW5jZVR5cGU8dHlwZW9mIENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsPj4+PigncGxhbmUnKTtcblxuXHRwcml2YXRlIG5vcm1hbFRhcmdldFBhcmFtcyA9IGNvbXB1dGVkKCgpID0+ICh7XG5cdFx0d2lkdGg6IHRoaXMucmVzb2x1dGlvbigpLFxuXHRcdGhlaWdodDogdGhpcy5yZXNvbHV0aW9uKCksXG5cdFx0c2V0dGluZ3M6IE5PUk1BTF9PUFRJT05TLFxuXHR9KSk7XG5cblx0Ly8gQnVmZmVycyBmb3IgZnJvbnQgYW5kIGJhY2sgZmFjZXNcblx0cHJpdmF0ZSBub3JtYWxUYXJnZXQgPSBpbmplY3RGQk8odGhpcy5ub3JtYWxUYXJnZXRQYXJhbXMpO1xuXHRwcml2YXRlIG5vcm1hbFRhcmdldEIgPSBpbmplY3RGQk8odGhpcy5ub3JtYWxUYXJnZXRQYXJhbXMpO1xuXG5cdHByaXZhdGUgY2F1c3RpY3NUYXJnZXRQYXJhbXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuXHRcdHdpZHRoOiB0aGlzLnJlc29sdXRpb24oKSxcblx0XHRoZWlnaHQ6IHRoaXMucmVzb2x1dGlvbigpLFxuXHRcdHNldHRpbmdzOiBDQVVTVElDX09QVElPTlMsXG5cdH0pKTtcblx0Y2F1c3RpY3NUYXJnZXQgPSBpbmplY3RGQk8odGhpcy5jYXVzdGljc1RhcmdldFBhcmFtcyk7XG5cdGNhdXN0aWNzVGFyZ2V0QiA9IGluamVjdEZCTyh0aGlzLmNhdXN0aWNzVGFyZ2V0UGFyYW1zKTtcblxuXHRwcml2YXRlIGNhbWVyYUhlbHBlciA9IGluamVjdEhlbHBlcihcblx0XHQoKSA9PiAodGhpcy5kZWJ1ZygpID8gdGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50IDogbnVsbCksXG5cdFx0KCkgPT4gQ2FtZXJhSGVscGVyLFxuXHQpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IENhdXN0aWNzUHJvamVjdGlvbk1hdGVyaWFsLCBHcm91cCwgU2NlbmUsIE1lc2gsIFBsYW5lR2VvbWV0cnksIExpbmVCYXNpY01hdGVyaWFsLCBPcnRob2dyYXBoaWNDYW1lcmEgfSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Ly8gdHJhY2sgYWxsIGNoYW5nZXNcblx0XHRcdGNvbnN0IFtncm91cCwgc2NlbmUsIHBsYW5lXSA9IFtcblx0XHRcdFx0dGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuc2NlbmVSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLnBsYW5lUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRdO1xuXHRcdFx0Y29uc3QgZ3JvdXBMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShncm91cCk7XG5cdFx0XHRjb25zdCBzY2VuZUxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKHNjZW5lKTtcblx0XHRcdGNvbnN0IHBsYW5lTG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUocGxhbmUpO1xuXG5cdFx0XHRpZiAoIWdyb3VwTG9jYWxTdGF0ZSB8fCAhc2NlbmVMb2NhbFN0YXRlIHx8ICFwbGFuZUxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0Z3JvdXBMb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRcdHNjZW5lTG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cdFx0XHRwbGFuZUxvY2FsU3RhdGUub2JqZWN0cygpO1xuXHRcdFx0cGxhbmVMb2NhbFN0YXRlLm5vbk9iamVjdHMoKTtcblxuXHRcdFx0Z3JvdXAudXBkYXRlV29ybGRNYXRyaXgoZmFsc2UsIHRydWUpO1xuXHRcdH0pO1xuXG5cdFx0Y29uc3QgdXBkYXRlID0gY3JlYXRlQ2F1c3RpY3NVcGRhdGUoKCkgPT4ge1xuXHRcdFx0Y29uc3QgeyBsaWdodFNvdXJjZSwgLi4ucmVzdCB9ID0gdGhpcy5vcHRpb25zKCk7XG5cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHBhcmFtczogT2JqZWN0LmFzc2lnbihyZXN0LCB7XG5cdFx0XHRcdFx0bGlnaHRTb3VyY2U6IEFycmF5LmlzQXJyYXkobGlnaHRTb3VyY2UpID8gbmV3IFZlY3RvcjMoLi4ubGlnaHRTb3VyY2UpIDogcmVzb2x2ZVJlZihsaWdodFNvdXJjZSksXG5cdFx0XHRcdH0pLFxuXHRcdFx0XHRub3JtYWxUYXJnZXQ6IHRoaXMubm9ybWFsVGFyZ2V0KCksXG5cdFx0XHRcdG5vcm1hbFRhcmdldEI6IHRoaXMubm9ybWFsVGFyZ2V0QigpLFxuXHRcdFx0XHRjYXVzdGljc1RhcmdldDogdGhpcy5jYXVzdGljc1RhcmdldCgpLFxuXHRcdFx0XHRjYXVzdGljc1RhcmdldEI6IHRoaXMuY2F1c3RpY3NUYXJnZXRCKCksXG5cdFx0XHRcdGNhbWVyYTogdGhpcy5jYW1lcmFSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRzY2VuZTogdGhpcy5zY2VuZVJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdGdyb3VwOiB0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdFx0cGxhbmU6IHRoaXMucGxhbmVSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHRoZWxwZXI6IHRoaXMuY2FtZXJhSGVscGVyKCksXG5cdFx0XHR9O1xuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGdsIH0pID0+IHVwZGF0ZShnbCkpO1xuXHR9XG59XG4iXX0=
|