angular-three-soba 2.11.0 → 2.13.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.
Files changed (72) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +87 -87
  2. package/abstractions/lib/edges.d.ts +111 -111
  3. package/abstractions/lib/gradient-texture.d.ts +2 -2
  4. package/abstractions/lib/grid.d.ts +39 -39
  5. package/abstractions/lib/line.d.ts +1 -1
  6. package/abstractions/lib/prism-geometry.d.ts +5 -5
  7. package/abstractions/lib/rounded-box.d.ts +2 -2
  8. package/abstractions/lib/text-3d.d.ts +57 -46
  9. package/abstractions/lib/text.d.ts +1 -1
  10. package/cameras/lib/cube-camera.d.ts +1 -1
  11. package/cameras/lib/orthographic-camera.d.ts +1 -1
  12. package/cameras/lib/perspective-camera.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +0 -3
  14. package/esm2022/abstractions/lib/gradient-texture.mjs +4 -4
  15. package/esm2022/abstractions/lib/rounded-box.mjs +23 -4
  16. package/esm2022/abstractions/lib/text-3d.mjs +1 -1
  17. package/esm2022/cameras/lib/orthographic-camera.mjs +3 -3
  18. package/esm2022/cameras/lib/perspective-camera.mjs +4 -3
  19. package/esm2022/controls/lib/camera-controls.mjs +12 -13
  20. package/esm2022/controls/lib/orbit-controls.mjs +10 -22
  21. package/esm2022/controls/lib/scroll-controls.mjs +5 -6
  22. package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +9 -5
  23. package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +77 -61
  24. package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +37 -25
  25. package/esm2022/loaders/lib/loader.mjs +1 -7
  26. package/esm2022/materials/lib/custom-shader-material.mjs +1 -1
  27. package/esm2022/materials/lib/mesh-distort-material.mjs +3 -2
  28. package/esm2022/materials/lib/mesh-portal-material.mjs +10 -10
  29. package/esm2022/materials/lib/mesh-wobble-material.mjs +3 -2
  30. package/esm2022/materials/lib/point-material.mjs +4 -3
  31. package/esm2022/misc/lib/depth-buffer.mjs +2 -6
  32. package/esm2022/misc/lib/fbo.mjs +3 -3
  33. package/esm2022/misc/lib/preload.mjs +3 -3
  34. package/esm2022/staging/lib/accumulative-shadows.mjs +3 -3
  35. package/esm2022/staging/lib/bb-anchor.mjs +4 -4
  36. package/esm2022/staging/lib/environment/environment.mjs +21 -15
  37. package/esm2022/staging/lib/matcap-texture.mjs +3 -3
  38. package/esm2022/staging/lib/normal-texture.mjs +3 -3
  39. package/fesm2022/angular-three-soba-abstractions.mjs +25 -6
  40. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  41. package/fesm2022/angular-three-soba-cameras.mjs +4 -3
  42. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  43. package/fesm2022/angular-three-soba-controls.mjs +24 -38
  44. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  45. package/fesm2022/angular-three-soba-gizmos.mjs +120 -88
  46. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  47. package/fesm2022/angular-three-soba-loaders.mjs +0 -6
  48. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  49. package/fesm2022/angular-three-soba-materials.mjs +13 -10
  50. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  51. package/fesm2022/angular-three-soba-misc.mjs +4 -8
  52. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  53. package/fesm2022/angular-three-soba-staging.mjs +26 -20
  54. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  55. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  56. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  57. package/loaders/lib/loader.d.ts +0 -2
  58. package/materials/lib/custom-shader-material.d.ts +1 -1
  59. package/materials/lib/mesh-portal-material.d.ts +1 -1
  60. package/materials/lib/mesh-refraction-material.d.ts +2 -2
  61. package/materials/lib/point-material.d.ts +1 -0
  62. package/metadata.json +1 -1
  63. package/misc/lib/computed-attribute.d.ts +2 -2
  64. package/misc/lib/html/html.d.ts +1 -1
  65. package/package.json +7 -7
  66. package/staging/lib/accumulative-shadows.d.ts +1 -1
  67. package/staging/lib/caustics.d.ts +1 -1
  68. package/staging/lib/center.d.ts +2 -2
  69. package/staging/lib/contact-shadows.d.ts +1 -1
  70. package/staging/lib/lightformer.d.ts +1 -1
  71. package/staging/lib/mask.d.ts +1 -1
  72. package/web-types.json +1 -1
@@ -224,43 +224,49 @@ export class NgtsPivotControls {
224
224
  <ngt-group #group [matrix]="matrix()" [matrixAutoUpdate]="false" [parameters]="parameters()">
225
225
  <ngt-group #gizmo [visible]="visible()" [position]="offset()" [rotation]="rotation()">
226
226
  @if (enabled()) {
227
- @if (!disableAxes() && activeAxes()[0]) {
227
+ @let _disableAxes = disableAxes();
228
+ @let _disableSliders = disableSliders();
229
+ @let _disableRotations = disableRotations();
230
+ @let _disableScaling = disableScaling();
231
+ @let _activeAxes = activeAxes();
232
+
233
+ @if (!_disableAxes && _activeAxes[0]) {
228
234
  <ngts-axis-arrow [axis]="0" [direction]="xDir" />
229
235
  }
230
- @if (!disableAxes() && activeAxes()[1]) {
236
+ @if (!_disableAxes && _activeAxes[1]) {
231
237
  <ngts-axis-arrow [axis]="1" [direction]="yDir" />
232
238
  }
233
- @if (!disableAxes() && activeAxes()[2]) {
239
+ @if (!_disableAxes && _activeAxes[2]) {
234
240
  <ngts-axis-arrow [axis]="2" [direction]="zDir" />
235
241
  }
236
242
 
237
- @if (!disableSliders() && activeAxes()[0] && activeAxes()[1]) {
243
+ @if (!_disableSliders && _activeAxes[0] && _activeAxes[1]) {
238
244
  <ngts-plane-slider [axis]="2" [dir1]="xDir" [dir2]="yDir" />
239
245
  }
240
- @if (!disableSliders() && activeAxes()[0] && activeAxes()[2]) {
246
+ @if (!_disableSliders && _activeAxes[0] && _activeAxes[2]) {
241
247
  <ngts-plane-slider [axis]="1" [dir1]="zDir" [dir2]="xDir" />
242
248
  }
243
- @if (!disableSliders() && activeAxes()[2] && activeAxes()[1]) {
249
+ @if (!_disableSliders && _activeAxes[2] && _activeAxes[1]) {
244
250
  <ngts-plane-slider [axis]="0" [dir1]="yDir" [dir2]="zDir" />
245
251
  }
246
252
 
247
- @if (!disableRotations() && activeAxes()[0] && activeAxes()[1]) {
253
+ @if (!_disableRotations && _activeAxes[0] && _activeAxes[1]) {
248
254
  <ngts-axis-rotator [axis]="2" [dir1]="xDir" [dir2]="yDir" />
249
255
  }
250
- @if (!disableRotations() && activeAxes()[0] && activeAxes()[2]) {
256
+ @if (!_disableRotations && _activeAxes[0] && _activeAxes[2]) {
251
257
  <ngts-axis-rotator [axis]="1" [dir1]="zDir" [dir2]="xDir" />
252
258
  }
253
- @if (!disableRotations() && activeAxes()[2] && activeAxes()[1]) {
259
+ @if (!_disableRotations && _activeAxes[2] && _activeAxes[1]) {
254
260
  <ngts-axis-rotator [axis]="0" [dir1]="yDir" [dir2]="zDir" />
255
261
  }
256
262
 
257
- @if (!disableScaling() && activeAxes()[0]) {
263
+ @if (!_disableScaling && _activeAxes[0]) {
258
264
  <ngts-scaling-sphere [axis]="0" [direction]="xDir" />
259
265
  }
260
- @if (!disableScaling() && activeAxes()[1]) {
266
+ @if (!_disableScaling && _activeAxes[1]) {
261
267
  <ngts-scaling-sphere [axis]="1" [direction]="yDir" />
262
268
  }
263
- @if (!disableScaling() && activeAxes()[2]) {
269
+ @if (!_disableScaling && _activeAxes[2]) {
264
270
  <ngts-scaling-sphere [axis]="2" [direction]="zDir" />
265
271
  }
266
272
  }
@@ -282,43 +288,49 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
282
288
  <ngt-group #group [matrix]="matrix()" [matrixAutoUpdate]="false" [parameters]="parameters()">
283
289
  <ngt-group #gizmo [visible]="visible()" [position]="offset()" [rotation]="rotation()">
284
290
  @if (enabled()) {
285
- @if (!disableAxes() && activeAxes()[0]) {
291
+ @let _disableAxes = disableAxes();
292
+ @let _disableSliders = disableSliders();
293
+ @let _disableRotations = disableRotations();
294
+ @let _disableScaling = disableScaling();
295
+ @let _activeAxes = activeAxes();
296
+
297
+ @if (!_disableAxes && _activeAxes[0]) {
286
298
  <ngts-axis-arrow [axis]="0" [direction]="xDir" />
287
299
  }
288
- @if (!disableAxes() && activeAxes()[1]) {
300
+ @if (!_disableAxes && _activeAxes[1]) {
289
301
  <ngts-axis-arrow [axis]="1" [direction]="yDir" />
290
302
  }
291
- @if (!disableAxes() && activeAxes()[2]) {
303
+ @if (!_disableAxes && _activeAxes[2]) {
292
304
  <ngts-axis-arrow [axis]="2" [direction]="zDir" />
293
305
  }
294
306
 
295
- @if (!disableSliders() && activeAxes()[0] && activeAxes()[1]) {
307
+ @if (!_disableSliders && _activeAxes[0] && _activeAxes[1]) {
296
308
  <ngts-plane-slider [axis]="2" [dir1]="xDir" [dir2]="yDir" />
297
309
  }
298
- @if (!disableSliders() && activeAxes()[0] && activeAxes()[2]) {
310
+ @if (!_disableSliders && _activeAxes[0] && _activeAxes[2]) {
299
311
  <ngts-plane-slider [axis]="1" [dir1]="zDir" [dir2]="xDir" />
300
312
  }
301
- @if (!disableSliders() && activeAxes()[2] && activeAxes()[1]) {
313
+ @if (!_disableSliders && _activeAxes[2] && _activeAxes[1]) {
302
314
  <ngts-plane-slider [axis]="0" [dir1]="yDir" [dir2]="zDir" />
303
315
  }
304
316
 
305
- @if (!disableRotations() && activeAxes()[0] && activeAxes()[1]) {
317
+ @if (!_disableRotations && _activeAxes[0] && _activeAxes[1]) {
306
318
  <ngts-axis-rotator [axis]="2" [dir1]="xDir" [dir2]="yDir" />
307
319
  }
308
- @if (!disableRotations() && activeAxes()[0] && activeAxes()[2]) {
320
+ @if (!_disableRotations && _activeAxes[0] && _activeAxes[2]) {
309
321
  <ngts-axis-rotator [axis]="1" [dir1]="zDir" [dir2]="xDir" />
310
322
  }
311
- @if (!disableRotations() && activeAxes()[2] && activeAxes()[1]) {
323
+ @if (!_disableRotations && _activeAxes[2] && _activeAxes[1]) {
312
324
  <ngts-axis-rotator [axis]="0" [dir1]="yDir" [dir2]="zDir" />
313
325
  }
314
326
 
315
- @if (!disableScaling() && activeAxes()[0]) {
327
+ @if (!_disableScaling && _activeAxes[0]) {
316
328
  <ngts-scaling-sphere [axis]="0" [direction]="xDir" />
317
329
  }
318
- @if (!disableScaling() && activeAxes()[1]) {
330
+ @if (!_disableScaling && _activeAxes[1]) {
319
331
  <ngts-scaling-sphere [axis]="1" [direction]="yDir" />
320
332
  }
321
- @if (!disableScaling() && activeAxes()[2]) {
333
+ @if (!_disableScaling && _activeAxes[2]) {
322
334
  <ngts-scaling-sphere [axis]="2" [direction]="zDir" />
323
335
  }
324
336
  }
@@ -334,4 +346,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
334
346
  imports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],
335
347
  }]
336
348
  }], ctorParameters: () => [] });
337
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3pCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFFekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUU3QixNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQW1EbEMsTUFBTSxjQUFjLEdBQTZCO0lBQ2hELE9BQU8sRUFBRSxJQUFJO0lBQ2IsYUFBYSxFQUFFLElBQUk7SUFDbkIsV0FBVyxFQUFFLEtBQUs7SUFDbEIsY0FBYyxFQUFFLEtBQUs7SUFDckIsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixjQUFjLEVBQUUsS0FBSztJQUNyQixVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUM5QixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQixRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQixLQUFLLEVBQUUsQ0FBQztJQUNSLFNBQVMsRUFBRSxDQUFDO0lBQ1osS0FBSyxFQUFFLEtBQUs7SUFDWixTQUFTLEVBQUUsSUFBSTtJQUNmLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQzdDLFlBQVksRUFBRSxTQUFTO0lBQ3ZCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLE9BQU8sRUFBRSxDQUFDO0lBQ1YsT0FBTyxFQUFFLElBQUk7Q0FDYixDQUFDO0FBNkRGLGdFQUFnRTtBQUNoRSxNQUFNLE9BQU8saUJBQWlCO0lBNkU3QjtRQTVFQSxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMvQixTQUFTO1lBQ1QsUUFBUTtZQUNSLGVBQWU7WUFDZixRQUFRO1lBQ1IsYUFBYTtZQUNiLGdCQUFnQjtZQUNoQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixRQUFRO1lBQ1IsVUFBVTtZQUNWLE9BQU87WUFDUCxXQUFXO1lBQ1gsT0FBTztZQUNQLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLFdBQVc7WUFDWCxZQUFZO1lBQ1osY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsU0FBUztZQUNULFNBQVM7WUFDVCxVQUFVO1NBQ1YsQ0FBQyxDQUFDO1FBRUgsZ0JBQVcsR0FBRyxNQUFNLEVBQXlCLENBQUM7UUFDOUMsY0FBUyxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLEVBQW9CLENBQUM7UUFFckMsV0FBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLGdCQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEQscUJBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxzQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQzVELG1CQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RCxnQkFBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2hELGtCQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEQsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLGNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1QyxVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN4QyxjQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDeEMsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLGdCQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDaEQsbUJBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELHFCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDMUQsbUJBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5QyxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osU0FBSSxHQUFHLElBQUksQ0FBQztRQUNaLFNBQUksR0FBRyxJQUFJLENBQUM7UUFFWixjQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBb0IsUUFBUSxDQUFDLENBQUM7UUFDNUQsYUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQW9CLE9BQU8sQ0FBQyxDQUFDO1FBQzFELGFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFvQixPQUFPLENBQUMsQ0FBQztRQUMxRCxnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQW9CLFVBQVUsQ0FBQyxDQUFDO1FBRXhELFVBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFckQsZ0JBQVcsR0FBNkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFDLFdBQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsZUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFHekMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFFcEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsYUFBYSxDQUFDO1lBQzNELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFeEIsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUc7Z0JBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhO2dCQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNiLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQy9DLENBQUM7WUFDRixpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFaEQsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuRCxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7WUFFZixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFFLEdBQVksQ0FBQyxRQUFRO29CQUFFLE9BQU87Z0JBQ3BDLElBQUksQ0FBRSxHQUFZLENBQUMsUUFBUSxDQUFDLFdBQVc7b0JBQUcsR0FBWSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNyRixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sV0FBVyxHQUFJLEdBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUN2RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNqQixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN4QixLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUN2QixFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixDQUFDO1lBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuRCxhQUFhO2lCQUNYLElBQUksQ0FBQyxLQUFLLENBQUM7aUJBQ1gsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7aUJBQ2hDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNmLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDL0IsVUFBVSxFQUFFLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtZQUNuRCxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDaEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYTtnQkFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWE7YUFDN0IsQ0FBQztZQUVGLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFLENBQUM7Z0JBQ3pDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7WUFFRCx1REFBdUQ7WUFDdkQsb0ZBQW9GO1lBQ3BGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFFcEMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV2QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXRELElBQ0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtnQkFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtnQkFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUN4QyxDQUFDO2dCQUNGLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixVQUFVLEVBQUUsQ0FBQztZQUNkLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBaUM7UUFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQVk7UUFDbEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUc7WUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWE7WUFDOUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWE7WUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFBRTtTQUNwQixDQUFDO1FBRUYsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QiwyQkFBMkI7UUFDM0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ25CLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxTQUFTO1FBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxDQUFDOytHQWxNVyxpQkFBaUI7bUdBQWpCLGlCQUFpQixxdEJBekRuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURULDREQUdTLGFBQWEsMkZBQUUsZUFBZSxnR0FBRSxlQUFlLGdHQUFFLGlCQUFpQjs7NEZBR2hFLGlCQUFpQjtrQkE1RDdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBbURUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBOZ3RBbnlSZWNvcmQsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNhbGN1bGF0ZVNjYWxlRmFjdG9yIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE1lc2gsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQXhpc0Fycm93IH0gZnJvbSAnLi9heGlzLWFycm93JztcbmltcG9ydCB7IE5ndHNBeGlzUm90YXRvciB9IGZyb20gJy4vYXhpcy1yb3RhdG9yJztcbmltcG9ydCB7IE5ndHNQbGFuZVNsaWRlciB9IGZyb20gJy4vcGxhbmUtc2xpZGVyJztcbmltcG9ydCB7IE5ndHNTY2FsaW5nU3BoZXJlIH0gZnJvbSAnLi9zY2FsaW5nLXNwaGVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25EcmFnU3RhcnRQYXJhbWV0ZXJzIHtcblx0Y29tcG9uZW50OiAnQXJyb3cnIHwgJ1NsaWRlcicgfCAnUm90YXRvcicgfCAnU3BoZXJlJztcblx0YXhpczogMCB8IDEgfCAyO1xuXHRvcmlnaW46IFZlY3RvcjM7XG5cdGRpcmVjdGlvbnM6IFZlY3RvcjNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdQYXJhbWV0ZXJzIHtcblx0bDogTWF0cml4NDtcblx0ZGVsdGFMOiBNYXRyaXg0O1xuXHR3OiBNYXRyaXg0O1xuXHRkZWx0YVc6IE1hdHJpeDQ7XG59XG5cbmNvbnN0IG1MMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVzAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVcgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwwSW52ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1kTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtRyA9IG5ldyBNYXRyaXg0KCk7XG5cbmNvbnN0IGJiID0gbmV3IEJveDMoKTtcbmNvbnN0IGJiT2JqID0gbmV3IEJveDMoKTtcbmNvbnN0IHZDZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNpemUgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdkFuY2hvck9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuY29uc3QgeERpciA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuY29uc3QgeURpciA9IG5ldyBWZWN0b3IzKDAsIDEsIDApO1xuY29uc3QgekRpciA9IG5ldyBWZWN0b3IzKDAsIDAsIDEpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb250cm9sLCB0cnVlICovXG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdC8qKiBTY2FsZSBvZiB0aGUgZ2l6bW8sIDEgKi9cblx0c2NhbGU6IG51bWJlcjtcblx0LyoqIFdpZHRoIG9mIHRoZSBnaXptbyBsaW5lcywgdGhpcyBpcyBhIFRIUkVFLkxpbmUyIHByb3AsIDIuNSAqL1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcblx0LyoqIElmIGZpeGVkIGlzIHRydWUgaXMgcmVtYWlucyBjb25zdGFudCBpbiBzaXplLCBzY2FsZSBpcyBub3cgaW4gcGl4ZWxzLCBmYWxzZSAqL1xuXHRmaXhlZDogYm9vbGVhbjtcblx0LyoqIFBpdm90IGRvZXMgbm90IGFjdCBhcyBhIGdyb3VwLCBpdCB3b24ndCBzaGlmdCBjb250ZW50cyBidXQgY2FuIG9mZnNldCBpbiBwb3NpdGlvbiAqL1xuXHRvZmZzZXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIFN0YXJ0aW5nIHJvdGF0aW9uICovXG5cdHJvdGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cblx0LyoqIFN0YXJ0aW5nIG1hdHJpeCAqL1xuXHRtYXRyaXg/OiBNYXRyaXg0O1xuXHQvKiogQkJBbmNob3IsIGVhY2ggYXhpcyBjYW4gYmUgYmV0d2VlbiAtMS8wLysxICovXG5cdGFuY2hvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIElmIGF1dG9UcmFuc2Zvcm0gaXMgdHJ1ZSwgYXV0b21hdGljYWxseSBhcHBseSB0aGUgbG9jYWwgdHJhbnNmb3JtIG9uIGRyYWcsIHRydWUgKi9cblx0YXV0b1RyYW5zZm9ybTogYm9vbGVhbjtcblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgYXhlcyBvZmYgKi9cblx0YWN0aXZlQXhlczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG5cdC8qKiBBbGxvd3MgeW91IHRvIHN3aXRjaCBpbmRpdmlkdWFsIHRyYW5zZm9ybWF0aW9ucyBvZmYgKi9cblx0ZGlzYWJsZUF4ZXM6IGJvb2xlYW47XG5cdGRpc2FibGVTbGlkZXJzOiBib29sZWFuO1xuXHRkaXNhYmxlUm90YXRpb25zOiBib29sZWFuO1xuXHRkaXNhYmxlU2NhbGluZzogYm9vbGVhbjtcblxuXHQvKiogTGltaXRzICovXG5cdHRyYW5zbGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRyb3RhdGlvbkxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblx0c2NhbGVMaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cblx0LyoqIFJHQiBjb2xvcnMgKi9cblx0YXhpc0NvbG9yczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdO1xuXHQvKiogQ29sb3Igb2YgdGhlIGhvdmVyZWQgaXRlbSAqL1xuXHRob3ZlcmVkQ29sb3I6IHN0cmluZyB8IG51bWJlcjtcblx0LyoqIEhUTUwgdmFsdWUgYW5ub3RhdGlvbnMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGFubm90YXRpb25zOiBib29sZWFuO1xuXHQvKiogQ1NTIENsYXNzbmFtZSBhcHBsaWVkIHRvIHRoZSBIVE1MIGFubm90YXRpb25zICovXG5cdGFubm90YXRpb25zQ2xhc3M/OiBzdHJpbmc7XG5cdC8qKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgZ2l6bW8gdG8gYmUgdmlzaWJsZSB0aHJvdWdoIGZhY2VzICovXG5cdGRlcHRoVGVzdDogYm9vbGVhbjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0dXNlckRhdGE/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUGl2b3RDb250cm9sc09wdGlvbnMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdGF1dG9UcmFuc2Zvcm06IHRydWUsXG5cdGRpc2FibGVBeGVzOiBmYWxzZSxcblx0ZGlzYWJsZVNsaWRlcnM6IGZhbHNlLFxuXHRkaXNhYmxlUm90YXRpb25zOiBmYWxzZSxcblx0ZGlzYWJsZVNjYWxpbmc6IGZhbHNlLFxuXHRhY3RpdmVBeGVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sXG5cdG9mZnNldDogWzAsIDAsIDBdLFxuXHRyb3RhdGlvbjogWzAsIDAsIDBdLFxuXHRzY2FsZTogMSxcblx0bGluZVdpZHRoOiA0LFxuXHRmaXhlZDogZmFsc2UsXG5cdGRlcHRoVGVzdDogdHJ1ZSxcblx0YXhpc0NvbG9yczogWycjZmYyMDYwJywgJyMyMGRmODAnLCAnIzIwODBmZiddLFxuXHRob3ZlcmVkQ29sb3I6ICcjZmZmZjQwJyxcblx0YW5ub3RhdGlvbnM6IGZhbHNlLFxuXHRvcGFjaXR5OiAxLFxuXHR2aXNpYmxlOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1waXZvdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjcGFyZW50PlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXAgW21hdHJpeF09XCJtYXRyaXgoKVwiIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2dpem1vIFt2aXNpYmxlXT1cInZpc2libGUoKVwiIFtwb3NpdGlvbl09XCJvZmZzZXQoKVwiIFtyb3RhdGlvbl09XCJyb3RhdGlvbigpXCI+XG5cdFx0XHRcdFx0QGlmIChlbmFibGVkKCkpIHtcblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVBeGVzKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlQXhlcygpICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjFcIiBbZGlyZWN0aW9uXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZUF4ZXMoKSAmJiBhY3RpdmVBeGVzKClbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIyXCIgW2RpcjFdPVwieERpclwiIFtkaXIyXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNsaWRlcnMoKSAmJiBhY3RpdmVBeGVzKClbMl0gJiYgYWN0aXZlQXhlcygpWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXBsYW5lLXNsaWRlciBbYXhpc109XCIwXCIgW2RpcjFdPVwieURpclwiIFtkaXIyXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlUm90YXRpb25zKCkgJiYgYWN0aXZlQXhlcygpWzBdICYmIGFjdGl2ZUF4ZXMoKVsxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMlwiIFtkaXIxXT1cInhEaXJcIiBbZGlyMl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVSb3RhdGlvbnMoKSAmJiBhY3RpdmVBeGVzKClbMF0gJiYgYWN0aXZlQXhlcygpWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIxXCIgW2RpcjFdPVwiekRpclwiIFtkaXIyXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVJvdGF0aW9ucygpICYmIGFjdGl2ZUF4ZXMoKVsyXSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjBcIiBbZGlyMV09XCJ5RGlyXCIgW2RpcjJdPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIWRpc2FibGVTY2FsaW5nKCkgJiYgYWN0aXZlQXhlcygpWzBdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLXNjYWxpbmctc3BoZXJlIFtheGlzXT1cIjBcIiBbZGlyZWN0aW9uXT1cInhEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghZGlzYWJsZVNjYWxpbmcoKSAmJiBhY3RpdmVBeGVzKClbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFkaXNhYmxlU2NhbGluZygpICYmIGFjdGl2ZUF4ZXMoKVsyXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1zY2FsaW5nLXNwaGVyZSBbYXhpc109XCIyXCIgW2RpcmVjdGlvbl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdFx0XHQ8bmd0LWdyb3VwICNjaGlsZHJlbj5cblx0XHRcdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdFx0XHQ8L25ndC1ncm91cD5cblx0XHRcdDwvbmd0LWdyb3VwPlxuXHRcdDwvbmd0LWdyb3VwPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c0F4aXNBcnJvdywgTmd0c1BsYW5lU2xpZGVyLCBOZ3RzQXhpc1JvdGF0b3IsIE5ndHNTY2FsaW5nU3BoZXJlXSxcbn0pXG4vLyBUT0RPOiBQaXZvdENvbnRyb2xzIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5IHdpdGggY29udHJvbCBmbG93XG5leHBvcnQgY2xhc3MgTmd0c1Bpdm90Q29udHJvbHMge1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgW1xuXHRcdCdlbmFibGVkJyxcblx0XHQnbWF0cml4Jyxcblx0XHQnYXV0b1RyYW5zZm9ybScsXG5cdFx0J2FuY2hvcicsXG5cdFx0J2Rpc2FibGVBeGVzJyxcblx0XHQnZGlzYWJsZVNsaWRlcnMnLFxuXHRcdCdkaXNhYmxlUm90YXRpb25zJyxcblx0XHQnZGlzYWJsZVNjYWxpbmcnLFxuXHRcdCdhY3RpdmVBeGVzJyxcblx0XHQnb2Zmc2V0Jyxcblx0XHQncm90YXRpb24nLFxuXHRcdCdzY2FsZScsXG5cdFx0J2xpbmVXaWR0aCcsXG5cdFx0J2ZpeGVkJyxcblx0XHQndHJhbnNsYXRpb25MaW1pdHMnLFxuXHRcdCdyb3RhdGlvbkxpbWl0cycsXG5cdFx0J3NjYWxlTGltaXRzJyxcblx0XHQnZGVwdGhUZXN0Jyxcblx0XHQnYXhpc0NvbG9ycycsXG5cdFx0J2hvdmVyZWRDb2xvcicsXG5cdFx0J2Fubm90YXRpb25zJyxcblx0XHQnYW5ub3RhdGlvbnNDbGFzcycsXG5cdFx0J29wYWNpdHknLFxuXHRcdCd2aXNpYmxlJyxcblx0XHQndXNlckRhdGEnLFxuXHRdKTtcblxuXHRkcmFnU3RhcnRlZCA9IG91dHB1dDxPbkRyYWdTdGFydFBhcmFtZXRlcnM+KCk7XG5cdGRyYWdFbmRlZCA9IG91dHB1dDx2b2lkPigpO1xuXHRkcmFnZ2VkID0gb3V0cHV0PE9uRHJhZ1BhcmFtZXRlcnM+KCk7XG5cblx0bWF0cml4ID0gcGljayh0aGlzLm9wdGlvbnMsICdtYXRyaXgnKTtcblx0YW5ub3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zJyk7XG5cdGFubm90YXRpb25zQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Fubm90YXRpb25zQ2xhc3MnKTtcblx0dHJhbnNsYXRpb25MaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RyYW5zbGF0aW9uTGltaXRzJyk7XG5cdHJvdGF0aW9uTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICdyb3RhdGlvbkxpbWl0cycpO1xuXHRzY2FsZUxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGVMaW1pdHMnKTtcblx0YXV0b1RyYW5zZm9ybSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXV0b1RyYW5zZm9ybScpO1xuXHRmaXhlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZml4ZWQnKTtcblx0aG92ZXJlZENvbG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdob3ZlcmVkQ29sb3InKTtcblx0YXhpc0NvbG9ycyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXhpc0NvbG9ycycpO1xuXHRsaW5lV2lkdGggPSBwaWNrKHRoaXMub3B0aW9ucywgJ2xpbmVXaWR0aCcpO1xuXHRzY2FsZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnc2NhbGUnKTtcblx0dXNlckRhdGEgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3VzZXJEYXRhJyk7XG5cdG9wYWNpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ29wYWNpdHknKTtcblx0ZGVwdGhUZXN0ID0gcGljayh0aGlzLm9wdGlvbnMsICdkZXB0aFRlc3QnKTtcblx0b2Zmc2V0ID0gcGljayh0aGlzLm9wdGlvbnMsICdvZmZzZXQnKTtcblx0cm90YXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JvdGF0aW9uJyk7XG5cdHZpc2libGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Zpc2libGUnKTtcblx0ZW5hYmxlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZW5hYmxlZCcpO1xuXHRkaXNhYmxlQXhlcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGlzYWJsZUF4ZXMnKTtcblx0ZGlzYWJsZVNsaWRlcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTbGlkZXJzJyk7XG5cdGRpc2FibGVSb3RhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVSb3RhdGlvbnMnKTtcblx0ZGlzYWJsZVNjYWxpbmcgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVTY2FsaW5nJyk7XG5cdGFjdGl2ZUF4ZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FjdGl2ZUF4ZXMnKTtcblxuXHR4RGlyID0geERpcjtcblx0eURpciA9IHlEaXI7XG5cdHpEaXIgPSB6RGlyO1xuXG5cdHBhcmVudFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ3BhcmVudCcpO1xuXHRncm91cFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dyb3VwJyk7XG5cdGdpem1vUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignZ2l6bW8nKTtcblx0Y2hpbGRyZW5SZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdjaGlsZHJlbicpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnaW52YWxpZGF0ZScpO1xuXG5cdHRyYW5zbGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gPSBbMCwgMCwgMF07XG5cblx0cHJpdmF0ZSBhbmNob3IgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2FuY2hvcicpO1xuXHRwcml2YXRlIGNhbWVyYVNjYWxlID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG5cdHByaXZhdGUgZ2l6bW9TY2FsZSA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGV4dGVuZCh7IEdyb3VwIH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IGFuY2hvciA9IHRoaXMuYW5jaG9yKCk7XG5cdFx0XHRpZiAoIWFuY2hvcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBjaGlsZHJlbkNvbnRhaW5lciA9IHRoaXMuY2hpbGRyZW5SZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoY2hpbGRyZW5Db250YWluZXIpO1xuXHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFtnaXptbywgb2Zmc2V0LCBpbnZhbGlkYXRlXSA9IFtcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMub2Zmc2V0KCksXG5cdFx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0W2xvY2FsU3RhdGUub2JqZWN0cygpLCBsb2NhbFN0YXRlLm5vbk9iamVjdHMoKV0sXG5cdFx0XHRdO1xuXHRcdFx0Y2hpbGRyZW5Db250YWluZXIudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgdHJ1ZSk7XG5cblx0XHRcdG1QSW52LmNvcHkoY2hpbGRyZW5Db250YWluZXIubWF0cml4V29ybGQpLmludmVydCgpO1xuXHRcdFx0YmIubWFrZUVtcHR5KCk7XG5cblx0XHRcdGNoaWxkcmVuQ29udGFpbmVyLnRyYXZlcnNlKChvYmopID0+IHtcblx0XHRcdFx0aWYgKCEob2JqIGFzIE1lc2gpLmdlb21ldHJ5KSByZXR1cm47XG5cdFx0XHRcdGlmICghKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5ib3VuZGluZ0JveCkgKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdCb3goKTtcblx0XHRcdFx0bUwuY29weShvYmoubWF0cml4V29ybGQpLnByZW11bHRpcGx5KG1QSW52KTtcblx0XHRcdFx0Y29uc3QgYm91bmRpbmdCb3ggPSAob2JqIGFzIE1lc2gpLmdlb21ldHJ5LmJvdW5kaW5nQm94O1xuXHRcdFx0XHRpZiAoYm91bmRpbmdCb3gpIHtcblx0XHRcdFx0XHRiYk9iai5jb3B5KGJvdW5kaW5nQm94KTtcblx0XHRcdFx0XHRiYk9iai5hcHBseU1hdHJpeDQobUwpO1xuXHRcdFx0XHRcdGJiLnVuaW9uKGJiT2JqKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHZDZW50ZXIuY29weShiYi5tYXgpLmFkZChiYi5taW4pLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdFx0XHR2U2l6ZS5jb3B5KGJiLm1heCkuc3ViKGJiLm1pbikubXVsdGlwbHlTY2FsYXIoMC41KTtcblx0XHRcdHZBbmNob3JPZmZzZXRcblx0XHRcdFx0LmNvcHkodlNpemUpXG5cdFx0XHRcdC5tdWx0aXBseShuZXcgVmVjdG9yMyguLi5hbmNob3IpKVxuXHRcdFx0XHQuYWRkKHZDZW50ZXIpO1xuXHRcdFx0dlBvc2l0aW9uLnNldCguLi5vZmZzZXQpLmFkZCh2QW5jaG9yT2Zmc2V0KTtcblx0XHRcdGdpem1vLnBvc2l0aW9uLmNvcHkodlBvc2l0aW9uKTtcblx0XHRcdGludmFsaWRhdGUoKTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IHZlYyA9IG5ldyBWZWN0b3IzKCk7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCh7IGNhbWVyYSwgc2l6ZSwgaW52YWxpZGF0ZSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBmaXhlZCwgc2NhbGUsIG1hdHJpeCB9LCBnaXptbywgZ3JvdXBdID0gW1xuXHRcdFx0XHR0aGlzLm9wdGlvbnMoKSxcblx0XHRcdFx0dGhpcy5naXptb1JlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XTtcblxuXHRcdFx0aWYgKGZpeGVkKSB7XG5cdFx0XHRcdGNvbnN0IHNmID0gY2FsY3VsYXRlU2NhbGVGYWN0b3IoZ2l6bW8uZ2V0V29ybGRQb3NpdGlvbih2ZWMpLCBzY2FsZSwgY2FtZXJhLCBzaXplKTtcblx0XHRcdFx0dGhpcy5jYW1lcmFTY2FsZS5zZXRTY2FsYXIoc2YpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWF0cml4ICYmIG1hdHJpeCBpbnN0YW5jZW9mIE1hdHJpeDQpIHtcblx0XHRcdFx0Z3JvdXAubWF0cml4ID0gbWF0cml4O1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBVcGRhdGUgZ2l6bW8gc2NhbGUgaW4gYWNjb3JkYW5jZSB3aXRoIG1hdHJpeCBjaGFuZ2VzXG5cdFx0XHQvLyBXaXRob3V0IHRoaXMsIHRoZXJlIG1pZ2h0IGJlIG5vdGljZWFibGUgdHVyYnVsZW5jZSBpZiBzY2FsaW5nIGhhcHBlbnMgZmFzdCBlbm91Z2hcblx0XHRcdGdpem1vLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXG5cdFx0XHRtRy5tYWtlUm90YXRpb25Gcm9tRXVsZXIoZ2l6bW8ucm90YXRpb24pLnNldFBvc2l0aW9uKGdpem1vLnBvc2l0aW9uKS5wcmVtdWx0aXBseShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0XHR0aGlzLmdpem1vU2NhbGUuc2V0RnJvbU1hdHJpeFNjYWxlKG1HKTtcblxuXHRcdFx0dlNjYWxlLmNvcHkodGhpcy5jYW1lcmFTY2FsZSkuZGl2aWRlKHRoaXMuZ2l6bW9TY2FsZSk7XG5cblx0XHRcdGlmIChcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueCAtIHZTY2FsZS54KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueSAtIHZTY2FsZS55KSA+IDFlLTQgfHxcblx0XHRcdFx0TWF0aC5hYnMoZ2l6bW8uc2NhbGUueiAtIHZTY2FsZS56KSA+IDFlLTRcblx0XHRcdCkge1xuXHRcdFx0XHRnaXptby5zY2FsZS5jb3B5KHZTY2FsZSk7XG5cdFx0XHRcdGludmFsaWRhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG9uRHJhZ1N0YXJ0KHBhcmFtZXRlcnM6IE9uRHJhZ1N0YXJ0UGFyYW1ldGVycykge1xuXHRcdGNvbnN0IGdyb3VwID0gdGhpcy5ncm91cFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0bUwwLmNvcHkoZ3JvdXAubWF0cml4KTtcblx0XHRtVzAuY29weShncm91cC5tYXRyaXhXb3JsZCk7XG5cdFx0dGhpcy5kcmFnU3RhcnRlZC5lbWl0KHBhcmFtZXRlcnMpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG5cblx0b25EcmFnKG1kVzogTWF0cml4NCkge1xuXHRcdGNvbnN0IFtwYXJlbnQsIGdyb3VwLCBhdXRvVHJhbnNmb3JtXSA9IFtcblx0XHRcdHRoaXMucGFyZW50UmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5hdXRvVHJhbnNmb3JtKCksXG5cdFx0XTtcblxuXHRcdG1QLmNvcHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHRtUEludi5jb3B5KG1QKS5pbnZlcnQoKTtcblx0XHQvLyBBZnRlciBhcHBseWluZyB0aGUgZGVsdGFcblx0XHRtVy5jb3B5KG1XMCkucHJlbXVsdGlwbHkobWRXKTtcblx0XHRtTC5jb3B5KG1XKS5wcmVtdWx0aXBseShtUEludik7XG5cdFx0bUwwSW52LmNvcHkobUwwKS5pbnZlcnQoKTtcblx0XHRtZEwuY29weShtTCkubXVsdGlwbHkobUwwSW52KTtcblxuXHRcdGlmIChhdXRvVHJhbnNmb3JtKSB7XG5cdFx0XHRncm91cC5tYXRyaXguY29weShtTCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kcmFnZ2VkLmVtaXQoeyBsOiBtTCwgZGVsdGFMOiBtZEwsIHc6IG1XLCBkZWx0YVc6IG1kVyB9KTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZ0VuZCgpIHtcblx0XHR0aGlzLmRyYWdFbmRlZC5lbWl0KCk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cbn1cbiJdfQ==
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtY29udHJvbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvZ2l6bW9zL3NyYy9saWIvcGl2b3QtY29udHJvbHMvcGl2b3QtY29udHJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLE1BQU0sRUFFTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQWdCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWdCckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUM1QixNQUFNLEVBQUUsR0FBRyxJQUFJLE9BQU8s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QkFBaUI7bUdBQWpCLGlCQUFpQixxdEJBL0RuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURULDREQUdTLGFBQWEsMkZBQUUsZUFBZSxnR0FBRSxlQUFlLGdHQUFFLGlCQUFpQjs7NEZBR2hFLGlCQUFpQjtrQkFsRTdCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURUO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLENBQUM7aUJBQzdFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbnB1dCxcblx0b3V0cHV0LFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZXh0ZW5kLCBnZXRMb2NhbFN0YXRlLCBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlLCBOZ3RBbnlSZWNvcmQsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGNhbGN1bGF0ZVNjYWxlRmFjdG9yIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgQm94MywgR3JvdXAsIE1hdHJpeDQsIE1lc2gsIFZlY3RvcjMgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBOZ3RzQXhpc0Fycm93IH0gZnJvbSAnLi9heGlzLWFycm93JztcbmltcG9ydCB7IE5ndHNBeGlzUm90YXRvciB9IGZyb20gJy4vYXhpcy1yb3RhdG9yJztcbmltcG9ydCB7IE5ndHNQbGFuZVNsaWRlciB9IGZyb20gJy4vcGxhbmUtc2xpZGVyJztcbmltcG9ydCB7IE5ndHNTY2FsaW5nU3BoZXJlIH0gZnJvbSAnLi9zY2FsaW5nLXNwaGVyZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT25EcmFnU3RhcnRQYXJhbWV0ZXJzIHtcblx0Y29tcG9uZW50OiAnQXJyb3cnIHwgJ1NsaWRlcicgfCAnUm90YXRvcicgfCAnU3BoZXJlJztcblx0YXhpczogMCB8IDEgfCAyO1xuXHRvcmlnaW46IFZlY3RvcjM7XG5cdGRpcmVjdGlvbnM6IFZlY3RvcjNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbkRyYWdQYXJhbWV0ZXJzIHtcblx0bDogTWF0cml4NDtcblx0ZGVsdGFMOiBNYXRyaXg0O1xuXHR3OiBNYXRyaXg0O1xuXHRkZWx0YVc6IE1hdHJpeDQ7XG59XG5cbmNvbnN0IG1MMCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtVzAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVAgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVBJbnYgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbVcgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwgPSBuZXcgTWF0cml4NCgpO1xuY29uc3QgbUwwSW52ID0gbmV3IE1hdHJpeDQoKTtcbmNvbnN0IG1kTCA9IG5ldyBNYXRyaXg0KCk7XG5jb25zdCBtRyA9IG5ldyBNYXRyaXg0KCk7XG5cbmNvbnN0IGJiID0gbmV3IEJveDMoKTtcbmNvbnN0IGJiT2JqID0gbmV3IEJveDMoKTtcbmNvbnN0IHZDZW50ZXIgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNpemUgPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdkFuY2hvck9mZnNldCA9IG5ldyBWZWN0b3IzKCk7XG5jb25zdCB2UG9zaXRpb24gPSBuZXcgVmVjdG9yMygpO1xuY29uc3QgdlNjYWxlID0gbmV3IFZlY3RvcjMoKTtcblxuY29uc3QgeERpciA9IG5ldyBWZWN0b3IzKDEsIDAsIDApO1xuY29uc3QgeURpciA9IG5ldyBWZWN0b3IzKDAsIDEsIDApO1xuY29uc3QgekRpciA9IG5ldyBWZWN0b3IzKDAsIDAsIDEpO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNQaXZvdENvbnRyb2xzT3B0aW9ucyB7XG5cdC8qKiBFbmFibGVzL2Rpc2FibGVzIHRoZSBjb250cm9sLCB0cnVlICovXG5cdGVuYWJsZWQ6IGJvb2xlYW47XG5cdC8qKiBTY2FsZSBvZiB0aGUgZ2l6bW8sIDEgKi9cblx0c2NhbGU6IG51bWJlcjtcblx0LyoqIFdpZHRoIG9mIHRoZSBnaXptbyBsaW5lcywgdGhpcyBpcyBhIFRIUkVFLkxpbmUyIHByb3AsIDIuNSAqL1xuXHRsaW5lV2lkdGg6IG51bWJlcjtcblx0LyoqIElmIGZpeGVkIGlzIHRydWUgaXMgcmVtYWlucyBjb25zdGFudCBpbiBzaXplLCBzY2FsZSBpcyBub3cgaW4gcGl4ZWxzLCBmYWxzZSAqL1xuXHRmaXhlZDogYm9vbGVhbjtcblx0LyoqIFBpdm90IGRvZXMgbm90IGFjdCBhcyBhIGdyb3VwLCBpdCB3b24ndCBzaGlmdCBjb250ZW50cyBidXQgY2FuIG9mZnNldCBpbiBwb3NpdGlvbiAqL1xuXHRvZmZzZXQ6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIFN0YXJ0aW5nIHJvdGF0aW9uICovXG5cdHJvdGF0aW9uOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cblx0LyoqIFN0YXJ0aW5nIG1hdHJpeCAqL1xuXHRtYXRyaXg/OiBNYXRyaXg0O1xuXHQvKiogQkJBbmNob3IsIGVhY2ggYXhpcyBjYW4gYmUgYmV0d2VlbiAtMS8wLysxICovXG5cdGFuY2hvcj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcblx0LyoqIElmIGF1dG9UcmFuc2Zvcm0gaXMgdHJ1ZSwgYXV0b21hdGljYWxseSBhcHBseSB0aGUgbG9jYWwgdHJhbnNmb3JtIG9uIGRyYWcsIHRydWUgKi9cblx0YXV0b1RyYW5zZm9ybTogYm9vbGVhbjtcblx0LyoqIEFsbG93cyB5b3UgdG8gc3dpdGNoIGluZGl2aWR1YWwgYXhlcyBvZmYgKi9cblx0YWN0aXZlQXhlczogW2Jvb2xlYW4sIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG5cdC8qKiBBbGxvd3MgeW91IHRvIHN3aXRjaCBpbmRpdmlkdWFsIHRyYW5zZm9ybWF0aW9ucyBvZmYgKi9cblx0ZGlzYWJsZUF4ZXM6IGJvb2xlYW47XG5cdGRpc2FibGVTbGlkZXJzOiBib29sZWFuO1xuXHRkaXNhYmxlUm90YXRpb25zOiBib29sZWFuO1xuXHRkaXNhYmxlU2NhbGluZzogYm9vbGVhbjtcblxuXHQvKiogTGltaXRzICovXG5cdHRyYW5zbGF0aW9uTGltaXRzPzogW1tudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWRdO1xuXHRyb3RhdGlvbkxpbWl0cz86IFtbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkLCBbbnVtYmVyLCBudW1iZXJdIHwgdW5kZWZpbmVkXTtcblx0c2NhbGVMaW1pdHM/OiBbW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZF07XG5cblx0LyoqIFJHQiBjb2xvcnMgKi9cblx0YXhpc0NvbG9yczogW3N0cmluZyB8IG51bWJlciwgc3RyaW5nIHwgbnVtYmVyLCBzdHJpbmcgfCBudW1iZXJdO1xuXHQvKiogQ29sb3Igb2YgdGhlIGhvdmVyZWQgaXRlbSAqL1xuXHRob3ZlcmVkQ29sb3I6IHN0cmluZyB8IG51bWJlcjtcblx0LyoqIEhUTUwgdmFsdWUgYW5ub3RhdGlvbnMsIGRlZmF1bHQ6IGZhbHNlICovXG5cdGFubm90YXRpb25zOiBib29sZWFuO1xuXHQvKiogQ1NTIENsYXNzbmFtZSBhcHBsaWVkIHRvIHRoZSBIVE1MIGFubm90YXRpb25zICovXG5cdGFubm90YXRpb25zQ2xhc3M/OiBzdHJpbmc7XG5cdC8qKiBTZXQgdGhpcyB0byBmYWxzZSBpZiB5b3Ugd2FudCB0aGUgZ2l6bW8gdG8gYmUgdmlzaWJsZSB0aHJvdWdoIGZhY2VzICovXG5cdGRlcHRoVGVzdDogYm9vbGVhbjtcblx0b3BhY2l0eT86IG51bWJlcjtcblx0dmlzaWJsZTogYm9vbGVhbjtcblx0dXNlckRhdGE/OiBOZ3RBbnlSZWNvcmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzUGl2b3RDb250cm9sc09wdGlvbnMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdGF1dG9UcmFuc2Zvcm06IHRydWUsXG5cdGRpc2FibGVBeGVzOiBmYWxzZSxcblx0ZGlzYWJsZVNsaWRlcnM6IGZhbHNlLFxuXHRkaXNhYmxlUm90YXRpb25zOiBmYWxzZSxcblx0ZGlzYWJsZVNjYWxpbmc6IGZhbHNlLFxuXHRhY3RpdmVBeGVzOiBbdHJ1ZSwgdHJ1ZSwgdHJ1ZV0sXG5cdG9mZnNldDogWzAsIDAsIDBdLFxuXHRyb3RhdGlvbjogWzAsIDAsIDBdLFxuXHRzY2FsZTogMSxcblx0bGluZVdpZHRoOiA0LFxuXHRmaXhlZDogZmFsc2UsXG5cdGRlcHRoVGVzdDogdHJ1ZSxcblx0YXhpc0NvbG9yczogWycjZmYyMDYwJywgJyMyMGRmODAnLCAnIzIwODBmZiddLFxuXHRob3ZlcmVkQ29sb3I6ICcjZmZmZjQwJyxcblx0YW5ub3RhdGlvbnM6IGZhbHNlLFxuXHRvcGFjaXR5OiAxLFxuXHR2aXNpYmxlOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1waXZvdC1jb250cm9scycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5ndC1ncm91cCAjcGFyZW50PlxuXHRcdFx0PG5ndC1ncm91cCAjZ3JvdXAgW21hdHJpeF09XCJtYXRyaXgoKVwiIFttYXRyaXhBdXRvVXBkYXRlXT1cImZhbHNlXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHRcdDxuZ3QtZ3JvdXAgI2dpem1vIFt2aXNpYmxlXT1cInZpc2libGUoKVwiIFtwb3NpdGlvbl09XCJvZmZzZXQoKVwiIFtyb3RhdGlvbl09XCJyb3RhdGlvbigpXCI+XG5cdFx0XHRcdFx0QGlmIChlbmFibGVkKCkpIHtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVBeGVzID0gZGlzYWJsZUF4ZXMoKTtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVTbGlkZXJzID0gZGlzYWJsZVNsaWRlcnMoKTtcblx0XHRcdFx0XHRcdEBsZXQgX2Rpc2FibGVSb3RhdGlvbnMgPSBkaXNhYmxlUm90YXRpb25zKCk7XG5cdFx0XHRcdFx0XHRAbGV0IF9kaXNhYmxlU2NhbGluZyA9IGRpc2FibGVTY2FsaW5nKCk7XG5cdFx0XHRcdFx0XHRAbGV0IF9hY3RpdmVBeGVzID0gYWN0aXZlQXhlcygpO1xuXG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZUF4ZXMgJiYgX2FjdGl2ZUF4ZXNbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1hcnJvdyBbYXhpc109XCIwXCIgW2RpcmVjdGlvbl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlQXhlcyAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLWFycm93IFtheGlzXT1cIjFcIiBbZGlyZWN0aW9uXT1cInlEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0QGlmICghX2Rpc2FibGVBeGVzICYmIF9hY3RpdmVBeGVzWzJdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtYXJyb3cgW2F4aXNdPVwiMlwiIFtkaXJlY3Rpb25dPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMlwiIFtkaXIxXT1cInhEaXJcIiBbZGlyMl09XCJ5RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1syXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMVwiIFtkaXIxXT1cInpEaXJcIiBbZGlyMl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlU2xpZGVycyAmJiBfYWN0aXZlQXhlc1syXSAmJiBfYWN0aXZlQXhlc1sxXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1wbGFuZS1zbGlkZXIgW2F4aXNdPVwiMFwiIFtkaXIxXT1cInlEaXJcIiBbZGlyMl09XCJ6RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0QGlmICghX2Rpc2FibGVSb3RhdGlvbnMgJiYgX2FjdGl2ZUF4ZXNbMF0gJiYgX2FjdGl2ZUF4ZXNbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtYXhpcy1yb3RhdG9yIFtheGlzXT1cIjJcIiBbZGlyMV09XCJ4RGlyXCIgW2RpcjJdPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVJvdGF0aW9ucyAmJiBfYWN0aXZlQXhlc1swXSAmJiBfYWN0aXZlQXhlc1syXSkge1xuXHRcdFx0XHRcdFx0XHQ8bmd0cy1heGlzLXJvdGF0b3IgW2F4aXNdPVwiMVwiIFtkaXIxXT1cInpEaXJcIiBbZGlyMl09XCJ4RGlyXCIgLz5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBpZiAoIV9kaXNhYmxlUm90YXRpb25zICYmIF9hY3RpdmVBeGVzWzJdICYmIF9hY3RpdmVBeGVzWzFdKSB7XG5cdFx0XHRcdFx0XHRcdDxuZ3RzLWF4aXMtcm90YXRvciBbYXhpc109XCIwXCIgW2RpcjFdPVwieURpclwiIFtkaXIyXT1cInpEaXJcIiAvPlxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMF0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMFwiIFtkaXJlY3Rpb25dPVwieERpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMV0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMVwiIFtkaXJlY3Rpb25dPVwieURpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRAaWYgKCFfZGlzYWJsZVNjYWxpbmcgJiYgX2FjdGl2ZUF4ZXNbMl0pIHtcblx0XHRcdFx0XHRcdFx0PG5ndHMtc2NhbGluZy1zcGhlcmUgW2F4aXNdPVwiMlwiIFtkaXJlY3Rpb25dPVwiekRpclwiIC8+XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L25ndC1ncm91cD5cblx0XHRcdFx0PG5ndC1ncm91cCAjY2hpbGRyZW4+XG5cdFx0XHRcdFx0PG5nLWNvbnRlbnQgLz5cblx0XHRcdFx0PC9uZ3QtZ3JvdXA+XG5cdFx0XHQ8L25ndC1ncm91cD5cblx0XHQ8L25ndC1ncm91cD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNBeGlzQXJyb3csIE5ndHNQbGFuZVNsaWRlciwgTmd0c0F4aXNSb3RhdG9yLCBOZ3RzU2NhbGluZ1NwaGVyZV0sXG59KVxuLy8gVE9ETzogUGl2b3RDb250cm9scyBpcyBub3Qgd29ya2luZyBwcm9wZXJseSB3aXRoIGNvbnRyb2wgZmxvd1xuZXhwb3J0IGNsYXNzIE5ndHNQaXZvdENvbnRyb2xzIHtcblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXHRwYXJhbWV0ZXJzID0gb21pdCh0aGlzLm9wdGlvbnMsIFtcblx0XHQnZW5hYmxlZCcsXG5cdFx0J21hdHJpeCcsXG5cdFx0J2F1dG9UcmFuc2Zvcm0nLFxuXHRcdCdhbmNob3InLFxuXHRcdCdkaXNhYmxlQXhlcycsXG5cdFx0J2Rpc2FibGVTbGlkZXJzJyxcblx0XHQnZGlzYWJsZVJvdGF0aW9ucycsXG5cdFx0J2Rpc2FibGVTY2FsaW5nJyxcblx0XHQnYWN0aXZlQXhlcycsXG5cdFx0J29mZnNldCcsXG5cdFx0J3JvdGF0aW9uJyxcblx0XHQnc2NhbGUnLFxuXHRcdCdsaW5lV2lkdGgnLFxuXHRcdCdmaXhlZCcsXG5cdFx0J3RyYW5zbGF0aW9uTGltaXRzJyxcblx0XHQncm90YXRpb25MaW1pdHMnLFxuXHRcdCdzY2FsZUxpbWl0cycsXG5cdFx0J2RlcHRoVGVzdCcsXG5cdFx0J2F4aXNDb2xvcnMnLFxuXHRcdCdob3ZlcmVkQ29sb3InLFxuXHRcdCdhbm5vdGF0aW9ucycsXG5cdFx0J2Fubm90YXRpb25zQ2xhc3MnLFxuXHRcdCdvcGFjaXR5Jyxcblx0XHQndmlzaWJsZScsXG5cdFx0J3VzZXJEYXRhJyxcblx0XSk7XG5cblx0ZHJhZ1N0YXJ0ZWQgPSBvdXRwdXQ8T25EcmFnU3RhcnRQYXJhbWV0ZXJzPigpO1xuXHRkcmFnRW5kZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblx0ZHJhZ2dlZCA9IG91dHB1dDxPbkRyYWdQYXJhbWV0ZXJzPigpO1xuXG5cdG1hdHJpeCA9IHBpY2sodGhpcy5vcHRpb25zLCAnbWF0cml4Jyk7XG5cdGFubm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdhbm5vdGF0aW9ucycpO1xuXHRhbm5vdGF0aW9uc0NsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdhbm5vdGF0aW9uc0NsYXNzJyk7XG5cdHRyYW5zbGF0aW9uTGltaXRzID0gcGljayh0aGlzLm9wdGlvbnMsICd0cmFuc2xhdGlvbkxpbWl0cycpO1xuXHRyb3RhdGlvbkxpbWl0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAncm90YXRpb25MaW1pdHMnKTtcblx0c2NhbGVMaW1pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlTGltaXRzJyk7XG5cdGF1dG9UcmFuc2Zvcm0gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F1dG9UcmFuc2Zvcm0nKTtcblx0Zml4ZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZpeGVkJyk7XG5cdGhvdmVyZWRDb2xvciA9IHBpY2sodGhpcy5vcHRpb25zLCAnaG92ZXJlZENvbG9yJyk7XG5cdGF4aXNDb2xvcnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2F4aXNDb2xvcnMnKTtcblx0bGluZVdpZHRoID0gcGljayh0aGlzLm9wdGlvbnMsICdsaW5lV2lkdGgnKTtcblx0c2NhbGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3NjYWxlJyk7XG5cdHVzZXJEYXRhID0gcGljayh0aGlzLm9wdGlvbnMsICd1c2VyRGF0YScpO1xuXHRvcGFjaXR5ID0gcGljayh0aGlzLm9wdGlvbnMsICdvcGFjaXR5Jyk7XG5cdGRlcHRoVGVzdCA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGVwdGhUZXN0Jyk7XG5cdG9mZnNldCA9IHBpY2sodGhpcy5vcHRpb25zLCAnb2Zmc2V0Jyk7XG5cdHJvdGF0aW9uID0gcGljayh0aGlzLm9wdGlvbnMsICdyb3RhdGlvbicpO1xuXHR2aXNpYmxlID0gcGljayh0aGlzLm9wdGlvbnMsICd2aXNpYmxlJyk7XG5cdGVuYWJsZWQgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2VuYWJsZWQnKTtcblx0ZGlzYWJsZUF4ZXMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2Rpc2FibGVBeGVzJyk7XG5cdGRpc2FibGVTbGlkZXJzID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlU2xpZGVycycpO1xuXHRkaXNhYmxlUm90YXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlUm90YXRpb25zJyk7XG5cdGRpc2FibGVTY2FsaW5nID0gcGljayh0aGlzLm9wdGlvbnMsICdkaXNhYmxlU2NhbGluZycpO1xuXHRhY3RpdmVBeGVzID0gcGljayh0aGlzLm9wdGlvbnMsICdhY3RpdmVBeGVzJyk7XG5cblx0eERpciA9IHhEaXI7XG5cdHlEaXIgPSB5RGlyO1xuXHR6RGlyID0gekRpcjtcblxuXHRwYXJlbnRSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdwYXJlbnQnKTtcblx0Z3JvdXBSZWYgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxHcm91cD4+KCdncm91cCcpO1xuXHRnaXptb1JlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEdyb3VwPj4oJ2dpem1vJyk7XG5cdGNoaWxkcmVuUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8R3JvdXA+PignY2hpbGRyZW4nKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBpbnZhbGlkYXRlID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2ludmFsaWRhdGUnKTtcblxuXHR0cmFuc2xhdGlvbjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzAsIDAsIDBdO1xuXG5cdHByaXZhdGUgYW5jaG9yID0gcGljayh0aGlzLm9wdGlvbnMsICdhbmNob3InKTtcblx0cHJpdmF0ZSBjYW1lcmFTY2FsZSA9IG5ldyBWZWN0b3IzKDEsIDEsIDEpO1xuXHRwcml2YXRlIGdpem1vU2NhbGUgPSBuZXcgVmVjdG9yMygxLCAxLCAxKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBHcm91cCB9KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBhbmNob3IgPSB0aGlzLmFuY2hvcigpO1xuXHRcdFx0aWYgKCFhbmNob3IpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgY2hpbGRyZW5Db250YWluZXIgPSB0aGlzLmNoaWxkcmVuUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGNoaWxkcmVuQ29udGFpbmVyKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbZ2l6bW8sIG9mZnNldCwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLm9mZnNldCgpLFxuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdFtsb2NhbFN0YXRlLm9iamVjdHMoKSwgbG9jYWxTdGF0ZS5ub25PYmplY3RzKCldLFxuXHRcdFx0XTtcblx0XHRcdGNoaWxkcmVuQ29udGFpbmVyLnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIHRydWUpO1xuXG5cdFx0XHRtUEludi5jb3B5KGNoaWxkcmVuQ29udGFpbmVyLm1hdHJpeFdvcmxkKS5pbnZlcnQoKTtcblx0XHRcdGJiLm1ha2VFbXB0eSgpO1xuXG5cdFx0XHRjaGlsZHJlbkNvbnRhaW5lci50cmF2ZXJzZSgob2JqKSA9PiB7XG5cdFx0XHRcdGlmICghKG9iaiBhcyBNZXNoKS5nZW9tZXRyeSkgcmV0dXJuO1xuXHRcdFx0XHRpZiAoIShvYmogYXMgTWVzaCkuZ2VvbWV0cnkuYm91bmRpbmdCb3gpIChvYmogYXMgTWVzaCkuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nQm94KCk7XG5cdFx0XHRcdG1MLmNvcHkob2JqLm1hdHJpeFdvcmxkKS5wcmVtdWx0aXBseShtUEludik7XG5cdFx0XHRcdGNvbnN0IGJvdW5kaW5nQm94ID0gKG9iaiBhcyBNZXNoKS5nZW9tZXRyeS5ib3VuZGluZ0JveDtcblx0XHRcdFx0aWYgKGJvdW5kaW5nQm94KSB7XG5cdFx0XHRcdFx0YmJPYmouY29weShib3VuZGluZ0JveCk7XG5cdFx0XHRcdFx0YmJPYmouYXBwbHlNYXRyaXg0KG1MKTtcblx0XHRcdFx0XHRiYi51bmlvbihiYk9iaik7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHR2Q2VudGVyLmNvcHkoYmIubWF4KS5hZGQoYmIubWluKS5tdWx0aXBseVNjYWxhcigwLjUpO1xuXHRcdFx0dlNpemUuY29weShiYi5tYXgpLnN1YihiYi5taW4pLm11bHRpcGx5U2NhbGFyKDAuNSk7XG5cdFx0XHR2QW5jaG9yT2Zmc2V0XG5cdFx0XHRcdC5jb3B5KHZTaXplKVxuXHRcdFx0XHQubXVsdGlwbHkobmV3IFZlY3RvcjMoLi4uYW5jaG9yKSlcblx0XHRcdFx0LmFkZCh2Q2VudGVyKTtcblx0XHRcdHZQb3NpdGlvbi5zZXQoLi4ub2Zmc2V0KS5hZGQodkFuY2hvck9mZnNldCk7XG5cdFx0XHRnaXptby5wb3NpdGlvbi5jb3B5KHZQb3NpdGlvbik7XG5cdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCB2ZWMgPSBuZXcgVmVjdG9yMygpO1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjYW1lcmEsIHNpemUsIGludmFsaWRhdGUgfSkgPT4ge1xuXHRcdFx0Y29uc3QgW3sgZml4ZWQsIHNjYWxlLCBtYXRyaXggfSwgZ2l6bW8sIGdyb3VwXSA9IFtcblx0XHRcdFx0dGhpcy5vcHRpb25zKCksXG5cdFx0XHRcdHRoaXMuZ2l6bW9SZWYoKS5uYXRpdmVFbGVtZW50LFxuXHRcdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdF07XG5cblx0XHRcdGlmIChmaXhlZCkge1xuXHRcdFx0XHRjb25zdCBzZiA9IGNhbGN1bGF0ZVNjYWxlRmFjdG9yKGdpem1vLmdldFdvcmxkUG9zaXRpb24odmVjKSwgc2NhbGUsIGNhbWVyYSwgc2l6ZSk7XG5cdFx0XHRcdHRoaXMuY2FtZXJhU2NhbGUuc2V0U2NhbGFyKHNmKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1hdHJpeCAmJiBtYXRyaXggaW5zdGFuY2VvZiBNYXRyaXg0KSB7XG5cdFx0XHRcdGdyb3VwLm1hdHJpeCA9IG1hdHJpeDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gVXBkYXRlIGdpem1vIHNjYWxlIGluIGFjY29yZGFuY2Ugd2l0aCBtYXRyaXggY2hhbmdlc1xuXHRcdFx0Ly8gV2l0aG91dCB0aGlzLCB0aGVyZSBtaWdodCBiZSBub3RpY2VhYmxlIHR1cmJ1bGVuY2UgaWYgc2NhbGluZyBoYXBwZW5zIGZhc3QgZW5vdWdoXG5cdFx0XHRnaXptby51cGRhdGVXb3JsZE1hdHJpeCh0cnVlLCB0cnVlKTtcblxuXHRcdFx0bUcubWFrZVJvdGF0aW9uRnJvbUV1bGVyKGdpem1vLnJvdGF0aW9uKS5zZXRQb3NpdGlvbihnaXptby5wb3NpdGlvbikucHJlbXVsdGlwbHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdFx0dGhpcy5naXptb1NjYWxlLnNldEZyb21NYXRyaXhTY2FsZShtRyk7XG5cblx0XHRcdHZTY2FsZS5jb3B5KHRoaXMuY2FtZXJhU2NhbGUpLmRpdmlkZSh0aGlzLmdpem1vU2NhbGUpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnggLSB2U2NhbGUueCkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnkgLSB2U2NhbGUueSkgPiAxZS00IHx8XG5cdFx0XHRcdE1hdGguYWJzKGdpem1vLnNjYWxlLnogLSB2U2NhbGUueikgPiAxZS00XG5cdFx0XHQpIHtcblx0XHRcdFx0Z2l6bW8uc2NhbGUuY29weSh2U2NhbGUpO1xuXHRcdFx0XHRpbnZhbGlkYXRlKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvbkRyYWdTdGFydChwYXJhbWV0ZXJzOiBPbkRyYWdTdGFydFBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBSZWYoKS5uYXRpdmVFbGVtZW50O1xuXHRcdG1MMC5jb3B5KGdyb3VwLm1hdHJpeCk7XG5cdFx0bVcwLmNvcHkoZ3JvdXAubWF0cml4V29ybGQpO1xuXHRcdHRoaXMuZHJhZ1N0YXJ0ZWQuZW1pdChwYXJhbWV0ZXJzKTtcblx0XHR0aGlzLnN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0fVxuXG5cdG9uRHJhZyhtZFc6IE1hdHJpeDQpIHtcblx0XHRjb25zdCBbcGFyZW50LCBncm91cCwgYXV0b1RyYW5zZm9ybV0gPSBbXG5cdFx0XHR0aGlzLnBhcmVudFJlZigpLm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHR0aGlzLmdyb3VwUmVmKCkubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuYXV0b1RyYW5zZm9ybSgpLFxuXHRcdF07XG5cblx0XHRtUC5jb3B5KHBhcmVudC5tYXRyaXhXb3JsZCk7XG5cdFx0bVBJbnYuY29weShtUCkuaW52ZXJ0KCk7XG5cdFx0Ly8gQWZ0ZXIgYXBwbHlpbmcgdGhlIGRlbHRhXG5cdFx0bVcuY29weShtVzApLnByZW11bHRpcGx5KG1kVyk7XG5cdFx0bUwuY29weShtVykucHJlbXVsdGlwbHkobVBJbnYpO1xuXHRcdG1MMEludi5jb3B5KG1MMCkuaW52ZXJ0KCk7XG5cdFx0bWRMLmNvcHkobUwpLm11bHRpcGx5KG1MMEludik7XG5cblx0XHRpZiAoYXV0b1RyYW5zZm9ybSkge1xuXHRcdFx0Z3JvdXAubWF0cml4LmNvcHkobUwpO1xuXHRcdH1cblxuXHRcdHRoaXMuZHJhZ2dlZC5lbWl0KHsgbDogbUwsIGRlbHRhTDogbWRMLCB3OiBtVywgZGVsdGFXOiBtZFcgfSk7XG5cdFx0dGhpcy5zdG9yZS5zbmFwc2hvdC5pbnZhbGlkYXRlKCk7XG5cdH1cblxuXHRvbkRyYWdFbmQoKSB7XG5cdFx0dGhpcy5kcmFnRW5kZWQuZW1pdCgpO1xuXHRcdHRoaXMuc3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHR9XG59XG4iXX0=
@@ -26,10 +26,6 @@ export class NgtsLoader {
26
26
  this.dataInterpolation = pick(this.options, 'dataInterpolation');
27
27
  this.progressSpanRef = viewChild('progressSpanRef');
28
28
  this.shown = signal(this.initialState()(this.active()));
29
- this.setShown();
30
- this.updateProgress();
31
- }
32
- setShown() {
33
29
  effect((onCleanup) => {
34
30
  const [active, lastShown] = [this.active(), untracked(this.shown)];
35
31
  if (lastShown !== active) {
@@ -39,8 +35,6 @@ export class NgtsLoader {
39
35
  onCleanup(() => clearTimeout(timeoutId));
40
36
  }
41
37
  });
42
- }
43
- updateProgress() {
44
38
  let progressRef = 0;
45
39
  let rafId;
46
40
  effect((onCleanup) => {
@@ -106,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
106
100
  }
107
101
  `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngts-loader-container{--ngts-loader-container-opacity: 0;position:absolute;top:0;left:0;width:100%;height:100%;background:#171717;display:flex;align-items:center;justify-content:center;transition:opacity .3s ease;z-index:1000;opacity:var(--ngts-loader-container-opacity)}.ngts-loader-inner{width:100px;height:3px;background:#272727;text-align:center}.ngts-loader-bar{--ngts-loader-bar-scale: 0;height:3px;width:100px;background:#fff;transition:transform .2s;transform-origin:left center;transform:scaleX(var(--ngts-loader-bar-scale))}.ngts-loader-data{display:inline-block;position:relative;font-variant-numeric:tabular-nums;margin-top:.8em;color:#f0f0f0;font-size:.6em;font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,Helvetica Neue,Helvetica,Arial,Roboto,Ubuntu,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol;white-space:nowrap}\n"] }]
108
102
  }], ctorParameters: () => [] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2xvYWRlcnMvc3JjL2xpYi9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFNUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFXM0UsTUFBTSxjQUFjLEdBQXNCO0lBQ3pDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxFQUFFLEVBQUU7SUFDWixTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLHdCQUF3QjtJQUMzQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Q0FDOUIsQ0FBQztBQTRCRixNQUFNLE9BQU8sVUFBVTtJQW1CdEI7UUFsQlEsa0JBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV6QyxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxZQUFPLEdBQUcsS0FBSyxD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QUM7K0dBdkRXLFVBQVU7bUdBQVYsVUFBVSxxVkF2Qlo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQlQ7OzRGQUlXLFVBQVU7a0JBMUJ0QixTQUFTOytCQUNDLGFBQWEsY0FDWCxJQUFJLFlBQ047Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQlQsbUJBRWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRFbGVtZW50UmVmLFxuXHRjb21wdXRlZCxcblx0ZWZmZWN0LFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHR1bnRyYWNrZWQsXG5cdHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBpbmplY3RQcm9ncmVzcyB9IGZyb20gJy4vcHJvZ3Jlc3MnO1xuXG5jb25zdCBkZWZhdWx0RGF0YUludGVycG9sYXRpb24gPSAocDogbnVtYmVyKSA9PiBgTG9hZGluZyAke3AudG9GaXhlZCgyKX0lYDtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzTG9hZGVyT3B0aW9ucyB7XG5cdGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuXHRpbm5lckNsYXNzPzogc3RyaW5nO1xuXHRiYXJDbGFzcz86IHN0cmluZztcblx0ZGF0YUNsYXNzPzogc3RyaW5nO1xuXHRkYXRhSW50ZXJwb2xhdGlvbjogKHZhbHVlOiBudW1iZXIpID0+IHN0cmluZztcblx0aW5pdGlhbFN0YXRlOiAodmFsdWU6IGJvb2xlYW4pID0+IGJvb2xlYW47XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTG9hZGVyT3B0aW9ucyA9IHtcblx0Y29udGFpbmVyQ2xhc3M6ICcnLFxuXHRpbm5lckNsYXNzOiAnJyxcblx0YmFyQ2xhc3M6ICcnLFxuXHRkYXRhQ2xhc3M6ICcnLFxuXHRkYXRhSW50ZXJwb2xhdGlvbjogZGVmYXVsdERhdGFJbnRlcnBvbGF0aW9uLFxuXHRpbml0aWFsU3RhdGU6ICh2YWx1ZSkgPT4gdmFsdWUsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLWxvYWRlcicsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlOiBgXG5cdFx0QGlmIChzaG93bigpKSB7XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdGNsYXNzPVwibmd0cy1sb2FkZXItY29udGFpbmVyXCJcblx0XHRcdFx0W2NsYXNzXT1cImNvbnRhaW5lckNsYXNzKCkgfHwgJydcIlxuXHRcdFx0XHRbc3R5bGUuLS1uZ3RzLWxvYWRlci1jb250YWluZXItb3BhY2l0eV09XCJhY3RpdmUoKSA/IDEgOiAwXCJcblx0XHRcdD5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibmd0cy1sb2FkZXItaW5uZXJcIiBbY2xhc3NdPVwiaW5uZXJDbGFzcygpIHx8ICcnXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwibmd0cy1sb2FkZXItYmFyXCJcblx0XHRcdFx0XHRcdFx0W2NsYXNzXT1cImJhckNsYXNzKCkgfHwgJydcIlxuXHRcdFx0XHRcdFx0XHRbc3R5bGUuLS1uZ3RzLWxvYWRlci1iYXItc2NhbGVdPVwicHJvZ3Jlc3MoKSAvIDEwMFwiXG5cdFx0XHRcdFx0XHQ+PC9kaXY+XG5cdFx0XHRcdFx0XHQ8c3BhbiAjcHJvZ3Jlc3NTcGFuUmVmIGNsYXNzPVwibmd0cy1sb2FkZXItZGF0YVwiIFtjbGFzc109XCJkYXRhQ2xhc3MoKSB8fCAnJ1wiPjwvc3Bhbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHR9XG5cdGAsXG5cdHN0eWxlVXJsczogWycuL2xvYWRlci5jc3MnXSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNMb2FkZXIge1xuXHRwcml2YXRlIHByb2dyZXNzU3RhdGUgPSBpbmplY3RQcm9ncmVzcygpO1xuXG5cdGFjdGl2ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvZ3Jlc3NTdGF0ZSgpLmFjdGl2ZSk7XG5cdHByb2dyZXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9ncmVzc1N0YXRlKCkucHJvZ3Jlc3MpO1xuXG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRjb250YWluZXJDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnY29udGFpbmVyQ2xhc3MnKTtcblx0aW5uZXJDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnaW5uZXJDbGFzcycpO1xuXHRiYXJDbGFzcyA9IHBpY2sodGhpcy5vcHRpb25zLCAnYmFyQ2xhc3MnKTtcblx0ZGF0YUNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdkYXRhQ2xhc3MnKTtcblx0aW5pdGlhbFN0YXRlID0gcGljayh0aGlzLm9wdGlvbnMsICdpbml0aWFsU3RhdGUnKTtcblx0ZGF0YUludGVycG9sYXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RhdGFJbnRlcnBvbGF0aW9uJyk7XG5cblx0cHJvZ3Jlc3NTcGFuUmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTFNwYW5FbGVtZW50Pj4oJ3Byb2dyZXNzU3BhblJlZicpO1xuXG5cdHNob3duID0gc2lnbmFsKHRoaXMuaW5pdGlhbFN0YXRlKCkodGhpcy5hY3RpdmUoKSkpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuc2V0U2hvd24oKTtcblx0XHR0aGlzLnVwZGF0ZVByb2dyZXNzKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldFNob3duKCkge1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBbYWN0aXZlLCBsYXN0U2hvd25dID0gW3RoaXMuYWN0aXZlKCksIHVudHJhY2tlZCh0aGlzLnNob3duKV07XG5cdFx0XHRpZiAobGFzdFNob3duICE9PSBhY3RpdmUpIHtcblx0XHRcdFx0Y29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zaG93bi5zZXQoYWN0aXZlKTtcblx0XHRcdFx0fSwgMzAwKTtcblx0XHRcdFx0b25DbGVhbnVwKCgpID0+IGNsZWFyVGltZW91dCh0aW1lb3V0SWQpKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgdXBkYXRlUHJvZ3Jlc3MoKSB7XG5cdFx0bGV0IHByb2dyZXNzUmVmID0gMDtcblx0XHRsZXQgcmFmSWQ6IFJldHVyblR5cGU8dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT47XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgW2RhdGFJbnRlcnBvbGF0aW9uLCBwcm9ncmVzc10gPSBbdGhpcy5kYXRhSW50ZXJwb2xhdGlvbigpLCB0aGlzLnByb2dyZXNzKCldO1xuXHRcdFx0Y29uc3QgdXBkYXRlUHJvZ3Jlc3MgPSAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHByb2dyZXNzU3BhbiA9IHRoaXMucHJvZ3Jlc3NTcGFuUmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRcdGlmICghcHJvZ3Jlc3NTcGFuKSByZXR1cm47XG5cdFx0XHRcdHByb2dyZXNzUmVmICs9IChwcm9ncmVzcyAtIHByb2dyZXNzUmVmKSAvIDI7XG5cdFx0XHRcdGlmIChwcm9ncmVzc1JlZiA+IDAuOTUgKiBwcm9ncmVzcyB8fCBwcm9ncmVzcyA9PT0gMTAwKSBwcm9ncmVzc1JlZiA9IHByb2dyZXNzO1xuXHRcdFx0XHRwcm9ncmVzc1NwYW4uaW5uZXJUZXh0ID0gZGF0YUludGVycG9sYXRpb24ocHJvZ3Jlc3NSZWYpO1xuXHRcdFx0XHRpZiAocHJvZ3Jlc3NSZWYgPCBwcm9ncmVzcykge1xuXHRcdFx0XHRcdHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZVByb2dyZXNzKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHVwZGF0ZVByb2dyZXNzKCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpKTtcblx0XHR9KTtcblx0fVxufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL2xvYWRlcnMvc3JjL2xpYi9sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUFFNUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFXM0UsTUFBTSxjQUFjLEdBQXNCO0lBQ3pDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLFVBQVUsRUFBRSxFQUFFO0lBQ2QsUUFBUSxFQUFFLEVBQUU7SUFDWixTQUFTLEVBQUUsRUFBRTtJQUNiLGlCQUFpQixFQUFFLHdCQUF3QjtJQUMzQyxZQUFZLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUs7Q0FDOUIsQ0FBQztBQTRCRixNQUFNLE9BQU8sVUFBVTtJQW1CdEI7UUFsQlEsa0JBQWEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUV6QyxXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV6RCxZQUFPLEdBQUcsS0FBSyxD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WUFDTjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1CVCxtQkFFZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdEVsZW1lbnRSZWYsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdHVudHJhY2tlZCxcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IGluamVjdFByb2dyZXNzIH0gZnJvbSAnLi9wcm9ncmVzcyc7XG5cbmNvbnN0IGRlZmF1bHREYXRhSW50ZXJwb2xhdGlvbiA9IChwOiBudW1iZXIpID0+IGBMb2FkaW5nICR7cC50b0ZpeGVkKDIpfSVgO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNMb2FkZXJPcHRpb25zIHtcblx0Y29udGFpbmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGlubmVyQ2xhc3M/OiBzdHJpbmc7XG5cdGJhckNsYXNzPzogc3RyaW5nO1xuXHRkYXRhQ2xhc3M/OiBzdHJpbmc7XG5cdGRhdGFJbnRlcnBvbGF0aW9uOiAodmFsdWU6IG51bWJlcikgPT4gc3RyaW5nO1xuXHRpbml0aWFsU3RhdGU6ICh2YWx1ZTogYm9vbGVhbikgPT4gYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNMb2FkZXJPcHRpb25zID0ge1xuXHRjb250YWluZXJDbGFzczogJycsXG5cdGlubmVyQ2xhc3M6ICcnLFxuXHRiYXJDbGFzczogJycsXG5cdGRhdGFDbGFzczogJycsXG5cdGRhdGFJbnRlcnBvbGF0aW9uOiBkZWZhdWx0RGF0YUludGVycG9sYXRpb24sXG5cdGluaXRpYWxTdGF0ZTogKHZhbHVlKSA9PiB2YWx1ZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbG9hZGVyJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHRAaWYgKHNob3duKCkpIHtcblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3M9XCJuZ3RzLWxvYWRlci1jb250YWluZXJcIlxuXHRcdFx0XHRbY2xhc3NdPVwiY29udGFpbmVyQ2xhc3MoKSB8fCAnJ1wiXG5cdFx0XHRcdFtzdHlsZS4tLW5ndHMtbG9hZGVyLWNvbnRhaW5lci1vcGFjaXR5XT1cImFjdGl2ZSgpID8gMSA6IDBcIlxuXHRcdFx0PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJuZ3RzLWxvYWRlci1pbm5lclwiIFtjbGFzc109XCJpbm5lckNsYXNzKCkgfHwgJydcIj5cblx0XHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJuZ3RzLWxvYWRlci1iYXJcIlxuXHRcdFx0XHRcdFx0XHRbY2xhc3NdPVwiYmFyQ2xhc3MoKSB8fCAnJ1wiXG5cdFx0XHRcdFx0XHRcdFtzdHlsZS4tLW5ndHMtbG9hZGVyLWJhci1zY2FsZV09XCJwcm9ncmVzcygpIC8gMTAwXCJcblx0XHRcdFx0XHRcdD48L2Rpdj5cblx0XHRcdFx0XHRcdDxzcGFuICNwcm9ncmVzc1NwYW5SZWYgY2xhc3M9XCJuZ3RzLWxvYWRlci1kYXRhXCIgW2NsYXNzXT1cImRhdGFDbGFzcygpIHx8ICcnXCI+PC9zcGFuPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdH1cblx0YCxcblx0c3R5bGVVcmxzOiBbJy4vbG9hZGVyLmNzcyddLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c0xvYWRlciB7XG5cdHByaXZhdGUgcHJvZ3Jlc3NTdGF0ZSA9IGluamVjdFByb2dyZXNzKCk7XG5cblx0YWN0aXZlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9ncmVzc1N0YXRlKCkuYWN0aXZlKTtcblx0cHJvZ3Jlc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb2dyZXNzU3RhdGUoKS5wcm9ncmVzcyk7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdGNvbnRhaW5lckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdjb250YWluZXJDbGFzcycpO1xuXHRpbm5lckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdpbm5lckNsYXNzJyk7XG5cdGJhckNsYXNzID0gcGljayh0aGlzLm9wdGlvbnMsICdiYXJDbGFzcycpO1xuXHRkYXRhQ2xhc3MgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2RhdGFDbGFzcycpO1xuXHRpbml0aWFsU3RhdGUgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2luaXRpYWxTdGF0ZScpO1xuXHRkYXRhSW50ZXJwb2xhdGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAnZGF0YUludGVycG9sYXRpb24nKTtcblxuXHRwcm9ncmVzc1NwYW5SZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MU3BhbkVsZW1lbnQ+PigncHJvZ3Jlc3NTcGFuUmVmJyk7XG5cblx0c2hvd24gPSBzaWduYWwodGhpcy5pbml0aWFsU3RhdGUoKSh0aGlzLmFjdGl2ZSgpKSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFthY3RpdmUsIGxhc3RTaG93bl0gPSBbdGhpcy5hY3RpdmUoKSwgdW50cmFja2VkKHRoaXMuc2hvd24pXTtcblx0XHRcdGlmIChsYXN0U2hvd24gIT09IGFjdGl2ZSkge1xuXHRcdFx0XHRjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnNob3duLnNldChhY3RpdmUpO1xuXHRcdFx0XHR9LCAzMDApO1xuXHRcdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0bGV0IHByb2dyZXNzUmVmID0gMDtcblx0XHRsZXQgcmFmSWQ6IFJldHVyblR5cGU8dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZT47XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IFtkYXRhSW50ZXJwb2xhdGlvbiwgcHJvZ3Jlc3NdID0gW3RoaXMuZGF0YUludGVycG9sYXRpb24oKSwgdGhpcy5wcm9ncmVzcygpXTtcblx0XHRcdGNvbnN0IHVwZGF0ZVByb2dyZXNzID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBwcm9ncmVzc1NwYW4gPSB0aGlzLnByb2dyZXNzU3BhblJlZigpPy5uYXRpdmVFbGVtZW50O1xuXHRcdFx0XHRpZiAoIXByb2dyZXNzU3BhbikgcmV0dXJuO1xuXHRcdFx0XHRwcm9ncmVzc1JlZiArPSAocHJvZ3Jlc3MgLSBwcm9ncmVzc1JlZikgLyAyO1xuXHRcdFx0XHRpZiAocHJvZ3Jlc3NSZWYgPiAwLjk1ICogcHJvZ3Jlc3MgfHwgcHJvZ3Jlc3MgPT09IDEwMCkgcHJvZ3Jlc3NSZWYgPSBwcm9ncmVzcztcblx0XHRcdFx0cHJvZ3Jlc3NTcGFuLmlubmVyVGV4dCA9IGRhdGFJbnRlcnBvbGF0aW9uKHByb2dyZXNzUmVmKTtcblx0XHRcdFx0aWYgKHByb2dyZXNzUmVmIDwgcHJvZ3Jlc3MpIHtcblx0XHRcdFx0XHRyYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVQcm9ncmVzcyk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR1cGRhdGVQcm9ncmVzcygpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -64,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
64
64
  imports: [NgtArgs],
65
65
  }]
66
66
  }], ctorParameters: () => [] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNoYWRlci1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9jdXN0b20tc2hhZGVyLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFnQixPQUFPLEVBQWlCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxvQkFBb0IsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFjeEUsTUFBTSxPQUFPLHdCQUF3QjtJQXdDcEM7UUF2Q0EsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRCxDQUFDO1FBQ25GLFdBQU0sR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUYsQ0FBQyxDQUFDO1FBQ25HLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUU1RixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2YsQ0FBQztZQUVGLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBUSxJQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFRLElBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFDO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsY0FBYztnQkFDZCxZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsUUFBUTthQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0YsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBN0NXLHdCQUF3QjttR0FBeEIsd0JBQXdCLHdlQVQxQjs7OztFQUlULDREQUdTLE9BQU87OzRGQUVMLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIE5ndEFueVJlY29yZCwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwgZnJvbSAndGhyZWUtY3VzdG9tLXNoYWRlci1tYXRlcmlhbC92YW5pbGxhJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jdXN0b20tc2hhZGVyLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbCgpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDdXN0b21TaGFkZXJNYXRlcmlhbCB7XG5cdGJhc2VNYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE1hdGVyaWFsIHwgdHlwZW9mIE1hdGVyaWFsIHwgRWxlbWVudFJlZjxNYXRlcmlhbD4+KCk7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEN1c3RvbVNoYWRlck1hdGVyaWFsPlswXSwgJ2Jhc2VNYXRlcmlhbCc+KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZyYWdtZW50U2hhZGVyJywgJ3ZlcnRleFNoYWRlcicsICd1bmlmb3JtcycsICdjYWNoZUtleSddKTtcblxuXHRiYXNlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IGJhc2VNYXRlcmlhbCA9IHRoaXMuYmFzZU1hdGVyaWFsKCk7XG5cdFx0cmV0dXJuIGlzLnJlZihiYXNlTWF0ZXJpYWwpID8gYmFzZU1hdGVyaWFsLm5hdGl2ZUVsZW1lbnQgOiBiYXNlTWF0ZXJpYWw7XG5cdH0pO1xuXG5cdHByaXZhdGUgZnJhZ21lbnRTaGFkZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2ZyYWdtZW50U2hhZGVyJyk7XG5cdHByaXZhdGUgdmVydGV4U2hhZGVyID0gcGljayh0aGlzLm9wdGlvbnMsICd2ZXJ0ZXhTaGFkZXInKTtcblx0cHJpdmF0ZSB1bmlmb3JtcyA9IHBpY2sodGhpcy5vcHRpb25zLCAndW5pZm9ybXMnKTtcblx0cHJpdmF0ZSBjYWNoZUtleSA9IHBpY2sodGhpcy5vcHRpb25zLCAnY2FjaGVLZXknKTtcblxuXHRtYXRlcmlhbCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRjb25zdCBbYmFzZSwgZnJhZ21lbnRTaGFkZXIsIHZlcnRleFNoYWRlciwgdW5pZm9ybXMsIGNhY2hlS2V5XSA9IFtcblx0XHRcdHRoaXMuYmFzZSgpLFxuXHRcdFx0dGhpcy5mcmFnbWVudFNoYWRlcigpLFxuXHRcdFx0dGhpcy52ZXJ0ZXhTaGFkZXIoKSxcblx0XHRcdHRoaXMudW5pZm9ybXMoKSxcblx0XHRcdHRoaXMuY2FjaGVLZXkoKSxcblx0XHRdO1xuXG5cdFx0Ly8gTk9URTogdGhpcyBpcyBzcGVjaWZpYyB0byBhbmd1bGFyLXRocmVlXG5cdFx0aWYgKGlzLmluc3RhbmNlKGJhc2UpKSB7XG5cdFx0XHRkZWxldGUgKGJhc2UgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xuXHRcdFx0ZGVsZXRlIChiYXNlIGFzIE5ndEFueVJlY29yZClbJ19fbmd0X3JlbmRlcmVyX18nXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IEN1c3RvbVNoYWRlck1hdGVyaWFsKHtcblx0XHRcdGJhc2VNYXRlcmlhbDogYmFzZSxcblx0XHRcdGZyYWdtZW50U2hhZGVyLFxuXHRcdFx0dmVydGV4U2hhZGVyLFxuXHRcdFx0dW5pZm9ybXMsXG5cdFx0XHRjYWNoZUtleSxcblx0XHR9KTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbCgpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IG1hdGVyaWFsLmRpc3Bvc2UoKSk7XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNoYWRlci1tYXRlcmlhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc29iYS9tYXRlcmlhbHMvc3JjL2xpYi9jdXN0b20tc2hhZGVyLW1hdGVyaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixzQkFBc0IsRUFDdEIsTUFBTSxFQUVOLEtBQUssR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsRUFBRSxFQUFnQixPQUFPLEVBQWlCLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxvQkFBb0IsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFjeEUsTUFBTSxPQUFPLHdCQUF3QjtJQXdDcEM7UUF2Q0EsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFxRCxDQUFDO1FBQ25GLFdBQU0sR0FBRyxLQUFLLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLFlBQU8sR0FBRyxLQUFLLENBQUMsRUFBaUYsQ0FBQyxDQUFDO1FBQ25HLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVwRixTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDekUsQ0FBQyxDQUFDLENBQUM7UUFFSyxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxhQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUMsYUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRWxELGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUc7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxFQUFFO2FBQ2YsQ0FBQztZQUVGLDBDQUEwQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBUSxJQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFRLElBQXFCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsT0FBTyxJQUFJLG9CQUFvQixDQUFDO2dCQUMvQixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsY0FBYztnQkFDZCxZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsUUFBUTthQUNSLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBR0YsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBN0NXLHdCQUF3QjttR0FBeEIsd0JBQXdCLHdlQVQxQjs7OztFQUlULDREQUdTLE9BQU87OzRGQUVMLHdCQUF3QjtrQkFacEMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdGVmZmVjdCxcblx0RWxlbWVudFJlZixcblx0aW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXMsIE5ndEFueVJlY29yZCwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgb21pdCwgcGljayB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwgZnJvbSAndGhyZWUtY3VzdG9tLXNoYWRlci1tYXRlcmlhbC92YW5pbGxhJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1jdXN0b20tc2hhZGVyLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbCgpXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNDdXN0b21TaGFkZXJNYXRlcmlhbCB7XG5cdGJhc2VNYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE1hdGVyaWFsIHwgdHlwZW9mIE1hdGVyaWFsIHwgRWxlbWVudFJlZjxNYXRlcmlhbD4+KCk7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoe30gYXMgT21pdDxDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEN1c3RvbVNoYWRlck1hdGVyaWFsPlswXSwgJ2Jhc2VNYXRlcmlhbCc+KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2ZyYWdtZW50U2hhZGVyJywgJ3ZlcnRleFNoYWRlcicsICd1bmlmb3JtcycsICdjYWNoZUtleSddKTtcblxuXHRwcml2YXRlIGJhc2UgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgYmFzZU1hdGVyaWFsID0gdGhpcy5iYXNlTWF0ZXJpYWwoKTtcblx0XHRyZXR1cm4gaXMucmVmKGJhc2VNYXRlcmlhbCkgPyBiYXNlTWF0ZXJpYWwubmF0aXZlRWxlbWVudCA6IGJhc2VNYXRlcmlhbDtcblx0fSk7XG5cblx0cHJpdmF0ZSBmcmFnbWVudFNoYWRlciA9IHBpY2sodGhpcy5vcHRpb25zLCAnZnJhZ21lbnRTaGFkZXInKTtcblx0cHJpdmF0ZSB2ZXJ0ZXhTaGFkZXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3ZlcnRleFNoYWRlcicpO1xuXHRwcml2YXRlIHVuaWZvcm1zID0gcGljayh0aGlzLm9wdGlvbnMsICd1bmlmb3JtcycpO1xuXHRwcml2YXRlIGNhY2hlS2V5ID0gcGljayh0aGlzLm9wdGlvbnMsICdjYWNoZUtleScpO1xuXG5cdG1hdGVyaWFsID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtiYXNlLCBmcmFnbWVudFNoYWRlciwgdmVydGV4U2hhZGVyLCB1bmlmb3JtcywgY2FjaGVLZXldID0gW1xuXHRcdFx0dGhpcy5iYXNlKCksXG5cdFx0XHR0aGlzLmZyYWdtZW50U2hhZGVyKCksXG5cdFx0XHR0aGlzLnZlcnRleFNoYWRlcigpLFxuXHRcdFx0dGhpcy51bmlmb3JtcygpLFxuXHRcdFx0dGhpcy5jYWNoZUtleSgpLFxuXHRcdF07XG5cblx0XHQvLyBOT1RFOiB0aGlzIGlzIHNwZWNpZmljIHRvIGFuZ3VsYXItdGhyZWVcblx0XHRpZiAoaXMuaW5zdGFuY2UoYmFzZSkpIHtcblx0XHRcdGRlbGV0ZSAoYmFzZSBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG5cdFx0XHRkZWxldGUgKGJhc2UgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfcmVuZGVyZXJfXyddO1xuXHRcdH1cblxuXHRcdHJldHVybiBuZXcgQ3VzdG9tU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0YmFzZU1hdGVyaWFsOiBiYXNlLFxuXHRcdFx0ZnJhZ21lbnRTaGFkZXIsXG5cdFx0XHR2ZXJ0ZXhTaGFkZXIsXG5cdFx0XHR1bmlmb3Jtcyxcblx0XHRcdGNhY2hlS2V5LFxuXHRcdH0pO1xuXHR9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsKCk7XG5cdFx0XHRvbkNsZWFudXAoKCkgPT4gbWF0ZXJpYWwuZGlzcG9zZSgpKTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, input } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA, DestroyRef, inject, input } from '@angular/core';
2
2
  import { injectBeforeRender, NgtArgs, omit, pick } from 'angular-three';
3
3
  import { MeshDistortMaterial } from 'angular-three-soba/vanilla-exports';
4
4
  import { mergeInputs } from 'ngxtension/inject-inputs';
@@ -13,6 +13,7 @@ export class NgtsMeshDistortMaterial {
13
13
  this.parameters = omit(this.options, ['speed']);
14
14
  this.material = new MeshDistortMaterial();
15
15
  this.speed = pick(this.options, 'speed');
16
+ inject(DestroyRef).onDestroy(() => this.material.dispose());
16
17
  injectBeforeRender(({ clock }) => {
17
18
  this.material.time = clock.getElapsedTime() * this.speed();
18
19
  });
@@ -39,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
39
40
  imports: [NgtArgs],
40
41
  }]
41
42
  }], ctorParameters: () => [] });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbGliL21lc2gtZGlzdG9ydC1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUEwQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxtQkFBbUIsRUFBaUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBU3ZELE1BQU0sY0FBYyxHQUFtQztJQUN0RCxLQUFLLEVBQUUsQ0FBQztDQUNSLENBQUM7QUFjRixNQUFNLE9BQU8sdUJBQXVCO0lBU25DO1FBUkEsV0FBTSxHQUFHLEtBQUssQ0FBZ0IsVUFBVSxDQUFDLENBQUM7UUFDMUMsWUFBTyxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRTNDLGFBQVEsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFFN0IsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRzNDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOytHQWJXLHVCQUF1QjttR0FBdkIsdUJBQXVCLDJWQVR6Qjs7OztFQUlULDREQUdTLE9BQU87OzRGQUVMLHVCQUF1QjtrQkFabkMsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7O0VBSVQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGluamVjdEJlZm9yZVJlbmRlciwgTmd0QXJncywgTmd0QXR0YWNoYWJsZSwgTmd0TWVzaFBoeXNpY2FsTWF0ZXJpYWwsIG9taXQsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE1lc2hEaXN0b3J0TWF0ZXJpYWwsIE1lc2hEaXN0b3J0TWF0ZXJpYWxQYXJhbWV0ZXJzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3ZhbmlsbGEtZXhwb3J0cyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxPcHRpb25zXG5cdGV4dGVuZHMgUGFydGlhbDxNZXNoRGlzdG9ydE1hdGVyaWFsUGFyYW1ldGVycz4sXG5cdFx0UGFydGlhbDxOZ3RNZXNoUGh5c2ljYWxNYXRlcmlhbD4ge1xuXHRzcGVlZDogbnVtYmVyO1xuXHRmYWN0b3I/OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RzTWVzaERpc3RvcnRNYXRlcmlhbE9wdGlvbnMgPSB7XG5cdHNwZWVkOiAxLFxufTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0cy1tZXNoLWRpc3RvcnQtbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW21hdGVyaWFsXVwiIFthdHRhY2hdPVwiYXR0YWNoKClcIiBbcGFyYW1ldGVyc109XCJwYXJhbWV0ZXJzKClcIj5cblx0XHRcdDxuZy1jb250ZW50IC8+XG5cdFx0PC9uZ3QtcHJpbWl0aXZlPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG59KVxuZXhwb3J0IGNsYXNzIE5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsIHtcblx0YXR0YWNoID0gaW5wdXQ8Tmd0QXR0YWNoYWJsZT4oJ21hdGVyaWFsJyk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ3NwZWVkJ10pO1xuXG5cdG1hdGVyaWFsID0gbmV3IE1lc2hEaXN0b3J0TWF0ZXJpYWwoKTtcblxuXHRwcml2YXRlIHNwZWVkID0gcGljayh0aGlzLm9wdGlvbnMsICdzcGVlZCcpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjbG9jayB9KSA9PiB7XG5cdFx0XHR0aGlzLm1hdGVyaWFsLnRpbWUgPSBjbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5zcGVlZCgpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1kaXN0b3J0LW1hdGVyaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zb2JhL21hdGVyaWFscy9zcmMvbGliL21lc2gtZGlzdG9ydC1tYXRlcmlhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQTBDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxFQUFFLG1CQUFtQixFQUFpQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFTdkQsTUFBTSxjQUFjLEdBQW1DO0lBQ3RELEtBQUssRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQWNGLE1BQU0sT0FBTyx1QkFBdUI7SUFTbkM7UUFSQSxXQUFNLEdBQUcsS0FBSyxDQUFnQixVQUFVLENBQUMsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLGVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFM0MsYUFBUSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUU3QixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFHM0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFNUQsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBZlcsdUJBQXVCO21HQUF2Qix1QkFBdUIsMlZBVHpCOzs7O0VBSVQsNERBR1MsT0FBTzs7NEZBRUwsdUJBQXVCO2tCQVpuQyxTQUFTO21CQUFDO29CQUNWLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7RUFJVDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBEZXN0cm95UmVmLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIE5ndEFyZ3MsIE5ndEF0dGFjaGFibGUsIE5ndE1lc2hQaHlzaWNhbE1hdGVyaWFsLCBvbWl0LCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBNZXNoRGlzdG9ydE1hdGVyaWFsLCBNZXNoRGlzdG9ydE1hdGVyaWFsUGFyYW1ldGVycyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoRGlzdG9ydE1hdGVyaWFsT3B0aW9uc1xuXHRleHRlbmRzIFBhcnRpYWw8TWVzaERpc3RvcnRNYXRlcmlhbFBhcmFtZXRlcnM+LFxuXHRcdFBhcnRpYWw8Tmd0TWVzaFBoeXNpY2FsTWF0ZXJpYWw+IHtcblx0c3BlZWQ6IG51bWJlcjtcblx0ZmFjdG9yPzogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c01lc2hEaXN0b3J0TWF0ZXJpYWxPcHRpb25zID0ge1xuXHRzcGVlZDogMSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1kaXN0b3J0LW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LXByaW1pdGl2ZSAqYXJncz1cIlttYXRlcmlhbF1cIiBbYXR0YWNoXT1cImF0dGFjaCgpXCIgW3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCI+XG5cdFx0XHQ8bmctY29udGVudCAvPlxuXHRcdDwvbmd0LXByaW1pdGl2ZT5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaERpc3RvcnRNYXRlcmlhbCB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydzcGVlZCddKTtcblxuXHRtYXRlcmlhbCA9IG5ldyBNZXNoRGlzdG9ydE1hdGVyaWFsKCk7XG5cblx0cHJpdmF0ZSBzcGVlZCA9IHBpY2sodGhpcy5vcHRpb25zLCAnc3BlZWQnKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHRoaXMubWF0ZXJpYWwuZGlzcG9zZSgpKTtcblxuXHRcdGluamVjdEJlZm9yZVJlbmRlcigoeyBjbG9jayB9KSA9PiB7XG5cdFx0XHR0aGlzLm1hdGVyaWFsLnRpbWUgPSBjbG9jay5nZXRFbGFwc2VkVGltZSgpICogdGhpcy5zcGVlZCgpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
- import { afterNextRender, ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, inject, Injector, input, signal, TemplateRef, viewChild, } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, computed, contentChild, CUSTOM_ELEMENTS_SCHEMA, Directive, effect, inject, Injector, input, signal, TemplateRef, viewChild, } from '@angular/core';
3
3
  import { extend, getLocalState, injectBeforeRender, injectStore, omit, pick, } from 'angular-three';
4
4
  import { getVersion, injectFBO, injectIntersect } from 'angular-three-soba/misc';
5
5
  import { NgtsRenderTexture, NgtsRenderTextureContent } from 'angular-three-soba/staging';
@@ -55,16 +55,17 @@ export class ManagePortalScene {
55
55
  }));
56
56
  return [quad, blend];
57
57
  });
58
+ effect(() => {
59
+ portalScene().matrixAutoUpdate = false;
60
+ });
58
61
  effect(() => {
59
62
  const [events, setEvents] = [this.events(), portalSetEvents()];
60
63
  if (!events)
61
64
  return;
62
65
  setEvents({ enabled: events });
63
66
  });
64
- afterNextRender(() => {
65
- portalScene().matrixAutoUpdate = false;
66
- });
67
67
  effect((onCleanup) => {
68
+ const priority = this.priority();
68
69
  // we start the before render in effect because we need the priority input to be resolved
69
70
  const sub = injectBeforeRender(({ gl, camera }) => {
70
71
  const material = this.material();
@@ -75,9 +76,8 @@ export class ManagePortalScene {
75
76
  if (!parent)
76
77
  return;
77
78
  const materialBlend = 'blend' in material && typeof material.blend === 'number' ? material.blend : 0;
78
- const [worldUnits, priority, rootScene, scene, [quad, blend]] = [
79
+ const [worldUnits, rootScene, scene, [quad, blend]] = [
79
80
  this.worldUnits(),
80
- this.priority(),
81
81
  this.rootScene(),
82
82
  portalScene(),
83
83
  fullScreenQuad(),
@@ -111,7 +111,7 @@ export class ManagePortalScene {
111
111
  gl.render(scene, camera);
112
112
  }
113
113
  }
114
- }, { injector, priority: this.priority() });
114
+ }, { injector, priority });
115
115
  onCleanup(() => sub());
116
116
  });
117
117
  }
@@ -179,7 +179,7 @@ export class NgtsMeshPortalMaterial {
179
179
  });
180
180
  this.priority = signal(0);
181
181
  extend({ MeshPortalMaterial });
182
- afterNextRender(() => {
182
+ effect(() => {
183
183
  const material = this.materialRef().nativeElement;
184
184
  const localState = getLocalState(material);
185
185
  if (!localState)
@@ -190,7 +190,7 @@ export class NgtsMeshPortalMaterial {
190
190
  // Since the ref above is not tied to a mesh directly (we're inside a material),
191
191
  // it has to be tied to the parent mesh here
192
192
  this.parent.set(materialParent);
193
- });
193
+ }, { allowSignalWrites: true });
194
194
  effect(() => {
195
195
  const events = this.events();
196
196
  if (!events)
@@ -291,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
291
291
  imports: [NgtsRenderTexture, NgtsRenderTextureContent, ManagePortalScene, NgTemplateOutlet],
292
292
  }]
293
293
  }], ctorParameters: () => [] });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1wb3J0YWwtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1wb3J0YWwtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxNQUFNLEVBRU4sTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNOLE1BQU0sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLFdBQVcsRUFJWCxJQUFJLEVBQ0osSUFBSSxHQUNKLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pGLE9BQU8sRUFDTixrQkFBa0IsRUFDbEIsMEJBQTBCLEdBRTFCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQVMsY0FBYyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFpQjtJQU83QjtRQU5BLFdBQU0sR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUMxQixjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEs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Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBN0dXLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtYQVlGLFdBQVcseUxBOUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQsNERBR1MsaUJBQWlCLCtGQUFFLHdCQUF3Qiw4RUFsTHpDLGlCQUFpQiw0SUFrTDZDLGdCQUFnQjs7NEZBRTlFLHNCQUFzQjtrQkFyQ2xDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdGFmdGVyTmV4dFJlbmRlcixcblx0Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG5cdENvbXBvbmVudCxcblx0Y29tcHV0ZWQsXG5cdGNvbnRlbnRDaGlsZCxcblx0Q1VTVE9NX0VMRU1FTlRTX1NDSEVNQSxcblx0RGlyZWN0aXZlLFxuXHRlZmZlY3QsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0b3IsXG5cdGlucHV0LFxuXHRzaWduYWwsXG5cdFRlbXBsYXRlUmVmLFxuXHR2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0ZXh0ZW5kLFxuXHRnZXRMb2NhbFN0YXRlLFxuXHRpbmplY3RCZWZvcmVSZW5kZXIsXG5cdGluamVjdFN0b3JlLFxuXHROZ3RBdHRhY2hhYmxlLFxuXHROZ3RDb21wdXRlRnVuY3Rpb24sXG5cdE5ndFNoYWRlck1hdGVyaWFsLFxuXHRvbWl0LFxuXHRwaWNrLFxufSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IGdldFZlcnNpb24sIGluamVjdEZCTywgaW5qZWN0SW50ZXJzZWN0IH0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL21pc2MnO1xuaW1wb3J0IHsgTmd0c1JlbmRlclRleHR1cmUsIE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9zdGFnaW5nJztcbmltcG9ydCB7XG5cdE1lc2hQb3J0YWxNYXRlcmlhbCxcblx0bWVzaFBvcnRhbE1hdGVyaWFsQXBwbHlTREYsXG5cdE5ndE1lc2hQb3J0YWxNYXRlcmlhbCxcbn0gZnJvbSAnYW5ndWxhci10aHJlZS1zb2JhL3ZhbmlsbGEtZXhwb3J0cyc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgeyBNZXNoLCBTY2VuZSwgU2hhZGVyTWF0ZXJpYWwgfSBmcm9tICd0aHJlZSc7XG5pbXBvcnQgeyBGdWxsU2NyZWVuUXVhZCB9IGZyb20gJ3RocmVlLXN0ZGxpYic7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgaXMgdXNlZCBpbnNpZGUgb2YgdGhlIHJlbmRlciB0ZXh0dXJlLCBoZW5jZSBoYXMgYWNjZXNzIHRvIHRoZSByZW5kZXIgdGV4dHVyZSBzdG9yZSAoYSBwb3J0YWwgc3RvcmUpXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndHMtbWFuYWdlLXBvcnRhbC1zY2VuZScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBNYW5hZ2VQb3J0YWxTY2VuZSB7XG5cdGV2ZW50cyA9IGlucHV0PGJvb2xlYW4+KCk7XG5cdHJvb3RTY2VuZSA9IGlucHV0LnJlcXVpcmVkPFNjZW5lPigpO1xuXHRtYXRlcmlhbCA9IGlucHV0LnJlcXVpcmVkPE5ndE1lc2hQb3J0YWxNYXRlcmlhbD4oKTtcblx0cHJpb3JpdHkgPSBpbnB1dC5yZXF1aXJlZDxudW1iZXI+KCk7XG5cdHdvcmxkVW5pdHMgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblx0XHRjb25zdCByZW5kZXJUZXh0dXJlU3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRcdGNvbnN0IHBvcnRhbFNjZW5lID0gcmVuZGVyVGV4dHVyZVN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblx0XHRjb25zdCBwb3J0YWxTZXRFdmVudHMgPSByZW5kZXJUZXh0dXJlU3RvcmUuc2VsZWN0KCdzZXRFdmVudHMnKTtcblxuXHRcdGNvbnN0IGJ1ZmZlcjEgPSBpbmplY3RGQk8oKTtcblx0XHRjb25zdCBidWZmZXIyID0gaW5qZWN0RkJPKCk7XG5cblx0XHRjb25zdCBmdWxsU2NyZWVuUXVhZCA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdC8vIFRoaXMgZnVsbHNjcmVlbi1xdWFkIGlzIHVzZWQgdG8gYmxlbmQgdGhlIHR3byB0ZXh0dXJlc1xuXHRcdFx0Y29uc3QgYmxlbmQgPSB7IHZhbHVlOiAwIH07XG5cdFx0XHRjb25zdCBxdWFkID0gbmV3IEZ1bGxTY3JlZW5RdWFkKFxuXHRcdFx0XHRuZXcgU2hhZGVyTWF0ZXJpYWwoe1xuXHRcdFx0XHRcdHVuaWZvcm1zOiB7XG5cdFx0XHRcdFx0XHRhOiB7IHZhbHVlOiBidWZmZXIxKCkudGV4dHVyZSB9LFxuXHRcdFx0XHRcdFx0YjogeyB2YWx1ZTogYnVmZmVyMigpLnRleHR1cmUgfSxcblx0XHRcdFx0XHRcdGJsZW5kLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dmVydGV4U2hhZGVyOiAvKmdsc2wqLyBgXG5cdFx0ICAgICAgdmFyeWluZyB2ZWMyIHZVdjtcblx0XHQgICAgICB2b2lkIG1haW4oKSB7XG5cdFx0ICAgICAgICB2VXYgPSB1djtcblx0XHQgICAgICAgIGdsX1Bvc2l0aW9uID0gcHJvamVjdGlvbk1hdHJpeCAqIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblx0XHQgICAgICB9YCxcblx0XHRcdFx0XHRmcmFnbWVudFNoYWRlcjogLypnbHNsKi8gYFxuXHRcdCAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGE7XG5cdFx0ICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgYjtcblx0XHQgICAgICB1bmlmb3JtIGZsb2F0IGJsZW5kO1xuXHRcdCAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG5cdFx0ICAgICAgI2luY2x1ZGUgPHBhY2tpbmc+XG5cdFx0ICAgICAgdm9pZCBtYWluKCkge1xuXHRcdCAgICAgICAgdmVjNCB0YSA9IHRleHR1cmUyRChhLCB2VXYpO1xuXHRcdCAgICAgICAgdmVjNCB0YiA9IHRleHR1cmUyRChiLCB2VXYpO1xuXHRcdCAgICAgICAgZ2xfRnJhZ0NvbG9yID0gbWl4KHRiLCB0YSwgYmxlbmQpO1xuXHRcdCAgICAgICAgI2luY2x1ZGUgPHRvbmVtYXBwaW5nX2ZyYWdtZW50PlxuXHRcdCAgICAgICAgI2luY2x1ZGUgPCR7Z2V0VmVyc2lvbigpID49IDE1NCA/ICdjb2xvcnNwYWNlX2ZyYWdtZW50JyA6ICdlbmNvZGluZ3NfZnJhZ21lbnQnfT5cblx0XHQgICAgICB9YCxcblx0XHRcdFx0fSksXG5cdFx0XHQpO1xuXHRcdFx0cmV0dXJuIFtxdWFkLCBibGVuZF0gYXMgY29uc3Q7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW2V2ZW50cywgc2V0RXZlbnRzXSA9IFt0aGlzLmV2ZW50cygpLCBwb3J0YWxTZXRFdmVudHMoKV07XG5cdFx0XHRpZiAoIWV2ZW50cykgcmV0dXJuO1xuXHRcdFx0c2V0RXZlbnRzKHsgZW5hYmxlZDogZXZlbnRzIH0pO1xuXHRcdH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHBvcnRhbFNjZW5lKCkubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdC8vIHdlIHN0YXJ0IHRoZSBiZWZvcmUgcmVuZGVyIGluIGVmZmVjdCBiZWNhdXNlIHdlIG5lZWQgdGhlIHByaW9yaXR5IGlucHV0IHRvIGJlIHJlc29sdmVkXG5cdFx0XHRjb25zdCBzdWIgPSBpbmplY3RCZWZvcmVSZW5kZXIoXG5cdFx0XHRcdCh7IGdsLCBjYW1lcmEgfSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbCgpO1xuXG5cdFx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgcGFyZW50ID0gbG9jYWxTdGF0ZS5wYXJlbnQoKTtcblx0XHRcdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRcdFx0Y29uc3QgbWF0ZXJpYWxCbGVuZCA9ICdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgdHlwZW9mIG1hdGVyaWFsLmJsZW5kID09PSAnbnVtYmVyJyA/IG1hdGVyaWFsLmJsZW5kIDogMDtcblx0XHRcdFx0XHRjb25zdCBbd29ybGRVbml0cywgcHJpb3JpdHksIHJvb3RTY2VuZSwgc2NlbmUsIFtxdWFkLCBibGVuZF1dID0gW1xuXHRcdFx0XHRcdFx0dGhpcy53b3JsZFVuaXRzKCksXG5cdFx0XHRcdFx0XHR0aGlzLnByaW9yaXR5KCksXG5cdFx0XHRcdFx0XHR0aGlzLnJvb3RTY2VuZSgpLFxuXHRcdFx0XHRcdFx0cG9ydGFsU2NlbmUoKSxcblx0XHRcdFx0XHRcdGZ1bGxTY3JlZW5RdWFkKCksXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHQvLyBNb3ZlIHBvcnRhbCBjb250ZW50cyBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgaWYgd29ybGRVbml0cyBpcyB0cnVlXG5cdFx0XHRcdFx0aWYgKCF3b3JsZFVuaXRzKSB7XG5cdFx0XHRcdFx0XHQvLyBJZiB0aGUgcG9ydGFsIHJlbmRlcnMgZXhjbHVzaXZlbHkgdGhlIG9yaWdpbmFsIHNjZW5lIG5lZWRzIHRvIGJlIHVwZGF0ZWRcblx0XHRcdFx0XHRcdGlmIChwcmlvcml0eSAmJiBtYXRlcmlhbEJsZW5kID09PSAxKSBwYXJlbnQudXBkYXRlV29ybGRNYXRyaXgodHJ1ZSwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0c2NlbmUubWF0cml4V29ybGQuY29weShwYXJlbnQubWF0cml4V29ybGQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzY2VuZS5tYXRyaXhXb3JsZC5pZGVudGl0eSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFRoaXMgYml0IGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSBwb3J0YWwgaXMgYmxlbmRlZCwgbm93IGl0IGhhcyBhIHJlbmRlci1wcmlvcml0eVxuXHRcdFx0XHRcdC8vIGFuZCB3aWxsIHRha2Ugb3ZlciB0aGUgcmVuZGVyIGxvb3Bcblx0XHRcdFx0XHRpZiAocHJpb3JpdHkpIHtcblx0XHRcdFx0XHRcdGlmIChtYXRlcmlhbEJsZW5kID4gMCAmJiBtYXRlcmlhbEJsZW5kIDwgMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBJZiBibGVuZCBpcyBvbmdvaW5nICg+IDAgYW5kIDwgMSkgdGhlbiB3ZSBuZWVkIHRvIHJlbmRlciBib3RoIHRoZSByb290IHNjZW5lXG5cdFx0XHRcdFx0XHRcdC8vIGFuZCB0aGUgcG9ydGFsIHNjZW5lLCBib3RoIHdpbGwgdGhlbiBiZSBtaXhlZCBpbiB0aGUgcXVhZCBmcm9tIGFib3ZlXG5cdFx0XHRcdFx0XHRcdGJsZW5kLnZhbHVlID0gbWF0ZXJpYWxCbGVuZDtcblx0XHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGJ1ZmZlcjEoKSk7XG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0XHRcdFx0Z2wuc2V0UmVuZGVyVGFyZ2V0KGJ1ZmZlcjIoKSk7XG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihyb290U2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChudWxsKTtcblx0XHRcdFx0XHRcdFx0cXVhZC5yZW5kZXIoZ2wpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChtYXRlcmlhbEJsZW5kID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdC8vIEhvd2V2ZXIgaWYgYmxlbmQgaXMgMSB3ZSBvbmx5IG5lZWQgdG8gcmVuZGVyIHRoZSBwb3J0YWwgc2NlbmVcblx0XHRcdFx0XHRcdFx0Z2wucmVuZGVyKHNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0eyBpbmplY3RvciwgcHJpb3JpdHk6IHRoaXMucHJpb3JpdHkoKSB9LFxuXHRcdFx0KTtcblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBzdWIoKSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RzTWVzaFBvcnRhbE1hdGVyaWFsT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8Tmd0U2hhZGVyTWF0ZXJpYWw+IHtcblx0LyoqIE1peCB0aGUgcG9ydGFscyBvd24gc2NlbmUgd2l0aCB0aGUgd29ybGQgc2NlbmUsIDAgPSB3b3JsZCBzY2VuZSByZW5kZXIsXG5cdCAqICAwLjUgPSBib3RoIHNjZW5lcyByZW5kZXIsIDEgPSBwb3J0YWwgc2NlbmUgcmVuZGVycywgZGVmYXVsdHMgdG8gMC4gICAqL1xuXHRibGVuZDogbnVtYmVyO1xuXHQvKiogRWRnZSBmYWRlIGJsdXIsIDAgPSBubyBibHVyIChkZWZhdWx0KSAqL1xuXHRibHVyOiBudW1iZXI7XG5cdC8qKiBTREYgcmVzb2x1dGlvbiwgdGhlIHNtYWxsZXIgdGhlIGZhc3RlciBpcyB0aGUgc3RhcnQtdXAgdGltZSAoZGVmYXVsdDogNTEyKSAqL1xuXHRyZXNvbHV0aW9uOiBudW1iZXI7XG5cdC8qKiBCeSBkZWZhdWx0IHBvcnRhbHMgdXNlIHJlbGF0aXZlIGNvb3JkaW5hdGVzLCBjb250ZW50cyBhcmUgYWZmZWN0cyBieSB0aGUgbG9jYWwgbWF0cml4IHRyYW5zZm9ybSAqL1xuXHR3b3JsZFVuaXRzOiBib29sZWFuO1xuXHQvKiogT3B0aW9uYWwgZXZlbnQgcHJpb3JpdHksIGRlZmF1bHRzIHRvIDAgKi9cblx0ZXZlbnRQcmlvcml0eTogbnVtYmVyO1xuXHQvKiogT3B0aW9uYWwgcmVuZGVyIHByaW9yaXR5LCBkZWZhdWx0cyB0byAwICovXG5cdHJlbmRlclByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbGx5IGRpYWJsZSBldmVudHMgaW5zaWRlIHRoZSBwb3J0YWwsIGRlZmF1bHRzIHRvIGZhbHNlICovXG5cdGV2ZW50czogYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndHNNZXNoUG9ydGFsTWF0ZXJpYWxPcHRpb25zID0ge1xuXHRibGVuZDogMCxcblx0Ymx1cjogMCxcblx0cmVzb2x1dGlvbjogNTEyLFxuXHR3b3JsZFVuaXRzOiBmYWxzZSxcblx0ZXZlbnRQcmlvcml0eTogMCxcblx0cmVuZGVyUHJpb3JpdHk6IDAsXG5cdGV2ZW50czogZmFsc2UsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICduZ3RzLW1lc2gtcG9ydGFsLW1hdGVyaWFsJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmd0LW1lc2gtcG9ydGFsLW1hdGVyaWFsXG5cdFx0XHQjbWF0ZXJpYWxcblx0XHRcdFthdHRhY2hdPVwiYXR0YWNoKClcIlxuXHRcdFx0W2JsdXJdPVwiYmx1cigpXCJcblx0XHRcdFtibGVuZF09XCIwXCJcblx0XHRcdFtyZXNvbHV0aW9uXT1cIm1hdGVyaWFsUmVzb2x1dGlvbigpXCJcblx0XHRcdFtwYXJhbWV0ZXJzXT1cInBhcmFtZXRlcnMoKVwiXG5cdFx0PlxuXHRcdFx0PG5ndHMtcmVuZGVyLXRleHR1cmVcblx0XHRcdFx0W29wdGlvbnNdPVwie1xuXHRcdFx0XHRcdGZyYW1lczogcmVuZGVyVGV4dHVyZUZyYW1lcygpLFxuXHRcdFx0XHRcdGV2ZW50UHJpb3JpdHk6IGV2ZW50UHJpb3JpdHkoKSxcblx0XHRcdFx0XHRyZW5kZXJQcmlvcml0eTogcmVuZGVyUHJpb3JpdHkoKSxcblx0XHRcdFx0XHRjb21wdXRlOiByZW5kZXJUZXh0dXJlQ29tcHV0ZSgpLFxuXHRcdFx0XHR9XCJcblx0XHRcdD5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIHJlbmRlclRleHR1cmVDb250ZW50IGxldC1pbmplY3Rvcj1cImluamVjdG9yXCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnQoKTsgaW5qZWN0b3I6IGluamVjdG9yXCIgLz5cblx0XHRcdFx0XHQ8bmd0cy1tYW5hZ2UtcG9ydGFsLXNjZW5lXG5cdFx0XHRcdFx0XHRbZXZlbnRzXT1cImV2ZW50cygpXCJcblx0XHRcdFx0XHRcdFtyb290U2NlbmVdPVwicm9vdFNjZW5lKClcIlxuXHRcdFx0XHRcdFx0W3ByaW9yaXR5XT1cInByaW9yaXR5KClcIlxuXHRcdFx0XHRcdFx0W21hdGVyaWFsXT1cIm1hdGVyaWFsXCJcblx0XHRcdFx0XHRcdFt3b3JsZFVuaXRzXT1cIndvcmxkVW5pdHMoKVwiXG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDwvbmd0cy1yZW5kZXItdGV4dHVyZT5cblx0XHQ8L25ndC1tZXNoLXBvcnRhbC1tYXRlcmlhbD5cblx0YCxcblx0c2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW05ndHNSZW5kZXJUZXh0dXJlLCBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQsIE1hbmFnZVBvcnRhbFNjZW5lLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0c01lc2hQb3J0YWxNYXRlcmlhbCB7XG5cdGF0dGFjaCA9IGlucHV0PE5ndEF0dGFjaGFibGU+KCdtYXRlcmlhbCcpO1xuXHRvcHRpb25zID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cdHBhcmFtZXRlcnMgPSBvbWl0KHRoaXMub3B0aW9ucywgWydibHVyJywgJ3Jlc29sdXRpb24nLCAnd29ybGRVbml0cycsICdldmVudFByaW9yaXR5JywgJ3JlbmRlclByaW9yaXR5JywgJ2V2ZW50cyddKTtcblxuXHRibHVyID0gcGljayh0aGlzLm9wdGlvbnMsICdibHVyJyk7XG5cdGV2ZW50UHJpb3JpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2V2ZW50UHJpb3JpdHknKTtcblx0cmVuZGVyUHJpb3JpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3JlbmRlclByaW9yaXR5Jyk7XG5cdGV2ZW50cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXZlbnRzJyk7XG5cdHdvcmxkVW5pdHMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3dvcmxkVW5pdHMnKTtcblxuXHRtYXRlcmlhbFJlZiA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEluc3RhbmNlVHlwZTx0eXBlb2YgTWVzaFBvcnRhbE1hdGVyaWFsPj4+KCdtYXRlcmlhbCcpO1xuXHRjb250ZW50ID0gY29udGVudENoaWxkLnJlcXVpcmVkKFRlbXBsYXRlUmVmKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBzaXplID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NpemUnKTtcblx0cHJpdmF0ZSB2aWV3cG9ydCA9IHRoaXMuc3RvcmUuc2VsZWN0KCd2aWV3cG9ydCcpO1xuXHRwcml2YXRlIGdsID0gdGhpcy5zdG9yZS5zZWxlY3QoJ2dsJyk7XG5cdHByaXZhdGUgc2V0RXZlbnRzID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NldEV2ZW50cycpO1xuXHRyb290U2NlbmUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2NlbmUnKTtcblxuXHRtYXRlcmlhbFJlc29sdXRpb24gPSBjb21wdXRlZCgoKSA9PiBbXG5cdFx0dGhpcy5zaXplKCkud2lkdGggKiB0aGlzLnZpZXdwb3J0KCkuZHByLFxuXHRcdHRoaXMuc2l6ZSgpLmhlaWdodCAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdF0pO1xuXHRwcml2YXRlIHJlc29sdXRpb24gPSBwaWNrKHRoaXMub3B0aW9ucywgJ3Jlc29sdXRpb24nKTtcblxuXHRwcml2YXRlIHBhcmVudCA9IHNpZ25hbDxNZXNoIHwgbnVsbD4obnVsbCk7XG5cdHByaXZhdGUgdmlzaWJsZSA9IGluamVjdEludGVyc2VjdCh0aGlzLnBhcmVudCwgeyBzb3VyY2U6IHNpZ25hbCh0cnVlKSB9KTtcblxuXHRyZW5kZXJUZXh0dXJlRnJhbWVzID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMudmlzaWJsZSgpID8gSW5maW5pdHkgOiAwKSk7XG5cdHJlbmRlclRleHR1cmVDb21wdXRlID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdGNvbnN0IFtwYXJlbnQsIG1hdGVyaWFsXSA9IFt0aGlzLnBhcmVudCgpLCB0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudF07XG5cblx0XHRjb25zdCBjb21wdXRlRm46ICguLi5hcmdzOiBQYXJhbWV0ZXJzPE5ndENvbXB1dGVGdW5jdGlvbj4pID0+IGZhbHNlIHwgdW5kZWZpbmVkID0gKGV2ZW50LCBzdGF0ZSkgPT4ge1xuXHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybiBmYWxzZTtcblx0XHRcdHN0YXRlLnNuYXBzaG90LnBvaW50ZXIuc2V0KFxuXHRcdFx0XHQoZXZlbnQub2Zmc2V0WCAvIHN0YXRlLnNuYXBzaG90LnNpemUud2lkdGgpICogMiAtIDEsXG5cdFx0XHRcdC0oZXZlbnQub2Zmc2V0WSAvIHN0YXRlLnNuYXBzaG90LnNpemUuaGVpZ2h0KSAqIDIgKyAxLFxuXHRcdFx0KTtcblx0XHRcdHN0YXRlLnNuYXBzaG90LnJheWNhc3Rlci5zZXRGcm9tQ2FtZXJhKHN0YXRlLnNuYXBzaG90LnBvaW50ZXIsIHN0YXRlLnNuYXBzaG90LmNhbWVyYSk7XG5cblx0XHRcdGlmICgnYmxlbmQnIGluIG1hdGVyaWFsICYmIG1hdGVyaWFsLmJsZW5kID09PSAwKSB7XG5cdFx0XHRcdC8vIFdlIHJ1biBhIHF1aWNrIGNoZWNrIGFnYWluc3QgdGhlIHBhcmVudCwgaWYgaXQgaXNuJ3QgaGl0IHRoZXJlJ3Mgbm8gbmVlZCB0byByYXljYXN0IGF0IGFsbFxuXHRcdFx0XHRjb25zdCBbaW50ZXJzZWN0aW9uXSA9IHN0YXRlLnNuYXBzaG90LnJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3QocGFyZW50KTtcblx0XHRcdFx0aWYgKCFpbnRlcnNlY3Rpb24pIHtcblx0XHRcdFx0XHQvLyBDYW5jZWwgb3V0IHRoZSByYXljYXN0IGNhbWVyYSBpZiB0aGUgcGFyZW50IG1lc2ggaXNuJ3QgaGl0XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbihzdGF0ZS5zbmFwc2hvdC5yYXljYXN0ZXIsIHsgY2FtZXJhOiB1bmRlZmluZWQgfSk7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybjtcblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNvbXB1dGVGbjtcblx0fSk7XG5cblx0cHJpb3JpdHkgPSBzaWduYWwoMCk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0ZXh0ZW5kKHsgTWVzaFBvcnRhbE1hdGVyaWFsIH0pO1xuXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKG1hdGVyaWFsKTtcblx0XHRcdGlmICghbG9jYWxTdGF0ZSkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBtYXRlcmlhbFBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50KCk7XG5cdFx0XHRpZiAoIW1hdGVyaWFsUGFyZW50IHx8ICEobWF0ZXJpYWxQYXJlbnQgaW5zdGFuY2VvZiBNZXNoKSkgcmV0dXJuO1xuXG5cdFx0XHQvLyBTaW5jZSB0aGUgcmVmIGFib3ZlIGlzIG5vdCB0aWVkIHRvIGEgbWVzaCBkaXJlY3RseSAod2UncmUgaW5zaWRlIGEgbWF0ZXJpYWwpLFxuXHRcdFx0Ly8gaXQgaGFzIHRvIGJlIHRpZWQgdG8gdGhlIHBhcmVudCBtZXNoIGhlcmVcblx0XHRcdHRoaXMucGFyZW50LnNldChtYXRlcmlhbFBhcmVudCk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZXZlbnRzID0gdGhpcy5ldmVudHMoKTtcblx0XHRcdGlmICghZXZlbnRzKSByZXR1cm47XG5cblx0XHRcdGNvbnN0IHNldEV2ZW50cyA9IHRoaXMuc2V0RXZlbnRzKCk7XG5cdFx0XHRzZXRFdmVudHMoeyBlbmFibGVkOiAhZXZlbnRzIH0pO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFttYXRlcmlhbCwgcGFyZW50XSA9IFt0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudCwgdGhpcy5wYXJlbnQoKV07XG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbcmVzb2x1dGlvbiwgYmx1ciwgZ2xdID0gW3RoaXMucmVzb2x1dGlvbigpLCB0aGlzLmJsdXIoKSwgdGhpcy5nbCgpXTtcblxuXHRcdFx0Ly8gYXBwbHkgdGhlIFNERiBtYXNrIG9uY2Vcblx0XHRcdGlmIChibHVyICYmIG1hdGVyaWFsLnNkZiA9PSBudWxsKSB7XG5cdFx0XHRcdG1lc2hQb3J0YWxNYXRlcmlhbEFwcGx5U0RGKHBhcmVudCwgcmVzb2x1dGlvbiwgZ2wpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9XG5cdFx0XHRcdCdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgdHlwZW9mIG1hdGVyaWFsLmJsZW5kID09PSAnbnVtYmVyJyAmJiBtYXRlcmlhbC5ibGVuZCA+IDBcblx0XHRcdFx0XHQ/IE1hdGgubWF4KDEsIHRoaXMucmVuZGVyUHJpb3JpdHkoKSlcblx0XHRcdFx0XHQ6IDA7XG5cblx0XHRcdC8vIElmIGJsZW5kIGlzID4gMCB0aGVuIHRoZSBwb3J0YWwgaXMgYmVpbmcgZW50ZXJlZCwgdGhlIHJlbmRlci1wcmlvcml0eSBtdXN0IGNoYW5nZVxuXHRcdFx0aWYgKHRoaXMucHJpb3JpdHkoKSAhPT0gcHJpb3JpdHkpIHtcblx0XHRcdFx0dGhpcy5wcmlvcml0eS5zZXQocHJpb3JpdHkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzaC1wb3J0YWwtbWF0ZXJpYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NvYmEvbWF0ZXJpYWxzL3NyYy9saWIvbWVzaC1wb3J0YWwtbWF0ZXJpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUNOLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ04sTUFBTSxFQUNOLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsV0FBVyxFQUlYLElBQUksRUFDSixJQUFJLEdBQ0osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekYsT0FBTyxFQUNOLGtCQUFrQixFQUNsQiwwQkFBMEIsR0FFMUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBUyxjQUFjLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFFOUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBTzdCO1FBTkEsV0FBTSxHQUFHLEtBQUssRUFBVyxDQUFDO1FBQzFCLGNBQVMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFTLENBQUM7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LENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFTixvRkFBb0Y7WUFDcEYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7K0dBaEhXLHNCQUFzQjttR0FBdEIsc0JBQXNCLCtYQVlGLFdBQVcseUxBOUNqQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQsNERBR1MsaUJBQWlCLCtGQUFFLHdCQUF3Qiw4RUFuTHpDLGlCQUFpQiw0SUFtTDZDLGdCQUFnQjs7NEZBRTlFLHNCQUFzQjtrQkFyQ2xDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQztpQkFDM0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG5cdENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuXHRDb21wb25lbnQsXG5cdGNvbXB1dGVkLFxuXHRjb250ZW50Q2hpbGQsXG5cdENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsXG5cdERpcmVjdGl2ZSxcblx0ZWZmZWN0LFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdG9yLFxuXHRpbnB1dCxcblx0c2lnbmFsLFxuXHRUZW1wbGF0ZVJlZixcblx0dmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdGV4dGVuZCxcblx0Z2V0TG9jYWxTdGF0ZSxcblx0aW5qZWN0QmVmb3JlUmVuZGVyLFxuXHRpbmplY3RTdG9yZSxcblx0Tmd0QXR0YWNoYWJsZSxcblx0Tmd0Q29tcHV0ZUZ1bmN0aW9uLFxuXHROZ3RTaGFkZXJNYXRlcmlhbCxcblx0b21pdCxcblx0cGljayxcbn0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBnZXRWZXJzaW9uLCBpbmplY3RGQk8sIGluamVjdEludGVyc2VjdCB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS9taXNjJztcbmltcG9ydCB7IE5ndHNSZW5kZXJUZXh0dXJlLCBOZ3RzUmVuZGVyVGV4dHVyZUNvbnRlbnQgfSBmcm9tICdhbmd1bGFyLXRocmVlLXNvYmEvc3RhZ2luZyc7XG5pbXBvcnQge1xuXHRNZXNoUG9ydGFsTWF0ZXJpYWwsXG5cdG1lc2hQb3J0YWxNYXRlcmlhbEFwcGx5U0RGLFxuXHROZ3RNZXNoUG9ydGFsTWF0ZXJpYWwsXG59IGZyb20gJ2FuZ3VsYXItdGhyZWUtc29iYS92YW5pbGxhLWV4cG9ydHMnO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0IHsgTWVzaCwgU2NlbmUsIFNoYWRlck1hdGVyaWFsIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgRnVsbFNjcmVlblF1YWQgfSBmcm9tICd0aHJlZS1zdGRsaWInO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHVzZWQgaW5zaWRlIG9mIHRoZSByZW5kZXIgdGV4dHVyZSwgaGVuY2UgaGFzIGFjY2VzcyB0byB0aGUgcmVuZGVyIHRleHR1cmUgc3RvcmUgKGEgcG9ydGFsIHN0b3JlKVxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RzLW1hbmFnZS1wb3J0YWwtc2NlbmUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgTWFuYWdlUG9ydGFsU2NlbmUge1xuXHRldmVudHMgPSBpbnB1dDxib29sZWFuPigpO1xuXHRyb290U2NlbmUgPSBpbnB1dC5yZXF1aXJlZDxTY2VuZT4oKTtcblx0bWF0ZXJpYWwgPSBpbnB1dC5yZXF1aXJlZDxOZ3RNZXNoUG9ydGFsTWF0ZXJpYWw+KCk7XG5cdHByaW9yaXR5ID0gaW5wdXQucmVxdWlyZWQ8bnVtYmVyPigpO1xuXHR3b3JsZFVuaXRzID0gaW5wdXQucmVxdWlyZWQ8Ym9vbGVhbj4oKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cdFx0Y29uc3QgcmVuZGVyVGV4dHVyZVN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0XHRjb25zdCBwb3J0YWxTY2VuZSA9IHJlbmRlclRleHR1cmVTdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cdFx0Y29uc3QgcG9ydGFsU2V0RXZlbnRzID0gcmVuZGVyVGV4dHVyZVN0b3JlLnNlbGVjdCgnc2V0RXZlbnRzJyk7XG5cblx0XHRjb25zdCBidWZmZXIxID0gaW5qZWN0RkJPKCk7XG5cdFx0Y29uc3QgYnVmZmVyMiA9IGluamVjdEZCTygpO1xuXG5cdFx0Y29uc3QgZnVsbFNjcmVlblF1YWQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHQvLyBUaGlzIGZ1bGxzY3JlZW4tcXVhZCBpcyB1c2VkIHRvIGJsZW5kIHRoZSB0d28gdGV4dHVyZXNcblx0XHRcdGNvbnN0IGJsZW5kID0geyB2YWx1ZTogMCB9O1xuXHRcdFx0Y29uc3QgcXVhZCA9IG5ldyBGdWxsU2NyZWVuUXVhZChcblx0XHRcdFx0bmV3IFNoYWRlck1hdGVyaWFsKHtcblx0XHRcdFx0XHR1bmlmb3Jtczoge1xuXHRcdFx0XHRcdFx0YTogeyB2YWx1ZTogYnVmZmVyMSgpLnRleHR1cmUgfSxcblx0XHRcdFx0XHRcdGI6IHsgdmFsdWU6IGJ1ZmZlcjIoKS50ZXh0dXJlIH0sXG5cdFx0XHRcdFx0XHRibGVuZCxcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHZlcnRleFNoYWRlcjogLypnbHNsKi8gYFxuXHRcdCAgICAgIHZhcnlpbmcgdmVjMiB2VXY7XG5cdFx0ICAgICAgdm9pZCBtYWluKCkge1xuXHRcdCAgICAgICAgdlV2ID0gdXY7XG5cdFx0ICAgICAgICBnbF9Qb3NpdGlvbiA9IHByb2plY3Rpb25NYXRyaXggKiBtb2RlbFZpZXdNYXRyaXggKiB2ZWM0KCBwb3NpdGlvbiwgMS4wICk7XG5cdFx0ICAgICAgfWAsXG5cdFx0XHRcdFx0ZnJhZ21lbnRTaGFkZXI6IC8qZ2xzbCovIGBcblx0XHQgICAgICB1bmlmb3JtIHNhbXBsZXIyRCBhO1xuXHRcdCAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIGI7XG5cdFx0ICAgICAgdW5pZm9ybSBmbG9hdCBibGVuZDtcblx0XHQgICAgICB2YXJ5aW5nIHZlYzIgdlV2O1xuXHRcdCAgICAgICNpbmNsdWRlIDxwYWNraW5nPlxuXHRcdCAgICAgIHZvaWQgbWFpbigpIHtcblx0XHQgICAgICAgIHZlYzQgdGEgPSB0ZXh0dXJlMkQoYSwgdlV2KTtcblx0XHQgICAgICAgIHZlYzQgdGIgPSB0ZXh0dXJlMkQoYiwgdlV2KTtcblx0XHQgICAgICAgIGdsX0ZyYWdDb2xvciA9IG1peCh0YiwgdGEsIGJsZW5kKTtcblx0XHQgICAgICAgICNpbmNsdWRlIDx0b25lbWFwcGluZ19mcmFnbWVudD5cblx0XHQgICAgICAgICNpbmNsdWRlIDwke2dldFZlcnNpb24oKSA+PSAxNTQgPyAnY29sb3JzcGFjZV9mcmFnbWVudCcgOiAnZW5jb2RpbmdzX2ZyYWdtZW50J30+XG5cdFx0ICAgICAgfWAsXG5cdFx0XHRcdH0pLFxuXHRcdFx0KTtcblx0XHRcdHJldHVybiBbcXVhZCwgYmxlbmRdIGFzIGNvbnN0O1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdHBvcnRhbFNjZW5lKCkubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0ZWZmZWN0KCgpID0+IHtcblx0XHRcdGNvbnN0IFtldmVudHMsIHNldEV2ZW50c10gPSBbdGhpcy5ldmVudHMoKSwgcG9ydGFsU2V0RXZlbnRzKCldO1xuXHRcdFx0aWYgKCFldmVudHMpIHJldHVybjtcblx0XHRcdHNldEV2ZW50cyh7IGVuYWJsZWQ6IGV2ZW50cyB9KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBwcmlvcml0eSA9IHRoaXMucHJpb3JpdHkoKTtcblxuXHRcdFx0Ly8gd2Ugc3RhcnQgdGhlIGJlZm9yZSByZW5kZXIgaW4gZWZmZWN0IGJlY2F1c2Ugd2UgbmVlZCB0aGUgcHJpb3JpdHkgaW5wdXQgdG8gYmUgcmVzb2x2ZWRcblx0XHRcdGNvbnN0IHN1YiA9IGluamVjdEJlZm9yZVJlbmRlcihcblx0XHRcdFx0KHsgZ2wsIGNhbWVyYSB9KSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsKCk7XG5cblx0XHRcdFx0XHRjb25zdCBsb2NhbFN0YXRlID0gZ2V0TG9jYWxTdGF0ZShtYXRlcmlhbCk7XG5cdFx0XHRcdFx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBwYXJlbnQgPSBsb2NhbFN0YXRlLnBhcmVudCgpO1xuXHRcdFx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdFx0XHRjb25zdCBtYXRlcmlhbEJsZW5kID0gJ2JsZW5kJyBpbiBtYXRlcmlhbCAmJiB0eXBlb2YgbWF0ZXJpYWwuYmxlbmQgPT09ICdudW1iZXInID8gbWF0ZXJpYWwuYmxlbmQgOiAwO1xuXHRcdFx0XHRcdGNvbnN0IFt3b3JsZFVuaXRzLCByb290U2NlbmUsIHNjZW5lLCBbcXVhZCwgYmxlbmRdXSA9IFtcblx0XHRcdFx0XHRcdHRoaXMud29ybGRVbml0cygpLFxuXHRcdFx0XHRcdFx0dGhpcy5yb290U2NlbmUoKSxcblx0XHRcdFx0XHRcdHBvcnRhbFNjZW5lKCksXG5cdFx0XHRcdFx0XHRmdWxsU2NyZWVuUXVhZCgpLFxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0Ly8gTW92ZSBwb3J0YWwgY29udGVudHMgYWxvbmcgd2l0aCB0aGUgcGFyZW50IGlmIHdvcmxkVW5pdHMgaXMgdHJ1ZVxuXHRcdFx0XHRcdGlmICghd29ybGRVbml0cykge1xuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHBvcnRhbCByZW5kZXJzIGV4Y2x1c2l2ZWx5IHRoZSBvcmlnaW5hbCBzY2VuZSBuZWVkcyB0byBiZSB1cGRhdGVkXG5cdFx0XHRcdFx0XHRpZiAocHJpb3JpdHkgJiYgbWF0ZXJpYWxCbGVuZCA9PT0gMSkgcGFyZW50LnVwZGF0ZVdvcmxkTWF0cml4KHRydWUsIGZhbHNlKTtcblx0XHRcdFx0XHRcdHNjZW5lLm1hdHJpeFdvcmxkLmNvcHkocGFyZW50Lm1hdHJpeFdvcmxkKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c2NlbmUubWF0cml4V29ybGQuaWRlbnRpdHkoKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBUaGlzIGJpdCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcG9ydGFsIGlzIGJsZW5kZWQsIG5vdyBpdCBoYXMgYSByZW5kZXItcHJpb3JpdHlcblx0XHRcdFx0XHQvLyBhbmQgd2lsbCB0YWtlIG92ZXIgdGhlIHJlbmRlciBsb29wXG5cdFx0XHRcdFx0aWYgKHByaW9yaXR5KSB7XG5cdFx0XHRcdFx0XHRpZiAobWF0ZXJpYWxCbGVuZCA+IDAgJiYgbWF0ZXJpYWxCbGVuZCA8IDEpIHtcblx0XHRcdFx0XHRcdFx0Ly8gSWYgYmxlbmQgaXMgb25nb2luZyAoPiAwIGFuZCA8IDEpIHRoZW4gd2UgbmVlZCB0byByZW5kZXIgYm90aCB0aGUgcm9vdCBzY2VuZVxuXHRcdFx0XHRcdFx0XHQvLyBhbmQgdGhlIHBvcnRhbCBzY2VuZSwgYm90aCB3aWxsIHRoZW4gYmUgbWl4ZWQgaW4gdGhlIHF1YWQgZnJvbSBhYm92ZVxuXHRcdFx0XHRcdFx0XHRibGVuZC52YWx1ZSA9IG1hdGVyaWFsQmxlbmQ7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChidWZmZXIxKCkpO1xuXHRcdFx0XHRcdFx0XHRnbC5yZW5kZXIoc2NlbmUsIGNhbWVyYSk7XG5cdFx0XHRcdFx0XHRcdGdsLnNldFJlbmRlclRhcmdldChidWZmZXIyKCkpO1xuXHRcdFx0XHRcdFx0XHRnbC5yZW5kZXIocm9vdFNjZW5lLCBjYW1lcmEpO1xuXHRcdFx0XHRcdFx0XHRnbC5zZXRSZW5kZXJUYXJnZXQobnVsbCk7XG5cdFx0XHRcdFx0XHRcdHF1YWQucmVuZGVyKGdsKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAobWF0ZXJpYWxCbGVuZCA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHQvLyBIb3dldmVyIGlmIGJsZW5kIGlzIDEgd2Ugb25seSBuZWVkIHRvIHJlbmRlciB0aGUgcG9ydGFsIHNjZW5lXG5cdFx0XHRcdFx0XHRcdGdsLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgaW5qZWN0b3IsIHByaW9yaXR5IH0sXG5cdFx0XHQpO1xuXHRcdFx0b25DbGVhbnVwKCgpID0+IHN1YigpKTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndHNNZXNoUG9ydGFsTWF0ZXJpYWxPcHRpb25zIGV4dGVuZHMgUGFydGlhbDxOZ3RTaGFkZXJNYXRlcmlhbD4ge1xuXHQvKiogTWl4IHRoZSBwb3J0YWxzIG93biBzY2VuZSB3aXRoIHRoZSB3b3JsZCBzY2VuZSwgMCA9IHdvcmxkIHNjZW5lIHJlbmRlcixcblx0ICogIDAuNSA9IGJvdGggc2NlbmVzIHJlbmRlciwgMSA9IHBvcnRhbCBzY2VuZSByZW5kZXJzLCBkZWZhdWx0cyB0byAwLiAgICovXG5cdGJsZW5kOiBudW1iZXI7XG5cdC8qKiBFZGdlIGZhZGUgYmx1ciwgMCA9IG5vIGJsdXIgKGRlZmF1bHQpICovXG5cdGJsdXI6IG51bWJlcjtcblx0LyoqIFNERiByZXNvbHV0aW9uLCB0aGUgc21hbGxlciB0aGUgZmFzdGVyIGlzIHRoZSBzdGFydC11cCB0aW1lIChkZWZhdWx0OiA1MTIpICovXG5cdHJlc29sdXRpb246IG51bWJlcjtcblx0LyoqIEJ5IGRlZmF1bHQgcG9ydGFscyB1c2UgcmVsYXRpdmUgY29vcmRpbmF0ZXMsIGNvbnRlbnRzIGFyZSBhZmZlY3RzIGJ5IHRoZSBsb2NhbCBtYXRyaXggdHJhbnNmb3JtICovXG5cdHdvcmxkVW5pdHM6IGJvb2xlYW47XG5cdC8qKiBPcHRpb25hbCBldmVudCBwcmlvcml0eSwgZGVmYXVsdHMgdG8gMCAqL1xuXHRldmVudFByaW9yaXR5OiBudW1iZXI7XG5cdC8qKiBPcHRpb25hbCByZW5kZXIgcHJpb3JpdHksIGRlZmF1bHRzIHRvIDAgKi9cblx0cmVuZGVyUHJpb3JpdHk6IG51bWJlcjtcblx0LyoqIE9wdGlvbmFsbHkgZGlhYmxlIGV2ZW50cyBpbnNpZGUgdGhlIHBvcnRhbCwgZGVmYXVsdHMgdG8gZmFsc2UgKi9cblx0ZXZlbnRzOiBib29sZWFuO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0c01lc2hQb3J0YWxNYXRlcmlhbE9wdGlvbnMgPSB7XG5cdGJsZW5kOiAwLFxuXHRibHVyOiAwLFxuXHRyZXNvbHV0aW9uOiA1MTIsXG5cdHdvcmxkVW5pdHM6IGZhbHNlLFxuXHRldmVudFByaW9yaXR5OiAwLFxuXHRyZW5kZXJQcmlvcml0eTogMCxcblx0ZXZlbnRzOiBmYWxzZSxcbn07XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndHMtbWVzaC1wb3J0YWwtbWF0ZXJpYWwnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtbWVzaC1wb3J0YWwtbWF0ZXJpYWxcblx0XHRcdCNtYXRlcmlhbFxuXHRcdFx0W2F0dGFjaF09XCJhdHRhY2goKVwiXG5cdFx0XHRbYmx1cl09XCJibHVyKClcIlxuXHRcdFx0W2JsZW5kXT1cIjBcIlxuXHRcdFx0W3Jlc29sdXRpb25dPVwibWF0ZXJpYWxSZXNvbHV0aW9uKClcIlxuXHRcdFx0W3BhcmFtZXRlcnNdPVwicGFyYW1ldGVycygpXCJcblx0XHQ+XG5cdFx0XHQ8bmd0cy1yZW5kZXItdGV4dHVyZVxuXHRcdFx0XHRbb3B0aW9uc109XCJ7XG5cdFx0XHRcdFx0ZnJhbWVzOiByZW5kZXJUZXh0dXJlRnJhbWVzKCksXG5cdFx0XHRcdFx0ZXZlbnRQcmlvcml0eTogZXZlbnRQcmlvcml0eSgpLFxuXHRcdFx0XHRcdHJlbmRlclByaW9yaXR5OiByZW5kZXJQcmlvcml0eSgpLFxuXHRcdFx0XHRcdGNvbXB1dGU6IHJlbmRlclRleHR1cmVDb21wdXRlKCksXG5cdFx0XHRcdH1cIlxuXHRcdFx0PlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgcmVuZGVyVGV4dHVyZUNvbnRlbnQgbGV0LWluamVjdG9yPVwiaW5qZWN0b3JcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudCgpOyBpbmplY3RvcjogaW5qZWN0b3JcIiAvPlxuXHRcdFx0XHRcdDxuZ3RzLW1hbmFnZS1wb3J0YWwtc2NlbmVcblx0XHRcdFx0XHRcdFtldmVudHNdPVwiZXZlbnRzKClcIlxuXHRcdFx0XHRcdFx0W3Jvb3RTY2VuZV09XCJyb290U2NlbmUoKVwiXG5cdFx0XHRcdFx0XHRbcHJpb3JpdHldPVwicHJpb3JpdHkoKVwiXG5cdFx0XHRcdFx0XHRbbWF0ZXJpYWxdPVwibWF0ZXJpYWxcIlxuXHRcdFx0XHRcdFx0W3dvcmxkVW5pdHNdPVwid29ybGRVbml0cygpXCJcblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZ3RzLXJlbmRlci10ZXh0dXJlPlxuXHRcdDwvbmd0LW1lc2gtcG9ydGFsLW1hdGVyaWFsPlxuXHRgLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbTmd0c1JlbmRlclRleHR1cmUsIE5ndHNSZW5kZXJUZXh0dXJlQ29udGVudCwgTWFuYWdlUG9ydGFsU2NlbmUsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3RzTWVzaFBvcnRhbE1hdGVyaWFsIHtcblx0YXR0YWNoID0gaW5wdXQ8Tmd0QXR0YWNoYWJsZT4oJ21hdGVyaWFsJyk7XG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblx0cGFyYW1ldGVycyA9IG9taXQodGhpcy5vcHRpb25zLCBbJ2JsdXInLCAncmVzb2x1dGlvbicsICd3b3JsZFVuaXRzJywgJ2V2ZW50UHJpb3JpdHknLCAncmVuZGVyUHJpb3JpdHknLCAnZXZlbnRzJ10pO1xuXG5cdGJsdXIgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2JsdXInKTtcblx0ZXZlbnRQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZXZlbnRQcmlvcml0eScpO1xuXHRyZW5kZXJQcmlvcml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVuZGVyUHJpb3JpdHknKTtcblx0ZXZlbnRzID0gcGljayh0aGlzLm9wdGlvbnMsICdldmVudHMnKTtcblx0d29ybGRVbml0cyA9IHBpY2sodGhpcy5vcHRpb25zLCAnd29ybGRVbml0cycpO1xuXG5cdG1hdGVyaWFsUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY8SW5zdGFuY2VUeXBlPHR5cGVvZiBNZXNoUG9ydGFsTWF0ZXJpYWw+Pj4oJ21hdGVyaWFsJyk7XG5cdGNvbnRlbnQgPSBjb250ZW50Q2hpbGQucmVxdWlyZWQoVGVtcGxhdGVSZWYpO1xuXG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcml2YXRlIHNpemUgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2l6ZScpO1xuXHRwcml2YXRlIHZpZXdwb3J0ID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3ZpZXdwb3J0Jyk7XG5cdHByaXZhdGUgZ2wgPSB0aGlzLnN0b3JlLnNlbGVjdCgnZ2wnKTtcblx0cHJpdmF0ZSBzZXRFdmVudHMgPSB0aGlzLnN0b3JlLnNlbGVjdCgnc2V0RXZlbnRzJyk7XG5cdHJvb3RTY2VuZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdzY2VuZScpO1xuXG5cdG1hdGVyaWFsUmVzb2x1dGlvbiA9IGNvbXB1dGVkKCgpID0+IFtcblx0XHR0aGlzLnNpemUoKS53aWR0aCAqIHRoaXMudmlld3BvcnQoKS5kcHIsXG5cdFx0dGhpcy5zaXplKCkuaGVpZ2h0ICogdGhpcy52aWV3cG9ydCgpLmRwcixcblx0XSk7XG5cdHByaXZhdGUgcmVzb2x1dGlvbiA9IHBpY2sodGhpcy5vcHRpb25zLCAncmVzb2x1dGlvbicpO1xuXG5cdHByaXZhdGUgcGFyZW50ID0gc2lnbmFsPE1lc2ggfCBudWxsPihudWxsKTtcblx0cHJpdmF0ZSB2aXNpYmxlID0gaW5qZWN0SW50ZXJzZWN0KHRoaXMucGFyZW50LCB7IHNvdXJjZTogc2lnbmFsKHRydWUpIH0pO1xuXG5cdHJlbmRlclRleHR1cmVGcmFtZXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy52aXNpYmxlKCkgPyBJbmZpbml0eSA6IDApKTtcblx0cmVuZGVyVGV4dHVyZUNvbXB1dGUgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0Y29uc3QgW3BhcmVudCwgbWF0ZXJpYWxdID0gW3RoaXMucGFyZW50KCksIHRoaXMubWF0ZXJpYWxSZWYoKS5uYXRpdmVFbGVtZW50XTtcblxuXHRcdGNvbnN0IGNvbXB1dGVGbjogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Tmd0Q29tcHV0ZUZ1bmN0aW9uPikgPT4gZmFsc2UgfCB1bmRlZmluZWQgPSAoZXZlbnQsIHN0YXRlKSA9PiB7XG5cdFx0XHRpZiAoIXBhcmVudCkgcmV0dXJuIGZhbHNlO1xuXHRcdFx0c3RhdGUuc25hcHNob3QucG9pbnRlci5zZXQoXG5cdFx0XHRcdChldmVudC5vZmZzZXRYIC8gc3RhdGUuc25hcHNob3Quc2l6ZS53aWR0aCkgKiAyIC0gMSxcblx0XHRcdFx0LShldmVudC5vZmZzZXRZIC8gc3RhdGUuc25hcHNob3Quc2l6ZS5oZWlnaHQpICogMiArIDEsXG5cdFx0XHQpO1xuXHRcdFx0c3RhdGUuc25hcHNob3QucmF5Y2FzdGVyLnNldEZyb21DYW1lcmEoc3RhdGUuc25hcHNob3QucG9pbnRlciwgc3RhdGUuc25hcHNob3QuY2FtZXJhKTtcblxuXHRcdFx0aWYgKCdibGVuZCcgaW4gbWF0ZXJpYWwgJiYgbWF0ZXJpYWwuYmxlbmQgPT09IDApIHtcblx0XHRcdFx0Ly8gV2UgcnVuIGEgcXVpY2sgY2hlY2sgYWdhaW5zdCB0aGUgcGFyZW50LCBpZiBpdCBpc24ndCBoaXQgdGhlcmUncyBubyBuZWVkIHRvIHJheWNhc3QgYXQgYWxsXG5cdFx0XHRcdGNvbnN0IFtpbnRlcnNlY3Rpb25dID0gc3RhdGUuc25hcHNob3QucmF5Y2FzdGVyLmludGVyc2VjdE9iamVjdChwYXJlbnQpO1xuXHRcdFx0XHRpZiAoIWludGVyc2VjdGlvbikge1xuXHRcdFx0XHRcdC8vIENhbmNlbCBvdXQgdGhlIHJheWNhc3QgY2FtZXJhIGlmIHRoZSBwYXJlbnQgbWVzaCBpc24ndCBoaXRcblx0XHRcdFx0XHRPYmplY3QuYXNzaWduKHN0YXRlLnNuYXBzaG90LnJheWNhc3RlciwgeyBjYW1lcmE6IHVuZGVmaW5lZCB9KTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH07XG5cblx0XHRyZXR1cm4gY29tcHV0ZUZuO1xuXHR9KTtcblxuXHRwcmlvcml0eSA9IHNpZ25hbCgwKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRleHRlbmQoeyBNZXNoUG9ydGFsTWF0ZXJpYWwgfSk7XG5cblx0XHRlZmZlY3QoXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG1hdGVyaWFsID0gdGhpcy5tYXRlcmlhbFJlZigpLm5hdGl2ZUVsZW1lbnQ7XG5cblx0XHRcdFx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUobWF0ZXJpYWwpO1xuXHRcdFx0XHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblxuXHRcdFx0XHRjb25zdCBtYXRlcmlhbFBhcmVudCA9IGxvY2FsU3RhdGUucGFyZW50KCk7XG5cdFx0XHRcdGlmICghbWF0ZXJpYWxQYXJlbnQgfHwgIShtYXRlcmlhbFBhcmVudCBpbnN0YW5jZW9mIE1lc2gpKSByZXR1cm47XG5cblx0XHRcdFx0Ly8gU2luY2UgdGhlIHJlZiBhYm92ZSBpcyBub3QgdGllZCB0byBhIG1lc2ggZGlyZWN0bHkgKHdlJ3JlIGluc2lkZSBhIG1hdGVyaWFsKSxcblx0XHRcdFx0Ly8gaXQgaGFzIHRvIGJlIHRpZWQgdG8gdGhlIHBhcmVudCBtZXNoIGhlcmVcblx0XHRcdFx0dGhpcy5wYXJlbnQuc2V0KG1hdGVyaWFsUGFyZW50KTtcblx0XHRcdH0sXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG5cdFx0KTtcblxuXHRcdGVmZmVjdCgoKSA9PiB7XG5cdFx0XHRjb25zdCBldmVudHMgPSB0aGlzLmV2ZW50cygpO1xuXHRcdFx0aWYgKCFldmVudHMpIHJldHVybjtcblxuXHRcdFx0Y29uc3Qgc2V0RXZlbnRzID0gdGhpcy5zZXRFdmVudHMoKTtcblx0XHRcdHNldEV2ZW50cyh7IGVuYWJsZWQ6ICFldmVudHMgfSk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW21hdGVyaWFsLCBwYXJlbnRdID0gW3RoaXMubWF0ZXJpYWxSZWYoKS5uYXRpdmVFbGVtZW50LCB0aGlzLnBhcmVudCgpXTtcblx0XHRcdGlmICghcGFyZW50KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFtyZXNvbHV0aW9uLCBibHVyLCBnbF0gPSBbdGhpcy5yZXNvbHV0aW9uKCksIHRoaXMuYmx1cigpLCB0aGlzLmdsKCldO1xuXG5cdFx0XHQvLyBhcHBseSB0aGUgU0RGIG1hc2sgb25jZVxuXHRcdFx0aWYgKGJsdXIgJiYgbWF0ZXJpYWwuc2RmID09IG51bGwpIHtcblx0XHRcdFx0bWVzaFBvcnRhbE1hdGVyaWFsQXBwbHlTREYocGFyZW50LCByZXNvbHV0aW9uLCBnbCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbWF0ZXJpYWwgPSB0aGlzLm1hdGVyaWFsUmVmKCkubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IHByaW9yaXR5ID1cblx0XHRcdFx0J2JsZW5kJyBpbiBtYXRlcmlhbCAmJiB0eXBlb2YgbWF0ZXJpYWwuYmxlbmQgPT09ICdudW1iZXInICYmIG1hdGVyaWFsLmJsZW5kID4gMFxuXHRcdFx0XHRcdD8gTWF0aC5tYXgoMSwgdGhpcy5yZW5kZXJQcmlvcml0eSgpKVxuXHRcdFx0XHRcdDogMDtcblxuXHRcdFx0Ly8gSWYgYmxlbmQgaXMgPiAwIHRoZW4gdGhlIHBvcnRhbCBpcyBiZWluZyBlbnRlcmVkLCB0aGUgcmVuZGVyLXByaW9yaXR5IG11c3QgY2hhbmdlXG5cdFx0XHRpZiAodGhpcy5wcmlvcml0eSgpICE9PSBwcmlvcml0eSkge1xuXHRcdFx0XHR0aGlzLnByaW9yaXR5LnNldChwcmlvcml0eSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==