@esotericsoftware/spine-webgl 4.2.117 → 4.3.1
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/dist/AssetManager.d.ts +1 -1
- package/dist/AssetManager.js +2 -4
- package/dist/Camera.js +7 -7
- package/dist/CameraController.d.ts +1 -1
- package/dist/CameraController.js +14 -14
- package/dist/GLTexture.d.ts +3 -3
- package/dist/GLTexture.js +14 -12
- package/dist/Input.d.ts +1 -1
- package/dist/Input.js +40 -39
- package/dist/LoadingScreen.d.ts +2 -2
- package/dist/LoadingScreen.js +16 -16
- package/dist/Matrix4.js +31 -31
- package/dist/Mesh.d.ts +1 -1
- package/dist/Mesh.js +15 -15
- package/dist/PolygonBatcher.d.ts +4 -4
- package/dist/PolygonBatcher.js +20 -22
- package/dist/SceneRenderer.d.ts +8 -7
- package/dist/SceneRenderer.js +44 -37
- package/dist/Shader.d.ts +1 -1
- package/dist/Shader.js +23 -23
- package/dist/ShapeRenderer.d.ts +2 -2
- package/dist/ShapeRenderer.js +38 -47
- package/dist/SkeletonDebugRenderer.d.ts +2 -3
- package/dist/SkeletonDebugRenderer.js +56 -58
- package/dist/SkeletonRenderer.d.ts +3 -4
- package/dist/SkeletonRenderer.js +59 -69
- package/dist/SpineCanvas.d.ts +2 -2
- package/dist/SpineCanvas.js +4 -4
- package/dist/Vector3.d.ts +1 -1
- package/dist/Vector3.js +8 -8
- package/dist/esm/spine-webgl.min.mjs +26 -26
- package/dist/esm/spine-webgl.mjs +8097 -6477
- package/dist/esm/spine-webgl.mjs.map +4 -4
- package/dist/iife/spine-webgl.js +8097 -6477
- package/dist/iife/spine-webgl.js.map +4 -4
- package/dist/iife/spine-webgl.min.js +26 -26
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +2 -2
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
|
-
import { Color,
|
|
29
|
+
import { ClippingAttachment, Color, MeshAttachment, PathAttachment, RegionAttachment, SkeletonBounds, Utils } from "@esotericsoftware/spine-core";
|
|
30
30
|
import { ManagedWebGLRenderingContext } from "./WebGL.js";
|
|
31
31
|
export class SkeletonDebugRenderer {
|
|
32
32
|
boneLineColor = new Color(1, 0, 0, 1);
|
|
@@ -44,12 +44,11 @@ export class SkeletonDebugRenderer {
|
|
|
44
44
|
drawPaths = true;
|
|
45
45
|
drawSkeletonXY = false;
|
|
46
46
|
drawClipping = true;
|
|
47
|
-
premultipliedAlpha = false;
|
|
48
47
|
scale = 1;
|
|
49
48
|
boneWidth = 2;
|
|
50
49
|
context;
|
|
51
50
|
bounds = new SkeletonBounds();
|
|
52
|
-
temp =
|
|
51
|
+
temp = [];
|
|
53
52
|
vertices = Utils.newFloatArray(2 * 1024);
|
|
54
53
|
static LIGHT_GRAY = new Color(192 / 255, 192 / 255, 192 / 255, 1);
|
|
55
54
|
static GREEN = new Color(0, 1, 0, 1);
|
|
@@ -57,37 +56,38 @@ export class SkeletonDebugRenderer {
|
|
|
57
56
|
this.context = context instanceof ManagedWebGLRenderingContext ? context : new ManagedWebGLRenderingContext(context);
|
|
58
57
|
}
|
|
59
58
|
draw(shapes, skeleton, ignoredBones) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
let bones = skeleton.bones;
|
|
59
|
+
const skeletonX = skeleton.x;
|
|
60
|
+
const skeletonY = skeleton.y;
|
|
61
|
+
const gl = this.context.gl;
|
|
62
|
+
shapes.setBlendMode(gl.ONE, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
63
|
+
const bones = skeleton.bones;
|
|
66
64
|
if (this.drawBones) {
|
|
67
65
|
shapes.setColor(this.boneLineColor);
|
|
68
66
|
for (let i = 0, n = bones.length; i < n; i++) {
|
|
69
|
-
|
|
67
|
+
const bone = bones[i];
|
|
70
68
|
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
|
|
71
69
|
continue;
|
|
72
70
|
if (!bone.parent)
|
|
73
71
|
continue;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
const boneApplied = bone.appliedPose;
|
|
73
|
+
const x = bone.data.length * boneApplied.a + boneApplied.worldX;
|
|
74
|
+
const y = bone.data.length * boneApplied.c + boneApplied.worldY;
|
|
75
|
+
shapes.rectLine(true, boneApplied.worldX, boneApplied.worldY, x, y, this.boneWidth * this.scale);
|
|
77
76
|
}
|
|
78
77
|
if (this.drawSkeletonXY)
|
|
79
78
|
shapes.x(skeletonX, skeletonY, 4 * this.scale);
|
|
80
79
|
}
|
|
81
80
|
if (this.drawRegionAttachments) {
|
|
82
81
|
shapes.setColor(this.attachmentLineColor);
|
|
83
|
-
|
|
82
|
+
const slots = skeleton.slots;
|
|
84
83
|
for (let i = 0, n = slots.length; i < n; i++) {
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
const slot = slots[i];
|
|
85
|
+
if (!slot.bone.active)
|
|
86
|
+
continue;
|
|
87
|
+
const attachment = slot.appliedPose.attachment;
|
|
87
88
|
if (attachment instanceof RegionAttachment) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
regionAttachment.computeWorldVertices(slot, vertices, 0, 2);
|
|
89
|
+
const vertices = this.vertices;
|
|
90
|
+
attachment.computeWorldVertices(slot, attachment.getOffsets(slot.appliedPose), vertices, 0, 2);
|
|
91
91
|
shapes.line(vertices[0], vertices[1], vertices[2], vertices[3]);
|
|
92
92
|
shapes.line(vertices[2], vertices[3], vertices[4], vertices[5]);
|
|
93
93
|
shapes.line(vertices[4], vertices[5], vertices[6], vertices[7]);
|
|
@@ -96,23 +96,22 @@ export class SkeletonDebugRenderer {
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
if (this.drawMeshHull || this.drawMeshTriangles) {
|
|
99
|
-
|
|
99
|
+
const slots = skeleton.slots;
|
|
100
100
|
for (let i = 0, n = slots.length; i < n; i++) {
|
|
101
|
-
|
|
101
|
+
const slot = slots[i];
|
|
102
102
|
if (!slot.bone.active)
|
|
103
103
|
continue;
|
|
104
|
-
|
|
104
|
+
const attachment = slot.appliedPose.attachment;
|
|
105
105
|
if (!(attachment instanceof MeshAttachment))
|
|
106
106
|
continue;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
let
|
|
111
|
-
let hullLength = mesh.hullLength;
|
|
107
|
+
const vertices = this.vertices;
|
|
108
|
+
attachment.computeWorldVertices(skeleton, slot, 0, attachment.worldVerticesLength, vertices, 0, 2);
|
|
109
|
+
const triangles = attachment.triangles;
|
|
110
|
+
let hullLength = attachment.hullLength;
|
|
112
111
|
if (this.drawMeshTriangles) {
|
|
113
112
|
shapes.setColor(this.triangleLineColor);
|
|
114
113
|
for (let ii = 0, nn = triangles.length; ii < nn; ii += 3) {
|
|
115
|
-
|
|
114
|
+
const v1 = triangles[ii] * 2, v2 = triangles[ii + 1] * 2, v3 = triangles[ii + 2] * 2;
|
|
116
115
|
shapes.triangle(false, vertices[v1], vertices[v1 + 1], //
|
|
117
116
|
vertices[v2], vertices[v2 + 1], //
|
|
118
117
|
vertices[v3], vertices[v3 + 1] //
|
|
@@ -124,7 +123,7 @@ export class SkeletonDebugRenderer {
|
|
|
124
123
|
hullLength = (hullLength >> 1) * 2;
|
|
125
124
|
let lastX = vertices[hullLength - 2], lastY = vertices[hullLength - 1];
|
|
126
125
|
for (let ii = 0, nn = hullLength; ii < nn; ii += 2) {
|
|
127
|
-
|
|
126
|
+
const x = vertices[ii], y = vertices[ii + 1];
|
|
128
127
|
shapes.line(x, y, lastX, lastY);
|
|
129
128
|
lastX = x;
|
|
130
129
|
lastY = y;
|
|
@@ -133,36 +132,35 @@ export class SkeletonDebugRenderer {
|
|
|
133
132
|
}
|
|
134
133
|
}
|
|
135
134
|
if (this.drawBoundingBoxes) {
|
|
136
|
-
|
|
135
|
+
const bounds = this.bounds;
|
|
137
136
|
bounds.update(skeleton, true);
|
|
138
137
|
shapes.setColor(this.aabbColor);
|
|
139
138
|
shapes.rect(false, bounds.minX, bounds.minY, bounds.getWidth(), bounds.getHeight());
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
const polygons = bounds.polygons;
|
|
140
|
+
const boxes = bounds.boundingBoxes;
|
|
142
141
|
for (let i = 0, n = polygons.length; i < n; i++) {
|
|
143
|
-
|
|
142
|
+
const polygon = polygons[i];
|
|
144
143
|
shapes.setColor(boxes[i].color);
|
|
145
144
|
shapes.polygon(polygon, 0, polygon.length);
|
|
146
145
|
}
|
|
147
146
|
}
|
|
148
147
|
if (this.drawPaths) {
|
|
149
|
-
|
|
148
|
+
const slots = skeleton.slots;
|
|
150
149
|
for (let i = 0, n = slots.length; i < n; i++) {
|
|
151
|
-
|
|
150
|
+
const slot = slots[i];
|
|
152
151
|
if (!slot.bone.active)
|
|
153
152
|
continue;
|
|
154
|
-
|
|
153
|
+
const attachment = slot.appliedPose.attachment;
|
|
155
154
|
if (!(attachment instanceof PathAttachment))
|
|
156
155
|
continue;
|
|
157
|
-
let
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
let color = this.pathColor;
|
|
156
|
+
let nn = attachment.worldVerticesLength;
|
|
157
|
+
const world = this.temp = Utils.setArraySize(this.temp, nn, 0);
|
|
158
|
+
attachment.computeWorldVertices(skeleton, slot, 0, nn, world, 0, 2);
|
|
159
|
+
const color = this.pathColor;
|
|
162
160
|
let x1 = world[2], y1 = world[3], x2 = 0, y2 = 0;
|
|
163
|
-
if (
|
|
161
|
+
if (attachment.closed) {
|
|
164
162
|
shapes.setColor(color);
|
|
165
|
-
|
|
163
|
+
const cx1 = world[0], cy1 = world[1], cx2 = world[nn - 2], cy2 = world[nn - 1];
|
|
166
164
|
x2 = world[nn - 4];
|
|
167
165
|
y2 = world[nn - 3];
|
|
168
166
|
shapes.curve(x1, y1, cx1, cy1, cx2, cy2, x2, y2, 32);
|
|
@@ -172,7 +170,7 @@ export class SkeletonDebugRenderer {
|
|
|
172
170
|
}
|
|
173
171
|
nn -= 4;
|
|
174
172
|
for (let ii = 4; ii < nn; ii += 6) {
|
|
175
|
-
|
|
173
|
+
const cx1 = world[ii], cy1 = world[ii + 1], cx2 = world[ii + 2], cy2 = world[ii + 3];
|
|
176
174
|
x2 = world[ii + 4];
|
|
177
175
|
y2 = world[ii + 5];
|
|
178
176
|
shapes.setColor(color);
|
|
@@ -188,31 +186,31 @@ export class SkeletonDebugRenderer {
|
|
|
188
186
|
if (this.drawBones) {
|
|
189
187
|
shapes.setColor(this.boneOriginColor);
|
|
190
188
|
for (let i = 0, n = bones.length; i < n; i++) {
|
|
191
|
-
|
|
189
|
+
const bone = bones[i];
|
|
192
190
|
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
|
|
193
191
|
continue;
|
|
194
|
-
|
|
192
|
+
const boneApplied = bone.appliedPose;
|
|
193
|
+
shapes.circle(true, boneApplied.worldX, boneApplied.worldY, 3 * this.scale, this.boneOriginColor, 8);
|
|
195
194
|
}
|
|
196
195
|
}
|
|
197
196
|
if (this.drawClipping) {
|
|
198
|
-
|
|
197
|
+
const slots = skeleton.slots;
|
|
199
198
|
shapes.setColor(this.clipColor);
|
|
200
199
|
for (let i = 0, n = slots.length; i < n; i++) {
|
|
201
|
-
|
|
200
|
+
const slot = slots[i];
|
|
202
201
|
if (!slot.bone.active)
|
|
203
202
|
continue;
|
|
204
|
-
|
|
203
|
+
const attachment = slot.appliedPose.attachment;
|
|
205
204
|
if (!(attachment instanceof ClippingAttachment))
|
|
206
205
|
continue;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
clip.computeWorldVertices(slot, 0, nn, world, 0, 2);
|
|
206
|
+
const nn = attachment.worldVerticesLength;
|
|
207
|
+
const world = this.temp = Utils.setArraySize(this.temp, nn, 0);
|
|
208
|
+
attachment.computeWorldVertices(skeleton, slot, 0, nn, world, 0, 2);
|
|
211
209
|
for (let i = 0, n = world.length; i < n; i += 2) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
const x = world[i];
|
|
211
|
+
const y = world[i + 1];
|
|
212
|
+
const x2 = world[(i + 2) % world.length];
|
|
213
|
+
const y2 = world[(i + 3) % world.length];
|
|
216
214
|
shapes.line(x, y, x2, y2);
|
|
217
215
|
}
|
|
218
216
|
}
|
|
@@ -221,4 +219,4 @@ export class SkeletonDebugRenderer {
|
|
|
221
219
|
dispose() {
|
|
222
220
|
}
|
|
223
221
|
}
|
|
224
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EZWJ1Z1JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uRGVidWdSZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFjLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFZLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4SyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUQsTUFBTSxPQUFPLHFCQUFxQjtJQUNqQyxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsZUFBZSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLG1CQUFtQixHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLGlCQUFpQixHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIscUJB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QkFBRSxTQUFTO2dCQUMxRCxJQUFJLElBQUksR0FBdUIsVUFBVSxDQUFDO2dCQUMxQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxPQUFPO0lBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgRGlzcG9zYWJsZSwgQ29sb3IsIFNrZWxldG9uQm91bmRzLCBVdGlscywgU2tlbGV0b24sIFJlZ2lvbkF0dGFjaG1lbnQsIE1lc2hBdHRhY2htZW50LCBQYXRoQXR0YWNobWVudCwgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcbmltcG9ydCB7IFNoYXBlUmVuZGVyZXIgfSBmcm9tIFwiLi9TaGFwZVJlbmRlcmVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNrZWxldG9uRGVidWdSZW5kZXJlciBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuXHRib25lTGluZUNvbG9yID0gbmV3IENvbG9yKDEsIDAsIDAsIDEpO1xuXHRib25lT3JpZ2luQ29sb3IgPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cdGF0dGFjaG1lbnRMaW5lQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMSwgMC41KTtcblx0dHJpYW5nbGVMaW5lQ29sb3IgPSBuZXcgQ29sb3IoMSwgMC42NCwgMCwgMC41KTtcblx0cGF0aENvbG9yID0gbmV3IENvbG9yKCkuc2V0RnJvbVN0cmluZyhcIkZGN0YwMFwiKTtcblx0Y2xpcENvbG9yID0gbmV3IENvbG9yKDAuOCwgMCwgMCwgMik7XG5cdGFhYmJDb2xvciA9IG5ldyBDb2xvcigwLCAxLCAwLCAwLjUpO1xuXHRkcmF3Qm9uZXMgPSB0cnVlO1xuXHRkcmF3UmVnaW9uQXR0YWNobWVudHMgPSB0cnVlO1xuXHRkcmF3Qm91bmRpbmdCb3hlcyA9IHRydWU7XG5cdGRyYXdNZXNoSHVsbCA9IHRydWU7XG5cdGRyYXdNZXNoVHJpYW5nbGVzID0gdHJ1ZTtcblx0ZHJhd1BhdGhzID0gdHJ1ZTtcblx0ZHJhd1NrZWxldG9uWFkgPSBmYWxzZTtcblx0ZHJhd0NsaXBwaW5nID0gdHJ1ZTtcblx0cHJlbXVsdGlwbGllZEFscGhhID0gZmFsc2U7XG5cdHNjYWxlID0gMTtcblx0Ym9uZVdpZHRoID0gMjtcblxuXHRwcml2YXRlIGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdHByaXZhdGUgYm91bmRzID0gbmV3IFNrZWxldG9uQm91bmRzKCk7XG5cdHByaXZhdGUgdGVtcCA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG5cdHByaXZhdGUgdmVydGljZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KDIgKiAxMDI0KTtcblx0cHJpdmF0ZSBzdGF0aWMgTElHSFRfR1JBWSA9IG5ldyBDb2xvcigxOTIgLyAyNTUsIDE5MiAvIDI1NSwgMTkyIC8gMjU1LCAxKTtcblx0cHJpdmF0ZSBzdGF0aWMgR1JFRU4gPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cblx0Y29uc3RydWN0b3IgKGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQgfCBXZWJHTFJlbmRlcmluZ0NvbnRleHQpIHtcblx0XHR0aGlzLmNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCA/IGNvbnRleHQgOiBuZXcgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dChjb250ZXh0KTtcblx0fVxuXG5cdGRyYXcgKHNoYXBlczogU2hhcGVSZW5kZXJlciwgc2tlbGV0b246IFNrZWxldG9uLCBpZ25vcmVkQm9uZXM/OiBBcnJheTxzdHJpbmc+KSB7XG5cdFx0bGV0IHNrZWxldG9uWCA9IHNrZWxldG9uLng7XG5cdFx0bGV0IHNrZWxldG9uWSA9IHNrZWxldG9uLnk7XG5cdFx0bGV0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdGxldCBzcmNGdW5jID0gdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGEgPyBnbC5PTkUgOiBnbC5TUkNfQUxQSEE7XG5cdFx0c2hhcGVzLnNldEJsZW5kTW9kZShzcmNGdW5jLCBnbC5PTkUsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpO1xuXG5cdFx0bGV0IGJvbmVzID0gc2tlbGV0b24uYm9uZXM7XG5cdFx0aWYgKHRoaXMuZHJhd0JvbmVzKSB7XG5cdFx0XHRzaGFwZXMuc2V0Q29sb3IodGhpcy5ib25lTGluZUNvbG9yKTtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdGlmIChpZ25vcmVkQm9uZXMgJiYgaWdub3JlZEJvbmVzLmluZGV4T2YoYm9uZS5kYXRhLm5hbWUpID4gLTEpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZiAoIWJvbmUucGFyZW50KSBjb250aW51ZTtcblx0XHRcdFx0bGV0IHggPSBib25lLmRhdGEubGVuZ3RoICogYm9uZS5hICsgYm9uZS53b3JsZFg7XG5cdFx0XHRcdGxldCB5ID0gYm9uZS5kYXRhLmxlbmd0aCAqIGJvbmUuYyArIGJvbmUud29ybGRZO1xuXHRcdFx0XHRzaGFwZXMucmVjdExpbmUodHJ1ZSwgYm9uZS53b3JsZFgsIGJvbmUud29ybGRZLCB4LCB5LCB0aGlzLmJvbmVXaWR0aCAqIHRoaXMuc2NhbGUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZHJhd1NrZWxldG9uWFkpIHNoYXBlcy54KHNrZWxldG9uWCwgc2tlbGV0b25ZLCA0ICogdGhpcy5zY2FsZSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZHJhd1JlZ2lvbkF0dGFjaG1lbnRzKSB7XG5cdFx0XHRzaGFwZXMuc2V0Q29sb3IodGhpcy5hdHRhY2htZW50TGluZUNvbG9yKTtcblx0XHRcdGxldCBzbG90cyA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50KSB7XG5cdFx0XHRcdFx0bGV0IHJlZ2lvbkF0dGFjaG1lbnQgPSA8UmVnaW9uQXR0YWNobWVudD5hdHRhY2htZW50O1xuXHRcdFx0XHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cdFx0XHRcdFx0cmVnaW9uQXR0YWNobWVudC5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUodmVydGljZXNbMF0sIHZlcnRpY2VzWzFdLCB2ZXJ0aWNlc1syXSwgdmVydGljZXNbM10pO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHZlcnRpY2VzWzJdLCB2ZXJ0aWNlc1szXSwgdmVydGljZXNbNF0sIHZlcnRpY2VzWzVdKTtcblx0XHRcdFx0XHRzaGFwZXMubGluZSh2ZXJ0aWNlc1s0XSwgdmVydGljZXNbNV0sIHZlcnRpY2VzWzZdLCB2ZXJ0aWNlc1s3XSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUodmVydGljZXNbNl0sIHZlcnRpY2VzWzddLCB2ZXJ0aWNlc1swXSwgdmVydGljZXNbMV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZHJhd01lc2hIdWxsIHx8IHRoaXMuZHJhd01lc2hUcmlhbmdsZXMpIHtcblx0XHRcdGxldCBzbG90cyA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSkgY29udGludWU7XG5cdFx0XHRcdGxldCBtZXNoID0gPE1lc2hBdHRhY2htZW50PmF0dGFjaG1lbnQ7XG5cdFx0XHRcdGxldCB2ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cdFx0XHRcdG1lc2guY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgMCwgbWVzaC53b3JsZFZlcnRpY2VzTGVuZ3RoLCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdGxldCB0cmlhbmdsZXMgPSBtZXNoLnRyaWFuZ2xlcztcblx0XHRcdFx0bGV0IGh1bGxMZW5ndGggPSBtZXNoLmh1bGxMZW5ndGg7XG5cdFx0XHRcdGlmICh0aGlzLmRyYXdNZXNoVHJpYW5nbGVzKSB7XG5cdFx0XHRcdFx0c2hhcGVzLnNldENvbG9yKHRoaXMudHJpYW5nbGVMaW5lQ29sb3IpO1xuXHRcdFx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSB0cmlhbmdsZXMubGVuZ3RoOyBpaSA8IG5uOyBpaSArPSAzKSB7XG5cdFx0XHRcdFx0XHRsZXQgdjEgPSB0cmlhbmdsZXNbaWldICogMiwgdjIgPSB0cmlhbmdsZXNbaWkgKyAxXSAqIDIsIHYzID0gdHJpYW5nbGVzW2lpICsgMl0gKiAyO1xuXHRcdFx0XHRcdFx0c2hhcGVzLnRyaWFuZ2xlKGZhbHNlLCB2ZXJ0aWNlc1t2MV0sIHZlcnRpY2VzW3YxICsgMV0sIC8vXG5cdFx0XHRcdFx0XHRcdHZlcnRpY2VzW3YyXSwgdmVydGljZXNbdjIgKyAxXSwgLy9cblx0XHRcdFx0XHRcdFx0dmVydGljZXNbdjNdLCB2ZXJ0aWNlc1t2MyArIDFdIC8vXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5kcmF3TWVzaEh1bGwgJiYgaHVsbExlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzaGFwZXMuc2V0Q29sb3IodGhpcy5hdHRhY2htZW50TGluZUNvbG9yKTtcblx0XHRcdFx0XHRodWxsTGVuZ3RoID0gKGh1bGxMZW5ndGggPj4gMSkgKiAyO1xuXHRcdFx0XHRcdGxldCBsYXN0WCA9IHZlcnRpY2VzW2h1bGxMZW5ndGggLSAyXSwgbGFzdFkgPSB2ZXJ0aWNlc1todWxsTGVuZ3RoIC0gMV07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGh1bGxMZW5ndGg7IGlpIDwgbm47IGlpICs9IDIpIHtcblx0XHRcdFx0XHRcdGxldCB4ID0gdmVydGljZXNbaWldLCB5ID0gdmVydGljZXNbaWkgKyAxXTtcblx0XHRcdFx0XHRcdHNoYXBlcy5saW5lKHgsIHksIGxhc3RYLCBsYXN0WSk7XG5cdFx0XHRcdFx0XHRsYXN0WCA9IHg7XG5cdFx0XHRcdFx0XHRsYXN0WSA9IHk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZHJhd0JvdW5kaW5nQm94ZXMpIHtcblx0XHRcdGxldCBib3VuZHMgPSB0aGlzLmJvdW5kcztcblx0XHRcdGJvdW5kcy51cGRhdGUoc2tlbGV0b24sIHRydWUpO1xuXHRcdFx0c2hhcGVzLnNldENvbG9yKHRoaXMuYWFiYkNvbG9yKTtcblx0XHRcdHNoYXBlcy5yZWN0KGZhbHNlLCBib3VuZHMubWluWCwgYm91bmRzLm1pblksIGJvdW5kcy5nZXRXaWR0aCgpLCBib3VuZHMuZ2V0SGVpZ2h0KCkpO1xuXHRcdFx0bGV0IHBvbHlnb25zID0gYm91bmRzLnBvbHlnb25zO1xuXHRcdFx0bGV0IGJveGVzID0gYm91bmRzLmJvdW5kaW5nQm94ZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBvbHlnb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0XHRsZXQgcG9seWdvbiA9IHBvbHlnb25zW2ldO1xuXHRcdFx0XHRzaGFwZXMuc2V0Q29sb3IoYm94ZXNbaV0uY29sb3IpO1xuXHRcdFx0XHRzaGFwZXMucG9seWdvbihwb2x5Z29uLCAwLCBwb2x5Z29uLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZHJhd1BhdGhzKSB7XG5cdFx0XHRsZXQgc2xvdHMgPSBza2VsZXRvbi5zbG90cztcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGxldCBzbG90ID0gc2xvdHNbaV07XG5cdFx0XHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgY29udGludWU7XG5cdFx0XHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0XHRcdGlmICghKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBQYXRoQXR0YWNobWVudCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRsZXQgcGF0aCA9IDxQYXRoQXR0YWNobWVudD5hdHRhY2htZW50O1xuXHRcdFx0XHRsZXQgbm4gPSBwYXRoLndvcmxkVmVydGljZXNMZW5ndGg7XG5cdFx0XHRcdGxldCB3b3JsZCA9IHRoaXMudGVtcCA9IFV0aWxzLnNldEFycmF5U2l6ZSh0aGlzLnRlbXAsIG5uLCAwKTtcblx0XHRcdFx0cGF0aC5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCAwLCBubiwgd29ybGQsIDAsIDIpO1xuXHRcdFx0XHRsZXQgY29sb3IgPSB0aGlzLnBhdGhDb2xvcjtcblx0XHRcdFx0bGV0IHgxID0gd29ybGRbMl0sIHkxID0gd29ybGRbM10sIHgyID0gMCwgeTIgPSAwO1xuXHRcdFx0XHRpZiAocGF0aC5jbG9zZWQpIHtcblx0XHRcdFx0XHRzaGFwZXMuc2V0Q29sb3IoY29sb3IpO1xuXHRcdFx0XHRcdGxldCBjeDEgPSB3b3JsZFswXSwgY3kxID0gd29ybGRbMV0sIGN4MiA9IHdvcmxkW25uIC0gMl0sIGN5MiA9IHdvcmxkW25uIC0gMV07XG5cdFx0XHRcdFx0eDIgPSB3b3JsZFtubiAtIDRdO1xuXHRcdFx0XHRcdHkyID0gd29ybGRbbm4gLSAzXTtcblx0XHRcdFx0XHRzaGFwZXMuY3VydmUoeDEsIHkxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHgyLCB5MiwgMzIpO1xuXHRcdFx0XHRcdHNoYXBlcy5zZXRDb2xvcihTa2VsZXRvbkRlYnVnUmVuZGVyZXIuTElHSFRfR1JBWSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDEsIHkxLCBjeDEsIGN5MSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDIsIHkyLCBjeDIsIGN5Mik7XG5cdFx0XHRcdH1cblx0XHRcdFx0bm4gLT0gNDtcblx0XHRcdFx0Zm9yIChsZXQgaWkgPSA0OyBpaSA8IG5uOyBpaSArPSA2KSB7XG5cdFx0XHRcdFx0bGV0IGN4MSA9IHdvcmxkW2lpXSwgY3kxID0gd29ybGRbaWkgKyAxXSwgY3gyID0gd29ybGRbaWkgKyAyXSwgY3kyID0gd29ybGRbaWkgKyAzXTtcblx0XHRcdFx0XHR4MiA9IHdvcmxkW2lpICsgNF07XG5cdFx0XHRcdFx0eTIgPSB3b3JsZFtpaSArIDVdO1xuXHRcdFx0XHRcdHNoYXBlcy5zZXRDb2xvcihjb2xvcik7XG5cdFx0XHRcdFx0c2hhcGVzLmN1cnZlKHgxLCB5MSwgY3gxLCBjeTEsIGN4MiwgY3kyLCB4MiwgeTIsIDMyKTtcblx0XHRcdFx0XHRzaGFwZXMuc2V0Q29sb3IoU2tlbGV0b25EZWJ1Z1JlbmRlcmVyLkxJR0hUX0dSQVkpO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHgxLCB5MSwgY3gxLCBjeTEpO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHgyLCB5MiwgY3gyLCBjeTIpO1xuXHRcdFx0XHRcdHgxID0geDI7XG5cdFx0XHRcdFx0eTEgPSB5Mjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRyYXdCb25lcykge1xuXHRcdFx0c2hhcGVzLnNldENvbG9yKHRoaXMuYm9uZU9yaWdpbkNvbG9yKTtcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRcdGlmIChpZ25vcmVkQm9uZXMgJiYgaWdub3JlZEJvbmVzLmluZGV4T2YoYm9uZS5kYXRhLm5hbWUpID4gLTEpIGNvbnRpbnVlO1xuXHRcdFx0XHRzaGFwZXMuY2lyY2xlKHRydWUsIGJvbmUud29ybGRYLCBib25lLndvcmxkWSwgMyAqIHRoaXMuc2NhbGUsIHRoaXMuYm9uZU9yaWdpbkNvbG9yLCA4KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5kcmF3Q2xpcHBpbmcpIHtcblx0XHRcdGxldCBzbG90cyA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0c2hhcGVzLnNldENvbG9yKHRoaXMuY2xpcENvbG9yKVxuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIENsaXBwaW5nQXR0YWNobWVudCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRsZXQgY2xpcCA9IDxDbGlwcGluZ0F0dGFjaG1lbnQ+YXR0YWNobWVudDtcblx0XHRcdFx0bGV0IG5uID0gY2xpcC53b3JsZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHRsZXQgd29ybGQgPSB0aGlzLnRlbXAgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy50ZW1wLCBubiwgMCk7XG5cdFx0XHRcdGNsaXAuY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgMCwgbm4sIHdvcmxkLCAwLCAyKTtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB3b3JsZC5sZW5ndGg7IGkgPCBuOyBpICs9IDIpIHtcblx0XHRcdFx0XHRsZXQgeCA9IHdvcmxkW2ldO1xuXHRcdFx0XHRcdGxldCB5ID0gd29ybGRbaSArIDFdO1xuXHRcdFx0XHRcdGxldCB4MiA9IHdvcmxkWyhpICsgMikgJSB3b3JsZC5sZW5ndGhdO1xuXHRcdFx0XHRcdGxldCB5MiA9IHdvcmxkWyhpICsgMykgJSB3b3JsZC5sZW5ndGhdO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHgsIHksIHgyLCB5Mik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRkaXNwb3NlICgpIHtcblx0fVxufVxuIl19
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EZWJ1Z1JlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NrZWxldG9uRGVidWdSZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBbUIsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBaUIsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxMLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2pDLGFBQWEsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxlQUFlLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsbUJBQW1CLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUMsaUJBQWlCLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixx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Z0JBQzFELE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxVQUFVLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25CLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pDLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDRixDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRCxPQUFPO0lBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQ2xpcHBpbmdBdHRhY2htZW50LCBDb2xvciwgdHlwZSBEaXNwb3NhYmxlLCBNZXNoQXR0YWNobWVudCwgUGF0aEF0dGFjaG1lbnQsIFJlZ2lvbkF0dGFjaG1lbnQsIHR5cGUgU2tlbGV0b24sIFNrZWxldG9uQm91bmRzLCBVdGlscyB9IGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IFNoYXBlUmVuZGVyZXIgfSBmcm9tIFwiLi9TaGFwZVJlbmRlcmVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuZXhwb3J0IGNsYXNzIFNrZWxldG9uRGVidWdSZW5kZXJlciBpbXBsZW1lbnRzIERpc3Bvc2FibGUge1xuXHRib25lTGluZUNvbG9yID0gbmV3IENvbG9yKDEsIDAsIDAsIDEpO1xuXHRib25lT3JpZ2luQ29sb3IgPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cdGF0dGFjaG1lbnRMaW5lQ29sb3IgPSBuZXcgQ29sb3IoMCwgMCwgMSwgMC41KTtcblx0dHJpYW5nbGVMaW5lQ29sb3IgPSBuZXcgQ29sb3IoMSwgMC42NCwgMCwgMC41KTtcblx0cGF0aENvbG9yID0gbmV3IENvbG9yKCkuc2V0RnJvbVN0cmluZyhcIkZGN0YwMFwiKTtcblx0Y2xpcENvbG9yID0gbmV3IENvbG9yKDAuOCwgMCwgMCwgMik7XG5cdGFhYmJDb2xvciA9IG5ldyBDb2xvcigwLCAxLCAwLCAwLjUpO1xuXHRkcmF3Qm9uZXMgPSB0cnVlO1xuXHRkcmF3UmVnaW9uQXR0YWNobWVudHMgPSB0cnVlO1xuXHRkcmF3Qm91bmRpbmdCb3hlcyA9IHRydWU7XG5cdGRyYXdNZXNoSHVsbCA9IHRydWU7XG5cdGRyYXdNZXNoVHJpYW5nbGVzID0gdHJ1ZTtcblx0ZHJhd1BhdGhzID0gdHJ1ZTtcblx0ZHJhd1NrZWxldG9uWFkgPSBmYWxzZTtcblx0ZHJhd0NsaXBwaW5nID0gdHJ1ZTtcblx0c2NhbGUgPSAxO1xuXHRib25lV2lkdGggPSAyO1xuXG5cdHByaXZhdGUgY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dDtcblx0cHJpdmF0ZSBib3VuZHMgPSBuZXcgU2tlbGV0b25Cb3VuZHMoKTtcblx0cHJpdmF0ZSB0ZW1wID0gW10gYXMgbnVtYmVyW107XG5cdHByaXZhdGUgdmVydGljZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KDIgKiAxMDI0KTtcblx0cHJpdmF0ZSBzdGF0aWMgTElHSFRfR1JBWSA9IG5ldyBDb2xvcigxOTIgLyAyNTUsIDE5MiAvIDI1NSwgMTkyIC8gMjU1LCAxKTtcblx0cHJpdmF0ZSBzdGF0aWMgR1JFRU4gPSBuZXcgQ29sb3IoMCwgMSwgMCwgMSk7XG5cblx0Y29uc3RydWN0b3IgKGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQgfCBXZWJHTFJlbmRlcmluZ0NvbnRleHQpIHtcblx0XHR0aGlzLmNvbnRleHQgPSBjb250ZXh0IGluc3RhbmNlb2YgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCA/IGNvbnRleHQgOiBuZXcgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dChjb250ZXh0KTtcblx0fVxuXG5cdGRyYXcgKHNoYXBlczogU2hhcGVSZW5kZXJlciwgc2tlbGV0b246IFNrZWxldG9uLCBpZ25vcmVkQm9uZXM/OiBBcnJheTxzdHJpbmc+KSB7XG5cdFx0Y29uc3Qgc2tlbGV0b25YID0gc2tlbGV0b24ueDtcblx0XHRjb25zdCBza2VsZXRvblkgPSBza2VsZXRvbi55O1xuXHRcdGNvbnN0IGdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdHNoYXBlcy5zZXRCbGVuZE1vZGUoZ2wuT05FLCBnbC5PTkUsIGdsLk9ORV9NSU5VU19TUkNfQUxQSEEpO1xuXG5cdFx0Y29uc3QgYm9uZXMgPSBza2VsZXRvbi5ib25lcztcblx0XHRpZiAodGhpcy5kcmF3Qm9uZXMpIHtcblx0XHRcdHNoYXBlcy5zZXRDb2xvcih0aGlzLmJvbmVMaW5lQ29sb3IpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0XHRpZiAoaWdub3JlZEJvbmVzICYmIGlnbm9yZWRCb25lcy5pbmRleE9mKGJvbmUuZGF0YS5uYW1lKSA+IC0xKSBjb250aW51ZTtcblx0XHRcdFx0aWYgKCFib25lLnBhcmVudCkgY29udGludWU7XG5cdFx0XHRcdGNvbnN0IGJvbmVBcHBsaWVkID0gYm9uZS5hcHBsaWVkUG9zZTtcblx0XHRcdFx0Y29uc3QgeCA9IGJvbmUuZGF0YS5sZW5ndGggKiBib25lQXBwbGllZC5hICsgYm9uZUFwcGxpZWQud29ybGRYO1xuXHRcdFx0XHRjb25zdCB5ID0gYm9uZS5kYXRhLmxlbmd0aCAqIGJvbmVBcHBsaWVkLmMgKyBib25lQXBwbGllZC53b3JsZFk7XG5cdFx0XHRcdHNoYXBlcy5yZWN0TGluZSh0cnVlLCBib25lQXBwbGllZC53b3JsZFgsIGJvbmVBcHBsaWVkLndvcmxkWSwgeCwgeSwgdGhpcy5ib25lV2lkdGggKiB0aGlzLnNjYWxlKTtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLmRyYXdTa2VsZXRvblhZKSBzaGFwZXMueChza2VsZXRvblgsIHNrZWxldG9uWSwgNCAqIHRoaXMuc2NhbGUpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRyYXdSZWdpb25BdHRhY2htZW50cykge1xuXHRcdFx0c2hhcGVzLnNldENvbG9yKHRoaXMuYXR0YWNobWVudExpbmVDb2xvcik7XG5cdFx0XHRjb25zdCBzbG90cyA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gc2xvdC5hcHBsaWVkUG9zZS5hdHRhY2htZW50O1xuXHRcdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0XHRjb25zdCB2ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cblx0XHRcdFx0XHRhdHRhY2htZW50LmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIGF0dGFjaG1lbnQuZ2V0T2Zmc2V0cyhzbG90LmFwcGxpZWRQb3NlKSwgdmVydGljZXMsIDAsIDIpO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHZlcnRpY2VzWzBdLCB2ZXJ0aWNlc1sxXSwgdmVydGljZXNbMl0sIHZlcnRpY2VzWzNdKTtcblx0XHRcdFx0XHRzaGFwZXMubGluZSh2ZXJ0aWNlc1syXSwgdmVydGljZXNbM10sIHZlcnRpY2VzWzRdLCB2ZXJ0aWNlc1s1XSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUodmVydGljZXNbNF0sIHZlcnRpY2VzWzVdLCB2ZXJ0aWNlc1s2XSwgdmVydGljZXNbN10pO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHZlcnRpY2VzWzZdLCB2ZXJ0aWNlc1s3XSwgdmVydGljZXNbMF0sIHZlcnRpY2VzWzFdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRyYXdNZXNoSHVsbCB8fCB0aGlzLmRyYXdNZXNoVHJpYW5nbGVzKSB7XG5cdFx0XHRjb25zdCBzbG90cyA9IHNrZWxldG9uLnNsb3RzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0gc2xvdC5hcHBsaWVkUG9zZS5hdHRhY2htZW50O1xuXHRcdFx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpKSBjb250aW51ZTtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLnZlcnRpY2VzO1xuXHRcdFx0XHRhdHRhY2htZW50LmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAwLCBhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGgsIHZlcnRpY2VzLCAwLCAyKTtcblx0XHRcdFx0Y29uc3QgdHJpYW5nbGVzID0gYXR0YWNobWVudC50cmlhbmdsZXM7XG5cdFx0XHRcdGxldCBodWxsTGVuZ3RoID0gYXR0YWNobWVudC5odWxsTGVuZ3RoO1xuXHRcdFx0XHRpZiAodGhpcy5kcmF3TWVzaFRyaWFuZ2xlcykge1xuXHRcdFx0XHRcdHNoYXBlcy5zZXRDb2xvcih0aGlzLnRyaWFuZ2xlTGluZUNvbG9yKTtcblx0XHRcdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gdHJpYW5nbGVzLmxlbmd0aDsgaWkgPCBubjsgaWkgKz0gMykge1xuXHRcdFx0XHRcdFx0Y29uc3QgdjEgPSB0cmlhbmdsZXNbaWldICogMiwgdjIgPSB0cmlhbmdsZXNbaWkgKyAxXSAqIDIsIHYzID0gdHJpYW5nbGVzW2lpICsgMl0gKiAyO1xuXHRcdFx0XHRcdFx0c2hhcGVzLnRyaWFuZ2xlKGZhbHNlLCB2ZXJ0aWNlc1t2MV0sIHZlcnRpY2VzW3YxICsgMV0sIC8vXG5cdFx0XHRcdFx0XHRcdHZlcnRpY2VzW3YyXSwgdmVydGljZXNbdjIgKyAxXSwgLy9cblx0XHRcdFx0XHRcdFx0dmVydGljZXNbdjNdLCB2ZXJ0aWNlc1t2MyArIDFdIC8vXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodGhpcy5kcmF3TWVzaEh1bGwgJiYgaHVsbExlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRzaGFwZXMuc2V0Q29sb3IodGhpcy5hdHRhY2htZW50TGluZUNvbG9yKTtcblx0XHRcdFx0XHRodWxsTGVuZ3RoID0gKGh1bGxMZW5ndGggPj4gMSkgKiAyO1xuXHRcdFx0XHRcdGxldCBsYXN0WCA9IHZlcnRpY2VzW2h1bGxMZW5ndGggLSAyXSwgbGFzdFkgPSB2ZXJ0aWNlc1todWxsTGVuZ3RoIC0gMV07XG5cdFx0XHRcdFx0Zm9yIChsZXQgaWkgPSAwLCBubiA9IGh1bGxMZW5ndGg7IGlpIDwgbm47IGlpICs9IDIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHggPSB2ZXJ0aWNlc1tpaV0sIHkgPSB2ZXJ0aWNlc1tpaSArIDFdO1xuXHRcdFx0XHRcdFx0c2hhcGVzLmxpbmUoeCwgeSwgbGFzdFgsIGxhc3RZKTtcblx0XHRcdFx0XHRcdGxhc3RYID0geDtcblx0XHRcdFx0XHRcdGxhc3RZID0geTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5kcmF3Qm91bmRpbmdCb3hlcykge1xuXHRcdFx0Y29uc3QgYm91bmRzID0gdGhpcy5ib3VuZHM7XG5cdFx0XHRib3VuZHMudXBkYXRlKHNrZWxldG9uLCB0cnVlKTtcblx0XHRcdHNoYXBlcy5zZXRDb2xvcih0aGlzLmFhYmJDb2xvcik7XG5cdFx0XHRzaGFwZXMucmVjdChmYWxzZSwgYm91bmRzLm1pblgsIGJvdW5kcy5taW5ZLCBib3VuZHMuZ2V0V2lkdGgoKSwgYm91bmRzLmdldEhlaWdodCgpKTtcblx0XHRcdGNvbnN0IHBvbHlnb25zID0gYm91bmRzLnBvbHlnb25zO1xuXHRcdFx0Y29uc3QgYm94ZXMgPSBib3VuZHMuYm91bmRpbmdCb3hlcztcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gcG9seWdvbnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHBvbHlnb24gPSBwb2x5Z29uc1tpXTtcblx0XHRcdFx0c2hhcGVzLnNldENvbG9yKGJveGVzW2ldLmNvbG9yKTtcblx0XHRcdFx0c2hhcGVzLnBvbHlnb24ocG9seWdvbiwgMCwgcG9seWdvbi5sZW5ndGgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRyYXdQYXRocykge1xuXHRcdFx0Y29uc3Qgc2xvdHMgPSBza2VsZXRvbi5zbG90cztcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblx0XHRcdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIFBhdGhBdHRhY2htZW50KSkgY29udGludWU7XG5cdFx0XHRcdGxldCBubiA9IGF0dGFjaG1lbnQud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0Y29uc3Qgd29ybGQgPSB0aGlzLnRlbXAgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy50ZW1wLCBubiwgMCk7XG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDAsIG5uLCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdGNvbnN0IGNvbG9yID0gdGhpcy5wYXRoQ29sb3I7XG5cdFx0XHRcdGxldCB4MSA9IHdvcmxkWzJdLCB5MSA9IHdvcmxkWzNdLCB4MiA9IDAsIHkyID0gMDtcblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQuY2xvc2VkKSB7XG5cdFx0XHRcdFx0c2hhcGVzLnNldENvbG9yKGNvbG9yKTtcblx0XHRcdFx0XHRjb25zdCBjeDEgPSB3b3JsZFswXSwgY3kxID0gd29ybGRbMV0sIGN4MiA9IHdvcmxkW25uIC0gMl0sIGN5MiA9IHdvcmxkW25uIC0gMV07XG5cdFx0XHRcdFx0eDIgPSB3b3JsZFtubiAtIDRdO1xuXHRcdFx0XHRcdHkyID0gd29ybGRbbm4gLSAzXTtcblx0XHRcdFx0XHRzaGFwZXMuY3VydmUoeDEsIHkxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHgyLCB5MiwgMzIpO1xuXHRcdFx0XHRcdHNoYXBlcy5zZXRDb2xvcihTa2VsZXRvbkRlYnVnUmVuZGVyZXIuTElHSFRfR1JBWSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDEsIHkxLCBjeDEsIGN5MSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDIsIHkyLCBjeDIsIGN5Mik7XG5cdFx0XHRcdH1cblx0XHRcdFx0bm4gLT0gNDtcblx0XHRcdFx0Zm9yIChsZXQgaWkgPSA0OyBpaSA8IG5uOyBpaSArPSA2KSB7XG5cdFx0XHRcdFx0Y29uc3QgY3gxID0gd29ybGRbaWldLCBjeTEgPSB3b3JsZFtpaSArIDFdLCBjeDIgPSB3b3JsZFtpaSArIDJdLCBjeTIgPSB3b3JsZFtpaSArIDNdO1xuXHRcdFx0XHRcdHgyID0gd29ybGRbaWkgKyA0XTtcblx0XHRcdFx0XHR5MiA9IHdvcmxkW2lpICsgNV07XG5cdFx0XHRcdFx0c2hhcGVzLnNldENvbG9yKGNvbG9yKTtcblx0XHRcdFx0XHRzaGFwZXMuY3VydmUoeDEsIHkxLCBjeDEsIGN5MSwgY3gyLCBjeTIsIHgyLCB5MiwgMzIpO1xuXHRcdFx0XHRcdHNoYXBlcy5zZXRDb2xvcihTa2VsZXRvbkRlYnVnUmVuZGVyZXIuTElHSFRfR1JBWSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDEsIHkxLCBjeDEsIGN5MSk7XG5cdFx0XHRcdFx0c2hhcGVzLmxpbmUoeDIsIHkyLCBjeDIsIGN5Mik7XG5cdFx0XHRcdFx0eDEgPSB4Mjtcblx0XHRcdFx0XHR5MSA9IHkyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZHJhd0JvbmVzKSB7XG5cdFx0XHRzaGFwZXMuc2V0Q29sb3IodGhpcy5ib25lT3JpZ2luQ29sb3IpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0XHRpZiAoaWdub3JlZEJvbmVzICYmIGlnbm9yZWRCb25lcy5pbmRleE9mKGJvbmUuZGF0YS5uYW1lKSA+IC0xKSBjb250aW51ZTtcblx0XHRcdFx0Y29uc3QgYm9uZUFwcGxpZWQgPSBib25lLmFwcGxpZWRQb3NlO1xuXHRcdFx0XHRzaGFwZXMuY2lyY2xlKHRydWUsIGJvbmVBcHBsaWVkLndvcmxkWCwgYm9uZUFwcGxpZWQud29ybGRZLCAzICogdGhpcy5zY2FsZSwgdGhpcy5ib25lT3JpZ2luQ29sb3IsIDgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmRyYXdDbGlwcGluZykge1xuXHRcdFx0Y29uc3Qgc2xvdHMgPSBza2VsZXRvbi5zbG90cztcblx0XHRcdHNoYXBlcy5zZXRDb2xvcih0aGlzLmNsaXBDb2xvcilcblx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHNsb3QuYXBwbGllZFBvc2UuYXR0YWNobWVudDtcblx0XHRcdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIENsaXBwaW5nQXR0YWNobWVudCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRjb25zdCBubiA9IGF0dGFjaG1lbnQud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0Y29uc3Qgd29ybGQgPSB0aGlzLnRlbXAgPSBVdGlscy5zZXRBcnJheVNpemUodGhpcy50ZW1wLCBubiwgMCk7XG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2tlbGV0b24sIHNsb3QsIDAsIG5uLCB3b3JsZCwgMCwgMik7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gd29ybGQubGVuZ3RoOyBpIDwgbjsgaSArPSAyKSB7XG5cdFx0XHRcdFx0Y29uc3QgeCA9IHdvcmxkW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHkgPSB3b3JsZFtpICsgMV07XG5cdFx0XHRcdFx0Y29uc3QgeDIgPSB3b3JsZFsoaSArIDIpICUgd29ybGQubGVuZ3RoXTtcblx0XHRcdFx0XHRjb25zdCB5MiA9IHdvcmxkWyhpICsgMykgJSB3b3JsZC5sZW5ndGhdO1xuXHRcdFx0XHRcdHNoYXBlcy5saW5lKHgsIHksIHgyLCB5Mik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRkaXNwb3NlICgpIHtcblx0fVxufVxuIl19
|
|
@@ -26,13 +26,12 @@
|
|
|
26
26
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
27
27
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
28
28
|
*****************************************************************************/
|
|
29
|
-
import { NumberArrayLike,
|
|
30
|
-
import { PolygonBatcher } from "./PolygonBatcher.js";
|
|
31
|
-
import { ManagedWebGLRenderingContext } from "./WebGL.js";
|
|
29
|
+
import { type NumberArrayLike, type Skeleton, SkeletonClipping } from "@esotericsoftware/spine-core";
|
|
30
|
+
import type { PolygonBatcher } from "./PolygonBatcher.js";
|
|
31
|
+
import type { ManagedWebGLRenderingContext } from "./WebGL.js";
|
|
32
32
|
export type VertexTransformer = (vertices: NumberArrayLike, numVertices: number, stride: number) => void;
|
|
33
33
|
export declare class SkeletonRenderer {
|
|
34
34
|
static QUAD_TRIANGLES: number[];
|
|
35
|
-
premultipliedAlpha: boolean;
|
|
36
35
|
private tempColor;
|
|
37
36
|
private tempColor2;
|
|
38
37
|
private vertices;
|