angular-three-rapier 2.3.0 → 2.4.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/LICENSE +21 -0
- package/esm2022/lib/colliders.mjs +45 -45
- package/esm2022/lib/debug.mjs +3 -3
- package/esm2022/lib/frame-stepper.mjs +3 -3
- package/esm2022/lib/instanced-rigid-bodies.mjs +15 -14
- package/esm2022/lib/mesh-collider.mjs +9 -9
- package/esm2022/lib/physics.mjs +7 -7
- package/esm2022/lib/rigid-body.mjs +9 -10
- package/fesm2022/angular-three-rapier.mjs +87 -87
- package/fesm2022/angular-three-rapier.mjs.map +1 -1
- package/lib/instanced-rigid-bodies.d.ts +0 -1
- package/lib/physics.d.ts +4 -5
- package/package.json +3 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Angular Three
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -19,10 +19,10 @@ export class NgtrCuboidCollider {
|
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
23
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCuboidCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrCuboidCollider, isStandalone: true, selector: "ngt-object3D[ngtrCuboidCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
24
24
|
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCuboidCollider, decorators: [{
|
|
26
26
|
type: Directive,
|
|
27
27
|
args: [{
|
|
28
28
|
selector: 'ngt-object3D[ngtrCuboidCollider]',
|
|
@@ -42,10 +42,10 @@ export class NgtrCapsuleCollider {
|
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
46
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCapsuleCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
46
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrCapsuleCollider, isStandalone: true, selector: "ngt-object3D[ngtrCapsuleCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
47
47
|
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCapsuleCollider, decorators: [{
|
|
49
49
|
type: Directive,
|
|
50
50
|
args: [{
|
|
51
51
|
selector: 'ngt-object3D[ngtrCapsuleCollider]',
|
|
@@ -65,10 +65,10 @@ export class NgtrBallCollider {
|
|
|
65
65
|
});
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
69
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
68
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrBallCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrBallCollider, isStandalone: true, selector: "ngt-object3D[ngtrBallCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
70
70
|
}
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrBallCollider, decorators: [{
|
|
72
72
|
type: Directive,
|
|
73
73
|
args: [{
|
|
74
74
|
selector: 'ngt-object3D[ngtrBallCollider]',
|
|
@@ -88,10 +88,10 @@ export class NgtrConvexHullCollider {
|
|
|
88
88
|
});
|
|
89
89
|
});
|
|
90
90
|
}
|
|
91
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
92
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
91
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConvexHullCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
92
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrConvexHullCollider, isStandalone: true, selector: "ngt-object3D[ngtrConvexHullCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
93
93
|
}
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConvexHullCollider, decorators: [{
|
|
95
95
|
type: Directive,
|
|
96
96
|
args: [{
|
|
97
97
|
selector: 'ngt-object3D[ngtrConvexHullCollider]',
|
|
@@ -111,10 +111,10 @@ export class NgtrHeightfieldCollider {
|
|
|
111
111
|
});
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
115
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrHeightfieldCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
115
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrHeightfieldCollider, isStandalone: true, selector: "ngt-object3D[ngtrHeightfieldCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
116
116
|
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrHeightfieldCollider, decorators: [{
|
|
118
118
|
type: Directive,
|
|
119
119
|
args: [{
|
|
120
120
|
selector: 'ngt-object3D[ngtrHeightfieldCollider]',
|
|
@@ -134,10 +134,10 @@ export class NgtrTrimeshCollider {
|
|
|
134
134
|
});
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
138
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
137
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrTrimeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
138
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrTrimeshCollider, isStandalone: true, selector: "ngt-object3D[ngtrTrimeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
139
139
|
}
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrTrimeshCollider, decorators: [{
|
|
141
141
|
type: Directive,
|
|
142
142
|
args: [{
|
|
143
143
|
selector: 'ngt-object3D[ngtrTrimeshCollider]',
|
|
@@ -157,10 +157,10 @@ export class NgtrPolylineCollider {
|
|
|
157
157
|
});
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
161
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
160
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrPolylineCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
161
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrPolylineCollider, isStandalone: true, selector: "ngt-object3D[ngtrPolylineCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrPolylineCollider, decorators: [{
|
|
164
164
|
type: Directive,
|
|
165
165
|
args: [{
|
|
166
166
|
selector: 'ngt-object3D[ngtrPolylineCollider]',
|
|
@@ -180,10 +180,10 @@ export class NgtrRoundCuboidCollider {
|
|
|
180
180
|
});
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
184
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
183
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundCuboidCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
184
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrRoundCuboidCollider, isStandalone: true, selector: "ngt-object3D[ngtrRoundCuboidCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
185
185
|
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundCuboidCollider, decorators: [{
|
|
187
187
|
type: Directive,
|
|
188
188
|
args: [{
|
|
189
189
|
selector: 'ngt-object3D[ngtrRoundCuboidCollider]',
|
|
@@ -203,10 +203,10 @@ export class NgtrCylinderCollider {
|
|
|
203
203
|
});
|
|
204
204
|
});
|
|
205
205
|
}
|
|
206
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
207
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCylinderCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
207
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrCylinderCollider, isStandalone: true, selector: "ngt-object3D[ngtrCylinderCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
208
208
|
}
|
|
209
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrCylinderCollider, decorators: [{
|
|
210
210
|
type: Directive,
|
|
211
211
|
args: [{
|
|
212
212
|
selector: 'ngt-object3D[ngtrCylinderCollider]',
|
|
@@ -226,10 +226,10 @@ export class NgtrRoundCylinderCollider {
|
|
|
226
226
|
});
|
|
227
227
|
});
|
|
228
228
|
}
|
|
229
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
230
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundCylinderCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
230
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrRoundCylinderCollider, isStandalone: true, selector: "ngt-object3D[ngtrRoundCylinderCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
231
231
|
}
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundCylinderCollider, decorators: [{
|
|
233
233
|
type: Directive,
|
|
234
234
|
args: [{
|
|
235
235
|
selector: 'ngt-object3D[ngtrRoundCylinderCollider]',
|
|
@@ -249,10 +249,10 @@ export class NgtrConeCollider {
|
|
|
249
249
|
});
|
|
250
250
|
});
|
|
251
251
|
}
|
|
252
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
253
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
252
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConeCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
253
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrConeCollider, isStandalone: true, selector: "ngt-object3D[ngtrConeCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
254
254
|
}
|
|
255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConeCollider, decorators: [{
|
|
256
256
|
type: Directive,
|
|
257
257
|
args: [{
|
|
258
258
|
selector: 'ngt-object3D[ngtrConeCollider]',
|
|
@@ -272,10 +272,10 @@ export class NgtrRoundConeCollider {
|
|
|
272
272
|
});
|
|
273
273
|
});
|
|
274
274
|
}
|
|
275
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
276
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
275
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConeCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
276
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrRoundConeCollider, isStandalone: true, selector: "ngt-object3D[ngtrRoundConeCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
277
277
|
}
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
278
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConeCollider, decorators: [{
|
|
279
279
|
type: Directive,
|
|
280
280
|
args: [{
|
|
281
281
|
selector: 'ngt-object3D[ngtrRoundConeCollider]',
|
|
@@ -295,10 +295,10 @@ export class NgtrConvexMeshCollider {
|
|
|
295
295
|
});
|
|
296
296
|
});
|
|
297
297
|
}
|
|
298
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
299
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConvexMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
299
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[ngtrConvexMeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
300
300
|
}
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrConvexMeshCollider, decorators: [{
|
|
302
302
|
type: Directive,
|
|
303
303
|
args: [{
|
|
304
304
|
selector: 'ngt-object3D[ngtrConvexMeshCollider]',
|
|
@@ -318,10 +318,10 @@ export class NgtrRoundConvexHullCollider {
|
|
|
318
318
|
});
|
|
319
319
|
});
|
|
320
320
|
}
|
|
321
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
322
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
321
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConvexHullCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
322
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrRoundConvexHullCollider, isStandalone: true, selector: "ngt-object3D[ngtrRoundConvexHullCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
323
323
|
}
|
|
324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConvexHullCollider, decorators: [{
|
|
325
325
|
type: Directive,
|
|
326
326
|
args: [{
|
|
327
327
|
selector: 'ngt-object3D[ngtrRoundConvexHullCollider]',
|
|
@@ -341,10 +341,10 @@ export class NgtrRoundConvexMeshCollider {
|
|
|
341
341
|
});
|
|
342
342
|
});
|
|
343
343
|
}
|
|
344
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
345
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
344
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConvexMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
345
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrRoundConvexMeshCollider, isStandalone: true, selector: "ngt-object3D[ngtrRoundConvexMeshCollider]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, hostDirectives: [{ directive: i1.NgtrAnyCollider, inputs: ["options", "options", "name", "name", "scale", "scale", "position", "position", "quaternion", "quaternion", "rotation", "rotation", "userData", "userData"], outputs: ["collisionEnter", "collisionEnter", "collisionExit", "collisionExit", "intersectionEnter", "intersectionEnter", "intersectionExit", "intersectionExit", "contactForce", "contactForce"] }], ngImport: i0 });
|
|
346
346
|
}
|
|
347
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrRoundConvexMeshCollider, decorators: [{
|
|
348
348
|
type: Directive,
|
|
349
349
|
args: [{
|
|
350
350
|
selector: 'ngt-object3D[ngtrRoundConvexMeshCollider]',
|
package/esm2022/lib/debug.mjs
CHANGED
|
@@ -16,8 +16,8 @@ export class NgtrDebug {
|
|
|
16
16
|
lineSegments.geometry.setAttribute('color', new BufferAttribute(buffers.colors, 4));
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
20
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.
|
|
19
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrDebug, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.6", type: NgtrDebug, isStandalone: true, selector: "ngtr-debug", inputs: { world: { classPropertyName: "world", publicName: "world", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "lineSegmentsRef", first: true, predicate: ["lineSegments"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
21
21
|
<ngt-group>
|
|
22
22
|
<ngt-line-segments #lineSegments [frustumCulled]="false">
|
|
23
23
|
<ngt-line-basic-material color="white" [vertexColors]="true" />
|
|
@@ -26,7 +26,7 @@ export class NgtrDebug {
|
|
|
26
26
|
</ngt-group>
|
|
27
27
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrDebug, decorators: [{
|
|
30
30
|
type: Component,
|
|
31
31
|
args: [{
|
|
32
32
|
selector: 'ngtr-debug',
|
|
@@ -33,10 +33,10 @@ export class NgtrFrameStepper {
|
|
|
33
33
|
onCleanup(() => cancelAnimationFrame(raf));
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
37
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.
|
|
36
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrFrameStepper, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
37
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtrFrameStepper, isStandalone: true, selector: "ngtr-frame-stepper", inputs: { ready: { classPropertyName: "ready", publicName: "ready", isSignal: true, isRequired: false, transformFunction: null }, updatePriority: { classPropertyName: "updatePriority", publicName: "updatePriority", isSignal: true, isRequired: false, transformFunction: null }, stepFn: { classPropertyName: "stepFn", publicName: "stepFn", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrFrameStepper, decorators: [{
|
|
40
40
|
type: Directive,
|
|
41
41
|
args: [{ standalone: true, selector: 'ngtr-frame-stepper' }]
|
|
42
42
|
}], ctorParameters: () => [] });
|
|
@@ -82,24 +82,25 @@ export class NgtrInstancedRigidBodies {
|
|
|
82
82
|
if (!options.colliders)
|
|
83
83
|
options.colliders = physicsColliders;
|
|
84
84
|
const objectLocalState = getLocalState(this.objectRef.nativeElement);
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
if (!objectLocalState)
|
|
86
|
+
return [];
|
|
87
|
+
// track object's parent and non-object children
|
|
88
|
+
const [parent] = [objectLocalState.parent(), objectLocalState.nonObjects()];
|
|
89
|
+
if (!parent || !parent.isObject3D)
|
|
90
|
+
return [];
|
|
87
91
|
return createColliderOptions(this.objectRef.nativeElement, options);
|
|
88
92
|
});
|
|
89
93
|
constructor() {
|
|
90
94
|
extend({ Object3D });
|
|
91
95
|
effect(() => {
|
|
92
|
-
this.
|
|
96
|
+
const instancedMesh = this.instancedMesh();
|
|
97
|
+
if (!instancedMesh)
|
|
98
|
+
return;
|
|
99
|
+
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
93
100
|
});
|
|
94
101
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
if (!instancedMesh)
|
|
98
|
-
return;
|
|
99
|
-
instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);
|
|
100
|
-
}
|
|
101
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: NgtrInstancedRigidBodies, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
102
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: NgtrInstancedRigidBodies, isStandalone: true, selector: "ngt-object3D[ngtrInstancedRigidBodies]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "ngtrInstancedRigidBodies", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "position": "position()", "rotation": "rotation()", "scale": "scale()", "quaternion": "quaternion()", "userData": "userData()" } }, viewQueries: [{ propertyName: "instanceWrapperRef", first: true, predicate: ["instanceWrapper"], descendants: true, isSignal: true }, { propertyName: "rigidBodyRefs", predicate: NgtrRigidBody, descendants: true, isSignal: true }], exportAs: ["instancedRigidBodies"], ngImport: i0, template: `
|
|
102
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrInstancedRigidBodies, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
103
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: NgtrInstancedRigidBodies, isStandalone: true, selector: "ngt-object3D[ngtrInstancedRigidBodies]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, scale: { classPropertyName: "scale", publicName: "scale", isSignal: true, isRequired: false, transformFunction: null }, quaternion: { classPropertyName: "quaternion", publicName: "quaternion", isSignal: true, isRequired: false, transformFunction: null }, userData: { classPropertyName: "userData", publicName: "userData", isSignal: true, isRequired: false, transformFunction: null }, instances: { classPropertyName: "instances", publicName: "ngtrInstancedRigidBodies", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "position": "position()", "rotation": "rotation()", "scale": "scale()", "quaternion": "quaternion()", "userData": "userData()" } }, viewQueries: [{ propertyName: "instanceWrapperRef", first: true, predicate: ["instanceWrapper"], descendants: true, isSignal: true }, { propertyName: "rigidBodyRefs", predicate: NgtrRigidBody, descendants: true, isSignal: true }], exportAs: ["instancedRigidBodies"], ngImport: i0, template: `
|
|
103
104
|
<ngt-object3D #instanceWrapper>
|
|
104
105
|
<ng-content />
|
|
105
106
|
</ngt-object3D>
|
|
@@ -132,7 +133,7 @@ export class NgtrInstancedRigidBodies {
|
|
|
132
133
|
}
|
|
133
134
|
`, isInline: true, dependencies: [{ kind: "component", type: NgtrRigidBody, selector: "ngt-object3D[ngtrRigidBody]", inputs: ["ngtrRigidBody", "position", "rotation", "scale", "quaternion", "userData", "options"], outputs: ["wake", "sleep", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"], exportAs: ["rigidBody"] }, { kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[ngtrCollider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "ngtrCollider", "args"], outputs: ["ngtrColliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
134
135
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrInstancedRigidBodies, decorators: [{
|
|
136
137
|
type: Component,
|
|
137
138
|
args: [{
|
|
138
139
|
selector: 'ngt-object3D[ngtrInstancedRigidBodies]',
|
|
@@ -179,7 +180,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
179
180
|
'[quaternion]': 'quaternion()',
|
|
180
181
|
'[userData]': 'userData()',
|
|
181
182
|
},
|
|
182
|
-
imports: [NgtrRigidBody,
|
|
183
|
+
imports: [NgtrRigidBody, NgtrAnyCollider],
|
|
183
184
|
}]
|
|
184
185
|
}], ctorParameters: () => [] });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBb0QsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFhaEQsTUFBTSxjQUFjLEdBQXlCLHVCQUF1QixDQUFDO0FBaURyRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsR0FBRyxLQUFLLENBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFVBQVUsR0FBRyxLQUFLLENBQTRCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLEdBQUcsS0FBSyxDQUFzQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNyQixLQUFLLEVBQUUsMEJBQTBCO1FBQ2pDLFNBQVMsRUFBRSxDQUFDLEtBQWdELEVBQUUsRUFBRTtZQUMvRCxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLE9BQU8sS0FBSyxDQUFDO1FBQ2QsQ0FBQztLQUNELENBQUMsQ0FBQztJQUNILE9BQU8sR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFNUUsa0JBQWtCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBdUIsaUJBQWlCLENBQUMsQ0FBQztJQUNqRixhQUFhLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXBDLE9BQU8sR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFFN0MsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBRTVDLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3JDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNoRSxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWxDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRTdCLDBCQUEwQjtRQUMxQixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUUsVUFBNEIsQ0FBQyxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFL0UsT0FBTyxVQUEyQixDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBRU8sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUMxQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUIsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUNuQixDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNuQixDQUFDO1lBQ0EsR0FBRyxRQUFRO1lBQ1gsT0FBTyxFQUFFO2dCQUNSLEdBQUcsT0FBTztnQkFDVixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQzNCLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN6QixPQUFPO3dCQUNOLEdBQUcsS0FBSzt3QkFDUixTQUFTLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTs0QkFDckIsYUFBYSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7NEJBQ3pDLE9BQU8sTUFBTSxDQUFDO3dCQUNmLENBQUM7d0JBQ0QsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7NEJBQ3JCLGFBQWEsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDOzRCQUN6QyxhQUFhLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ2pELENBQUM7d0JBQ0QsUUFBUSxFQUFFLGVBQWU7cUJBQ0gsQ0FBQztnQkFDekIsQ0FBQzthQUNEO1lBQ0QsR0FBRyxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSxLQUFLLEVBQUUsR0FBRyxHQUFHLGFBQWEsRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFO1NBQ2hFLENBQWdHLENBQ2xHLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVPLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25DLDBGQUEwRjtRQUMxRixJQUFJLFNBQVMsS0FBSyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELHNIQUFzSDtRQUN0SCxJQUFJLGdCQUFnQixLQUFLLEtBQUssSUFBSSxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXJFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQiwyREFBMkQ7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztRQUU3RCxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLDBCQUEwQjtRQUMxQixnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUUvQixPQUFPLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBRUg7UUFDQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyw0QkFBNEI7UUFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUMzQixhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7dUdBbkdXLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHF6Q0FnQlAsYUFBYSxvR0EzRGhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0JULDREQVVTLGFBQWEsMFRBQWlCLGVBQWU7OzJGQUUzQyx3QkFBd0I7a0JBL0NwQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSx3Q0FBd0M7b0JBQ2xELFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUErQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0wsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFlBQVksRUFBRSxZQUFZO3dCQUMxQixTQUFTLEVBQUUsU0FBUzt3QkFDcEIsY0FBYyxFQUFFLGNBQWM7d0JBQzlCLFlBQVksRUFBRSxZQUFZO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQztpQkFDeEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRjb21wdXRlZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcblx0dmlld0NoaWxkcmVuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgZ2V0TG9jYWxTdGF0ZSwgTmd0RXVsZXIsIE5ndE9iamVjdDNELCBOZ3RRdWF0ZXJuaW9uLCBOZ3RWZWN0b3IzLCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBEeW5hbWljRHJhd1VzYWdlLCBJbnN0YW5jZWRNZXNoLCBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndHJQaHlzaWNzIH0gZnJvbSAnLi9waHlzaWNzJztcbmltcG9ydCB7IE5ndHJBbnlDb2xsaWRlciwgTmd0clJpZ2lkQm9keSwgcmlnaWRCb2R5RGVmYXVsdE9wdGlvbnMgfSBmcm9tICcuL3JpZ2lkLWJvZHknO1xuaW1wb3J0IHsgTmd0clJpZ2lkQm9keU9wdGlvbnMsIE5ndHJSaWdpZEJvZHlTdGF0ZSwgTmd0clJpZ2lkQm9keVR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUNvbGxpZGVyT3B0aW9ucyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHJJbnN0YW5jZWRSaWdpZEJvZHlPcHRpb25zIHtcblx0a2V5OiBzdHJpbmcgfCBudW1iZXI7XG5cdHR5cGU/OiBOZ3RyUmlnaWRCb2R5VHlwZTtcblx0cG9zaXRpb24/OiBOZ3RWZWN0b3IzO1xuXHRyb3RhdGlvbj86IE5ndEV1bGVyO1xuXHRzY2FsZT86IE5ndFZlY3RvcjM7XG5cdHF1YXRlcm5pb24/OiBOZ3RRdWF0ZXJuaW9uO1xuXHR1c2VyRGF0YT86IE5ndE9iamVjdDNEWyd1c2VyRGF0YSddO1xuXHRvcHRpb25zPzogTmd0clJpZ2lkQm9keU9wdGlvbnM7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RyUmlnaWRCb2R5T3B0aW9ucyA9IHJpZ2lkQm9keURlZmF1bHRPcHRpb25zO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3Qtb2JqZWN0M0Rbbmd0ckluc3RhbmNlZFJpZ2lkQm9kaWVzXScsXG5cdGV4cG9ydEFzOiAnaW5zdGFuY2VkUmlnaWRCb2RpZXMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3Qtb2JqZWN0M0QgI2luc3RhbmNlV3JhcHBlcj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3Qtb2JqZWN0M0Q+XG5cblx0XHRAZm9yIChpbnN0YW5jZSBvZiBpbnN0YW5jZXNPcHRpb25zKCk7IHRyYWNrIGluc3RhbmNlLmtleSkge1xuXHRcdFx0PG5ndC1vYmplY3QzRFxuXHRcdFx0XHRbbmd0clJpZ2lkQm9keV09XCJpbnN0YW5jZS50eXBlXCJcblx0XHRcdFx0W29wdGlvbnNdPVwiaW5zdGFuY2Uub3B0aW9uc1wiXG5cdFx0XHRcdFtwb3NpdGlvbl09XCJpbnN0YW5jZS5wb3NpdGlvblwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJpbnN0YW5jZS5yb3RhdGlvblwiXG5cdFx0XHRcdFtzY2FsZV09XCJpbnN0YW5jZS5zY2FsZVwiXG5cdFx0XHRcdFtxdWF0ZXJuaW9uXT1cImluc3RhbmNlLnF1YXRlcm5pb25cIlxuXHRcdFx0XHRbdXNlckRhdGFdPVwiaW5zdGFuY2UudXNlckRhdGFcIlxuXHRcdFx0XHRbbmFtZV09XCJpbnN0YW5jZS5rZXkgKyAnLWluc3RhbmNlZC1yaWdpZC1ib2R5LScgKyAkaW5kZXhcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbZGF0YS1jb2xsaWRlcnNdXCIgLz5cblxuXHRcdFx0XHRAZm9yIChjaGlsZENvbGxpZGVyT3B0aW9uIG9mIGNoaWxkQ29sbGlkZXJPcHRpb25zKCk7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0XHRcdFtuZ3RyQ29sbGlkZXJdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5zaGFwZVwiXG5cdFx0XHRcdFx0XHRbYXJnc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmFyZ3NcIlxuXHRcdFx0XHRcdFx0W3Bvc2l0aW9uXT1cImNoaWxkQ29sbGlkZXJPcHRpb24ucG9zaXRpb25cIlxuXHRcdFx0XHRcdFx0W3JvdGF0aW9uXT1cImNoaWxkQ29sbGlkZXJPcHRpb24ucm90YXRpb25cIlxuXHRcdFx0XHRcdFx0W3NjYWxlXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2NhbGVcIlxuXHRcdFx0XHRcdFx0W25hbWVdPVwib2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQubmFtZSArICctaW5zdGFuY2VkLWNvbGxpZGVyLScgKyAkaW5kZXhcIlxuXHRcdFx0XHRcdFx0W29wdGlvbnNdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5jb2xsaWRlck9wdGlvbnNcIlxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdH1cblx0XHRcdDwvbmd0LW9iamVjdDNEPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aG9zdDoge1xuXHRcdCdbcG9zaXRpb25dJzogJ3Bvc2l0aW9uKCknLFxuXHRcdCdbcm90YXRpb25dJzogJ3JvdGF0aW9uKCknLFxuXHRcdCdbc2NhbGVdJzogJ3NjYWxlKCknLFxuXHRcdCdbcXVhdGVybmlvbl0nOiAncXVhdGVybmlvbigpJyxcblx0XHQnW3VzZXJEYXRhXSc6ICd1c2VyRGF0YSgpJyxcblx0fSxcblx0aW1wb3J0czogW05ndHJSaWdpZEJvZHksIE5ndHJSaWdpZEJvZHksIE5ndHJBbnlDb2xsaWRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJJbnN0YW5jZWRSaWdpZEJvZGllcyB7XG5cdHBvc2l0aW9uID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0cm90YXRpb24gPSBpbnB1dDxOZ3RFdWxlciB8IHVuZGVmaW5lZD4oWzAsIDAsIDBdKTtcblx0c2NhbGUgPSBpbnB1dDxOZ3RWZWN0b3IzIHwgdW5kZWZpbmVkPihbMSwgMSwgMV0pO1xuXHRxdWF0ZXJuaW9uID0gaW5wdXQ8Tmd0UXVhdGVybmlvbiB8IHVuZGVmaW5lZD4oWzAsIDAsIDAsIDFdKTtcblx0dXNlckRhdGEgPSBpbnB1dDxOZ3RPYmplY3QzRFsndXNlckRhdGEnXSB8IHVuZGVmaW5lZD4oe30pO1xuXHRpbnN0YW5jZXMgPSBpbnB1dChbXSwge1xuXHRcdGFsaWFzOiAnbmd0ckluc3RhbmNlZFJpZ2lkQm9kaWVzJyxcblx0XHR0cmFuc2Zvcm06ICh2YWx1ZTogQXJyYXk8Tmd0ckluc3RhbmNlZFJpZ2lkQm9keU9wdGlvbnM+IHwgJycpID0+IHtcblx0XHRcdGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBbXTtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9LFxuXHR9KTtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdGluc3RhbmNlV3JhcHBlclJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPE9iamVjdDNEPj4oJ2luc3RhbmNlV3JhcHBlcicpO1xuXHRyaWdpZEJvZHlSZWZzID0gdmlld0NoaWxkcmVuKE5ndHJSaWdpZEJvZHkpO1xuXG5cdHByaXZhdGUgcGh5c2ljcyA9IGluamVjdChOZ3RyUGh5c2ljcyk7XG5cdG9iamVjdFJlZiA9IGluamVjdDxFbGVtZW50UmVmPE9iamVjdDNEPj4oRWxlbWVudFJlZik7XG5cblx0cHJpdmF0ZSBjb2xsaWRlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2NvbGxpZGVycycpO1xuXG5cdHByaXZhdGUgaW5zdGFuY2VkTWVzaCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBpbnN0YW5jZVdyYXBwZXIgPSB0aGlzLmluc3RhbmNlV3JhcHBlclJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0aWYgKCFpbnN0YW5jZVdyYXBwZXIpIHJldHVybiBudWxsO1xuXG5cdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2VXcmFwcGVyKTtcblx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybiBudWxsO1xuXG5cdFx0Ly8gdHJhY2sgb2JqZWN0J3MgY2hpbGRyZW5cblx0XHRsb2NhbFN0YXRlLm9iamVjdHMoKTtcblx0XHRjb25zdCBmaXJzdENoaWxkID0gaW5zdGFuY2VXcmFwcGVyLmNoaWxkcmVuWzBdO1xuXHRcdGlmICghZmlyc3RDaGlsZCB8fCAhKGZpcnN0Q2hpbGQgYXMgSW5zdGFuY2VkTWVzaCkuaXNJbnN0YW5jZWRNZXNoKSByZXR1cm4gbnVsbDtcblxuXHRcdHJldHVybiBmaXJzdENoaWxkIGFzIEluc3RhbmNlZE1lc2g7XG5cdH0pO1xuXG5cdHByb3RlY3RlZCBpbnN0YW5jZXNPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtpbnN0YW5jZXMsIG9wdGlvbnMsIGluc3RhbmNlZE1lc2hdID0gW3RoaXMuaW5zdGFuY2VzKCksIHVudHJhY2tlZCh0aGlzLm9wdGlvbnMpLCB0aGlzLmluc3RhbmNlZE1lc2goKV07XG5cdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm4gW107XG5cdFx0cmV0dXJuIGluc3RhbmNlcy5tYXAoXG5cdFx0XHQoaW5zdGFuY2UsIGluZGV4KSA9PlxuXHRcdFx0XHQoe1xuXHRcdFx0XHRcdC4uLmluc3RhbmNlLFxuXHRcdFx0XHRcdG9wdGlvbnM6IHtcblx0XHRcdFx0XHRcdC4uLm9wdGlvbnMsXG5cdFx0XHRcdFx0XHQuLi4oaW5zdGFuY2Uub3B0aW9ucyB8fCB7fSksXG5cdFx0XHRcdFx0XHR0cmFuc2Zvcm1TdGF0ZTogKHN0YXRlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0Z2V0TWF0cml4OiAobWF0cml4KSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmdldE1hdHJpeEF0KGluZGV4LCBtYXRyaXgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG1hdHJpeDtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdHNldE1hdHJpeDogKG1hdHJpeCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFuY2VkTWVzaC5zZXRNYXRyaXhBdChpbmRleCwgbWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlZE1lc2guaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0bWVzaFR5cGU6ICdpbnN0YW5jZWRNZXNoJyxcblx0XHRcdFx0XHRcdFx0fSBhcyBOZ3RyUmlnaWRCb2R5U3RhdGU7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0a2V5OiBgJHtpbnN0YW5jZS5rZXl9LSR7aW5kZXh9YCArIGAke2luc3RhbmNlZE1lc2g/LnV1aWQgfHwgJyd9YCxcblx0XHRcdFx0fSkgYXMgT21pdDxOZ3RySW5zdGFuY2VkUmlnaWRCb2R5T3B0aW9ucywgJ29wdGlvbnMnPiAmIHsgb3B0aW9uczogUGFydGlhbDxOZ3RyUmlnaWRCb2R5T3B0aW9ucz4gfSxcblx0XHQpO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgY29sbGlkZXJzID0gdGhpcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBzZWxmIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5LCBkaXNhYmxlIGF1dG8gY29sbGlkZXJzIGZvciB0aGlzIG9iamVjdCBlbnRpcmVseS5cblx0XHRpZiAoY29sbGlkZXJzID09PSBmYWxzZSkgcmV0dXJuIFtdO1xuXG5cdFx0Y29uc3QgcGh5c2ljc0NvbGxpZGVycyA9IHRoaXMucGh5c2ljcy5jb2xsaWRlcnMoKTtcblx0XHQvLyBpZiBwaHlzaWNzIGNvbGxpZGVycyBpcyBmYWxzZSBleHBsaWNpdGx5IEFORCBjb2xsaWRlcnMgaXMgbm90IHNldCwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKHBoeXNpY3NDb2xsaWRlcnMgPT09IGZhbHNlICYmIGNvbGxpZGVycyA9PT0gdW5kZWZpbmVkKSByZXR1cm4gW107XG5cblx0XHRjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cdFx0Ly8gaWYgY29sbGlkZXJzIG9uIG9iamVjdCBpcyBub3Qgc2V0LCB1c2UgcGh5c2ljcyBjb2xsaWRlcnNcblx0XHRpZiAoIW9wdGlvbnMuY29sbGlkZXJzKSBvcHRpb25zLmNvbGxpZGVycyA9IHBoeXNpY3NDb2xsaWRlcnM7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHQvLyB0cmFjayBvYmplY3QncyBjaGlsZHJlblxuXHRcdG9iamVjdExvY2FsU3RhdGU/Lm5vbk9iamVjdHMoKTtcblxuXHRcdHJldHVybiBjcmVhdGVDb2xsaWRlck9wdGlvbnModGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHR0aGlzLnNldEluc3RhbmNlZE1lc2hNYXRyaXhFZmZlY3QoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgc2V0SW5zdGFuY2VkTWVzaE1hdHJpeEVmZmVjdCgpIHtcblx0XHRjb25zdCBpbnN0YW5jZWRNZXNoID0gdGhpcy5pbnN0YW5jZWRNZXNoKCk7XG5cdFx0aWYgKCFpbnN0YW5jZWRNZXNoKSByZXR1cm47XG5cdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShEeW5hbWljRHJhd1VzYWdlKTtcblx0fVxufVxuIl19
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvaW5zdGFuY2VkLXJpZ2lkLWJvZGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBb0QsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFhaEQsTUFBTSxjQUFjLEdBQXlCLHVCQUF1QixDQUFDO0FBaURyRSxNQUFNLE9BQU8sd0JBQXdCO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsR0FBRyxLQUFLLENBQXVCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssR0FBRyxLQUFLLENBQXlCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFVBQVUs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LGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUMsQ0FBQztJQUVIO1FBQ0MsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVyQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxhQUFhO2dCQUFFLE9BQU87WUFDM0IsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7dUdBbkdXLHdCQUF3QjsyRkFBeEIsd0JBQXdCLHF6Q0FnQlAsYUFBYSxvR0EzRGhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0JULDREQVVTLGFBQWEsMFRBQUUsZUFBZTs7MkZBRTVCLHdCQUF3QjtrQkEvQ3BDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHdDQUF3QztvQkFDbEQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQStCVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRTt3QkFDTCxZQUFZLEVBQUUsWUFBWTt3QkFDMUIsWUFBWSxFQUFFLFlBQVk7d0JBQzFCLFNBQVMsRUFBRSxTQUFTO3dCQUNwQixjQUFjLEVBQUUsY0FBYzt3QkFDOUIsWUFBWSxFQUFFLFlBQVk7cUJBQzFCO29CQUNELE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUM7aUJBQ3pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5qZWN0LFxuXHRpbnB1dCxcblx0dW50cmFja2VkLFxuXHR2aWV3Q2hpbGQsXG5cdHZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBleHRlbmQsIGdldExvY2FsU3RhdGUsIE5ndEV1bGVyLCBOZ3RPYmplY3QzRCwgTmd0UXVhdGVybmlvbiwgTmd0VmVjdG9yMywgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgRHluYW1pY0RyYXdVc2FnZSwgSW5zdGFuY2VkTWVzaCwgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHksIHJpZ2lkQm9keURlZmF1bHRPcHRpb25zIH0gZnJvbSAnLi9yaWdpZC1ib2R5JztcbmltcG9ydCB7IE5ndHJSaWdpZEJvZHlPcHRpb25zLCBOZ3RyUmlnaWRCb2R5U3RhdGUsIE5ndHJSaWdpZEJvZHlUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb2xsaWRlck9wdGlvbnMgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RySW5zdGFuY2VkUmlnaWRCb2R5T3B0aW9ucyB7XG5cdGtleTogc3RyaW5nIHwgbnVtYmVyO1xuXHR0eXBlPzogTmd0clJpZ2lkQm9keVR5cGU7XG5cdHBvc2l0aW9uPzogTmd0VmVjdG9yMztcblx0cm90YXRpb24/OiBOZ3RFdWxlcjtcblx0c2NhbGU/OiBOZ3RWZWN0b3IzO1xuXHRxdWF0ZXJuaW9uPzogTmd0UXVhdGVybmlvbjtcblx0dXNlckRhdGE/OiBOZ3RPYmplY3QzRFsndXNlckRhdGEnXTtcblx0b3B0aW9ucz86IE5ndHJSaWdpZEJvZHlPcHRpb25zO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0clJpZ2lkQm9keU9wdGlvbnMgPSByaWdpZEJvZHlEZWZhdWx0T3B0aW9ucztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0LW9iamVjdDNEW25ndHJJbnN0YW5jZWRSaWdpZEJvZGllc10nLFxuXHRleHBvcnRBczogJ2luc3RhbmNlZFJpZ2lkQm9kaWVzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW9iamVjdDNEICNpbnN0YW5jZVdyYXBwZXI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LW9iamVjdDNEPlxuXG5cdFx0QGZvciAoaW5zdGFuY2Ugb2YgaW5zdGFuY2VzT3B0aW9ucygpOyB0cmFjayBpbnN0YW5jZS5rZXkpIHtcblx0XHRcdDxuZ3Qtb2JqZWN0M0Rcblx0XHRcdFx0W25ndHJSaWdpZEJvZHldPVwiaW5zdGFuY2UudHlwZVwiXG5cdFx0XHRcdFtvcHRpb25zXT1cImluc3RhbmNlLm9wdGlvbnNcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiaW5zdGFuY2UucG9zaXRpb25cIlxuXHRcdFx0XHRbcm90YXRpb25dPVwiaW5zdGFuY2Uucm90YXRpb25cIlxuXHRcdFx0XHRbc2NhbGVdPVwiaW5zdGFuY2Uuc2NhbGVcIlxuXHRcdFx0XHRbcXVhdGVybmlvbl09XCJpbnN0YW5jZS5xdWF0ZXJuaW9uXCJcblx0XHRcdFx0W3VzZXJEYXRhXT1cImluc3RhbmNlLnVzZXJEYXRhXCJcblx0XHRcdFx0W25hbWVdPVwiaW5zdGFuY2Uua2V5ICsgJy1pbnN0YW5jZWQtcmlnaWQtYm9keS0nICsgJGluZGV4XCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtY29sbGlkZXJzXVwiIC8+XG5cblx0XHRcdFx0QGZvciAoY2hpbGRDb2xsaWRlck9wdGlvbiBvZiBjaGlsZENvbGxpZGVyT3B0aW9ucygpOyB0cmFjayAkaW5kZXgpIHtcblx0XHRcdFx0XHQ8bmd0LW9iamVjdDNEXG5cdFx0XHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRcdFx0W2FyZ3NdPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5hcmdzXCJcblx0XHRcdFx0XHRcdFtwb3NpdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnBvc2l0aW9uXCJcblx0XHRcdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0XHRcdFtzY2FsZV09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnNjYWxlXCJcblx0XHRcdFx0XHRcdFtuYW1lXT1cIm9iamVjdFJlZi5uYXRpdmVFbGVtZW50Lm5hbWUgKyAnLWluc3RhbmNlZC1jb2xsaWRlci0nICsgJGluZGV4XCJcblx0XHRcdFx0XHRcdFtvcHRpb25zXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uY29sbGlkZXJPcHRpb25zXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHQ8L25ndC1vYmplY3QzRD5cblx0XHR9XG5cdGAsXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGhvc3Q6IHtcblx0XHQnW3Bvc2l0aW9uXSc6ICdwb3NpdGlvbigpJyxcblx0XHQnW3JvdGF0aW9uXSc6ICdyb3RhdGlvbigpJyxcblx0XHQnW3NjYWxlXSc6ICdzY2FsZSgpJyxcblx0XHQnW3F1YXRlcm5pb25dJzogJ3F1YXRlcm5pb24oKScsXG5cdFx0J1t1c2VyRGF0YV0nOiAndXNlckRhdGEoKScsXG5cdH0sXG5cdGltcG9ydHM6IFtOZ3RyUmlnaWRCb2R5LCBOZ3RyQW55Q29sbGlkZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RySW5zdGFuY2VkUmlnaWRCb2RpZXMge1xuXHRwb3NpdGlvbiA9IGlucHV0PE5ndFZlY3RvcjMgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHJvdGF0aW9uID0gaW5wdXQ8Tmd0RXVsZXIgfCB1bmRlZmluZWQ+KFswLCAwLCAwXSk7XG5cdHNjYWxlID0gaW5wdXQ8Tmd0VmVjdG9yMyB8IHVuZGVmaW5lZD4oWzEsIDEsIDFdKTtcblx0cXVhdGVybmlvbiA9IGlucHV0PE5ndFF1YXRlcm5pb24gfCB1bmRlZmluZWQ+KFswLCAwLCAwLCAxXSk7XG5cdHVzZXJEYXRhID0gaW5wdXQ8Tmd0T2JqZWN0M0RbJ3VzZXJEYXRhJ10gfCB1bmRlZmluZWQ+KHt9KTtcblx0aW5zdGFuY2VzID0gaW5wdXQoW10sIHtcblx0XHRhbGlhczogJ25ndHJJbnN0YW5jZWRSaWdpZEJvZGllcycsXG5cdFx0dHJhbnNmb3JtOiAodmFsdWU6IEFycmF5PE5ndHJJbnN0YW5jZWRSaWdpZEJvZHlPcHRpb25zPiB8ICcnKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgPT09ICcnKSByZXR1cm4gW107XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0fSk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRpbnN0YW5jZVdyYXBwZXJSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxPYmplY3QzRD4+KCdpbnN0YW5jZVdyYXBwZXInKTtcblx0cmlnaWRCb2R5UmVmcyA9IHZpZXdDaGlsZHJlbihOZ3RyUmlnaWRCb2R5KTtcblxuXHRwcml2YXRlIHBoeXNpY3MgPSBpbmplY3QoTmd0clBoeXNpY3MpO1xuXHRvYmplY3RSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxPYmplY3QzRD4+KEVsZW1lbnRSZWYpO1xuXG5cdHByaXZhdGUgY29sbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb2xsaWRlcnMnKTtcblxuXHRwcml2YXRlIGluc3RhbmNlZE1lc2ggPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgaW5zdGFuY2VXcmFwcGVyID0gdGhpcy5pbnN0YW5jZVdyYXBwZXJSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdGlmICghaW5zdGFuY2VXcmFwcGVyKSByZXR1cm4gbnVsbDtcblxuXHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlV3JhcHBlcik7XG5cdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm4gbnVsbDtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0bG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cdFx0Y29uc3QgZmlyc3RDaGlsZCA9IGluc3RhbmNlV3JhcHBlci5jaGlsZHJlblswXTtcblx0XHRpZiAoIWZpcnN0Q2hpbGQgfHwgIShmaXJzdENoaWxkIGFzIEluc3RhbmNlZE1lc2gpLmlzSW5zdGFuY2VkTWVzaCkgcmV0dXJuIG51bGw7XG5cblx0XHRyZXR1cm4gZmlyc3RDaGlsZCBhcyBJbnN0YW5jZWRNZXNoO1xuXHR9KTtcblxuXHRwcm90ZWN0ZWQgaW5zdGFuY2VzT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbaW5zdGFuY2VzLCBvcHRpb25zLCBpbnN0YW5jZWRNZXNoXSA9IFt0aGlzLmluc3RhbmNlcygpLCB1bnRyYWNrZWQodGhpcy5vcHRpb25zKSwgdGhpcy5pbnN0YW5jZWRNZXNoKCldO1xuXHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuIFtdO1xuXHRcdHJldHVybiBpbnN0YW5jZXMubWFwKFxuXHRcdFx0KGluc3RhbmNlLCBpbmRleCkgPT5cblx0XHRcdFx0KHtcblx0XHRcdFx0XHQuLi5pbnN0YW5jZSxcblx0XHRcdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdFx0XHQuLi5vcHRpb25zLFxuXHRcdFx0XHRcdFx0Li4uKGluc3RhbmNlLm9wdGlvbnMgfHwge30pLFxuXHRcdFx0XHRcdFx0dHJhbnNmb3JtU3RhdGU6IChzdGF0ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XHRcdC4uLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGdldE1hdHJpeDogKG1hdHJpeCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5zdGFuY2VkTWVzaC5nZXRNYXRyaXhBdChpbmRleCwgbWF0cml4KTtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBtYXRyaXg7XG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRyaXg6IChtYXRyaXgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGluc3RhbmNlZE1lc2guc2V0TWF0cml4QXQoaW5kZXgsIG1hdHJpeCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbnN0YW5jZWRNZXNoLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdG1lc2hUeXBlOiAnaW5zdGFuY2VkTWVzaCcsXG5cdFx0XHRcdFx0XHRcdH0gYXMgTmd0clJpZ2lkQm9keVN0YXRlO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGtleTogYCR7aW5zdGFuY2Uua2V5fS0ke2luZGV4fWAgKyBgJHtpbnN0YW5jZWRNZXNoPy51dWlkIHx8ICcnfWAsXG5cdFx0XHRcdH0pIGFzIE9taXQ8Tmd0ckluc3RhbmNlZFJpZ2lkQm9keU9wdGlvbnMsICdvcHRpb25zJz4gJiB7IG9wdGlvbnM6IFBhcnRpYWw8Tmd0clJpZ2lkQm9keU9wdGlvbnM+IH0sXG5cdFx0KTtcblx0fSk7XG5cblx0cHJvdGVjdGVkIGNoaWxkQ29sbGlkZXJPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgc2VsZiBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSwgZGlzYWJsZSBhdXRvIGNvbGxpZGVycyBmb3IgdGhpcyBvYmplY3QgZW50aXJlbHkuXG5cdFx0aWYgKGNvbGxpZGVycyA9PT0gZmFsc2UpIHJldHVybiBbXTtcblxuXHRcdGNvbnN0IHBoeXNpY3NDb2xsaWRlcnMgPSB0aGlzLnBoeXNpY3MuY29sbGlkZXJzKCk7XG5cdFx0Ly8gaWYgcGh5c2ljcyBjb2xsaWRlcnMgaXMgZmFsc2UgZXhwbGljaXRseSBBTkQgY29sbGlkZXJzIGlzIG5vdCBzZXQsIGRpc2FibGUgYXV0byBjb2xsaWRlcnMgZm9yIHRoaXMgb2JqZWN0IGVudGlyZWx5LlxuXHRcdGlmIChwaHlzaWNzQ29sbGlkZXJzID09PSBmYWxzZSAmJiBjb2xsaWRlcnMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucygpO1xuXHRcdC8vIGlmIGNvbGxpZGVycyBvbiBvYmplY3QgaXMgbm90IHNldCwgdXNlIHBoeXNpY3MgY29sbGlkZXJzXG5cdFx0aWYgKCFvcHRpb25zLmNvbGxpZGVycykgb3B0aW9ucy5jb2xsaWRlcnMgPSBwaHlzaWNzQ29sbGlkZXJzO1xuXG5cdFx0Y29uc3Qgb2JqZWN0TG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUodGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCk7XG5cdFx0aWYgKCFvYmplY3RMb2NhbFN0YXRlKSByZXR1cm4gW107XG5cblx0XHQvLyB0cmFjayBvYmplY3QncyBwYXJlbnQgYW5kIG5vbi1vYmplY3QgY2hpbGRyZW5cblx0XHRjb25zdCBbcGFyZW50XSA9IFtvYmplY3RMb2NhbFN0YXRlLnBhcmVudCgpLCBvYmplY3RMb2NhbFN0YXRlLm5vbk9iamVjdHMoKV07XG5cdFx0aWYgKCFwYXJlbnQgfHwgIShwYXJlbnQgYXMgT2JqZWN0M0QpLmlzT2JqZWN0M0QpIHJldHVybiBbXTtcblxuXHRcdHJldHVybiBjcmVhdGVDb2xsaWRlck9wdGlvbnModGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudCwgb3B0aW9ucyk7XG5cdH0pO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IE9iamVjdDNEIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGluc3RhbmNlZE1lc2ggPSB0aGlzLmluc3RhbmNlZE1lc2goKTtcblx0XHRcdGlmICghaW5zdGFuY2VkTWVzaCkgcmV0dXJuO1xuXHRcdFx0aW5zdGFuY2VkTWVzaC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShEeW5hbWljRHJhd1VzYWdlKTtcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -14,20 +14,20 @@ export class NgtrMeshCollider {
|
|
|
14
14
|
const rigidBodyOptions = this.rigidBody.options();
|
|
15
15
|
rigidBodyOptions.colliders = this.colliders();
|
|
16
16
|
const objectLocalState = getLocalState(this.objectRef.nativeElement);
|
|
17
|
+
if (!objectLocalState)
|
|
18
|
+
return [];
|
|
17
19
|
// track object's children
|
|
18
|
-
objectLocalState
|
|
19
|
-
objectLocalState
|
|
20
|
+
objectLocalState.nonObjects();
|
|
21
|
+
objectLocalState.objects();
|
|
20
22
|
return createColliderOptions(this.objectRef.nativeElement, rigidBodyOptions, false);
|
|
21
23
|
});
|
|
22
24
|
constructor() {
|
|
23
25
|
extend({ Object3D });
|
|
24
|
-
|
|
25
|
-
this.objectRef.nativeElement.userData = {};
|
|
26
|
-
}
|
|
26
|
+
this.objectRef.nativeElement.userData ??= {};
|
|
27
27
|
this.objectRef.nativeElement.userData['ngtrRapierType'] = 'MeshCollider';
|
|
28
28
|
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
30
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrMeshCollider, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: NgtrMeshCollider, isStandalone: true, selector: "ngt-object3D[ngtrMeshCollider]", inputs: { colliders: { classPropertyName: "colliders", publicName: "ngtrMeshCollider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
31
31
|
<ng-content />
|
|
32
32
|
@for (childColliderOption of childColliderOptions(); track $index) {
|
|
33
33
|
<ngt-object3D
|
|
@@ -42,7 +42,7 @@ export class NgtrMeshCollider {
|
|
|
42
42
|
}
|
|
43
43
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgtrAnyCollider, selector: "ngt-object3D[ngtrCollider]", inputs: ["position", "rotation", "scale", "quaternion", "userData", "name", "options", "ngtrCollider", "args"], outputs: ["ngtrColliderChange", "argsChange", "collisionEnter", "collisionExit", "intersectionEnter", "intersectionExit", "contactForce"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtrMeshCollider, decorators: [{
|
|
46
46
|
type: Component,
|
|
47
47
|
args: [{
|
|
48
48
|
selector: 'ngt-object3D[ngtrMeshCollider]',
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
66
66
|
imports: [NgtrAnyCollider],
|
|
67
67
|
}]
|
|
68
68
|
}], ctorParameters: () => [] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1jb2xsaWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcmFwaWVyL3NyYy9saWIvbWVzaC1jb2xsaWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUNMLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBdUJoRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLFNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUE0QixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFFckYsU0FBUyxHQUFHLE1BQU0sQ0FBdUIsVUFBVSxDQUFDLENBQUM7SUFDckQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBCLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDOUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xELGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFOUMsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFakMsMEJBQTBCO1FBQzFCLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNCLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckYsQ0FBQyxDQUFDLENBQUM7SUFFSDtRQUNDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDMUUsQ0FBQzt1R0F6QlcsZ0JBQWdCOzJGQUFoQixnQkFBZ0IsZ1BBbEJsQjs7Ozs7Ozs7Ozs7OztFQWFULDREQUdTLGVBQWU7OzJGQUViLGdCQUFnQjtrQkFyQjVCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztFQWFUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZUFBZSxDQUFDO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGV4dGVuZCwgZ2V0TG9jYWxTdGF0ZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgT2JqZWN0M0QgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RyUGh5c2ljcyB9IGZyb20gJy4vcGh5c2ljcyc7XG5pbXBvcnQgeyBOZ3RyQW55Q29sbGlkZXIsIE5ndHJSaWdpZEJvZHkgfSBmcm9tICcuL3JpZ2lkLWJvZHknO1xuaW1wb3J0IHsgTmd0clJpZ2lkQm9keUF1dG9Db2xsaWRlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29sbGlkZXJPcHRpb25zIH0gZnJvbSAnLi91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndC1vYmplY3QzRFtuZ3RyTWVzaENvbGxpZGVyXScsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRAZm9yIChjaGlsZENvbGxpZGVyT3B0aW9uIG9mIGNoaWxkQ29sbGlkZXJPcHRpb25zKCk7IHRyYWNrICRpbmRleCkge1xuXHRcdFx0PG5ndC1vYmplY3QzRFxuXHRcdFx0XHRbbmd0ckNvbGxpZGVyXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2hhcGVcIlxuXHRcdFx0XHRbYXJnc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmFyZ3NcIlxuXHRcdFx0XHRbcG9zaXRpb25dPVwiY2hpbGRDb2xsaWRlck9wdGlvbi5wb3NpdGlvblwiXG5cdFx0XHRcdFtyb3RhdGlvbl09XCJjaGlsZENvbGxpZGVyT3B0aW9uLnJvdGF0aW9uXCJcblx0XHRcdFx0W3NjYWxlXT1cImNoaWxkQ29sbGlkZXJPcHRpb24uc2NhbGVcIlxuXHRcdFx0XHRbbmFtZV09XCJvYmplY3RSZWYubmF0aXZlRWxlbWVudC5uYW1lICsgJy1tZXNoLWNvbGxpZGVyLScgKyAkaW5kZXhcIlxuXHRcdFx0XHRbb3B0aW9uc109XCJjaGlsZENvbGxpZGVyT3B0aW9uLmNvbGxpZGVyT3B0aW9uc1wiXG5cdFx0XHQvPlxuXHRcdH1cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHJBbnlDb2xsaWRlcl0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHJNZXNoQ29sbGlkZXIge1xuXHRjb2xsaWRlcnMgPSBpbnB1dC5yZXF1aXJlZDxOZ3RyUmlnaWRCb2R5QXV0b0NvbGxpZGVyPih7IGFsaWFzOiAnbmd0ck1lc2hDb2xsaWRlcicgfSk7XG5cblx0b2JqZWN0UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8T2JqZWN0M0Q+PihFbGVtZW50UmVmKTtcblx0cmlnaWRCb2R5ID0gaW5qZWN0KE5ndHJSaWdpZEJvZHkpO1xuXHRwaHlzaWNzID0gaW5qZWN0KE5ndHJQaHlzaWNzKTtcblxuXHRwcm90ZWN0ZWQgY2hpbGRDb2xsaWRlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgcmlnaWRCb2R5T3B0aW9ucyA9IHRoaXMucmlnaWRCb2R5Lm9wdGlvbnMoKTtcblx0XHRyaWdpZEJvZHlPcHRpb25zLmNvbGxpZGVycyA9IHRoaXMuY29sbGlkZXJzKCk7XG5cblx0XHRjb25zdCBvYmplY3RMb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZSh0aGlzLm9iamVjdFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHRpZiAoIW9iamVjdExvY2FsU3RhdGUpIHJldHVybiBbXTtcblxuXHRcdC8vIHRyYWNrIG9iamVjdCdzIGNoaWxkcmVuXG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5ub25PYmplY3RzKCk7XG5cdFx0b2JqZWN0TG9jYWxTdGF0ZS5vYmplY3RzKCk7XG5cblx0XHRyZXR1cm4gY3JlYXRlQ29sbGlkZXJPcHRpb25zKHRoaXMub2JqZWN0UmVmLm5hdGl2ZUVsZW1lbnQsIHJpZ2lkQm9keU9wdGlvbnMsIGZhbHNlKTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgT2JqZWN0M0QgfSk7XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YSA/Pz0ge307XG5cdFx0dGhpcy5vYmplY3RSZWYubmF0aXZlRWxlbWVudC51c2VyRGF0YVsnbmd0clJhcGllclR5cGUnXSA9ICdNZXNoQ29sbGlkZXInO1xuXHR9XG59XG4iXX0=
|