@esotericsoftware/spine-webgl 4.2.116 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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, SkeletonClipping, Vector2, Utils, RegionAttachment, MeshAttachment, ClippingAttachment } from "@esotericsoftware/spine-core";
29
+ import { ClippingAttachment, Color, MeshAttachment, RegionAttachment, SkeletonClipping, Utils, Vector2 } from "@esotericsoftware/spine-core";
30
30
  class Renderable {
31
31
  vertices;
32
32
  numVertices;
@@ -40,7 +40,6 @@ class Renderable {
40
40
  ;
41
41
  export class SkeletonRenderer {
42
42
  static QUAD_TRIANGLES = [0, 1, 2, 2, 3, 0];
43
- premultipliedAlpha = false;
44
43
  tempColor = new Color();
45
44
  tempColor2 = new Color();
46
45
  vertices;
@@ -59,120 +58,111 @@ export class SkeletonRenderer {
59
58
  this.vertices = Utils.newFloatArray(this.vertexSize * 1024);
60
59
  }
61
60
  draw(batcher, skeleton, slotRangeStart = -1, slotRangeEnd = -1, transformer = null) {
62
- let clipper = this.clipper;
63
- let premultipliedAlpha = this.premultipliedAlpha;
64
- let twoColorTint = this.twoColorTint;
61
+ const clipper = this.clipper;
62
+ const twoColorTint = this.twoColorTint;
65
63
  let blendMode = null;
66
- let renderable = this.renderable;
64
+ const renderable = this.renderable;
67
65
  let uvs;
68
66
  let triangles;
69
- let drawOrder = skeleton.drawOrder;
67
+ const drawOrder = skeleton.drawOrder.appliedPose;
70
68
  let attachmentColor;
71
- let skeletonColor = skeleton.color;
72
- let vertexSize = twoColorTint ? 12 : 8;
69
+ const skeletonColor = skeleton.color;
70
+ const vertexSize = twoColorTint ? 12 : 8;
73
71
  let inRange = false;
74
- if (slotRangeStart == -1)
72
+ if (slotRangeStart === -1)
75
73
  inRange = true;
76
74
  for (let i = 0, n = drawOrder.length; i < n; i++) {
77
- let clippedVertexSize = clipper.isClipping() ? 2 : vertexSize;
78
- let slot = drawOrder[i];
75
+ const slot = drawOrder[i];
79
76
  if (!slot.bone.active) {
80
- clipper.clipEndWithSlot(slot);
77
+ clipper.clipEnd(slot);
81
78
  continue;
82
79
  }
83
- if (slotRangeStart >= 0 && slotRangeStart == slot.data.index) {
80
+ if (slotRangeStart >= 0 && slotRangeStart === slot.data.index) {
84
81
  inRange = true;
85
82
  }
86
83
  if (!inRange) {
87
- clipper.clipEndWithSlot(slot);
84
+ clipper.clipEnd(slot);
88
85
  continue;
89
86
  }
90
- if (slotRangeEnd >= 0 && slotRangeEnd == slot.data.index) {
87
+ if (slotRangeEnd >= 0 && slotRangeEnd === slot.data.index) {
91
88
  inRange = false;
92
89
  }
93
- let attachment = slot.getAttachment();
90
+ const pose = slot.appliedPose;
91
+ const attachment = pose.attachment;
94
92
  let texture;
95
93
  if (attachment instanceof RegionAttachment) {
96
- let region = attachment;
97
94
  renderable.vertices = this.vertices;
98
95
  renderable.numVertices = 4;
99
- renderable.numFloats = clippedVertexSize << 2;
100
- region.computeWorldVertices(slot, renderable.vertices, 0, clippedVertexSize);
96
+ renderable.numFloats = vertexSize << 2;
97
+ const sequence = attachment.sequence;
98
+ const sequenceIndex = sequence.resolveIndex(pose);
99
+ attachment.computeWorldVertices(slot, attachment.getOffsets(pose), renderable.vertices, 0, vertexSize);
101
100
  triangles = SkeletonRenderer.QUAD_TRIANGLES;
102
- uvs = region.uvs;
103
- texture = region.region.texture;
104
- attachmentColor = region.color;
101
+ uvs = sequence.getUVs(sequenceIndex);
102
+ texture = sequence.regions[sequenceIndex]?.texture;
103
+ attachmentColor = attachment.color;
105
104
  }
106
105
  else if (attachment instanceof MeshAttachment) {
107
- let mesh = attachment;
108
106
  renderable.vertices = this.vertices;
109
- renderable.numVertices = (mesh.worldVerticesLength >> 1);
110
- renderable.numFloats = renderable.numVertices * clippedVertexSize;
107
+ renderable.numVertices = (attachment.worldVerticesLength >> 1);
108
+ renderable.numFloats = renderable.numVertices * vertexSize;
111
109
  if (renderable.numFloats > renderable.vertices.length) {
112
110
  renderable.vertices = this.vertices = Utils.newFloatArray(renderable.numFloats);
113
111
  }
114
- mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, renderable.vertices, 0, clippedVertexSize);
115
- triangles = mesh.triangles;
116
- texture = mesh.region.texture;
117
- uvs = mesh.uvs;
118
- attachmentColor = mesh.color;
112
+ attachment.computeWorldVertices(skeleton, slot, 0, attachment.worldVerticesLength, renderable.vertices, 0, vertexSize);
113
+ triangles = attachment.triangles;
114
+ const sequence = attachment.sequence;
115
+ const sequenceIndex = sequence.resolveIndex(pose);
116
+ texture = sequence.regions[sequenceIndex]?.texture;
117
+ uvs = sequence.getUVs(sequenceIndex);
118
+ attachmentColor = attachment.color;
119
119
  }
120
120
  else if (attachment instanceof ClippingAttachment) {
121
- let clip = (attachment);
122
- clipper.clipStart(slot, clip);
121
+ clipper.clipEnd(slot);
122
+ clipper.clipStart(skeleton, slot, attachment);
123
123
  continue;
124
124
  }
125
125
  else {
126
- clipper.clipEndWithSlot(slot);
126
+ clipper.clipEnd(slot);
127
127
  continue;
128
128
  }
129
129
  if (texture) {
130
- let slotColor = slot.color;
131
- let finalColor = this.tempColor;
132
- finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r;
133
- finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g;
134
- finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b;
135
- finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a;
136
- if (premultipliedAlpha) {
137
- finalColor.r *= finalColor.a;
138
- finalColor.g *= finalColor.a;
139
- finalColor.b *= finalColor.a;
140
- }
141
- let darkColor = this.tempColor2;
142
- if (!slot.darkColor)
130
+ const slotColor = pose.color;
131
+ const finalColor = this.tempColor;
132
+ const alpha = skeletonColor.a * slotColor.a * attachmentColor.a;
133
+ finalColor.r = skeletonColor.r * slotColor.r * attachmentColor.r * alpha;
134
+ finalColor.g = skeletonColor.g * slotColor.g * attachmentColor.g * alpha;
135
+ finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b * alpha;
136
+ finalColor.a = alpha;
137
+ const darkColor = this.tempColor2;
138
+ if (!pose.darkColor)
143
139
  darkColor.set(0, 0, 0, 1.0);
144
140
  else {
145
- if (premultipliedAlpha) {
146
- darkColor.r = slot.darkColor.r * finalColor.a;
147
- darkColor.g = slot.darkColor.g * finalColor.a;
148
- darkColor.b = slot.darkColor.b * finalColor.a;
149
- }
150
- else {
151
- darkColor.setFromColor(slot.darkColor);
152
- }
153
- darkColor.a = premultipliedAlpha ? 1.0 : 0.0;
141
+ darkColor.r = pose.darkColor.r * alpha;
142
+ darkColor.g = pose.darkColor.g * alpha;
143
+ darkColor.b = pose.darkColor.b * alpha;
144
+ darkColor.a = 1;
154
145
  }
155
- let slotBlendMode = slot.data.blendMode;
156
- if (slotBlendMode != blendMode) {
146
+ const slotBlendMode = slot.data.blendMode;
147
+ if (slotBlendMode !== blendMode) {
157
148
  blendMode = slotBlendMode;
158
- batcher.setBlendMode(blendMode, premultipliedAlpha);
149
+ batcher.setBlendMode(blendMode);
159
150
  }
160
- if (clipper.isClipping()) {
161
- clipper.clipTriangles(renderable.vertices, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint);
162
- let clippedVertices = new Float32Array(clipper.clippedVertices);
163
- let clippedTriangles = clipper.clippedTriangles;
151
+ if (clipper.isClipping() && clipper.clipTriangles(renderable.vertices, triangles, triangles.length, uvs, finalColor, darkColor, twoColorTint, vertexSize)) {
152
+ const clippedVertices = new Float32Array(clipper.clippedVertices);
153
+ const clippedTriangles = clipper.clippedTriangles;
164
154
  if (transformer)
165
155
  transformer(clippedVertices, clippedVertices.length, vertexSize);
166
156
  batcher.draw(texture, clippedVertices, clippedTriangles);
167
157
  }
168
158
  else {
169
- let verts = renderable.vertices;
159
+ const verts = renderable.vertices;
170
160
  if (!twoColorTint) {
171
161
  for (let v = 2, u = 0, n = renderable.numFloats; v < n; v += vertexSize, u += 2) {
172
162
  verts[v] = finalColor.r;
173
163
  verts[v + 1] = finalColor.g;
174
164
  verts[v + 2] = finalColor.b;
175
- verts[v + 3] = finalColor.a;
165
+ verts[v + 3] = alpha;
176
166
  verts[v + 4] = uvs[u];
177
167
  verts[v + 5] = uvs[u + 1];
178
168
  }
@@ -182,7 +172,7 @@ export class SkeletonRenderer {
182
172
  verts[v] = finalColor.r;
183
173
  verts[v + 1] = finalColor.g;
184
174
  verts[v + 2] = finalColor.b;
185
- verts[v + 3] = finalColor.a;
175
+ verts[v + 3] = alpha;
186
176
  verts[v + 4] = uvs[u];
187
177
  verts[v + 5] = uvs[u + 1];
188
178
  verts[v + 6] = darkColor.r;
@@ -191,13 +181,13 @@ export class SkeletonRenderer {
191
181
  verts[v + 9] = darkColor.a;
192
182
  }
193
183
  }
194
- let view = renderable.vertices.subarray(0, renderable.numFloats);
184
+ const view = renderable.vertices.subarray(0, renderable.numFloats);
195
185
  if (transformer)
196
186
  transformer(renderable.vertices, renderable.numFloats, vertexSize);
197
187
  batcher.draw(texture, view, triangles);
198
188
  }
199
189
  }
200
- clipper.clipEndWithSlot(slot);
190
+ clipper.clipEnd(slot);
201
191
  }
202
192
  clipper.clipEnd();
203
193
  }
@@ -206,4 +196,4 @@ export class SkeletonRenderer {
206
196
  return this.clipper;
207
197
  }
208
198
  }
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25SZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvblJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQW1CLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUF1QixnQkFBZ0IsRUFBc0IsY0FBYyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNdk0sTUFBTSxVQUFVO0lBQ0s7SUFBa0M7SUFBNEI7SUFBbEYsWUFBb0IsUUFBeUIsRUFBUyxXQUFtQixFQUFTLFNBQWlCO1FBQS9FLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQUksQ0FBQztDQUN4RztBQUFBLENBQUM7QUFJRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTNDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztJQUNuQixTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN4QixVQUFVLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN6QixRQUFRLENBQWtCO0lBQzFCLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFVBQVUsR0FBZSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sR0FBcUIsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25ELElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lB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QUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDdEIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUMzQixDQUFDO29CQUNGLENBQUM7eUJBQU0sQ0FBQzt3QkFDUCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQ2pGLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUN4QixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7NEJBQzVCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQzs0QkFDNUIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUM1QixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDdEIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDOzRCQUMxQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7NEJBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQzs0QkFDM0IsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDOzRCQUMzQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQzVCLENBQUM7b0JBQ0YsQ0FBQztvQkFDRCxJQUFJLElBQUksR0FBSSxVQUFVLENBQUMsUUFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDbkYsSUFBSSxXQUFXO3dCQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7b0JBQ3BGLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztZQUNGLENBQUM7WUFFRCxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFDRCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELCtHQUErRztJQUN4RyxtQkFBbUI7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IE51bWJlckFycmF5TGlrZSwgQ29sb3IsIFNrZWxldG9uQ2xpcHBpbmcsIFZlY3RvcjIsIFV0aWxzLCBTa2VsZXRvbiwgQmxlbmRNb2RlLCBSZWdpb25BdHRhY2htZW50LCBUZXh0dXJlQXRsYXNSZWdpb24sIE1lc2hBdHRhY2htZW50LCBDbGlwcGluZ0F0dGFjaG1lbnQgfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuaW1wb3J0IHsgR0xUZXh0dXJlIH0gZnJvbSBcIi4vR0xUZXh0dXJlLmpzXCI7XG5pbXBvcnQgeyBQb2x5Z29uQmF0Y2hlciB9IGZyb20gXCIuL1BvbHlnb25CYXRjaGVyLmpzXCI7XG5pbXBvcnQgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuXG5jbGFzcyBSZW5kZXJhYmxlIHtcblx0Y29uc3RydWN0b3IgKHB1YmxpYyB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCBwdWJsaWMgbnVtVmVydGljZXM6IG51bWJlciwgcHVibGljIG51bUZsb2F0czogbnVtYmVyKSB7IH1cbn07XG5cbmV4cG9ydCB0eXBlIFZlcnRleFRyYW5zZm9ybWVyID0gKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIG51bVZlcnRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgU2tlbGV0b25SZW5kZXJlciB7XG5cdHN0YXRpYyBRVUFEX1RSSUFOR0xFUyA9IFswLCAxLCAyLCAyLCAzLCAwXTtcblxuXHRwcmVtdWx0aXBsaWVkQWxwaGEgPSBmYWxzZTtcblx0cHJpdmF0ZSB0ZW1wQ29sb3IgPSBuZXcgQ29sb3IoKTtcblx0cHJpdmF0ZSB0ZW1wQ29sb3IyID0gbmV3IENvbG9yKCk7XG5cdHByaXZhdGUgdmVydGljZXM6IE51bWJlckFycmF5TGlrZTtcblx0cHJpdmF0ZSB2ZXJ0ZXhTaXplID0gMiArIDIgKyA0O1xuXHRwcml2YXRlIHR3b0NvbG9yVGludCA9IGZhbHNlO1xuXHRwcml2YXRlIHJlbmRlcmFibGU6IFJlbmRlcmFibGUgPSBuZXcgUmVuZGVyYWJsZShbXSwgMCwgMCk7XG5cdHByaXZhdGUgY2xpcHBlcjogU2tlbGV0b25DbGlwcGluZyA9IG5ldyBTa2VsZXRvbkNsaXBwaW5nKCk7XG5cdHByaXZhdGUgdGVtcCA9IG5ldyBWZWN0b3IyKCk7XG5cdHByaXZhdGUgdGVtcDIgPSBuZXcgVmVjdG9yMigpO1xuXHRwcml2YXRlIHRlbXAzID0gbmV3IENvbG9yKCk7XG5cdHByaXZhdGUgdGVtcDQgPSBuZXcgQ29sb3IoKTtcblxuXHRjb25zdHJ1Y3RvciAoY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgdHdvQ29sb3JUaW50OiBib29sZWFuID0gdHJ1ZSkge1xuXHRcdHRoaXMudHdvQ29sb3JUaW50ID0gdHdvQ29sb3JUaW50O1xuXHRcdGlmICh0d29Db2xvclRpbnQpXG5cdFx0XHR0aGlzLnZlcnRleFNpemUgKz0gNDtcblx0XHR0aGlzLnZlcnRpY2VzID0gVXRpbHMubmV3RmxvYXRBcnJheSh0aGlzLnZlcnRleFNpemUgKiAxMDI0KTtcblx0fVxuXG5cdGRyYXcgKGJhdGNoZXI6IFBvbHlnb25CYXRjaGVyLCBza2VsZXRvbjogU2tlbGV0b24sIHNsb3RSYW5nZVN0YXJ0OiBudW1iZXIgPSAtMSwgc2xvdFJhbmdlRW5kOiBudW1iZXIgPSAtMSwgdHJhbnNmb3JtZXI6IFZlcnRleFRyYW5zZm9ybWVyIHwgbnVsbCA9IG51bGwpIHtcblx0XHRsZXQgY2xpcHBlciA9IHRoaXMuY2xpcHBlcjtcblx0XHRsZXQgcHJlbXVsdGlwbGllZEFscGhhID0gdGhpcy5wcmVtdWx0aXBsaWVkQWxwaGE7XG5cdFx0bGV0IHR3b0NvbG9yVGludCA9IHRoaXMudHdvQ29sb3JUaW50O1xuXHRcdGxldCBibGVuZE1vZGU6IEJsZW5kTW9kZSB8IG51bGwgPSBudWxsO1xuXG5cdFx0bGV0IHJlbmRlcmFibGU6IFJlbmRlcmFibGUgPSB0aGlzLnJlbmRlcmFibGU7XG5cdFx0bGV0IHV2czogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdGxldCB0cmlhbmdsZXM6IEFycmF5PG51bWJlcj47XG5cdFx0bGV0IGRyYXdPcmRlciA9IHNrZWxldG9uLmRyYXdPcmRlcjtcblx0XHRsZXQgYXR0YWNobWVudENvbG9yOiBDb2xvcjtcblx0XHRsZXQgc2tlbGV0b25Db2xvciA9IHNrZWxldG9uLmNvbG9yO1xuXHRcdGxldCB2ZXJ0ZXhTaXplID0gdHdvQ29sb3JUaW50ID8gMTIgOiA4O1xuXHRcdGxldCBpblJhbmdlID0gZmFsc2U7XG5cdFx0aWYgKHNsb3RSYW5nZVN0YXJ0ID09IC0xKSBpblJhbmdlID0gdHJ1ZTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGRyYXdPcmRlci5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBjbGlwcGVkVmVydGV4U2l6ZSA9IGNsaXBwZXIuaXNDbGlwcGluZygpID8gMiA6IHZlcnRleFNpemU7XG5cdFx0XHRsZXQgc2xvdCA9IGRyYXdPcmRlcltpXTtcblx0XHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBFbmRXaXRoU2xvdChzbG90KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzbG90UmFuZ2VTdGFydCA+PSAwICYmIHNsb3RSYW5nZVN0YXJ0ID09IHNsb3QuZGF0YS5pbmRleCkge1xuXHRcdFx0XHRpblJhbmdlID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCFpblJhbmdlKSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHNsb3RSYW5nZUVuZCA+PSAwICYmIHNsb3RSYW5nZUVuZCA9PSBzbG90LmRhdGEuaW5kZXgpIHtcblx0XHRcdFx0aW5SYW5nZSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgYXR0YWNobWVudCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXHRcdFx0bGV0IHRleHR1cmU6IEdMVGV4dHVyZTtcblx0XHRcdGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgUmVnaW9uQXR0YWNobWVudCkge1xuXHRcdFx0XHRsZXQgcmVnaW9uID0gPFJlZ2lvbkF0dGFjaG1lbnQ+YXR0YWNobWVudDtcblx0XHRcdFx0cmVuZGVyYWJsZS52ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cdFx0XHRcdHJlbmRlcmFibGUubnVtVmVydGljZXMgPSA0O1xuXHRcdFx0XHRyZW5kZXJhYmxlLm51bUZsb2F0cyA9IGNsaXBwZWRWZXJ0ZXhTaXplIDw8IDI7XG5cdFx0XHRcdHJlZ2lvbi5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCByZW5kZXJhYmxlLnZlcnRpY2VzLCAwLCBjbGlwcGVkVmVydGV4U2l6ZSk7XG5cdFx0XHRcdHRyaWFuZ2xlcyA9IFNrZWxldG9uUmVuZGVyZXIuUVVBRF9UUklBTkdMRVM7XG5cdFx0XHRcdHV2cyA9IHJlZ2lvbi51dnM7XG5cdFx0XHRcdHRleHR1cmUgPSA8R0xUZXh0dXJlPnJlZ2lvbi5yZWdpb24hLnRleHR1cmU7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IHJlZ2lvbi5jb2xvcjtcblx0XHRcdH0gZWxzZSBpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSB7XG5cdFx0XHRcdGxldCBtZXNoID0gPE1lc2hBdHRhY2htZW50PmF0dGFjaG1lbnQ7XG5cdFx0XHRcdHJlbmRlcmFibGUudmVydGljZXMgPSB0aGlzLnZlcnRpY2VzO1xuXHRcdFx0XHRyZW5kZXJhYmxlLm51bVZlcnRpY2VzID0gKG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aCA+PiAxKTtcblx0XHRcdFx0cmVuZGVyYWJsZS5udW1GbG9hdHMgPSByZW5kZXJhYmxlLm51bVZlcnRpY2VzICogY2xpcHBlZFZlcnRleFNpemU7XG5cdFx0XHRcdGlmIChyZW5kZXJhYmxlLm51bUZsb2F0cyA+IHJlbmRlcmFibGUudmVydGljZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cmVuZGVyYWJsZS52ZXJ0aWNlcyA9IHRoaXMudmVydGljZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHJlbmRlcmFibGUubnVtRmxvYXRzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRtZXNoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIDAsIG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aCwgcmVuZGVyYWJsZS52ZXJ0aWNlcywgMCwgY2xpcHBlZFZlcnRleFNpemUpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBtZXNoLnRyaWFuZ2xlcztcblx0XHRcdFx0dGV4dHVyZSA9IDxHTFRleHR1cmU+bWVzaC5yZWdpb24hLnRleHR1cmU7XG5cdFx0XHRcdHV2cyA9IG1lc2gudXZzO1xuXHRcdFx0XHRhdHRhY2htZW50Q29sb3IgPSBtZXNoLmNvbG9yO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50KSB7XG5cdFx0XHRcdGxldCBjbGlwID0gPENsaXBwaW5nQXR0YWNobWVudD4oYXR0YWNobWVudCk7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcFN0YXJ0KHNsb3QsIGNsaXApO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRleHR1cmUpIHtcblx0XHRcdFx0bGV0IHNsb3RDb2xvciA9IHNsb3QuY29sb3I7XG5cdFx0XHRcdGxldCBmaW5hbENvbG9yID0gdGhpcy50ZW1wQ29sb3I7XG5cdFx0XHRcdGZpbmFsQ29sb3IuciA9IHNrZWxldG9uQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnI7XG5cdFx0XHRcdGZpbmFsQ29sb3IuZyA9IHNrZWxldG9uQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmc7XG5cdFx0XHRcdGZpbmFsQ29sb3IuYiA9IHNrZWxldG9uQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmI7XG5cdFx0XHRcdGZpbmFsQ29sb3IuYSA9IHNrZWxldG9uQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmE7XG5cdFx0XHRcdGlmIChwcmVtdWx0aXBsaWVkQWxwaGEpIHtcblx0XHRcdFx0XHRmaW5hbENvbG9yLnIgKj0gZmluYWxDb2xvci5hO1xuXHRcdFx0XHRcdGZpbmFsQ29sb3IuZyAqPSBmaW5hbENvbG9yLmE7XG5cdFx0XHRcdFx0ZmluYWxDb2xvci5iICo9IGZpbmFsQ29sb3IuYTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsZXQgZGFya0NvbG9yID0gdGhpcy50ZW1wQ29sb3IyO1xuXHRcdFx0XHRpZiAoIXNsb3QuZGFya0NvbG9yKVxuXHRcdFx0XHRcdGRhcmtDb2xvci5zZXQoMCwgMCwgMCwgMS4wKTtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0aWYgKHByZW11bHRpcGxpZWRBbHBoYSkge1xuXHRcdFx0XHRcdFx0ZGFya0NvbG9yLnIgPSBzbG90LmRhcmtDb2xvci5yICogZmluYWxDb2xvci5hO1xuXHRcdFx0XHRcdFx0ZGFya0NvbG9yLmcgPSBzbG90LmRhcmtDb2xvci5nICogZmluYWxDb2xvci5hO1xuXHRcdFx0XHRcdFx0ZGFya0NvbG9yLmIgPSBzbG90LmRhcmtDb2xvci5iICogZmluYWxDb2xvci5hO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRkYXJrQ29sb3Iuc2V0RnJvbUNvbG9yKHNsb3QuZGFya0NvbG9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZGFya0NvbG9yLmEgPSBwcmVtdWx0aXBsaWVkQWxwaGEgPyAxLjAgOiAwLjA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgc2xvdEJsZW5kTW9kZSA9IHNsb3QuZGF0YS5ibGVuZE1vZGU7XG5cdFx0XHRcdGlmIChzbG90QmxlbmRNb2RlICE9IGJsZW5kTW9kZSkge1xuXHRcdFx0XHRcdGJsZW5kTW9kZSA9IHNsb3RCbGVuZE1vZGU7XG5cdFx0XHRcdFx0YmF0Y2hlci5zZXRCbGVuZE1vZGUoYmxlbmRNb2RlLCBwcmVtdWx0aXBsaWVkQWxwaGEpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGNsaXBwZXIuaXNDbGlwcGluZygpKSB7XG5cdFx0XHRcdFx0Y2xpcHBlci5jbGlwVHJpYW5nbGVzKHJlbmRlcmFibGUudmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzLmxlbmd0aCwgdXZzLCBmaW5hbENvbG9yLCBkYXJrQ29sb3IsIHR3b0NvbG9yVGludCk7XG5cdFx0XHRcdFx0bGV0IGNsaXBwZWRWZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoY2xpcHBlci5jbGlwcGVkVmVydGljZXMpO1xuXHRcdFx0XHRcdGxldCBjbGlwcGVkVHJpYW5nbGVzID0gY2xpcHBlci5jbGlwcGVkVHJpYW5nbGVzO1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1lcikgdHJhbnNmb3JtZXIoY2xpcHBlZFZlcnRpY2VzLCBjbGlwcGVkVmVydGljZXMubGVuZ3RoLCB2ZXJ0ZXhTaXplKTtcblx0XHRcdFx0XHRiYXRjaGVyLmRyYXcodGV4dHVyZSwgY2xpcHBlZFZlcnRpY2VzLCBjbGlwcGVkVHJpYW5nbGVzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsZXQgdmVydHMgPSByZW5kZXJhYmxlLnZlcnRpY2VzO1xuXHRcdFx0XHRcdGlmICghdHdvQ29sb3JUaW50KSB7XG5cdFx0XHRcdFx0XHRmb3IgKGxldCB2ID0gMiwgdSA9IDAsIG4gPSByZW5kZXJhYmxlLm51bUZsb2F0czsgdiA8IG47IHYgKz0gdmVydGV4U2l6ZSwgdSArPSAyKSB7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3ZdID0gZmluYWxDb2xvci5yO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgMV0gPSBmaW5hbENvbG9yLmc7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyAyXSA9IGZpbmFsQ29sb3IuYjtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDNdID0gZmluYWxDb2xvci5hO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgNF0gPSB1dnNbdV07XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyA1XSA9IHV2c1t1ICsgMV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGZvciAobGV0IHYgPSAyLCB1ID0gMCwgbiA9IHJlbmRlcmFibGUubnVtRmxvYXRzOyB2IDwgbjsgdiArPSB2ZXJ0ZXhTaXplLCB1ICs9IDIpIHtcblx0XHRcdFx0XHRcdFx0dmVydHNbdl0gPSBmaW5hbENvbG9yLnI7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyAxXSA9IGZpbmFsQ29sb3IuZztcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDJdID0gZmluYWxDb2xvci5iO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgM10gPSBmaW5hbENvbG9yLmE7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyA0XSA9IHV2c1t1XTtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDVdID0gdXZzW3UgKyAxXTtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDZdID0gZGFya0NvbG9yLnI7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyA3XSA9IGRhcmtDb2xvci5nO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgOF0gPSBkYXJrQ29sb3IuYjtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDldID0gZGFya0NvbG9yLmE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxldCB2aWV3ID0gKHJlbmRlcmFibGUudmVydGljZXMgYXMgRmxvYXQzMkFycmF5KS5zdWJhcnJheSgwLCByZW5kZXJhYmxlLm51bUZsb2F0cyk7XG5cdFx0XHRcdFx0aWYgKHRyYW5zZm9ybWVyKSB0cmFuc2Zvcm1lcihyZW5kZXJhYmxlLnZlcnRpY2VzLCByZW5kZXJhYmxlLm51bUZsb2F0cywgdmVydGV4U2l6ZSk7XG5cdFx0XHRcdFx0YmF0Y2hlci5kcmF3KHRleHR1cmUsIHZpZXcsIHRyaWFuZ2xlcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0fVxuXHRcdGNsaXBwZXIuY2xpcEVuZCgpO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIHtAbGluayBTa2VsZXRvbkNsaXBwaW5nfSB1c2VkIGJ5IHRoaXMgcmVuZGVyZXIgZm9yIHVzZSB3aXRoIGUuZy4ge0BsaW5rIFNrZWxldG9uLmdldEJvdW5kc30gKiovXG5cdHB1YmxpYyBnZXRTa2VsZXRvbkNsaXBwaW5nICgpOiBTa2VsZXRvbkNsaXBwaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5jbGlwcGVyO1xuXHR9XG59XG4iXX0=
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25SZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ta2VsZXRvblJlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQWtCLGtCQUFrQixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQXdCLGdCQUFnQixFQUFpQixnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNbE0sTUFBTSxVQUFVO0lBQ0s7SUFBa0M7SUFBNEI7SUFBbEYsWUFBb0IsUUFBeUIsRUFBUyxXQUFtQixFQUFTLFNBQWlCO1FBQS9FLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQUksQ0FBQztDQUN4RztBQUFBLENBQUM7QUFJRixNQUFNLE9BQU8sZ0JBQWdCO0lBQzVCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5DLFNBQVMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3hCLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBQ3pCLFFBQVEsQ0FBa0I7SUFDMUIsVUFBVSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsVUFBVSxHQUFlLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTyxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDbkQsSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDckIsS0FBSyxHQUFHLElBQUksT0FBTyxFQUFF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RyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7NEJBQ2pGLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDOzRCQUN4QixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7NEJBQzVCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQzs0QkFDNUIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NEJBQ3JCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN0QixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7NEJBQzFCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQzs0QkFDM0IsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDOzRCQUMzQixLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7NEJBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDNUIsQ0FBQztvQkFDRixDQUFDO29CQUNELE1BQU0sSUFBSSxHQUFJLFVBQVUsQ0FBQyxRQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNyRixJQUFJLFdBQVc7d0JBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0YsQ0FBQztZQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsK0dBQStHO0lBQ3hHLG1CQUFtQjtRQUN6QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgdHlwZSBCbGVuZE1vZGUsIENsaXBwaW5nQXR0YWNobWVudCwgQ29sb3IsIE1lc2hBdHRhY2htZW50LCB0eXBlIE51bWJlckFycmF5TGlrZSwgUmVnaW9uQXR0YWNobWVudCwgdHlwZSBTa2VsZXRvbiwgU2tlbGV0b25DbGlwcGluZywgVXRpbHMsIFZlY3RvcjIgfSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBHTFRleHR1cmUgfSBmcm9tIFwiLi9HTFRleHR1cmUuanNcIjtcbmltcG9ydCB0eXBlIHsgUG9seWdvbkJhdGNoZXIgfSBmcm9tIFwiLi9Qb2x5Z29uQmF0Y2hlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0IH0gZnJvbSBcIi4vV2ViR0wuanNcIjtcblxuXG5jbGFzcyBSZW5kZXJhYmxlIHtcblx0Y29uc3RydWN0b3IgKHB1YmxpYyB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLCBwdWJsaWMgbnVtVmVydGljZXM6IG51bWJlciwgcHVibGljIG51bUZsb2F0czogbnVtYmVyKSB7IH1cbn07XG5cbmV4cG9ydCB0eXBlIFZlcnRleFRyYW5zZm9ybWVyID0gKHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UsIG51bVZlcnRpY2VzOiBudW1iZXIsIHN0cmlkZTogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgU2tlbGV0b25SZW5kZXJlciB7XG5cdHN0YXRpYyBRVUFEX1RSSUFOR0xFUyA9IFswLCAxLCAyLCAyLCAzLCAwXTtcblxuXHRwcml2YXRlIHRlbXBDb2xvciA9IG5ldyBDb2xvcigpO1xuXHRwcml2YXRlIHRlbXBDb2xvcjIgPSBuZXcgQ29sb3IoKTtcblx0cHJpdmF0ZSB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlO1xuXHRwcml2YXRlIHZlcnRleFNpemUgPSAyICsgMiArIDQ7XG5cdHByaXZhdGUgdHdvQ29sb3JUaW50ID0gZmFsc2U7XG5cdHByaXZhdGUgcmVuZGVyYWJsZTogUmVuZGVyYWJsZSA9IG5ldyBSZW5kZXJhYmxlKFtdLCAwLCAwKTtcblx0cHJpdmF0ZSBjbGlwcGVyOiBTa2VsZXRvbkNsaXBwaW5nID0gbmV3IFNrZWxldG9uQ2xpcHBpbmcoKTtcblx0cHJpdmF0ZSB0ZW1wID0gbmV3IFZlY3RvcjIoKTtcblx0cHJpdmF0ZSB0ZW1wMiA9IG5ldyBWZWN0b3IyKCk7XG5cdHByaXZhdGUgdGVtcDMgPSBuZXcgQ29sb3IoKTtcblx0cHJpdmF0ZSB0ZW1wNCA9IG5ldyBDb2xvcigpO1xuXG5cdGNvbnN0cnVjdG9yIChjb250ZXh0OiBNYW5hZ2VkV2ViR0xSZW5kZXJpbmdDb250ZXh0LCB0d29Db2xvclRpbnQ6IGJvb2xlYW4gPSB0cnVlKSB7XG5cdFx0dGhpcy50d29Db2xvclRpbnQgPSB0d29Db2xvclRpbnQ7XG5cdFx0aWYgKHR3b0NvbG9yVGludClcblx0XHRcdHRoaXMudmVydGV4U2l6ZSArPSA0O1xuXHRcdHRoaXMudmVydGljZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHRoaXMudmVydGV4U2l6ZSAqIDEwMjQpO1xuXHR9XG5cblx0ZHJhdyAoYmF0Y2hlcjogUG9seWdvbkJhdGNoZXIsIHNrZWxldG9uOiBTa2VsZXRvbiwgc2xvdFJhbmdlU3RhcnQ6IG51bWJlciA9IC0xLCBzbG90UmFuZ2VFbmQ6IG51bWJlciA9IC0xLCB0cmFuc2Zvcm1lcjogVmVydGV4VHJhbnNmb3JtZXIgfCBudWxsID0gbnVsbCkge1xuXHRcdGNvbnN0IGNsaXBwZXIgPSB0aGlzLmNsaXBwZXI7XG5cdFx0Y29uc3QgdHdvQ29sb3JUaW50ID0gdGhpcy50d29Db2xvclRpbnQ7XG5cdFx0bGV0IGJsZW5kTW9kZTogQmxlbmRNb2RlIHwgbnVsbCA9IG51bGw7XG5cblx0XHRjb25zdCByZW5kZXJhYmxlOiBSZW5kZXJhYmxlID0gdGhpcy5yZW5kZXJhYmxlO1xuXHRcdGxldCB1dnM6IE51bWJlckFycmF5TGlrZTtcblx0XHRsZXQgdHJpYW5nbGVzOiBBcnJheTxudW1iZXI+O1xuXHRcdGNvbnN0IGRyYXdPcmRlciA9IHNrZWxldG9uLmRyYXdPcmRlci5hcHBsaWVkUG9zZTtcblx0XHRsZXQgYXR0YWNobWVudENvbG9yOiBDb2xvcjtcblx0XHRjb25zdCBza2VsZXRvbkNvbG9yID0gc2tlbGV0b24uY29sb3I7XG5cdFx0Y29uc3QgdmVydGV4U2l6ZSA9IHR3b0NvbG9yVGludCA/IDEyIDogODtcblx0XHRsZXQgaW5SYW5nZSA9IGZhbHNlO1xuXHRcdGlmIChzbG90UmFuZ2VTdGFydCA9PT0gLTEpIGluUmFuZ2UgPSB0cnVlO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0Y29uc3Qgc2xvdCA9IGRyYXdPcmRlcltpXTtcblx0XHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBFbmQoc2xvdCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc2xvdFJhbmdlU3RhcnQgPj0gMCAmJiBzbG90UmFuZ2VTdGFydCA9PT0gc2xvdC5kYXRhLmluZGV4KSB7XG5cdFx0XHRcdGluUmFuZ2UgPSB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWluUmFuZ2UpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHNsb3RSYW5nZUVuZCA+PSAwICYmIHNsb3RSYW5nZUVuZCA9PT0gc2xvdC5kYXRhLmluZGV4KSB7XG5cdFx0XHRcdGluUmFuZ2UgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgcG9zZSA9IHNsb3QuYXBwbGllZFBvc2U7XG5cdFx0XHRjb25zdCBhdHRhY2htZW50ID0gcG9zZS5hdHRhY2htZW50O1xuXHRcdFx0bGV0IHRleHR1cmU6IEdMVGV4dHVyZTtcblx0XHRcdGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgUmVnaW9uQXR0YWNobWVudCkge1xuXHRcdFx0XHRyZW5kZXJhYmxlLnZlcnRpY2VzID0gdGhpcy52ZXJ0aWNlcztcblx0XHRcdFx0cmVuZGVyYWJsZS5udW1WZXJ0aWNlcyA9IDQ7XG5cdFx0XHRcdHJlbmRlcmFibGUubnVtRmxvYXRzID0gdmVydGV4U2l6ZSA8PCAyO1xuXG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlID0gYXR0YWNobWVudC5zZXF1ZW5jZTtcblx0XHRcdFx0Y29uc3Qgc2VxdWVuY2VJbmRleCA9IHNlcXVlbmNlLnJlc29sdmVJbmRleChwb3NlKTtcblx0XHRcdFx0YXR0YWNobWVudC5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCBhdHRhY2htZW50LmdldE9mZnNldHMocG9zZSksIHJlbmRlcmFibGUudmVydGljZXMsIDAsIHZlcnRleFNpemUpO1xuXG5cdFx0XHRcdHRyaWFuZ2xlcyA9IFNrZWxldG9uUmVuZGVyZXIuUVVBRF9UUklBTkdMRVM7XG5cdFx0XHRcdHV2cyA9IHNlcXVlbmNlLmdldFVWcyhzZXF1ZW5jZUluZGV4KTtcblx0XHRcdFx0dGV4dHVyZSA9IHNlcXVlbmNlLnJlZ2lvbnNbc2VxdWVuY2VJbmRleF0/LnRleHR1cmUgYXMgR0xUZXh0dXJlO1xuXHRcdFx0XHRhdHRhY2htZW50Q29sb3IgPSBhdHRhY2htZW50LmNvbG9yO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpIHtcblx0XHRcdFx0cmVuZGVyYWJsZS52ZXJ0aWNlcyA9IHRoaXMudmVydGljZXM7XG5cdFx0XHRcdHJlbmRlcmFibGUubnVtVmVydGljZXMgPSAoYXR0YWNobWVudC53b3JsZFZlcnRpY2VzTGVuZ3RoID4+IDEpO1xuXHRcdFx0XHRyZW5kZXJhYmxlLm51bUZsb2F0cyA9IHJlbmRlcmFibGUubnVtVmVydGljZXMgKiB2ZXJ0ZXhTaXplO1xuXG5cdFx0XHRcdGlmIChyZW5kZXJhYmxlLm51bUZsb2F0cyA+IHJlbmRlcmFibGUudmVydGljZXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cmVuZGVyYWJsZS52ZXJ0aWNlcyA9IHRoaXMudmVydGljZXMgPSBVdGlscy5uZXdGbG9hdEFycmF5KHJlbmRlcmFibGUubnVtRmxvYXRzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhdHRhY2htZW50LmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNrZWxldG9uLCBzbG90LCAwLCBhdHRhY2htZW50LndvcmxkVmVydGljZXNMZW5ndGgsIHJlbmRlcmFibGUudmVydGljZXMsIDAsIHZlcnRleFNpemUpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBhdHRhY2htZW50LnRyaWFuZ2xlcztcblxuXHRcdFx0XHRjb25zdCBzZXF1ZW5jZSA9IGF0dGFjaG1lbnQuc2VxdWVuY2U7XG5cdFx0XHRcdGNvbnN0IHNlcXVlbmNlSW5kZXggPSBzZXF1ZW5jZS5yZXNvbHZlSW5kZXgocG9zZSk7XG5cblx0XHRcdFx0dGV4dHVyZSA9IHNlcXVlbmNlLnJlZ2lvbnNbc2VxdWVuY2VJbmRleF0/LnRleHR1cmUgYXMgR0xUZXh0dXJlO1xuXHRcdFx0XHR1dnMgPSBzZXF1ZW5jZS5nZXRVVnMoc2VxdWVuY2VJbmRleCk7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IGF0dGFjaG1lbnQuY29sb3I7XG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBDbGlwcGluZ0F0dGFjaG1lbnQpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBTdGFydChza2VsZXRvbiwgc2xvdCwgYXR0YWNobWVudCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kKHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHRleHR1cmUpIHtcblx0XHRcdFx0Y29uc3Qgc2xvdENvbG9yID0gcG9zZS5jb2xvcjtcblx0XHRcdFx0Y29uc3QgZmluYWxDb2xvciA9IHRoaXMudGVtcENvbG9yO1xuXHRcdFx0XHRjb25zdCBhbHBoYSA9IHNrZWxldG9uQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmE7XG5cdFx0XHRcdGZpbmFsQ29sb3IuciA9IHNrZWxldG9uQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnIgKiBhbHBoYTtcblx0XHRcdFx0ZmluYWxDb2xvci5nID0gc2tlbGV0b25Db2xvci5nICogc2xvdENvbG9yLmcgKiBhdHRhY2htZW50Q29sb3IuZyAqIGFscGhhO1xuXHRcdFx0XHRmaW5hbENvbG9yLmIgPSBza2VsZXRvbkNvbG9yLmIgKiBzbG90Q29sb3IuYiAqIGF0dGFjaG1lbnRDb2xvci5iICogYWxwaGE7XG5cdFx0XHRcdGZpbmFsQ29sb3IuYSA9IGFscGhhO1xuXHRcdFx0XHRjb25zdCBkYXJrQ29sb3IgPSB0aGlzLnRlbXBDb2xvcjI7XG5cdFx0XHRcdGlmICghcG9zZS5kYXJrQ29sb3IpXG5cdFx0XHRcdFx0ZGFya0NvbG9yLnNldCgwLCAwLCAwLCAxLjApO1xuXHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRkYXJrQ29sb3IuciA9IHBvc2UuZGFya0NvbG9yLnIgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrQ29sb3IuZyA9IHBvc2UuZGFya0NvbG9yLmcgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrQ29sb3IuYiA9IHBvc2UuZGFya0NvbG9yLmIgKiBhbHBoYTtcblx0XHRcdFx0XHRkYXJrQ29sb3IuYSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBzbG90QmxlbmRNb2RlID0gc2xvdC5kYXRhLmJsZW5kTW9kZTtcblx0XHRcdFx0aWYgKHNsb3RCbGVuZE1vZGUgIT09IGJsZW5kTW9kZSkge1xuXHRcdFx0XHRcdGJsZW5kTW9kZSA9IHNsb3RCbGVuZE1vZGU7XG5cdFx0XHRcdFx0YmF0Y2hlci5zZXRCbGVuZE1vZGUoYmxlbmRNb2RlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjbGlwcGVyLmlzQ2xpcHBpbmcoKSAmJiBjbGlwcGVyLmNsaXBUcmlhbmdsZXMocmVuZGVyYWJsZS52ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXMubGVuZ3RoLCB1dnMsIGZpbmFsQ29sb3IsIGRhcmtDb2xvciwgdHdvQ29sb3JUaW50LCB2ZXJ0ZXhTaXplKSkge1xuXHRcdFx0XHRcdGNvbnN0IGNsaXBwZWRWZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkoY2xpcHBlci5jbGlwcGVkVmVydGljZXMpO1xuXHRcdFx0XHRcdGNvbnN0IGNsaXBwZWRUcmlhbmdsZXMgPSBjbGlwcGVyLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0aWYgKHRyYW5zZm9ybWVyKSB0cmFuc2Zvcm1lcihjbGlwcGVkVmVydGljZXMsIGNsaXBwZWRWZXJ0aWNlcy5sZW5ndGgsIHZlcnRleFNpemUpO1xuXHRcdFx0XHRcdGJhdGNoZXIuZHJhdyh0ZXh0dXJlLCBjbGlwcGVkVmVydGljZXMsIGNsaXBwZWRUcmlhbmdsZXMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IHZlcnRzID0gcmVuZGVyYWJsZS52ZXJ0aWNlcztcblx0XHRcdFx0XHRpZiAoIXR3b0NvbG9yVGludCkge1xuXHRcdFx0XHRcdFx0Zm9yIChsZXQgdiA9IDIsIHUgPSAwLCBuID0gcmVuZGVyYWJsZS5udW1GbG9hdHM7IHYgPCBuOyB2ICs9IHZlcnRleFNpemUsIHUgKz0gMikge1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2XSA9IGZpbmFsQ29sb3Iucjtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDFdID0gZmluYWxDb2xvci5nO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgMl0gPSBmaW5hbENvbG9yLmI7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyAzXSA9IGFscGhhO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgNF0gPSB1dnNbdV07XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyA1XSA9IHV2c1t1ICsgMV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGZvciAobGV0IHYgPSAyLCB1ID0gMCwgbiA9IHJlbmRlcmFibGUubnVtRmxvYXRzOyB2IDwgbjsgdiArPSB2ZXJ0ZXhTaXplLCB1ICs9IDIpIHtcblx0XHRcdFx0XHRcdFx0dmVydHNbdl0gPSBmaW5hbENvbG9yLnI7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyAxXSA9IGZpbmFsQ29sb3IuZztcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDJdID0gZmluYWxDb2xvci5iO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgM10gPSBhbHBoYTtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDRdID0gdXZzW3VdO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgNV0gPSB1dnNbdSArIDFdO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgNl0gPSBkYXJrQ29sb3Iucjtcblx0XHRcdFx0XHRcdFx0dmVydHNbdiArIDddID0gZGFya0NvbG9yLmc7XG5cdFx0XHRcdFx0XHRcdHZlcnRzW3YgKyA4XSA9IGRhcmtDb2xvci5iO1xuXHRcdFx0XHRcdFx0XHR2ZXJ0c1t2ICsgOV0gPSBkYXJrQ29sb3IuYTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgdmlldyA9IChyZW5kZXJhYmxlLnZlcnRpY2VzIGFzIEZsb2F0MzJBcnJheSkuc3ViYXJyYXkoMCwgcmVuZGVyYWJsZS5udW1GbG9hdHMpO1xuXHRcdFx0XHRcdGlmICh0cmFuc2Zvcm1lcikgdHJhbnNmb3JtZXIocmVuZGVyYWJsZS52ZXJ0aWNlcywgcmVuZGVyYWJsZS5udW1GbG9hdHMsIHZlcnRleFNpemUpO1xuXHRcdFx0XHRcdGJhdGNoZXIuZHJhdyh0ZXh0dXJlLCB2aWV3LCB0cmlhbmdsZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNsaXBwZXIuY2xpcEVuZChzbG90KTtcblx0XHR9XG5cdFx0Y2xpcHBlci5jbGlwRW5kKCk7XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUge0BsaW5rIFNrZWxldG9uQ2xpcHBpbmd9IHVzZWQgYnkgdGhpcyByZW5kZXJlciBmb3IgdXNlIHdpdGggZS5nLiB7QGxpbmsgU2tlbGV0b24uZ2V0Qm91bmRzfSAqKi9cblx0cHVibGljIGdldFNrZWxldG9uQ2xpcHBpbmcgKCk6IFNrZWxldG9uQ2xpcHBpbmcge1xuXHRcdHJldHVybiB0aGlzLmNsaXBwZXI7XG5cdH1cbn1cbiJdfQ==
@@ -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 { TimeKeeper, AssetManager, ManagedWebGLRenderingContext, SceneRenderer, Input, StringMap } from "./index.js";
29
+ import { AssetManager, Input, ManagedWebGLRenderingContext, SceneRenderer, type StringMap, TimeKeeper } from "./index.js";
30
30
  /** An app running inside a {@link SpineCanvas}. The app life-cycle
31
31
  * is as follows:
32
32
  *
@@ -49,7 +49,7 @@ export interface SpineCanvasApp {
49
49
  export interface SpineCanvasConfig {
50
50
  app: SpineCanvasApp;
51
51
  pathPrefix?: string;
52
- webglConfig?: any;
52
+ webglConfig?: WebGLContextAttributes;
53
53
  }
54
54
  /** Manages the life-cycle and WebGL context of a {@link SpineCanvasApp}. The app loads
55
55
  * assets and initializes itself, then updates and renders its state at the screen refresh rate. */
@@ -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 { TimeKeeper, AssetManager, ManagedWebGLRenderingContext, SceneRenderer, Input } from "./index.js";
29
+ import { AssetManager, Input, ManagedWebGLRenderingContext, SceneRenderer, TimeKeeper } from "./index.js";
30
30
  /** Manages the life-cycle and WebGL context of a {@link SpineCanvasApp}. The app loads
31
31
  * assets and initializes itself, then updates and renders its state at the screen refresh rate. */
32
32
  export class SpineCanvas {
@@ -69,7 +69,7 @@ export class SpineCanvas {
69
69
  this.input = new Input(canvas);
70
70
  if (config.app.loadAssets)
71
71
  config.app.loadAssets(this);
72
- let loop = () => {
72
+ const loop = () => {
73
73
  if (this.disposed)
74
74
  return;
75
75
  requestAnimationFrame(loop);
@@ -79,7 +79,7 @@ export class SpineCanvas {
79
79
  if (config.app.render)
80
80
  config.app.render(this);
81
81
  };
82
- let waitForAssets = () => {
82
+ const waitForAssets = () => {
83
83
  if (this.disposed)
84
84
  return;
85
85
  if (this.assetManager.isLoadingComplete()) {
@@ -110,4 +110,4 @@ export class SpineCanvas {
110
110
  this.disposed = true;
111
111
  }
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVDYW52YXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3BpbmVDYW52YXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQWEsTUFBTSxZQUFZLENBQUM7QUErQnJIO21HQUNtRztBQUNuRyxNQUFNLE9BQU8sV0FBVztJQW1CeUI7SUFsQnZDLE9BQU8sQ0FBK0I7SUFFL0MseUVBQXlFO0lBQ2hFLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLG9DQUFvQztJQUMzQixVQUFVLENBQW9CO0lBQ3ZDLG1DQUFtQztJQUMxQixFQUFFLENBQXdCO0lBQ25DLDRFQUE0RTtJQUNuRSxRQUFRLENBQWdCO0lBQ2pDLDZDQUE2QztJQUNwQyxZQUFZLENBQWU7SUFDcEMsK0VBQStFO0lBQ3RFLEtBQUssQ0FBUTtJQUVkLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFekIsNEVBQTRFO0lBQzVFLFlBQWEsTUFBeUIsRUFBVSxNQUF5QjtRQUF6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFBRSxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHO2dCQUM3QixVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztnQkFDckIsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUNqQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztnQkFDakIsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ2hCLE9B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T0FBTztZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN0QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB7IFRpbWVLZWVwZXIsIEFzc2V0TWFuYWdlciwgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgU2NlbmVSZW5kZXJlciwgSW5wdXQsIFN0cmluZ01hcCB9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbi8qKiBBbiBhcHAgcnVubmluZyBpbnNpZGUgYSB7QGxpbmsgU3BpbmVDYW52YXN9LiBUaGUgYXBwIGxpZmUtY3ljbGVcbiAqIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogMS4gYGxvYWRBc3NldHMoKWAgaXMgY2FsbGVkLiBUaGUgYXBwIGNhbiBxdWV1ZSBhc3NldHMgZm9yIGxvYWRpbmcgdmlhIHtAbGluayBTcGluZUNhbnZhcy5hc3NldE1hbmFnZXJ9LlxuICogMi4gYGluaXRpYWxpemUoKWAgaXMgY2FsbGVkIHdoZW4gYWxsIGFzc2V0cyBhcmUgbG9hZGVkLiBUaGUgYXBwIGNhbiBzZXR1cCBhbnl0aGluZyBpdCBuZWVkcyB0byBlbnRlciB0aGUgbWFpbiBhcHBsaWNhdGlvbiBsb2dpYy5cbiAqIDMuIGB1cGRhdGUoKWAgaXMgY2FsbGVkIHBlcmlvZGljYWxseSBhdCBzY3JlZW4gcmVmcmVzaCByYXRlLiBUaGUgYXBwIGNhbiB1cGRhdGUgaXRzIHN0YXRlLlxuICogNC4gYHJlbmRlcigpYCBpcyBjYWxsZWQgcGVyaW9kaWNhbGx5IGF0IHNjcmVlbiByZWZyZXNoIHJhdGUuIFRoZSBhcHAgY2FuIHJlbmRlciBpdHMgc3RhdGUgdmlhIHtAbGluayBTcGluZUNhbnZhcy5yZW5kZXJlcn0gb3IgZGlyZWN0bHkgdmlhIHRoZSBXZWJHTCBjb250ZXh0IGluIHtAbGluayBTcGluZUNhbnZhcy5nbH0uXG4gKlxuICogVGhlIGBlcnJvcigpYCBtZXRob2QgaXMgY2FsbGVkIGluIGNhc2UgdGhlIGFzc2V0cyBjb3VsZCBub3QgYmUgbG9hZGVkLiBUaGUgYGRpc3Bvc2UoKWAgbWV0aG9kIGlzIGNhbGxlZCBpbiBjYXNlIHRoZSBjYW52YXMgaGFzIGJlZW4gZGlzcG9zZWQgdmlhIHtAbGluayBTcGluZUNhbnZhcy5kaXNwb3NlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGluZUNhbnZhc0FwcCB7XG5cdGxvYWRBc3NldHM/KGNhbnZhczogU3BpbmVDYW52YXMpOiB2b2lkO1xuXHRpbml0aWFsaXplPyhjYW52YXM6IFNwaW5lQ2FudmFzKTogdm9pZDtcblx0dXBkYXRlPyhjYW52YXM6IFNwaW5lQ2FudmFzLCBkZWx0YTogbnVtYmVyKTogdm9pZDtcblx0cmVuZGVyPyhjYW52YXM6IFNwaW5lQ2FudmFzKTogdm9pZDtcblx0ZXJyb3I/KGNhbnZhczogU3BpbmVDYW52YXMsIGVycm9yczogU3RyaW5nTWFwPHN0cmluZz4pOiB2b2lkO1xuXHRkaXNwb3NlPyhjYW52YXM6IFNwaW5lQ2FudmFzKTogdm9pZDtcbn1cblxuLyoqIENvbmZpZ3VyYXRpb24gcGFzc2VkIHRvIHRoZSB7QGxpbmsgU3BpbmVDYW52YXN9IGNvbnN0cnVjdG9yICovXG5leHBvcnQgaW50ZXJmYWNlIFNwaW5lQ2FudmFzQ29uZmlnIHtcblx0LyogVGhlIHtAbGluayBTcGluZUNhbnZhc0FwcH0gdG8gYmUgcnVuIGluIHRoZSBjYW52YXMuICovXG5cdGFwcDogU3BpbmVDYW52YXNBcHA7XG5cdC8qIFRoZSBwYXRoIHByZWZpeCB0byBiZSB1c2VkIGJ5IHRoZSB7QGxpbmsgQXNzZXRNYW5hZ2VyfS4gKi9cblx0cGF0aFByZWZpeD86IHN0cmluZztcblx0LyogVGhlIFdlYkdMIGNvbnRleHQgY29uZmlndXJhdGlvbiAqL1xuXHR3ZWJnbENvbmZpZz86IGFueTtcbn1cblxuLyoqIE1hbmFnZXMgdGhlIGxpZmUtY3ljbGUgYW5kIFdlYkdMIGNvbnRleHQgb2YgYSB7QGxpbmsgU3BpbmVDYW52YXNBcHB9LiBUaGUgYXBwIGxvYWRzXG4gKiBhc3NldHMgYW5kIGluaXRpYWxpemVzIGl0c2VsZiwgdGhlbiB1cGRhdGVzIGFuZCByZW5kZXJzIGl0cyBzdGF0ZSBhdCB0aGUgc2NyZWVuIHJlZnJlc2ggcmF0ZS4gKi9cbmV4cG9ydCBjbGFzcyBTcGluZUNhbnZhcyB7XG5cdHJlYWRvbmx5IGNvbnRleHQ6IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cblx0LyoqIFRyYWNrcyB0aGUgY3VycmVudCB0aW1lLCBkZWx0YSwgYW5kIG90aGVyIHRpbWUgcmVsYXRlZCBzdGF0aXN0aWNzLiAqL1xuXHRyZWFkb25seSB0aW1lID0gbmV3IFRpbWVLZWVwZXIoKTtcblx0LyoqIFRoZSBIVE1MIGNhbnZhcyB0byByZW5kZXIgdG8uICovXG5cdHJlYWRvbmx5IGh0bWxDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50O1xuXHQvKiogVGhlIFdlYkdMIHJlbmRlcmluZyBjb250ZXh0LiAqL1xuXHRyZWFkb25seSBnbDogV2ViR0xSZW5kZXJpbmdDb250ZXh0O1xuXHQvKiogVGhlIHNjZW5lIHJlbmRlcmVyIGZvciBlYXN5IGRyYXdpbmcgb2Ygc2tlbGV0b25zLCBzaGFwZXMsIGFuZCBpbWFnZXMuICovXG5cdHJlYWRvbmx5IHJlbmRlcmVyOiBTY2VuZVJlbmRlcmVyO1xuXHQvKiogVGhlIGFzc2V0IG1hbmFnZXIgdG8gbG9hZCBhc3NldHMgd2l0aC4gKi9cblx0cmVhZG9ubHkgYXNzZXRNYW5hZ2VyOiBBc3NldE1hbmFnZXI7XG5cdC8qKiBUaGUgaW5wdXQgcHJvY2Vzc29yIHVzZWQgdG8gbGlzdGVuIHRvIG1vdXNlLCB0b3VjaCwgYW5kIGtleWJvYXJkIGV2ZW50cy4gKi9cblx0cmVhZG9ubHkgaW5wdXQ6IElucHV0O1xuXG5cdHByaXZhdGUgZGlzcG9zZWQgPSBmYWxzZTtcblxuXHQvKiogQ29uc3RydWN0cyBhIG5ldyBzcGluZSBjYW52YXMsIHJlbmRlcmluZyB0byB0aGUgcHJvdmlkZWQgSFRNTCBjYW52YXMuICovXG5cdGNvbnN0cnVjdG9yIChjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50LCBwcml2YXRlIGNvbmZpZzogU3BpbmVDYW52YXNDb25maWcpIHtcblx0XHRpZiAoIWNvbmZpZy5wYXRoUHJlZml4KSBjb25maWcucGF0aFByZWZpeCA9IFwiXCI7XG5cdFx0aWYgKCFjb25maWcuYXBwKSBjb25maWcuYXBwID0ge1xuXHRcdFx0bG9hZEFzc2V0czogKCkgPT4geyB9LFxuXHRcdFx0aW5pdGlhbGl6ZTogKCkgPT4geyB9LFxuXHRcdFx0dXBkYXRlOiAoKSA9PiB7IH0sXG5cdFx0XHRyZW5kZXI6ICgpID0+IHsgfSxcblx0XHRcdGVycm9yOiAoKSA9PiB7IH0sXG5cdFx0XHRkaXNwb3NlOiAoKSA9PiB7IH0sXG5cdFx0fVxuXHRcdGlmICghY29uZmlnLndlYmdsQ29uZmlnKSBjb25maWcud2ViZ2xDb25maWcgPSB7IGFscGhhOiB0cnVlIH07XG5cblx0XHR0aGlzLmh0bWxDYW52YXMgPSBjYW52YXM7XG5cdFx0dGhpcy5jb250ZXh0ID0gbmV3IE1hbmFnZWRXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBjb25maWcud2ViZ2xDb25maWcpO1xuXHRcdHRoaXMucmVuZGVyZXIgPSBuZXcgU2NlbmVSZW5kZXJlcihjYW52YXMsIHRoaXMuY29udGV4dCk7XG5cdFx0dGhpcy5nbCA9IHRoaXMuY29udGV4dC5nbDtcblx0XHR0aGlzLmFzc2V0TWFuYWdlciA9IG5ldyBBc3NldE1hbmFnZXIodGhpcy5jb250ZXh0LCBjb25maWcucGF0aFByZWZpeCk7XG5cdFx0dGhpcy5pbnB1dCA9IG5ldyBJbnB1dChjYW52YXMpO1xuXG5cdFx0aWYgKGNvbmZpZy5hcHAubG9hZEFzc2V0cykgY29uZmlnLmFwcC5sb2FkQXNzZXRzKHRoaXMpO1xuXG5cdFx0bGV0IGxvb3AgPSAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuXHRcdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuXHRcdFx0dGhpcy50aW1lLnVwZGF0ZSgpO1xuXHRcdFx0aWYgKGNvbmZpZy5hcHAudXBkYXRlKSBjb25maWcuYXBwLnVwZGF0ZSh0aGlzLCB0aGlzLnRpbWUuZGVsdGEpO1xuXHRcdFx0aWYgKGNvbmZpZy5hcHAucmVuZGVyKSBjb25maWcuYXBwLnJlbmRlcih0aGlzKTtcblx0XHR9XG5cblx0XHRsZXQgd2FpdEZvckFzc2V0cyA9ICgpID0+IHtcblx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm47XG5cdFx0XHRpZiAodGhpcy5hc3NldE1hbmFnZXIuaXNMb2FkaW5nQ29tcGxldGUoKSkge1xuXHRcdFx0XHRpZiAodGhpcy5hc3NldE1hbmFnZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRcdFx0XHRpZiAoY29uZmlnLmFwcC5lcnJvcikgY29uZmlnLmFwcC5lcnJvcih0aGlzLCB0aGlzLmFzc2V0TWFuYWdlci5nZXRFcnJvcnMoKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKGNvbmZpZy5hcHAuaW5pdGlhbGl6ZSkgY29uZmlnLmFwcC5pbml0aWFsaXplKHRoaXMpO1xuXHRcdFx0XHRcdGxvb3AoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUod2FpdEZvckFzc2V0cyk7XG5cdFx0fVxuXHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSh3YWl0Rm9yQXNzZXRzKTtcblx0fVxuXG5cdC8qKiBDbGVhcnMgdGhlIGNhbnZhcyB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGNvbG9yIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gdGhlIHJhbmdlIFswLDFdLiAqL1xuXHRjbGVhciAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0dGhpcy5nbC5jbGVhckNvbG9yKHIsIGcsIGIsIGEpO1xuXHRcdHRoaXMuZ2wuY2xlYXIodGhpcy5nbC5DT0xPUl9CVUZGRVJfQklUKTtcblx0fVxuXG5cdC8qKiBEaXNwb3NlcyB0aGUgYXBwLCBzbyB0aGUgdXBkYXRlKCkgYW5kIHJlbmRlcigpIGZ1bmN0aW9ucyBhcmUgbm8gbG9uZ2VyIGNhbGxlZC4gQ2FsbHMgdGhlIGRpc3Bvc2UoKSBjYWxsYmFjay4qL1xuXHRkaXNwb3NlICgpIHtcblx0XHRpZiAodGhpcy5jb25maWcuYXBwLmRpc3Bvc2UpIHRoaXMuY29uZmlnLmFwcC5kaXNwb3NlKHRoaXMpO1xuXHRcdHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuXHR9XG59XG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVDYW52YXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU3BpbmVDYW52YXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLDRCQUE0QixFQUFFLGFBQWEsRUFBa0IsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBK0IxSDttR0FDbUc7QUFDbkcsTUFBTSxPQUFPLFdBQVc7SUFtQnlCO0lBbEJ2QyxPQUFPLENBQStCO0lBRS9DLHlFQUF5RTtJQUNoRSxJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNqQyxvQ0FBb0M7SUFDM0IsVUFBVSxDQUFvQjtJQUN2QyxtQ0FBbUM7SUFDMUIsRUFBRSxDQUF3QjtJQUNuQyw0RUFBNEU7SUFDbkUsUUFBUSxDQUFnQjtJQUNqQyw2Q0FBNkM7SUFDcEMsWUFBWSxDQUFlO0lBQ3BDLCtFQUErRTtJQUN0RSxLQUFLLENBQVE7SUFFZCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXpCLDRFQUE0RTtJQUM1RSxZQUFhLE1BQXlCLEVBQVUsTUFBeUI7UUFBekIsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQUUsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRztnQkFDN0IsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ3JCLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUNyQixNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztnQkFDakIsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7Z0JBQ2pCLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO2dCQUNoQixP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QyxPQUFPO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQXNzZXRNYW5hZ2VyLCBJbnB1dCwgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dCwgU2NlbmVSZW5kZXJlciwgdHlwZSBTdHJpbmdNYXAsIFRpbWVLZWVwZXIgfSBmcm9tIFwiLi9pbmRleC5qc1wiO1xuXG4vKiogQW4gYXBwIHJ1bm5pbmcgaW5zaWRlIGEge0BsaW5rIFNwaW5lQ2FudmFzfS4gVGhlIGFwcCBsaWZlLWN5Y2xlXG4gKiBpcyBhcyBmb2xsb3dzOlxuICpcbiAqIDEuIGBsb2FkQXNzZXRzKClgIGlzIGNhbGxlZC4gVGhlIGFwcCBjYW4gcXVldWUgYXNzZXRzIGZvciBsb2FkaW5nIHZpYSB7QGxpbmsgU3BpbmVDYW52YXMuYXNzZXRNYW5hZ2VyfS5cbiAqIDIuIGBpbml0aWFsaXplKClgIGlzIGNhbGxlZCB3aGVuIGFsbCBhc3NldHMgYXJlIGxvYWRlZC4gVGhlIGFwcCBjYW4gc2V0dXAgYW55dGhpbmcgaXQgbmVlZHMgdG8gZW50ZXIgdGhlIG1haW4gYXBwbGljYXRpb24gbG9naWMuXG4gKiAzLiBgdXBkYXRlKClgIGlzIGNhbGxlZCBwZXJpb2RpY2FsbHkgYXQgc2NyZWVuIHJlZnJlc2ggcmF0ZS4gVGhlIGFwcCBjYW4gdXBkYXRlIGl0cyBzdGF0ZS5cbiAqIDQuIGByZW5kZXIoKWAgaXMgY2FsbGVkIHBlcmlvZGljYWxseSBhdCBzY3JlZW4gcmVmcmVzaCByYXRlLiBUaGUgYXBwIGNhbiByZW5kZXIgaXRzIHN0YXRlIHZpYSB7QGxpbmsgU3BpbmVDYW52YXMucmVuZGVyZXJ9IG9yIGRpcmVjdGx5IHZpYSB0aGUgV2ViR0wgY29udGV4dCBpbiB7QGxpbmsgU3BpbmVDYW52YXMuZ2x9LlxuICpcbiAqIFRoZSBgZXJyb3IoKWAgbWV0aG9kIGlzIGNhbGxlZCBpbiBjYXNlIHRoZSBhc3NldHMgY291bGQgbm90IGJlIGxvYWRlZC4gVGhlIGBkaXNwb3NlKClgIG1ldGhvZCBpcyBjYWxsZWQgaW4gY2FzZSB0aGUgY2FudmFzIGhhcyBiZWVuIGRpc3Bvc2VkIHZpYSB7QGxpbmsgU3BpbmVDYW52YXMuZGlzcG9zZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3BpbmVDYW52YXNBcHAge1xuXHRsb2FkQXNzZXRzPyhjYW52YXM6IFNwaW5lQ2FudmFzKTogdm9pZDtcblx0aW5pdGlhbGl6ZT8oY2FudmFzOiBTcGluZUNhbnZhcyk6IHZvaWQ7XG5cdHVwZGF0ZT8oY2FudmFzOiBTcGluZUNhbnZhcywgZGVsdGE6IG51bWJlcik6IHZvaWQ7XG5cdHJlbmRlcj8oY2FudmFzOiBTcGluZUNhbnZhcyk6IHZvaWQ7XG5cdGVycm9yPyhjYW52YXM6IFNwaW5lQ2FudmFzLCBlcnJvcnM6IFN0cmluZ01hcDxzdHJpbmc+KTogdm9pZDtcblx0ZGlzcG9zZT8oY2FudmFzOiBTcGluZUNhbnZhcyk6IHZvaWQ7XG59XG5cbi8qKiBDb25maWd1cmF0aW9uIHBhc3NlZCB0byB0aGUge0BsaW5rIFNwaW5lQ2FudmFzfSBjb25zdHJ1Y3RvciAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGluZUNhbnZhc0NvbmZpZyB7XG5cdC8qIFRoZSB7QGxpbmsgU3BpbmVDYW52YXNBcHB9IHRvIGJlIHJ1biBpbiB0aGUgY2FudmFzLiAqL1xuXHRhcHA6IFNwaW5lQ2FudmFzQXBwO1xuXHQvKiBUaGUgcGF0aCBwcmVmaXggdG8gYmUgdXNlZCBieSB0aGUge0BsaW5rIEFzc2V0TWFuYWdlcn0uICovXG5cdHBhdGhQcmVmaXg/OiBzdHJpbmc7XG5cdC8qIFRoZSBXZWJHTCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gKi9cblx0d2ViZ2xDb25maWc/OiBXZWJHTENvbnRleHRBdHRyaWJ1dGVzO1xufVxuXG4vKiogTWFuYWdlcyB0aGUgbGlmZS1jeWNsZSBhbmQgV2ViR0wgY29udGV4dCBvZiBhIHtAbGluayBTcGluZUNhbnZhc0FwcH0uIFRoZSBhcHAgbG9hZHNcbiAqIGFzc2V0cyBhbmQgaW5pdGlhbGl6ZXMgaXRzZWxmLCB0aGVuIHVwZGF0ZXMgYW5kIHJlbmRlcnMgaXRzIHN0YXRlIGF0IHRoZSBzY3JlZW4gcmVmcmVzaCByYXRlLiAqL1xuZXhwb3J0IGNsYXNzIFNwaW5lQ2FudmFzIHtcblx0cmVhZG9ubHkgY29udGV4dDogTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dDtcblxuXHQvKiogVHJhY2tzIHRoZSBjdXJyZW50IHRpbWUsIGRlbHRhLCBhbmQgb3RoZXIgdGltZSByZWxhdGVkIHN0YXRpc3RpY3MuICovXG5cdHJlYWRvbmx5IHRpbWUgPSBuZXcgVGltZUtlZXBlcigpO1xuXHQvKiogVGhlIEhUTUwgY2FudmFzIHRvIHJlbmRlciB0by4gKi9cblx0cmVhZG9ubHkgaHRtbENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG5cdC8qKiBUaGUgV2ViR0wgcmVuZGVyaW5nIGNvbnRleHQuICovXG5cdHJlYWRvbmx5IGdsOiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ7XG5cdC8qKiBUaGUgc2NlbmUgcmVuZGVyZXIgZm9yIGVhc3kgZHJhd2luZyBvZiBza2VsZXRvbnMsIHNoYXBlcywgYW5kIGltYWdlcy4gKi9cblx0cmVhZG9ubHkgcmVuZGVyZXI6IFNjZW5lUmVuZGVyZXI7XG5cdC8qKiBUaGUgYXNzZXQgbWFuYWdlciB0byBsb2FkIGFzc2V0cyB3aXRoLiAqL1xuXHRyZWFkb25seSBhc3NldE1hbmFnZXI6IEFzc2V0TWFuYWdlcjtcblx0LyoqIFRoZSBpbnB1dCBwcm9jZXNzb3IgdXNlZCB0byBsaXN0ZW4gdG8gbW91c2UsIHRvdWNoLCBhbmQga2V5Ym9hcmQgZXZlbnRzLiAqL1xuXHRyZWFkb25seSBpbnB1dDogSW5wdXQ7XG5cblx0cHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuXG5cdC8qKiBDb25zdHJ1Y3RzIGEgbmV3IHNwaW5lIGNhbnZhcywgcmVuZGVyaW5nIHRvIHRoZSBwcm92aWRlZCBIVE1MIGNhbnZhcy4gKi9cblx0Y29uc3RydWN0b3IgKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsIHByaXZhdGUgY29uZmlnOiBTcGluZUNhbnZhc0NvbmZpZykge1xuXHRcdGlmICghY29uZmlnLnBhdGhQcmVmaXgpIGNvbmZpZy5wYXRoUHJlZml4ID0gXCJcIjtcblx0XHRpZiAoIWNvbmZpZy5hcHApIGNvbmZpZy5hcHAgPSB7XG5cdFx0XHRsb2FkQXNzZXRzOiAoKSA9PiB7IH0sXG5cdFx0XHRpbml0aWFsaXplOiAoKSA9PiB7IH0sXG5cdFx0XHR1cGRhdGU6ICgpID0+IHsgfSxcblx0XHRcdHJlbmRlcjogKCkgPT4geyB9LFxuXHRcdFx0ZXJyb3I6ICgpID0+IHsgfSxcblx0XHRcdGRpc3Bvc2U6ICgpID0+IHsgfSxcblx0XHR9XG5cdFx0aWYgKCFjb25maWcud2ViZ2xDb25maWcpIGNvbmZpZy53ZWJnbENvbmZpZyA9IHsgYWxwaGE6IHRydWUgfTtcblxuXHRcdHRoaXMuaHRtbENhbnZhcyA9IGNhbnZhcztcblx0XHR0aGlzLmNvbnRleHQgPSBuZXcgTWFuYWdlZFdlYkdMUmVuZGVyaW5nQ29udGV4dChjYW52YXMsIGNvbmZpZy53ZWJnbENvbmZpZyk7XG5cdFx0dGhpcy5yZW5kZXJlciA9IG5ldyBTY2VuZVJlbmRlcmVyKGNhbnZhcywgdGhpcy5jb250ZXh0KTtcblx0XHR0aGlzLmdsID0gdGhpcy5jb250ZXh0LmdsO1xuXHRcdHRoaXMuYXNzZXRNYW5hZ2VyID0gbmV3IEFzc2V0TWFuYWdlcih0aGlzLmNvbnRleHQsIGNvbmZpZy5wYXRoUHJlZml4KTtcblx0XHR0aGlzLmlucHV0ID0gbmV3IElucHV0KGNhbnZhcyk7XG5cblx0XHRpZiAoY29uZmlnLmFwcC5sb2FkQXNzZXRzKSBjb25maWcuYXBwLmxvYWRBc3NldHModGhpcyk7XG5cblx0XHRjb25zdCBsb29wID0gKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZGlzcG9zZWQpIHJldHVybjtcblx0XHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTtcblx0XHRcdHRoaXMudGltZS51cGRhdGUoKTtcblx0XHRcdGlmIChjb25maWcuYXBwLnVwZGF0ZSkgY29uZmlnLmFwcC51cGRhdGUodGhpcywgdGhpcy50aW1lLmRlbHRhKTtcblx0XHRcdGlmIChjb25maWcuYXBwLnJlbmRlcikgY29uZmlnLmFwcC5yZW5kZXIodGhpcyk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgd2FpdEZvckFzc2V0cyA9ICgpID0+IHtcblx0XHRcdGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm47XG5cdFx0XHRpZiAodGhpcy5hc3NldE1hbmFnZXIuaXNMb2FkaW5nQ29tcGxldGUoKSkge1xuXHRcdFx0XHRpZiAodGhpcy5hc3NldE1hbmFnZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRcdFx0XHRpZiAoY29uZmlnLmFwcC5lcnJvcikgY29uZmlnLmFwcC5lcnJvcih0aGlzLCB0aGlzLmFzc2V0TWFuYWdlci5nZXRFcnJvcnMoKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKGNvbmZpZy5hcHAuaW5pdGlhbGl6ZSkgY29uZmlnLmFwcC5pbml0aWFsaXplKHRoaXMpO1xuXHRcdFx0XHRcdGxvb3AoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUod2FpdEZvckFzc2V0cyk7XG5cdFx0fVxuXHRcdHJlcXVlc3RBbmltYXRpb25GcmFtZSh3YWl0Rm9yQXNzZXRzKTtcblx0fVxuXG5cdC8qKiBDbGVhcnMgdGhlIGNhbnZhcyB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGNvbG9yIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gdGhlIHJhbmdlIFswLDFdLiAqL1xuXHRjbGVhciAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlciwgYTogbnVtYmVyKSB7XG5cdFx0dGhpcy5nbC5jbGVhckNvbG9yKHIsIGcsIGIsIGEpO1xuXHRcdHRoaXMuZ2wuY2xlYXIodGhpcy5nbC5DT0xPUl9CVUZGRVJfQklUKTtcblx0fVxuXG5cdC8qKiBEaXNwb3NlcyB0aGUgYXBwLCBzbyB0aGUgdXBkYXRlKCkgYW5kIHJlbmRlcigpIGZ1bmN0aW9ucyBhcmUgbm8gbG9uZ2VyIGNhbGxlZC4gQ2FsbHMgdGhlIGRpc3Bvc2UoKSBjYWxsYmFjay4qL1xuXHRkaXNwb3NlICgpIHtcblx0XHRpZiAodGhpcy5jb25maWcuYXBwLmRpc3Bvc2UpIHRoaXMuY29uZmlnLmFwcC5kaXNwb3NlKHRoaXMpO1xuXHRcdHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuXHR9XG59XG4iXX0=
package/dist/Vector3.d.ts CHANGED
@@ -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 { Matrix4 } from "./Matrix4.js";
29
+ import { type Matrix4 } from "./Matrix4.js";
30
30
  export declare class Vector3 {
31
31
  x: number;
32
32
  y: number;
package/dist/Vector3.js CHANGED
@@ -68,7 +68,7 @@ export class Vector3 {
68
68
  }
69
69
  normalize() {
70
70
  let len = this.length();
71
- if (len == 0)
71
+ if (len === 0)
72
72
  return this;
73
73
  len = 1 / len;
74
74
  this.x *= len;
@@ -80,12 +80,12 @@ export class Vector3 {
80
80
  return this.set(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);
81
81
  }
82
82
  multiply(matrix) {
83
- let l_mat = matrix.values;
83
+ const l_mat = matrix.values;
84
84
  return this.set(this.x * l_mat[M00] + this.y * l_mat[M01] + this.z * l_mat[M02] + l_mat[M03], this.x * l_mat[M10] + this.y * l_mat[M11] + this.z * l_mat[M12] + l_mat[M13], this.x * l_mat[M20] + this.y * l_mat[M21] + this.z * l_mat[M22] + l_mat[M23]);
85
85
  }
86
86
  project(matrix) {
87
- let l_mat = matrix.values;
88
- let l_w = 1 / (this.x * l_mat[M30] + this.y * l_mat[M31] + this.z * l_mat[M32] + l_mat[M33]);
87
+ const l_mat = matrix.values;
88
+ const l_w = 1 / (this.x * l_mat[M30] + this.y * l_mat[M31] + this.z * l_mat[M32] + l_mat[M33]);
89
89
  return this.set((this.x * l_mat[M00] + this.y * l_mat[M01] + this.z * l_mat[M02] + l_mat[M03]) * l_w, (this.x * l_mat[M10] + this.y * l_mat[M11] + this.z * l_mat[M12] + l_mat[M13]) * l_w, (this.x * l_mat[M20] + this.y * l_mat[M21] + this.z * l_mat[M22] + l_mat[M23]) * l_w);
90
90
  }
91
91
  dot(v) {
@@ -95,10 +95,10 @@ export class Vector3 {
95
95
  return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
96
96
  }
97
97
  distance(v) {
98
- let a = v.x - this.x;
99
- let b = v.y - this.y;
100
- let c = v.z - this.z;
98
+ const a = v.x - this.x;
99
+ const b = v.y - this.y;
100
+ const c = v.z - this.z;
101
101
  return Math.sqrt(a * a + b * b + c * c);
102
102
  }
103
103
  }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WZWN0b3IzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQVcsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXZILE1BQU0sT0FBTyxPQUFPO0lBQ25CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVOLFlBQWEsSUFBWSxDQUFDLEVBQUUsSUFBWSxDQUFDLEVBQUUsSUFBWSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPLENBQUUsQ0FBVTtRQUNsQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxHQUFHLENBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTO1FBQ25DLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELEdBQUcsQ0FBRSxDQUFVO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsR0FBRyxDQUFFLENBQVU7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxLQUFLLENBQUUsQ0FBUztRQUNmLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELFNBQVM7UUFDUixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDeEIsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFCLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFFLENBQVU7UUFDaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdkcsQ0FBQztJQUVELFFBQVEsQ0FBRSxNQUFlO1FBQ3hCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDM0YsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUM1RSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsT0FBTyxDQUFFLE1BQWU7UUFDdkIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQ25HLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUNwRixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxHQUFHLENBQUUsQ0FBVTtRQUNkLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU07UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsUUFBUSxDQUFFLENBQVU7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBNYXRyaXg0LCBNMDAsIE0wMSwgTTAyLCBNMDMsIE0xMCwgTTExLCBNMTIsIE0xMywgTTIwLCBNMjEsIE0yMiwgTTIzLCBNMzAsIE0zMSwgTTMyLCBNMzMgfSBmcm9tIFwiLi9NYXRyaXg0LmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBWZWN0b3IzIHtcblx0eCA9IDA7XG5cdHkgPSAwO1xuXHR6ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCwgejogbnVtYmVyID0gMCkge1xuXHRcdHRoaXMueCA9IHg7XG5cdFx0dGhpcy55ID0geTtcblx0XHR0aGlzLnogPSB6O1xuXHR9XG5cblx0c2V0RnJvbSAodjogVmVjdG9yMyk6IFZlY3RvcjMge1xuXHRcdHRoaXMueCA9IHYueDtcblx0XHR0aGlzLnkgPSB2Lnk7XG5cdFx0dGhpcy56ID0gdi56O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2V0ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKTogVmVjdG9yMyB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHRcdHRoaXMueiA9IHo7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhZGQgKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcblx0XHR0aGlzLnggKz0gdi54O1xuXHRcdHRoaXMueSArPSB2Lnk7XG5cdFx0dGhpcy56ICs9IHYuejtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHN1YiAodjogVmVjdG9yMyk6IFZlY3RvcjMge1xuXHRcdHRoaXMueCAtPSB2Lng7XG5cdFx0dGhpcy55IC09IHYueTtcblx0XHR0aGlzLnogLT0gdi56O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2NhbGUgKHM6IG51bWJlcik6IFZlY3RvcjMge1xuXHRcdHRoaXMueCAqPSBzO1xuXHRcdHRoaXMueSAqPSBzO1xuXHRcdHRoaXMueiAqPSBzO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm9ybWFsaXplICgpOiBWZWN0b3IzIHtcblx0XHRsZXQgbGVuID0gdGhpcy5sZW5ndGgoKTtcblx0XHRpZiAobGVuID09IDApIHJldHVybiB0aGlzO1xuXHRcdGxlbiA9IDEgLyBsZW47XG5cdFx0dGhpcy54ICo9IGxlbjtcblx0XHR0aGlzLnkgKj0gbGVuO1xuXHRcdHRoaXMueiAqPSBsZW47XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRjcm9zcyAodjogVmVjdG9yMyk6IFZlY3RvcjMge1xuXHRcdHJldHVybiB0aGlzLnNldCh0aGlzLnkgKiB2LnogLSB0aGlzLnogKiB2LnksIHRoaXMueiAqIHYueCAtIHRoaXMueCAqIHYueiwgdGhpcy54ICogdi55IC0gdGhpcy55ICogdi54KVxuXHR9XG5cblx0bXVsdGlwbHkgKG1hdHJpeDogTWF0cml4NCk6IFZlY3RvcjMge1xuXHRcdGxldCBsX21hdCA9IG1hdHJpeC52YWx1ZXM7XG5cdFx0cmV0dXJuIHRoaXMuc2V0KHRoaXMueCAqIGxfbWF0W00wMF0gKyB0aGlzLnkgKiBsX21hdFtNMDFdICsgdGhpcy56ICogbF9tYXRbTTAyXSArIGxfbWF0W00wM10sXG5cdFx0XHR0aGlzLnggKiBsX21hdFtNMTBdICsgdGhpcy55ICogbF9tYXRbTTExXSArIHRoaXMueiAqIGxfbWF0W00xMl0gKyBsX21hdFtNMTNdLFxuXHRcdFx0dGhpcy54ICogbF9tYXRbTTIwXSArIHRoaXMueSAqIGxfbWF0W00yMV0gKyB0aGlzLnogKiBsX21hdFtNMjJdICsgbF9tYXRbTTIzXSk7XG5cdH1cblxuXHRwcm9qZWN0IChtYXRyaXg6IE1hdHJpeDQpOiBWZWN0b3IzIHtcblx0XHRsZXQgbF9tYXQgPSBtYXRyaXgudmFsdWVzO1xuXHRcdGxldCBsX3cgPSAxIC8gKHRoaXMueCAqIGxfbWF0W00zMF0gKyB0aGlzLnkgKiBsX21hdFtNMzFdICsgdGhpcy56ICogbF9tYXRbTTMyXSArIGxfbWF0W00zM10pO1xuXHRcdHJldHVybiB0aGlzLnNldCgodGhpcy54ICogbF9tYXRbTTAwXSArIHRoaXMueSAqIGxfbWF0W00wMV0gKyB0aGlzLnogKiBsX21hdFtNMDJdICsgbF9tYXRbTTAzXSkgKiBsX3csXG5cdFx0XHQodGhpcy54ICogbF9tYXRbTTEwXSArIHRoaXMueSAqIGxfbWF0W00xMV0gKyB0aGlzLnogKiBsX21hdFtNMTJdICsgbF9tYXRbTTEzXSkgKiBsX3csXG5cdFx0XHQodGhpcy54ICogbF9tYXRbTTIwXSArIHRoaXMueSAqIGxfbWF0W00yMV0gKyB0aGlzLnogKiBsX21hdFtNMjJdICsgbF9tYXRbTTIzXSkgKiBsX3cpO1xuXHR9XG5cblx0ZG90ICh2OiBWZWN0b3IzKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy54ICogdi54ICsgdGhpcy55ICogdi55ICsgdGhpcy56ICogdi56O1xuXHR9XG5cblx0bGVuZ3RoICgpOiBudW1iZXIge1xuXHRcdHJldHVybiBNYXRoLnNxcnQodGhpcy54ICogdGhpcy54ICsgdGhpcy55ICogdGhpcy55ICsgdGhpcy56ICogdGhpcy56KTtcblx0fVxuXG5cdGRpc3RhbmNlICh2OiBWZWN0b3IzKTogbnVtYmVyIHtcblx0XHRsZXQgYSA9IHYueCAtIHRoaXMueDtcblx0XHRsZXQgYiA9IHYueSAtIHRoaXMueTtcblx0XHRsZXQgYyA9IHYueiAtIHRoaXMuejtcblx0XHRyZXR1cm4gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIgKyBjICogYyk7XG5cdH1cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9WZWN0b3IzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUUvRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFnQixNQUFNLGNBQWMsQ0FBQztBQUU1SCxNQUFNLE9BQU8sT0FBTztJQUNuQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNOLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFTixZQUFhLElBQVksQ0FBQyxFQUFFLElBQVksQ0FBQyxFQUFFLElBQVksQ0FBQztRQUN2RCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFFLENBQVU7UUFDbEIsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsR0FBRyxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNuQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxHQUFHLENBQUUsQ0FBVTtRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELEdBQUcsQ0FBRSxDQUFVO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsS0FBSyxDQUFFLENBQVM7UUFDZixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxTQUFTO1FBQ1IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hCLElBQUksR0FBRyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNkLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ2QsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDZCxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVELEtBQUssQ0FBRSxDQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZHLENBQUM7SUFFRCxRQUFRLENBQUUsTUFBZTtRQUN4QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQzNGLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDNUUsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELE9BQU8sQ0FBRSxNQUFlO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUNuRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFDcEYsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsR0FBRyxDQUFFLENBQVU7UUFDZCxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxNQUFNO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELFFBQVEsQ0FBRSxDQUFVO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdkIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgTTAwLCBNMDEsIE0wMiwgTTAzLCBNMTAsIE0xMSwgTTEyLCBNMTMsIE0yMCwgTTIxLCBNMjIsIE0yMywgTTMwLCBNMzEsIE0zMiwgTTMzLCB0eXBlIE1hdHJpeDQgfSBmcm9tIFwiLi9NYXRyaXg0LmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBWZWN0b3IzIHtcblx0eCA9IDA7XG5cdHkgPSAwO1xuXHR6ID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoeDogbnVtYmVyID0gMCwgeTogbnVtYmVyID0gMCwgejogbnVtYmVyID0gMCkge1xuXHRcdHRoaXMueCA9IHg7XG5cdFx0dGhpcy55ID0geTtcblx0XHR0aGlzLnogPSB6O1xuXHR9XG5cblx0c2V0RnJvbSAodjogVmVjdG9yMyk6IFZlY3RvcjMge1xuXHRcdHRoaXMueCA9IHYueDtcblx0XHR0aGlzLnkgPSB2Lnk7XG5cdFx0dGhpcy56ID0gdi56O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2V0ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKTogVmVjdG9yMyB7XG5cdFx0dGhpcy54ID0geDtcblx0XHR0aGlzLnkgPSB5O1xuXHRcdHRoaXMueiA9IHo7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhZGQgKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcblx0XHR0aGlzLnggKz0gdi54O1xuXHRcdHRoaXMueSArPSB2Lnk7XG5cdFx0dGhpcy56ICs9IHYuejtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHN1YiAodjogVmVjdG9yMyk6IFZlY3RvcjMge1xuXHRcdHRoaXMueCAtPSB2Lng7XG5cdFx0dGhpcy55IC09IHYueTtcblx0XHR0aGlzLnogLT0gdi56O1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2NhbGUgKHM6IG51bWJlcik6IFZlY3RvcjMge1xuXHRcdHRoaXMueCAqPSBzO1xuXHRcdHRoaXMueSAqPSBzO1xuXHRcdHRoaXMueiAqPSBzO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm9ybWFsaXplICgpOiBWZWN0b3IzIHtcblx0XHRsZXQgbGVuID0gdGhpcy5sZW5ndGgoKTtcblx0XHRpZiAobGVuID09PSAwKSByZXR1cm4gdGhpcztcblx0XHRsZW4gPSAxIC8gbGVuO1xuXHRcdHRoaXMueCAqPSBsZW47XG5cdFx0dGhpcy55ICo9IGxlbjtcblx0XHR0aGlzLnogKj0gbGVuO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Y3Jvc3MgKHY6IFZlY3RvcjMpOiBWZWN0b3IzIHtcblx0XHRyZXR1cm4gdGhpcy5zZXQodGhpcy55ICogdi56IC0gdGhpcy56ICogdi55LCB0aGlzLnogKiB2LnggLSB0aGlzLnggKiB2LnosIHRoaXMueCAqIHYueSAtIHRoaXMueSAqIHYueClcblx0fVxuXG5cdG11bHRpcGx5IChtYXRyaXg6IE1hdHJpeDQpOiBWZWN0b3IzIHtcblx0XHRjb25zdCBsX21hdCA9IG1hdHJpeC52YWx1ZXM7XG5cdFx0cmV0dXJuIHRoaXMuc2V0KHRoaXMueCAqIGxfbWF0W00wMF0gKyB0aGlzLnkgKiBsX21hdFtNMDFdICsgdGhpcy56ICogbF9tYXRbTTAyXSArIGxfbWF0W00wM10sXG5cdFx0XHR0aGlzLnggKiBsX21hdFtNMTBdICsgdGhpcy55ICogbF9tYXRbTTExXSArIHRoaXMueiAqIGxfbWF0W00xMl0gKyBsX21hdFtNMTNdLFxuXHRcdFx0dGhpcy54ICogbF9tYXRbTTIwXSArIHRoaXMueSAqIGxfbWF0W00yMV0gKyB0aGlzLnogKiBsX21hdFtNMjJdICsgbF9tYXRbTTIzXSk7XG5cdH1cblxuXHRwcm9qZWN0IChtYXRyaXg6IE1hdHJpeDQpOiBWZWN0b3IzIHtcblx0XHRjb25zdCBsX21hdCA9IG1hdHJpeC52YWx1ZXM7XG5cdFx0Y29uc3QgbF93ID0gMSAvICh0aGlzLnggKiBsX21hdFtNMzBdICsgdGhpcy55ICogbF9tYXRbTTMxXSArIHRoaXMueiAqIGxfbWF0W00zMl0gKyBsX21hdFtNMzNdKTtcblx0XHRyZXR1cm4gdGhpcy5zZXQoKHRoaXMueCAqIGxfbWF0W00wMF0gKyB0aGlzLnkgKiBsX21hdFtNMDFdICsgdGhpcy56ICogbF9tYXRbTTAyXSArIGxfbWF0W00wM10pICogbF93LFxuXHRcdFx0KHRoaXMueCAqIGxfbWF0W00xMF0gKyB0aGlzLnkgKiBsX21hdFtNMTFdICsgdGhpcy56ICogbF9tYXRbTTEyXSArIGxfbWF0W00xM10pICogbF93LFxuXHRcdFx0KHRoaXMueCAqIGxfbWF0W00yMF0gKyB0aGlzLnkgKiBsX21hdFtNMjFdICsgdGhpcy56ICogbF9tYXRbTTIyXSArIGxfbWF0W00yM10pICogbF93KTtcblx0fVxuXG5cdGRvdCAodjogVmVjdG9yMyk6IG51bWJlciB7XG5cdFx0cmV0dXJuIHRoaXMueCAqIHYueCArIHRoaXMueSAqIHYueSArIHRoaXMueiAqIHYuejtcblx0fVxuXG5cdGxlbmd0aCAoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCAqIHRoaXMueCArIHRoaXMueSAqIHRoaXMueSArIHRoaXMueiAqIHRoaXMueik7XG5cdH1cblxuXHRkaXN0YW5jZSAodjogVmVjdG9yMyk6IG51bWJlciB7XG5cdFx0Y29uc3QgYSA9IHYueCAtIHRoaXMueDtcblx0XHRjb25zdCBiID0gdi55IC0gdGhpcy55O1xuXHRcdGNvbnN0IGMgPSB2LnogLSB0aGlzLno7XG5cdFx0cmV0dXJuIE1hdGguc3FydChhICogYSArIGIgKiBiICsgYyAqIGMpO1xuXHR9XG59XG4iXX0=