ngx-scandoc 1.3.4 → 1.3.6

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.
@@ -224,6 +224,9 @@ export class ScanComponent extends BaseComponent {
224
224
  this.showDialog = true;
225
225
  this.cd.detectChanges();
226
226
  }
227
+ // reset manual scan popup interval
228
+ this.verificationErrorSent = false;
229
+ this.startTime = Date.now();
227
230
  this.displayInfo = 'scandoc.info.turn';
228
231
  }
229
232
  }
@@ -276,40 +279,16 @@ export class ScanComponent extends BaseComponent {
276
279
  // save current image after 10sec
277
280
  let MANUAL_INTERVAL = this.scanProvider.config.manualScanDelay;
278
281
  const diff = (Date.now() - this.startTime) / 1000;
279
- if (diff > MANUAL_INTERVAL &&
280
- !this.verificationErrorSent
281
- //&&
282
- //this.scanProvider.config.development
283
- ) {
282
+ const showDialog = diff > MANUAL_INTERVAL;
283
+ console.log('Mdiff', diff, showDialog, this.verificationErrorSent);
284
+ if (showDialog && !this.verificationErrorSent) {
284
285
  this.verificationErrorSent = true;
285
286
  console.warn('[HANDLE ERROR]');
286
287
  this.zone.run(() => {
287
- // const ref = this.snackBar.open(
288
- // this.translate.instant('scandoc.manual'),
289
- // this.translate.instant('scandoc.yes'),
290
- // {
291
- // duration: 10000,
292
- // viewContainerRef: this.view,
293
- // }
294
- // );
295
- // this.__subs(ref.onAction()).subscribe((resp) => {
296
- // this.manualMode(type);
297
- // });
298
- if (!this.scanSecondSide) {
299
- this.promptManual = true;
300
- // MANUAL_INTERVAL += 10;
301
- }
302
- // this.verificationErrorSent = false;
288
+ // if (!this.scanSecondSide) {
289
+ this.promptManual = true;
290
+ // }
303
291
  this.startTime = Date.now();
304
- //this.promptManual = true;
305
- // this.dialogs.promptManual().subscribe((resp: any) => {
306
- // console.warn(resp);
307
- // if (resp) {
308
- // this.manualMode(type);
309
- // }
310
- // this.startTime = Date.now();
311
- // this.verificationErrorSent = false;
312
- // });
313
292
  });
314
293
  // this.verificationErrorSent = true;
315
294
  // const dataUrl = this.handleBitmapImage(img.bitmap);
@@ -538,6 +517,7 @@ export class ScanComponent extends BaseComponent {
538
517
  data: {
539
518
  model: this.model,
540
519
  images: this.images,
520
+ results
541
521
  },
542
522
  });
543
523
  if (!this.scanProvider.config.hideResults) {
@@ -717,4 +697,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
717
697
  type: HostListener,
718
698
  args: ['window:resize', ['$event']]
719
699
  }] } });
720
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBZ0dyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMs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QUFmLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTTtnQkEyREUsVUFBVTtzQkFBbEIsS0FBSztnQkFNMkIsS0FBSztzQkFBckMsV0FBVzt1QkFBQyxjQUFjO2dCQUszQixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxuICBJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiwgZnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgZGVsYXksIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNjYW5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY2FuLnByb3ZpZGVyJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWltYWdlJztcbmltcG9ydCB7IFdlYmNhbUluaXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9hdXRoLnByb3ZpZGVyJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbGF5b3V0LnByb3ZpZGVyJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIFRleHREZXRlY3RvcjogYW55O1xufVxuXG5pbnRlcmZhY2UgVHJvdWJsZXNob290aW5nIHtcbiAgUmVxdWVzdDogYW55O1xuICBSZXNwb25zZTogYW55O1xuICBFeHBlY3RlZE91dHB1dDogYW55O1xuICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUaW1lc3RhbXBzIHtcbiAgdGltZTogbnVtYmVyO1xuICBsb2FkOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBzY2FuQmxhc3REYXRhOiBhbnkgPSBbXG4gICAge1xuICAgICAgdGl0bGU6ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmZyb250JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5mcm9udERlc2NyaXB0aW9uJyxcbiAgICAgIHNpZGU6ICdGUk9OVCcsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuYmFjaycsXG4gICAgICBkZXNjcmlwdGlvbjogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuYmFja0Rlc2NyaXB0aW9uJyxcbiAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgc2lkZTogJ0JBQ0snLFxuICAgIH0sXG4gIF07XG4gIEBJbnB1dCgpIHR5cGUgPSAnZGVza3RvcCc7XG4gIEBJbnB1dCgpIGRpYWxvZ3M6IGFueTtcbiAgQE91dHB1dCgpIGFjdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIGRldmljZUlkPzogc3RyaW5nO1xuXG4gIHNjYW5SZXN1bHRzID0gbmV3IFN1YmplY3QoKTtcbiAgc2NhblNlY29uZFNpZGUgPSBmYWxzZTtcbiAgc3RhcnRUaW1lOiBudW1iZXIgPSAwO1xuXG4gIHNjYW5JblByb2dyZXNzID0gZmFsc2U7XG5cbiAgLy8gd2ViY2FtIHNuYXBzaG90IHRyaWdnZXJcbiAgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBzZWxlY3RlZFNpZGU6IGFueTtcbiAgaW1hZ2VzOiBhbnk7XG4gIHNjYW5UaW1lb3V0OiBhbnk7XG4gIHByZXZpZXc6IGFueSA9IG51bGw7XG4gIHNjYW5UeXBlOiBhbnk7XG5cbiAgZXJyb3JDb2RlID0gJzEwMDAnO1xuICBkaXNwbGF5SW5mbzogYW55ID0gJ3NjYW5kb2MuaW5mby5wb3NpdGlvbic7XG5cbiAgdmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gIGVycm9yID0gZmFsc2U7XG4gIGNhbWVyYVJlYWR5ID0gZmFsc2U7XG4gIHJlc3VsdDogYW55O1xuICBzY2FuaW5nID0gZmFsc2U7XG5cbiAgcHJvbXB0TWFudWFsID0gZmFsc2U7XG5cbiAgZnJvbnRJbWFnZTogYW55O1xuICBiYWNrSW1hZ2U6IGFueTtcblxuICBpbWFnZUhhbmRsZXIgPSBuZXcgU3ViamVjdCgpO1xuICBtYW51YWxEYXRhU2V0ID0gZmFsc2U7XG4gIGxvZ0RhdGE6IFRyb3VibGVzaG9vdGluZyA9IHtcbiAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgUmVxdWVzdDogbnVsbCxcbiAgICBSZXNwb25zZTogbnVsbCxcbiAgICBFeHBlY3RlZE91dHB1dDogbnVsbCxcbiAgfTtcblxuICBzY2FuRGF0YXM6IGFueSA9IFtdO1xuICBzY2FuU2lkZTogYW55O1xuICBpZFNjYW46IGFueSA9IG51bGw7XG4gIHdlYmNhbUltYWdlPzogV2ViY2FtSW1hZ2U7XG4gIG1vZGVsOiBhbnk7XG4gIHZhbGlkYXRpb24gPSBmYWxzZTtcbiAgc2Nhbm5lZEltYWdlczogYW55W10gPSBbXTtcbiAgc2NhbkRlbGF5OiBhbnkgPSAwO1xuICBwdWJsaWMgdHJpZ2dlcjogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICAvLyBzd2l0Y2ggdG8gbmV4dCAvIHByZXZpb3VzIC8gc3BlY2lmaWMgd2ViY2FtOyB0cnVlL2ZhbHNlOiBmb3J3YXJkL2JhY2t3YXJkcywgc3RyaW5nOiBkZXZpY2VJZFxuICBwdWJsaWMgbmV4dFdlYmNhbTogU3ViamVjdDxib29sZWFuIHwgc3RyaW5nPiA9IG5ldyBTdWJqZWN0PFxuICAgIGJvb2xlYW4gfCBzdHJpbmdcbiAgPigpO1xuICBpbWFnZVZlcmlmaWVkID0gZmFsc2U7XG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbWFudWFsID0gZmFsc2U7XG4gIGlzTW9iaWxlID0gdGhpcy5wbGF0Zm9ybS5JT1MgfHwgdGhpcy5wbGF0Zm9ybS5BTkRST0lEO1xuICBASW5wdXQoKSBzaG93RGlhbG9nID0gZmFsc2U7XG4gIHNjYW5JbWFnZVRpbWVzdGFtcHM6IFRpbWVzdGFtcHMgPSB7XG4gICAgdGltZTogMCxcbiAgICBsb2FkOiAwLFxuICB9O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubW9iaWxlJykgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLmlzTW9iaWxlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKCkge1xuICAgIGlmICh0aGlzLnJlc3VsdCkge1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2NhblByb3ZpZGVyITogU2NhblByb3ZpZGVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBsYXlvdXRQcm92aWRlcjogTGF5b3V0UHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG5cbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcblxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgdmlldzogVmlld0NvbnRhaW5lclJlZixcblxuICAgIHByaXZhdGUgYXV0aDogQXV0aFByb3ZpZGVyIC8vIHByaXZhdGUgYXBpOiBTZXJ2ZXJQcm92aWRlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2NhblByb3ZpZGVyID0gdGhpcy5pbmplY3Rvci5nZXQoU2NhblByb3ZpZGVyKTtcblxuICAgIGlmICghdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50KSB7XG4gICAgICAvLyBjb25zb2xlID0ge1xuICAgICAgLy8gICBsb2c6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICB0aW1lOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgdGltZUVuZDogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIHdhcm46ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICBlcnJvcjogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRMb2dEYXRhKCkge1xuICAgIHRoaXMubG9nRGF0YSA9IHtcbiAgICAgIFJlcXVlc3Q6IG51bGwsXG4gICAgICBSZXNwb25zZTogbnVsbCxcbiAgICAgIEV4cGVjdGVkT3V0cHV0OiBudWxsLFxuICAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuYXV0aC5hY2Nlc1Rva2VuLnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVzZXRMb2dEYXRhKCk7XG4gICAgLy8gdGhpcy5yZXN1bHQ9dHJ1ZTtcbiAgICAvLyB0aGlzLnJlc3VsdCA9e307XG5cbiAgICBjb25zb2xlLmxvZygnSU5JVCBTQ0FOJyk7XG4gIH1cblxuICBjb250aW51ZSgpIHtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gdGhpcy53ZWJjYW1JbWFnZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2lkZS5zaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHNjYW4oKSB7XG4gICAgdGhpcy50cmlnZ2VyLm5leHQobmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUltYWdlKHdlYmNhbUltYWdlOiBXZWJjYW1JbWFnZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YXJ0VGltZSA9PT0gMCkge1xuICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnW3JlY2VpdmVkIHdlYmNhbSBpbWFnZV0nLCB3ZWJjYW1JbWFnZSk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aW1lOicsIGRpZmYpO1xuICAgICAgICB0aGlzLnNjYW5EZWxheSA9IGRpZmY7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID0gdGltZTtcblxuICAgICAgaWYgKHdlYmNhbUltYWdlLmltYWdlRGF0YSkge1xuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgICAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcih3ZWJjYW1JbWFnZSwgJ3dvcmtlcicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnQpIHtcbiAgICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMuZm9yRWFjaCgoaW1nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25zb2xlQmFja2dyb3VuZCA9XG4gICAgICAgICAgICAgIFwiZm9udC1zaXplOjEwMHB4O2JhY2tncm91bmQtaW1hZ2U6IHVybCgnXCIgK1xuICAgICAgICAgICAgICBpbWcuaW1hZ2VSZXNpemVkICtcbiAgICAgICAgICAgICAgXCInKTtiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XCI7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgICAgJywgY29uc29sZUJhY2tncm91bmQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vICAgdGhpcy5mcm9udEltYWdlID0gd2ViY2FtSW1hZ2UuaW1hZ2VSZXNpemVkO1xuXG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnc2NhbicpO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3NjYW4nKTtcbiAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAgICAgY29uc29sZS5sb2coJ0NBUFRVUkVEOicsIHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgICAgICAvLyBzZXQgaW1hZ2VzIHRvIDBcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5pbWFnZVJlc2l6ZWQuc3BsaXQoJywnKVsxXSk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5jYW1lcmFSZWFkeSkge1xuICAgICAgICAgIHRoaXMuc2NhbigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJ1cnN0RGF0YShcbiAgICBpbWFnZXNBcnJheTogYW55LFxuICAgIGltYWdlczogYW55LFxuICAgIHR5cGU6ICd3b3JrZXInIHwgJ3BsYWluJyA9ICdwbGFpbidcbiAgKSB7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuYnVyc3QoaW1hZ2VzQXJyYXkpKS5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICdzY2FuZG9jLmluZm8uYycgKyByZXNwLkluZm9Db2RlO1xuICAgICAgLy8gY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uUE9TVCcpO1xuICAgICAgY29uc29sZS5sb2coJ0FuYWx5c2lzVGltZScsIHJlc3AuQW5hbHlzaXNUaW1lKTtcbiAgICAgIGNvbnN0IHsgRG9jVHlwZSwgU2VyaWVzLCBTaWRlLCBJbmZvQ29kZSB9ID0gcmVzcDtcblxuICAgICAgLy8gaWYgKEluZm9Db2RlID09PSAnMTAwNicgJiYgdGhpcy5pZFNjYW4pIHtcbiAgICAgIC8vICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKGltYWdlKTtcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKHJlc3AuVmFsaWRhdGVkKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnJztcbiAgICAgICAgY29uc29sZS5sb2coJ1tTQ0FOTkVEIElOREVYXScsIHJlc3AuSW5kZXgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEltYWdlID0gaW1hZ2VzW3Jlc3AuSW5kZXhdO1xuXG4gICAgICAgIC8vIHRoaXMucHJldmlldyA9IHRoaXMud2ViY2FtSW1hZ2UuaW1hZ2VBc0RhdGFVcmw7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGxldCBpbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgY29uc3QgZGF0YVVybCA9IHRoaXMuaGFuZGxlQml0bWFwSW1hZ2Uoc2VsZWN0ZWRJbWFnZS5iaXRtYXApO1xuICAgICAgICAgIGltYWdlID0geyBkYXRhVXJsIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoSW5mb0NvZGUgPT09ICcxMDA3Jykge1xuICAgICAgICAgIC8vIEZvciBJRCBhc2sgZm9yIG90aGVyIHNpZGVcbiAgICAgICAgICBpZiAoU2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgJiYgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1VQTE9BRCcpO1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IFNpZGUgPT09ICdGUk9OVCcgPyAxIDogMDtcbiAgICAgICAgICAgIHRoaXMuc2NhblNlY29uZFNpZGUgPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLnNpbmdsZVNjYW4odGhpcy5zY2FuQmxhc3REYXRhW251bV0pO1xuXG4gICAgICAgICAgICB0aGlzLmlkU2NhbiA9IHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLnNpZGU7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93RGlhbG9nKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJ3NjYW5kb2MuaW5mby50dXJuJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuXG4gICAgICAgIC8vIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG5cbiAgICAgICAgLy90aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2NhbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLnNjYW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbml0RXJyb3IoZXJyb3I6IFdlYmNhbUluaXRFcnJvcik6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgfVxuXG4gIGdldCBzY2FuQmxhc3RDYW5VcGxvYWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgbWFudWFsTW9kZSh0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nKSB7XG4gICAgdGhpcy5tYW51YWwgPSB0cnVlO1xuICAgIHRoaXMucHJvbXB0TWFudWFsID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dChmYWxzZSk7XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGE6IGFueSkge1xuICAgIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dCA9IHt9O1xuICAgIC8vIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAvLyAgIGRlbGV0ZSB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQuX2F2YXRhcjtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpLnN1YnNjcmliZSgpO1xuXG4gICAgY29uc29sZS5sb2coJ0xPRyBEQVRBJywgdGhpcy5sb2dEYXRhKTtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHRoaXMubG9nRGF0YSkpLnN1YnNjcmliZSgpO1xuICB9XG4gIHByaXZhdGUgaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcihcbiAgICBpbWc6IGFueSxcbiAgICB0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nXG4gICkge1xuICAgIC8vIHNhdmUgY3VycmVudCBpbWFnZSBhZnRlciAxMHNlY1xuICAgIGxldCBNQU5VQUxfSU5URVJWQUwgPSB0aGlzLnNjYW5Qcm92aWRlci5jb25maWcubWFudWFsU2NhbkRlbGF5O1xuICAgIGNvbnN0IGRpZmYgPSAoRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lKSAvIDEwMDA7XG5cbiAgICBpZiAoXG4gICAgICBkaWZmID4gTUFOVUFMX0lOVEVSVkFMICYmXG4gICAgICAhdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnRcblxuICAgICAgLy8mJlxuICAgICAgLy90aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnRcbiAgICApIHtcbiAgICAgIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybignW0hBTkRMRSBFUlJPUl0nKTtcblxuICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgIC8vIGNvbnN0IHJlZiA9IHRoaXMuc25hY2tCYXIub3BlbihcbiAgICAgICAgLy8gICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzY2FuZG9jLm1hbnVhbCcpLFxuICAgICAgICAvLyAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3NjYW5kb2MueWVzJyksXG4gICAgICAgIC8vICAge1xuICAgICAgICAvLyAgICAgZHVyYXRpb246IDEwMDAwLFxuICAgICAgICAvLyAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3LFxuICAgICAgICAvLyAgIH1cbiAgICAgICAgLy8gKTtcblxuICAgICAgICAvLyB0aGlzLl9fc3VicyhyZWYub25BY3Rpb24oKSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICAgIC8vICAgdGhpcy5tYW51YWxNb2RlKHR5cGUpO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgaWYgKCF0aGlzLnNjYW5TZWNvbmRTaWRlKSB7XG4gICAgICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSB0cnVlO1xuXG4gICAgICAgICAgLy8gIE1BTlVBTF9JTlRFUlZBTCArPSAxMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvL3RoaXMucHJvbXB0TWFudWFsID0gdHJ1ZTtcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dzLnByb21wdE1hbnVhbCgpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICAgIC8vICAgY29uc29sZS53YXJuKHJlc3ApO1xuICAgICAgICAvLyAgIGlmIChyZXNwKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm1hbnVhbE1vZGUodHlwZSk7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgLy8gICB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICAgICAgICAvLyB9KTtcbiAgICAgIH0pO1xuICAgICAgLy8gdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSB0cnVlO1xuICAgICAgLy8gY29uc3QgZGF0YVVybCA9IHRoaXMuaGFuZGxlQml0bWFwSW1hZ2UoaW1nLmJpdG1hcCk7XG5cbiAgICAgIC8vIGNvbnNvbGUud2FybignU0VOVCcpO1xuICAgICAgLy8gLy8gIHRoaXMuZGlzcGxheUluZm8gPSAnQ2FudCBkZXRlY3QgZG9jdW1lbnQhJztcbiAgICAgIC8vIHRoaXMubG9nRGF0YS5SZXF1ZXN0ID0gdGhpcy5fX3N1YnMoXG4gICAgICAvLyAgIHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2coe1xuICAgICAgLy8gICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIC8vICAgICBFeHBlY3RlZE91dHB1dDoge30sXG4gICAgICAvLyAgICAgUmVxdWVzdDoge1xuICAgICAgLy8gICAgICAgdmVyaWZpY2F0aW9uOiBkYXRhVXJsLnNwbGl0KCcsJylbMV0sXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgICBSZXNwb25zZToge1xuICAgICAgLy8gICAgICAgVHJhbnNhY3Rpb25JRDogdXVpZHY0KCksXG4gICAgICAvLyAgICAgfSxcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyAgdGhpcy5yZXN1bHQgPSB0cnVlO1xuXG4gICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KHRydWUpO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgLy8gdGhpcy5zY2FuUmVzdWx0cy5uZXh0KHsgdHlwZTogJ21vZGVsJywgZGF0YToge30gfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLmNhbWVyYVByb3ZpZGVyLndlYmNhbU9ic2VydmFibGUpLnN1YnNjcmliZSgocmVzcCkgPT4ge1xuICAgICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgfSk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci5zZWxmaWUkKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuc2VsZmllKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dG9TY2FuKCk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLmxheW91dFByb3ZpZGVyLmJyZWFrcG9pbnQkKS5zdWJzY3JpYmUoKHY6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pc01vYmlsZSA9ICF2Lm1hdGNoZXMgfHwgdGhpcy5wbGF0Zm9ybS5JT1MgfHwgdGhpcy5wbGF0Zm9ybS5BTkRST0lEO1xuICAgICAgY29uc29sZS5sb2coJ01OT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZUhhbmRsZXIuc3Vic2NyaWJlKFxuICAgIC8vICAgKHdlYmNhbUltYWdlOiBhbnkpID0+IHtcbiAgICAvLyAgICAgLy8gcmV0dXJuO1xuICAgIC8vICAgICBpZiAodGhpcy5zdGFydFRpbWUgPT09IDApIHtcbiAgICAvLyAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgIC8vICAgICAgIGlmICh3ZWJjYW1JbWFnZS5iYXNlNjQpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIC8vICAgICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgIC8vICAgICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAvLyAgICAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgIC8vICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ1RJTUUnLCBkaWZmKTtcbiAgICAvLyAgICAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAvLyAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5wdXNoKHdlYmNhbUltYWdlKTtcbiAgICAvLyAgICAgICAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcih3ZWJjYW1JbWFnZSwgJ3dvcmtlcicpO1xuICAgIC8vICAgICAgIH1cblxuICAgIC8vICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgLy8gICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgIC8vICAgICAgICAgY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uVE9UQUxfVUknKTtcbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgLy8gICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgIC8vICAgICAgICAgLy8gc2V0IGltYWdlcyB0byAwXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGltYWdlcyk7XG5cbiAgICAvLyAgICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5iYXNlNjQuc3BsaXQoJywnKVsxXSk7XG4gICAgLy8gICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgLy8gICAgICAgICAvLyB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzLCAnd29ya2VyJyk7XG5cbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblBPU1QnKTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vICk7XG4gIH1cblxuICBoYW5kbGVCaXRtYXBJbWFnZShiaXRtYXA6IGFueSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYml0bWFwO1xuXG4gICAgY29uc3Qgb2Zmc2NyZWVuU21hbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBvZmZzY3JlZW5TbWFsbC53aWR0aCA9IHdpZHRoO1xuICAgIG9mZnNjcmVlblNtYWxsLmhlaWdodCA9IGhlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IG9mZnNjcmVlblNtYWxsLmdldENvbnRleHQoJ2JpdG1hcHJlbmRlcmVyJyk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICBjdHgudHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoYml0bWFwKTtcbiAgICAgIGJpdG1hcC5jbG9zZSgpO1xuICAgICAgY29uc3QgZGF0YSA9IGN0eC5jYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhdXRvU2NhbigpIHtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5zY2FuQmxhc3REYXRhWzBdO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLnNpbmdsZVNjYW4oc2lkZSk7XG4gIH1cblxuICBzaW5nbGVTY2FuKHNpZGU6IGFueSkge1xuICAgIHRoaXMuc2NhblR5cGUgPSBzaWRlLnNpZGU7XG4gICAgdGhpcy5wcmV2aWV3ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkU2lkZSA9IHNpZGU7XG5cbiAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYW51YWxTY2FuRGF0YShkYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGEgPSBkYXRhO1xuICAgIHRoaXMubWFudWFsID0gZmFsc2U7XG4gICAgdGhpcy5tYW51YWxEYXRhU2V0ID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWdCYXNlNjQobnVtOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnR0VUIDY0Jyk7XG5cbiAgICBpZiAodGhpcy5tYW51YWxEYXRhU2V0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuX2ltYWdlQXNEYXRhVXJsLnNwbGl0KCcsJylbMV07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5pbWFnZS5kYXRhVXJsLnNwbGl0KCcsJylbMV07XG4gIH1cbiAgc2NhbkJsYXN0RmluaXNoKCkge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5jYW1lcmFQcm92aWRlci4kc2hvd1N3aXRjaC5uZXh0KGZhbHNlKTtcbiAgICB9KTtcbiAgICBjb25zb2xlLnRpbWUoJ3VwbG9hZCcpO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7IGRhdGE6IHRoaXMuc2NhbkJsYXN0RGF0YSB9KTtcbiAgICAgIHRoaXMucmV0YWtlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICAvLyBjb25zdCBsb2FkaW5nID0gdGhpcy5kaWFsb2dzLmxvYWRpbmcoKTtcbiAgICB0aGlzLnNjYW5pbmcgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnNvbGUudGltZSgncGF5bG9hZCcpO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIERhdGFGaWVsZHM6IHtcbiAgICAgICAgRnJvbnRJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBGcm9udEltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEJhY2tJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBCYWNrSW1hZ2VDcm9wcGVkOiBmYWxzZSxcbiAgICAgICAgRnJvbnRJbWFnZTogdGhpcy5nZXRJbWdCYXNlNjQoMCksXG4gICAgICAgIEJhY2tJbWFnZTogdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlID8gdGhpcy5nZXRJbWdCYXNlNjQoMSkgOiBudWxsLFxuICAgICAgfSxcbiAgICAgIFNldHRpbmdzOiB7XG4gICAgICAgIFNob3VsZFZhbGlkYXRlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5Eb2N1bWVudEltYWdlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5GYWNlSWZEZXRlY3RlZDogdHJ1ZSxcbiAgICAgICAgU2tpcEltYWdlU2l6ZUNoZWNrOiB0cnVlLFxuICAgICAgICBDYW5TdG9yZUltYWdlczogdGhpcy5zY2FuUHJvdmlkZXIuY2FuU3RvcmVJbWFnZXMsXG4gICAgICB9LFxuICAgICAgLy8gQ2FsbEJhY2tVcmw6ICdodHRwOi8vZGVtbzo1MDAwL3JlcG9ydC9leHRyYWN0ZWQvJyxcbiAgICB9O1xuICAgIHRoaXMuZnJvbnRJbWFnZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBwYXlsb2FkLkRhdGFGaWVsZHMuRnJvbnRJbWFnZTtcbiAgICB0aGlzLmJhY2tJbWFnZSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBwYXlsb2FkLkRhdGFGaWVsZHMuQmFja0ltYWdlO1xuICAgIGlmICghdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICBwYXlsb2FkLlNldHRpbmdzLklnbm9yZUJhY2tJbWFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubG9nRGF0YS5SZXF1ZXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG5cbiAgICBjb25zb2xlLnRpbWVFbmQoJ3BheWxvYWQnKTtcbiAgICB0aGlzLl9fc3VicyhcbiAgICAgIHRoaXMuc2NhblByb3ZpZGVyLmJsYXN0UG9zdChwYXlsb2FkKS5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5tYW51YWxEYXRhU2V0KSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ01BTlVBTCBEQVRBIFNFVCcsZSk7XG4gICAgICAgICAgICB0aGlzLmxvZ0RhdGEuUmVzcG9uc2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZXJyb3IpKTtcblxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFeHRyYWN0aW9uRXJyb3Ioe30pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0VFRScsIGUpO1xuICAgICAgICAgIHJldHVybiBlO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICkuc3Vic2NyaWJlKFxuICAgICAgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgICBjb25zdCByZXN1bHRzID0gZGF0YS5EYXRhO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3VwbG9hZCcpO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3BhcnNlJyk7XG4gICAgICAgIC8vIGRhdGEuSW5mb0NvZGUgPSAnMTAwMSc7XG4gICAgICAgIGNvbnNvbGUudGltZSgncCcpO1xuICAgICAgICB0aGlzLmxvZ0RhdGEuUmVzcG9uc2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdwJyk7XG4gICAgICAgIC8vbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGRhdGEuSW5mb0NvZGUgPT09ICcxMDAxJykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbRVJST1JdIDEwMDEnKTtcbiAgICAgICAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAxJztcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMicpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAyJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMic7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0cyAmJiBkYXRhLk1ldGFkYXRhLmxlbmd0aCA+IDAgJiYgZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDAnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0V4dHJhY3Rpb24gdGltZScsIGRhdGEuQW5hbHlzaXNUaW1lKTtcblxuICAgICAgICAgIC8vICB0aGlzLnpvbmUucnVuKCgpID0+IHtcblxuICAgICAgICAgIGNvbnNvbGUudGltZSgncGFyc2VibGFzdCcpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2NhblByb3ZpZGVyLnBhcnNlQmxhc3QocmVzdWx0cyk7XG4gICAgICAgICAgY29uc29sZS50aW1lRW5kKCdwYXJzZWJsYXN0Jyk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ1JFUycsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgIGNvbnN0IG1vZGVsID0gcmVzdWx0Lm1vZGVsO1xuXG4gICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2UpIHtcbiAgICAgICAgICAgIG1vZGVsLl9hdmF0YXIgPVxuICAgICAgICAgICAgICAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZGF0YS5JbWFnZURhdGE/LkZhY2VJbWFnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZGF0YS5JbWFnZURhdGE/LkRvY3VtZW50cykge1xuICAgICAgICAgICAgY29uc3QgeyBEb2N1bWVudHMgfSA9IGRhdGEuSW1hZ2VEYXRhO1xuICAgICAgICAgICAgbW9kZWwuaW1hZ2VzID0gRG9jdW1lbnRzLm1hcCgoaW1hZ2U6IGFueSwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBEb2N1bWVudHNbaV0gfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ01PREVMJywgdGhpcy5tb2RlbCk7XG4gICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgdHlwZTogJ3NjYW5GaW5pc2gnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5oaWRlUmVzdWx0cykge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lKCdmZicpO1xuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICB0aGlzLnNjYW5SZXN1bHRzLm5leHQoeyB0eXBlOiAnbW9kZWwnLCBkYXRhOiBtb2RlbCB9KTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIC8vICB9KTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdmZicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFUlJPUicpO1xuICAgICAgICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5zY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgcmV0YWtlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgdHlwZTogJ3NjYW5EYXRhQ2xvc2UnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIGNvbnN0IGF2YXRhciA9IHRoaXMubW9kZWw/Ll9hdmF0YXI7XG4gICAgdGhpcy5kaWFsb2dzXG4gICAgICAuc2NhblNlbGZpZSh7IGF2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnYXZhdGFyJyxcbiAgICAgICAgICAgIGRhdGE6IHJlc3AuaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5tb2RlbC5fYXZhdGFyID0gcmVzcC5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5ICYmICF0aGlzLnNjYW5JblByb2dyZXNzICYmICF0aGlzLm1hbnVhbCkge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICB9LCAyMCk7XG4gICAgfVxuICB9XG5cbiAgbWFudWFsU2V0KGtleTogYm9vbGVhbikge1xuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ21hbnVhbE1vZGUnLFxuICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RFU1RST1hZJyk7XG5cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICpuZ0lmPVwiY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPiAwICYmIGRpc3BsYXlJbmZvICYmICFyZXN1bHQgJiYgIW1hbnVhbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJoaW50XCIgW25nU3R5bGVdPVwieyB0b3A6IGNhbWVyYVByb3ZpZGVyLmhpbnRQb3NpdGlvbiArICdweCcgfVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxuICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gIDxkaXYgY2xhc3M9XCJwYWdlVHVyblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgICAgPG1hdC1pY29uPjM2MDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgICB7eyBcInNjYW5kb2MudHVybkFuZENhcHR1cmUuYmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5PazwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9tcHRNYW51YWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1hbnVhbE1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zY3JlZW5zaG90X2tleWJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MubWFudWFsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KHRydWUpXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnllc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KGZhbHNlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5ub1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgICAoYWN0aW9uKT1cInNlbGZpZSgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgW2RhdGFdPVwic2NhblJlc3VsdHNcIlxuICAgID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0YWtlKClcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MucmVUYWtlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3IgfHwgZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy51c2VEYXRhXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW51YWxcIj5cbiAgPHNlY3Rpb24+XG4gICAgPG5neC1tYW51YWwtc2NhbiAoYWN0aW9uKT1cIm1hbnVhbFNjYW5EYXRhKCRldmVudClcIj48L25neC1tYW51YWwtc2Nhbj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3VsdCAmJiBkb2N1bWVudFR5cGVTZWxlY3RlZCAmJiAhbWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxkaXYgI3dyYXBlciBjbGFzcz1cIndyYXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIighY2FtZXJhUmVhZHkgJiYgIXByZXZpZXcpIHx8IHNjYW5pbmdcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlcnJvclwiPlxuICAgICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiAhc2NhbmluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAjd2ViY2FtXG4gICAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICBbaW1hZ2VIYW5kbGVyXT1cImltYWdlSGFuZGxlclwiXG4gICAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgICAodmlkZW9SZWFkeSk9XCJ2aWRlb1JlYWR5KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmd4LXNjYW5kb2Mtd2ViY2FtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWwtOFwiPnt7XG4gICAgICAgICAgICAgICAgXCJzY2FuZG9jLnVuYWJsZVRvRGV0ZWN0SWRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMSdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDAnXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucGxhY2VJZENsb3NlVG9EZXZpY2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuaG9sZERvY3VtZW50U3RlYWR5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIFwic2NhbmRvYy5tYWtlU3VyZVRoZXJlQXJlTm9HbGFyZUFuZFNoYWRvd3NPblRoZUlkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjYW5QcmV2aWV3XCIgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwic2NhbmRvYy5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb290ZXIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5SW5mb1wiPlxuICAgICAgICB7eyBkaXNwbGF5SW5mbyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+IC0tPlxuICAgICAgPCEtLSA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAyNnB4XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHhcIlxuICAgICAgICAqbmdJZj1cImlkU2NhbiAmJiAhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlQmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnRlJPTlQnXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJzY2FuZG9jLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jb250aW51ZVdpdGhTZWxlY3RlZEltYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUlaLHVCQUF1QixFQUN2QixLQUFLLEVBSUwsV0FBVyxHQUdaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdELE1BQU0sTUFBTSxDQUFDO0FBRzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQXlCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1oRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQTBCbEQsTUFBTSxPQUFPLGFBQ1gsU0FBUSxhQUFhO0lBK0ZyQixZQUNTLEVBQXFCLEVBQ3BCLElBQVksRUFDYixjQUF3QyxFQUN2QyxRQUFrQixFQUNsQixjQUE4QixFQUM5QixRQUFrQixFQUVsQixTQUEyQixFQUUzQixRQUFxQixFQUNyQixJQUFzQixFQUV0QixJQUFrQixDQUFDLDhCQUE4Qjs7UUFFekQsS0FBSyxFQUFFLENBQUM7UUFkRCxPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ2IsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsbUJBQWMs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O3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBIb3N0TGlzdGVuZXIsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgTmdab25lLFxuICBJbmplY3RvcixcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBmb3JrSm9pbiwgZnJvbSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgZGVsYXksIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFNjYW5Qcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9zY2FuLnByb3ZpZGVyJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWltYWdlJztcbmltcG9ydCB7IFdlYmNhbUluaXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9hdXRoLnByb3ZpZGVyJztcbmltcG9ydCB7IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9jYW1lcmEucHJvdmlkZXInO1xuaW1wb3J0IHsgTGF5b3V0UHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvbGF5b3V0LnByb3ZpZGVyJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVdpbmRvdyBleHRlbmRzIFdpbmRvdyB7XG4gIFRleHREZXRlY3RvcjogYW55O1xufVxuXG5pbnRlcmZhY2UgVHJvdWJsZXNob290aW5nIHtcbiAgUmVxdWVzdDogYW55O1xuICBSZXNwb25zZTogYW55O1xuICBFeHBlY3RlZE91dHB1dDogYW55O1xuICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBUaW1lc3RhbXBzIHtcbiAgdGltZTogbnVtYmVyO1xuICBsb2FkOiBudW1iZXI7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NjYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zY2FuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuQ29tcG9uZW50XG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHNjYW5CbGFzdERhdGE6IGFueSA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmZyb250RGVzY3JpcHRpb24nLFxuICAgICAgc2lkZTogJ0ZST05UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrRGVzY3JpcHRpb24nLFxuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBzaWRlOiAnQkFDSycsXG4gICAgfSxcbiAgXTtcbiAgQElucHV0KCkgdHlwZSA9ICdkZXNrdG9wJztcbiAgQElucHV0KCkgZGlhbG9nczogYW55O1xuICBAT3V0cHV0KCkgYWN0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZGV2aWNlSWQ/OiBzdHJpbmc7XG5cbiAgc2NhblJlc3VsdHMgPSBuZXcgU3ViamVjdCgpO1xuICBzY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuICBzdGFydFRpbWU6IG51bWJlciA9IDA7XG5cbiAgc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvLyB3ZWJjYW0gc25hcHNob3QgdHJpZ2dlclxuICBkb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICBpbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHNlbGVjdGVkU2lkZTogYW55O1xuICBpbWFnZXM6IGFueTtcbiAgc2NhblRpbWVvdXQ6IGFueTtcbiAgcHJldmlldzogYW55ID0gbnVsbDtcbiAgc2NhblR5cGU6IGFueTtcblxuICBlcnJvckNvZGUgPSAnMTAwMCc7XG4gIGRpc3BsYXlJbmZvOiBhbnkgPSAnc2NhbmRvYy5pbmZvLnBvc2l0aW9uJztcblxuICB2ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgZXJyb3IgPSBmYWxzZTtcbiAgY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgcmVzdWx0OiBhbnk7XG4gIHNjYW5pbmcgPSBmYWxzZTtcblxuICBwcm9tcHRNYW51YWwgPSBmYWxzZTtcblxuICBmcm9udEltYWdlOiBhbnk7XG4gIGJhY2tJbWFnZTogYW55O1xuXG4gIGltYWdlSGFuZGxlciA9IG5ldyBTdWJqZWN0KCk7XG4gIG1hbnVhbERhdGFTZXQgPSBmYWxzZTtcbiAgbG9nRGF0YTogVHJvdWJsZXNob290aW5nID0ge1xuICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICBSZXF1ZXN0OiBudWxsLFxuICAgIFJlc3BvbnNlOiBudWxsLFxuICAgIEV4cGVjdGVkT3V0cHV0OiBudWxsLFxuICB9O1xuXG4gIHNjYW5EYXRhczogYW55ID0gW107XG4gIHNjYW5TaWRlOiBhbnk7XG4gIGlkU2NhbjogYW55ID0gbnVsbDtcbiAgd2ViY2FtSW1hZ2U/OiBXZWJjYW1JbWFnZTtcbiAgbW9kZWw6IGFueTtcbiAgdmFsaWRhdGlvbiA9IGZhbHNlO1xuICBzY2FubmVkSW1hZ2VzOiBhbnlbXSA9IFtdO1xuICBzY2FuRGVsYXk6IGFueSA9IDA7XG4gIHB1YmxpYyB0cmlnZ2VyOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIC8vIHN3aXRjaCB0byBuZXh0IC8gcHJldmlvdXMgLyBzcGVjaWZpYyB3ZWJjYW07IHRydWUvZmFsc2U6IGZvcndhcmQvYmFja3dhcmRzLCBzdHJpbmc6IGRldmljZUlkXG4gIHB1YmxpYyBuZXh0V2ViY2FtOiBTdWJqZWN0PGJvb2xlYW4gfCBzdHJpbmc+ID0gbmV3IFN1YmplY3Q8XG4gICAgYm9vbGVhbiB8IHN0cmluZ1xuICA+KCk7XG4gIGltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtYW51YWwgPSBmYWxzZTtcbiAgaXNNb2JpbGUgPSB0aGlzLnBsYXRmb3JtLklPUyB8fCB0aGlzLnBsYXRmb3JtLkFORFJPSUQ7XG4gIEBJbnB1dCgpIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgc2NhbkltYWdlVGltZXN0YW1wczogVGltZXN0YW1wcyA9IHtcbiAgICB0aW1lOiAwLFxuICAgIGxvYWQ6IDAsXG4gIH07XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2JpbGUnKSBnZXQgY2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgaWYgKHRoaXMucmVzdWx0KSB7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzY2FuUHJvdmlkZXIhOiBTY2FuUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGxheW91dFByb3ZpZGVyOiBMYXlvdXRQcm92aWRlcixcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcblxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgcHJpdmF0ZSB2aWV3OiBWaWV3Q29udGFpbmVyUmVmLFxuXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoUHJvdmlkZXIgLy8gcHJpdmF0ZSBhcGk6IFNlcnZlclByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zY2FuUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yLmdldChTY2FuUHJvdmlkZXIpO1xuXG4gICAgaWYgKCF0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnQpIHtcbiAgICAgIC8vIGNvbnNvbGUgPSB7XG4gICAgICAvLyAgIGxvZzogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIHRpbWU6ICguLi5hcmdzOiBhbnkpID0+IHt9LFxuICAgICAgLy8gICB0aW1lRW5kOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vICAgd2FybjogKC4uLmFyZ3M6IGFueSkgPT4ge30sXG4gICAgICAvLyAgIGVycm9yOiAoLi4uYXJnczogYW55KSA9PiB7fSxcbiAgICAgIC8vIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldExvZ0RhdGEoKSB7XG4gICAgdGhpcy5sb2dEYXRhID0ge1xuICAgICAgUmVxdWVzdDogbnVsbCxcbiAgICAgIFJlc3BvbnNlOiBudWxsLFxuICAgICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGluaXQoKSB7XG4gICAgdGhpcy5hdXRoLmFjY2VzVG9rZW4uc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZXNldExvZ0RhdGEoKTtcbiAgICAvLyB0aGlzLnJlc3VsdD10cnVlO1xuICAgIC8vIHRoaXMucmVzdWx0ID17fTtcblxuICAgIGNvbnNvbGUubG9nKCdJTklUIFNDQU4nKTtcbiAgfVxuXG4gIGNvbnRpbnVlKCkge1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSB0aGlzLndlYmNhbUltYWdlO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTaWRlLnNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgc2NhbigpIHtcbiAgICB0aGlzLnRyaWdnZXIubmV4dChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW1hZ2Uod2ViY2FtSW1hZ2U6IFdlYmNhbUltYWdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgfVxuICAgIC8vIGNvbnNvbGUubG9nKCdbcmVjZWl2ZWQgd2ViY2FtIGltYWdlXScsIHdlYmNhbUltYWdlKTtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgICBpZiAodGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgbG9hZCB9ID0gdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzO1xuICAgICAgICBjb25zdCBkaWZmID0gdGltZSAtIGxvYWQ7XG4gICAgICAgIC8vICAgY29uc29sZS5sb2coJ3RpbWU6JywgZGlmZik7XG4gICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgICBpZiAod2ViY2FtSW1hZ2UuaW1hZ2VEYXRhKSB7XG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5wdXNoKHdlYmNhbUltYWdlKTtcbiAgICAgICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKHdlYmNhbUltYWdlLCAnd29ya2VyJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGggPiA0ICYmICF0aGlzLnZhbGlkYXRpb24pIHtcbiAgICAgICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5kZXZlbG9wbWVudCkge1xuICAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnNvbGVCYWNrZ3JvdW5kID1cbiAgICAgICAgICAgICAgXCJmb250LXNpemU6MTAwcHg7YmFja2dyb3VuZC1pbWFnZTogdXJsKCdcIiArXG4gICAgICAgICAgICAgIGltZy5pbWFnZVJlc2l6ZWQgK1xuICAgICAgICAgICAgICBcIicpO2JhY2tncm91bmQtc2l6ZTogY29udGFpbjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcIjtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAgICAnLCBjb25zb2xlQmFja2dyb3VuZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gICB0aGlzLmZyb250SW1hZ2UgPSB3ZWJjYW1JbWFnZS5pbWFnZVJlc2l6ZWQ7XG5cbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdzY2FuJyk7XG4gICAgICAgIGNvbnNvbGUudGltZSgnc2NhbicpO1xuICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgICAgICBjb25zb2xlLmxvZygnQ0FQVFVSRUQ6JywgdGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuc2Nhbm5lZEltYWdlcy5zbGljZSgtNSk7XG4gICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgaW1hZ2VzQXJyYXkgPSBpbWFnZXMubWFwKChtKSA9PiBtLmltYWdlUmVzaXplZC5zcGxpdCgnLCcpWzFdKTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5KSB7XG4gICAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQnVyc3REYXRhKFxuICAgIGltYWdlc0FycmF5OiBhbnksXG4gICAgaW1hZ2VzOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5idXJzdChpbWFnZXNBcnJheSkpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJ3NjYW5kb2MuaW5mby5jJyArIHJlc3AuSW5mb0NvZGU7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgICBjb25zb2xlLmxvZygnQW5hbHlzaXNUaW1lJywgcmVzcC5BbmFseXNpc1RpbWUpO1xuICAgICAgY29uc3QgeyBEb2NUeXBlLCBTZXJpZXMsIFNpZGUsIEluZm9Db2RlIH0gPSByZXNwO1xuXG4gICAgICAvLyBpZiAoSW5mb0NvZGUgPT09ICcxMDA2JyAmJiB0aGlzLmlkU2Nhbikge1xuICAgICAgLy8gICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoaW1hZ2UpO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAocmVzcC5WYWxpZGF0ZWQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICcnO1xuICAgICAgICBjb25zb2xlLmxvZygnW1NDQU5ORUQgSU5ERVhdJywgcmVzcC5JbmRleCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW1hZ2UgPSBpbWFnZXNbcmVzcC5JbmRleF07XG5cbiAgICAgICAgLy8gdGhpcy5wcmV2aWV3ID0gdGhpcy53ZWJjYW1JbWFnZS5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgbGV0IGltYWdlID0gc2VsZWN0ZWRJbWFnZTtcbiAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICBjb25zdCBkYXRhVXJsID0gdGhpcy5oYW5kbGVCaXRtYXBJbWFnZShzZWxlY3RlZEltYWdlLmJpdG1hcCk7XG4gICAgICAgICAgaW1hZ2UgPSB7IGRhdGFVcmwgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChJbmZvQ29kZSA9PT0gJzEwMDcnKSB7XG4gICAgICAgICAgLy8gRm9yIElEIGFzayBmb3Igb3RoZXIgc2lkZVxuICAgICAgICAgIGlmIChTaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSAmJiB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgICAgICB0aGlzLmltYWdlSGFuZGxlci5uZXh0KHsgdHlwZTogJ3N0b3AnIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gU2lkZSA9PT0gJ0ZST05UJyA/IDEgOiAwO1xuICAgICAgICAgICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuc2luZ2xlU2Nhbih0aGlzLnNjYW5CbGFzdERhdGFbbnVtXSk7XG5cbiAgICAgICAgICAgIHRoaXMuaWRTY2FuID0gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uc2lkZTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dEaWFsb2cpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXNldCBtYW51YWwgc2NhbiBwb3B1cCBpbnRlcnZhbFxuICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5SW5mbyA9ICdzY2FuZG9jLmluZm8udHVybic7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcblxuICAgICAgICAvLyB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuXG4gICAgICAgIC8vdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5zY2FuKCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW5pdEVycm9yKGVycm9yOiBXZWJjYW1Jbml0RXJyb3IpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cblxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1hbnVhbE1vZGUodHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJykge1xuICAgIHRoaXMubWFudWFsID0gdHJ1ZTtcbiAgICB0aGlzLnByb21wdE1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQoZmFsc2UpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUV4dHJhY3Rpb25FcnJvcihkYXRhOiBhbnkpIHtcbiAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSB7fTtcbiAgICAvLyBpZiAodGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Py5fYXZhdGFyKSB7XG4gICAgLy8gICBkZWxldGUgdGhpcy5sb2dEYXRhLkV4cGVjdGVkT3V0cHV0Ll9hdmF0YXI7XG4gICAgLy8gfVxuICAgIC8vIHRoaXMuc2NhblByb3ZpZGVyLnNlbmRMb2codGhpcy5sb2dEYXRhKS5zdWJzY3JpYmUoKTtcblxuICAgIGNvbnNvbGUubG9nKCdMT0cgREFUQScsIHRoaXMubG9nRGF0YSk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgfVxuICBwcml2YXRlIGhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoXG4gICAgaW1nOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICAvLyBzYXZlIGN1cnJlbnQgaW1hZ2UgYWZ0ZXIgMTBzZWNcbiAgICBsZXQgTUFOVUFMX0lOVEVSVkFMID0gdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLm1hbnVhbFNjYW5EZWxheTtcbiAgICBjb25zdCBkaWZmID0gKERhdGUubm93KCkgLSB0aGlzLnN0YXJ0VGltZSkgLyAxMDAwO1xuXG4gICAgY29uc3Qgc2hvd0RpYWxvZyA9IGRpZmYgPiBNQU5VQUxfSU5URVJWQUw7XG4gICAgY29uc29sZS5sb2coJ01kaWZmJywgZGlmZiwgc2hvd0RpYWxvZywgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQpO1xuICAgIGlmIChzaG93RGlhbG9nICYmICF0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCkge1xuICAgICAgdGhpcy52ZXJpZmljYXRpb25FcnJvclNlbnQgPSB0cnVlO1xuICAgICAgY29uc29sZS53YXJuKCdbSEFORExFIEVSUk9SXScpO1xuXG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgLy8gaWYgKCF0aGlzLnNjYW5TZWNvbmRTaWRlKSB7XG4gICAgICAgIHRoaXMucHJvbXB0TWFudWFsID0gdHJ1ZTtcbiAgICAgICAgLy8gfVxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICB9KTtcbiAgICAgIC8vIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIC8vIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKGltZy5iaXRtYXApO1xuXG4gICAgICAvLyBjb25zb2xlLndhcm4oJ1NFTlQnKTtcbiAgICAgIC8vIC8vICB0aGlzLmRpc3BsYXlJbmZvID0gJ0NhbnQgZGV0ZWN0IGRvY3VtZW50ISc7XG4gICAgICAvLyB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IHRoaXMuX19zdWJzKFxuICAgICAgLy8gICB0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHtcbiAgICAgIC8vICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICAvLyAgICAgRXhwZWN0ZWRPdXRwdXQ6IHt9LFxuICAgICAgLy8gICAgIFJlcXVlc3Q6IHtcbiAgICAgIC8vICAgICAgIHZlcmlmaWNhdGlvbjogZGF0YVVybC5zcGxpdCgnLCcpWzFdLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgICAgUmVzcG9uc2U6IHtcbiAgICAgIC8vICAgICAgIFRyYW5zYWN0aW9uSUQ6IHV1aWR2NCgpLFxuICAgICAgLy8gICAgIH0sXG4gICAgICAvLyAgIH0pXG4gICAgICAvLyApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgLy8gIHRoaXMucmVzdWx0ID0gdHJ1ZTtcblxuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIC8vIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7IHR5cGU6ICdtb2RlbCcsIGRhdGE6IHt9IH0pO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5jYW1lcmFQcm92aWRlci53ZWJjYW1PYnNlcnZhYmxlKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgIH0pO1xuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuc2VsZmllJCkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICB0aGlzLnNlbGZpZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSAhdi5tYXRjaGVzIHx8IHRoaXMucGxhdGZvcm0uSU9TIHx8IHRoaXMucGxhdGZvcm0uQU5EUk9JRDtcbiAgICAgIGNvbnNvbGUubG9nKCdNTk9CSUxFJywgdGhpcy5pc01vYmlsZSk7XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VIYW5kbGVyLnN1YnNjcmliZShcbiAgICAvLyAgICh3ZWJjYW1JbWFnZTogYW55KSA9PiB7XG4gICAgLy8gICAgIC8vIHJldHVybjtcbiAgICAvLyAgICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgLy8gICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIC8vICAgICB9XG5cbiAgICAvLyAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAvLyAgICAgICBpZiAod2ViY2FtSW1hZ2UuYmFzZTY0KSB7XG4gICAgLy8gICAgICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAvLyAgICAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAvLyAgICAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgLy8gICAgICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAvLyAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdUSU1FJywgZGlmZik7XG4gICAgLy8gICAgICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAvLyAgICAgICAgIH1cblxuICAgIC8vICAgICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgLy8gICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgLy8gICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UsICd3b3JrZXInKTtcbiAgICAvLyAgICAgICB9XG5cbiAgICAvLyAgICAgICAvLyB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyAgICAgICBpZiAodGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCA+IDQgJiYgIXRoaXMudmFsaWRhdGlvbikge1xuICAgIC8vICAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAvLyAgICAgICAgIGNvbnNvbGUudGltZUVuZCgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25UT1RBTF9VSScpO1xuICAgIC8vICAgICAgICAgY29uc3QgaW1hZ2VzID0gdGhpcy5zY2FubmVkSW1hZ2VzLnNsaWNlKC01KTtcbiAgICAvLyAgICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgIC8vICAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgLy8gICAgICAgICBjb25zb2xlLmxvZyhpbWFnZXMpO1xuXG4gICAgLy8gICAgICAgICBjb25zdCBpbWFnZXNBcnJheSA9IGltYWdlcy5tYXAoKG0pID0+IG0uYmFzZTY0LnNwbGl0KCcsJylbMV0pO1xuICAgIC8vICAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8vICAgICAgICAgLy8gdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcywgJ3dvcmtlcicpO1xuXG4gICAgLy8gICAgICAgICBjb25zb2xlLnRpbWUoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyApO1xuICB9XG5cbiAgaGFuZGxlQml0bWFwSW1hZ2UoYml0bWFwOiBhbnkpIHtcbiAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGJpdG1hcDtcblxuICAgIGNvbnN0IG9mZnNjcmVlblNtYWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgb2Zmc2NyZWVuU21hbGwud2lkdGggPSB3aWR0aDtcbiAgICBvZmZzY3JlZW5TbWFsbC5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY29uc3QgY3R4OiBhbnkgPSBvZmZzY3JlZW5TbWFsbC5nZXRDb250ZXh0KCdiaXRtYXByZW5kZXJlcicpO1xuXG4gICAgaWYgKGN0eCkge1xuICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgY3R4LnRyYW5zZmVyRnJvbUltYWdlQml0bWFwKGJpdG1hcCk7XG4gICAgICBiaXRtYXAuY2xvc2UoKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBjdHguY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXV0b1NjYW4oKSB7XG4gICAgY29uc3Qgc2lkZSA9IHRoaXMuc2NhbkJsYXN0RGF0YVswXTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5zaW5nbGVTY2FuKHNpZGUpO1xuICB9XG5cbiAgc2luZ2xlU2NhbihzaWRlOiBhbnkpIHtcbiAgICB0aGlzLnNjYW5UeXBlID0gc2lkZS5zaWRlO1xuICAgIHRoaXMucHJldmlldyA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZFNpZGUgPSBzaWRlO1xuXG4gICAgdGhpcy5zZWxlY3RlZFNpZGUuaW1hZ2UgPSBudWxsO1xuICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbWFudWFsU2NhbkRhdGEoZGF0YTogYW55KSB7XG4gICAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhID0gZGF0YTtcbiAgICB0aGlzLm1hbnVhbCA9IGZhbHNlO1xuICAgIHRoaXMubWFudWFsRGF0YVNldCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW1nQmFzZTY0KG51bTogYW55KSB7XG4gICAgY29uc29sZS5sb2coJ0dFVCA2NCcpO1xuXG4gICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLl9pbWFnZUFzRGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuZGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICB9XG4gIHNjYW5CbGFzdEZpbmlzaCgpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dChmYWxzZSk7XG4gICAgfSk7XG4gICAgY29uc29sZS50aW1lKCd1cGxvYWQnKTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9iaWxlJykge1xuICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoeyBkYXRhOiB0aGlzLnNjYW5CbGFzdERhdGEgfSk7XG4gICAgICB0aGlzLnJldGFrZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgLy8gY29uc3QgbG9hZGluZyA9IHRoaXMuZGlhbG9ncy5sb2FkaW5nKCk7XG4gICAgdGhpcy5zY2FuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLnRpbWUoJ3BheWxvYWQnKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICBEYXRhRmllbGRzOiB7XG4gICAgICAgIEZyb250SW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgRnJvbnRJbWFnZUNyb3BwZWQ6IGZhbHNlLFxuICAgICAgICBCYWNrSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgQmFja0ltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEZyb250SW1hZ2U6IHRoaXMuZ2V0SW1nQmFzZTY0KDApLFxuICAgICAgICBCYWNrSW1hZ2U6IHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA/IHRoaXMuZ2V0SW1nQmFzZTY0KDEpIDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBTZXR0aW5nczoge1xuICAgICAgICBTaG91bGRWYWxpZGF0ZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRG9jdW1lbnRJbWFnZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRmFjZUlmRGV0ZWN0ZWQ6IHRydWUsXG4gICAgICAgIFNraXBJbWFnZVNpemVDaGVjazogdHJ1ZSxcbiAgICAgICAgQ2FuU3RvcmVJbWFnZXM6IHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzLFxuICAgICAgfSxcbiAgICAgIC8vIENhbGxCYWNrVXJsOiAnaHR0cDovL2RlbW86NTAwMC9yZXBvcnQvZXh0cmFjdGVkLycsXG4gICAgfTtcbiAgICB0aGlzLmZyb250SW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkZyb250SW1hZ2U7XG4gICAgdGhpcy5iYWNrSW1hZ2UgPSAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgcGF5bG9hZC5EYXRhRmllbGRzLkJhY2tJbWFnZTtcbiAgICBpZiAoIXRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgcGF5bG9hZC5TZXR0aW5ncy5JZ25vcmVCYWNrSW1hZ2UgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuXG4gICAgY29uc29sZS50aW1lRW5kKCdwYXlsb2FkJyk7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICB0aGlzLnNjYW5Qcm92aWRlci5ibGFzdFBvc3QocGF5bG9hZCkucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubWFudWFsRGF0YVNldCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdNQU5VQUwgREFUQSBTRVQnLGUpO1xuICAgICAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmVycm9yKSk7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKHt9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdFRUUnLCBlKTtcbiAgICAgICAgICByZXR1cm4gZTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEuRGF0YTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCd1cGxvYWQnKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdwYXJzZScpO1xuICAgICAgICAvLyBkYXRhLkluZm9Db2RlID0gJzEwMDEnO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3AnKTtcbiAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgncCcpO1xuICAgICAgICAvL2xvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMScpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAxJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMSc7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDInKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tFUlJPUl0gMTAwMicpO1xuICAgICAgICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDInO1xuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc3VsdHMgJiYgZGF0YS5NZXRhZGF0YS5sZW5ndGggPiAwICYmIGRhdGEuSW5mb0NvZGUgPT09ICcxMDAwJykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFeHRyYWN0aW9uIHRpbWUnLCBkYXRhLkFuYWx5c2lzVGltZSk7XG5cbiAgICAgICAgICAvLyAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG5cbiAgICAgICAgICBjb25zb2xlLnRpbWUoJ3BhcnNlYmxhc3QnKTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNjYW5Qcm92aWRlci5wYXJzZUJsYXN0KHJlc3VsdHMpO1xuICAgICAgICAgIGNvbnNvbGUudGltZUVuZCgncGFyc2VibGFzdCcpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdSRVMnLCB0aGlzLnJlc3VsdCk7XG4gICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICBjb25zdCBtb2RlbCA9IHJlc3VsdC5tb2RlbDtcblxuICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRmFjZUltYWdlKSB7XG4gICAgICAgICAgICBtb2RlbC5fYXZhdGFyID1cbiAgICAgICAgICAgICAgJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5Eb2N1bWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgRG9jdW1lbnRzIH0gPSBkYXRhLkltYWdlRGF0YTtcbiAgICAgICAgICAgIG1vZGVsLmltYWdlcyA9IERvY3VtZW50cy5tYXAoKGltYWdlOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgRG9jdW1lbnRzW2ldIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5tb2RlbCA9IG1vZGVsO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdNT0RFTCcsIHRoaXMubW9kZWwpO1xuICAgICAgICAgIHRoaXMuYWN0aW9ucy5lbWl0KHtcbiAgICAgICAgICAgIHR5cGU6ICdzY2FuRmluaXNoJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbW9kZWw6IHRoaXMubW9kZWwsXG4gICAgICAgICAgICAgIGltYWdlczogdGhpcy5pbWFnZXMsXG4gICAgICAgICAgICAgIHJlc3VsdHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIXRoaXMuc2NhblByb3ZpZGVyLmNvbmZpZy5oaWRlUmVzdWx0cykge1xuICAgICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lKCdmZicpO1xuICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgICB0aGlzLnNjYW5SZXN1bHRzLm5leHQoeyB0eXBlOiAnbW9kZWwnLCBkYXRhOiBtb2RlbCB9KTtcbiAgICAgICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIC8vICB9KTtcbiAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdmZicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdFUlJPUicpO1xuICAgICAgICAgIGlmICh0aGlzLm1hbnVhbERhdGFTZXQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXh0cmFjdGlvbkVycm9yKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLiRzaG93U3dpdGNoLm5leHQodHJ1ZSk7XG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5pbWFnZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5zY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgcmV0YWtlKCkge1xuICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuJHNob3dTd2l0Y2gubmV4dCh0cnVlKTtcbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zY2FuU2Vjb25kU2lkZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgdHlwZTogJ3NjYW5EYXRhQ2xvc2UnLFxuICAgICAgZGF0YToge1xuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIGNvbnN0IGF2YXRhciA9IHRoaXMubW9kZWw/Ll9hdmF0YXI7XG4gICAgdGhpcy5kaWFsb2dzXG4gICAgICAuc2NhblNlbGZpZSh7IGF2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhblJlc3VsdHMubmV4dCh7XG4gICAgICAgICAgICB0eXBlOiAnYXZhdGFyJyxcbiAgICAgICAgICAgIGRhdGE6IHJlc3AuaW1hZ2VBc0RhdGFVcmwsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gdGhpcy5tb2RlbC5fYXZhdGFyID0gcmVzcC5pbWFnZUFzRGF0YVVybDtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjYW1lcmFPZmYoZXY6IGFueSkge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHZpZGVvUmVhZHkoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICBjb25zb2xlLmxvZygnUkVBRFknLCBldmVudCk7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGV2ZW50O1xuICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5ICYmICF0aGlzLnNjYW5JblByb2dyZXNzICYmICF0aGlzLm1hbnVhbCkge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zY2FuKCk7XG4gICAgICB9LCAyMCk7XG4gICAgfVxuICB9XG5cbiAgbWFudWFsU2V0KGtleTogYm9vbGVhbikge1xuICAgIGlmIChrZXkpIHtcbiAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuc2hvd01hbnVhbE1vZGUpIHtcbiAgICAgICAgdGhpcy5tYW51YWxNb2RlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7XG4gICAgICAgICAgdHlwZTogJ21hbnVhbE1vZGUnLFxuICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9tcHRNYW51YWwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RFU1RST1hZJyk7XG5cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICpuZ0lmPVwiY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPiAwICYmIGRpc3BsYXlJbmZvICYmICFyZXN1bHQgJiYgIW1hbnVhbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJoaW50XCIgW25nU3R5bGVdPVwieyB0b3A6IGNhbWVyYVByb3ZpZGVyLmhpbnRQb3NpdGlvbiArICdweCcgfVwiPlxuICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiPlxuICAgICAge3sgZGlzcGxheUluZm8gfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RGlhbG9nXCI+XG4gIDxkaXYgY2xhc3M9XCJwYWdlVHVyblwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaW5uZXJcIj5cbiAgICAgICAgPG1hdC1pY29uPjM2MDwvbWF0LWljb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgICB7eyBcInNjYW5kb2MudHVybkFuZENhcHR1cmUuYmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0ZST05UJ1wiPlxuICAgICAgICAgICAge3sgXCJzY2FuZG9jLnR1cm5BbmRDYXB0dXJlLmZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5PazwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9tcHRNYW51YWxcIj5cbiAgPGRpdiBjbGFzcz1cIm1hbnVhbE1vZGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zY3JlZW5zaG90X2tleWJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MubWFudWFsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb290ZXI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KHRydWUpXCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICA+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnllc1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4XCJcbiAgICAgICAgICAoY2xpY2spPVwibWFudWFsU2V0KGZhbHNlKVwiXG4gICAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5ub1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxzZWN0aW9uPlxuICAgIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgICAoYWN0aW9uKT1cInNlbGZpZSgpXCJcbiAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgW2RhdGFdPVwic2NhblJlc3VsdHNcIlxuICAgID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1yLTRcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwicmV0YWtlKClcIj5cbiAgICAgICAgICB7eyBcInNjYW5kb2MucmVUYWtlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZXJyb3IgfHwgZm9ybS5pbnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy51c2VEYXRhXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtYW51YWxcIj5cbiAgPHNlY3Rpb24+XG4gICAgPG5neC1tYW51YWwtc2NhbiAoYWN0aW9uKT1cIm1hbnVhbFNjYW5EYXRhKCRldmVudClcIj48L25neC1tYW51YWwtc2Nhbj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiIXJlc3VsdCAmJiBkb2N1bWVudFR5cGVTZWxlY3RlZCAmJiAhbWFudWFsXCI+XG4gIDxzZWN0aW9uPlxuICAgIDxkaXYgI3dyYXBlciBjbGFzcz1cIndyYXBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIighY2FtZXJhUmVhZHkgJiYgIXByZXZpZXcpIHx8IHNjYW5pbmdcIj5cbiAgICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlcnJvclwiPlxuICAgICAgICA8bmd4LXNjYW5kb2Mtd2ViY2FtXG4gICAgICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiAhc2NhbmluZ1wiXG4gICAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAjd2ViY2FtXG4gICAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyXCJcbiAgICAgICAgICBbaW1hZ2VIYW5kbGVyXT1cImltYWdlSGFuZGxlclwiXG4gICAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgICAodmlkZW9SZWFkeSk9XCJ2aWRlb1JlYWR5KCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDwvbmd4LXNjYW5kb2Mtd2ViY2FtPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgICAqbmdJZj1cInByZXZpZXdcIlxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIHotaW5kZXg6IDIwO1xuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwibWwtOFwiPnt7XG4gICAgICAgICAgICAgICAgXCJzY2FuZG9jLnVuYWJsZVRvRGV0ZWN0SWRcIiB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMSdcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMVwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuZXh0cmFjdGlvbi5jMTAwMlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cImVycm9yQ29kZSA9PT0gJzEwMDAnXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MucGxhY2VJZENsb3NlVG9EZXZpY2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3sgXCJzY2FuZG9jLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICB7eyBcInNjYW5kb2MuaG9sZERvY3VtZW50U3RlYWR5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIFwic2NhbmRvYy5tYWtlU3VyZVRoZXJlQXJlTm9HbGFyZUFuZFNoYWRvd3NPblRoZUlkXCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNjYW5QcmV2aWV3XCIgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwic2NhbmRvYy5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImltYWdlXCJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxmb290ZXIgKm5nSWY9XCJwcmV2aWV3XCI+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJkaXNwbGF5SW5mb1wiICpuZ0lmPVwiIXByZXZpZXcgJiYgY2FtZXJhUmVhZHlcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5SW5mb1wiPlxuICAgICAgICB7eyBkaXNwbGF5SW5mbyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+IC0tPlxuICAgICAgPCEtLSA8ZGl2IHN0eWxlPVwiaGVpZ2h0OiAyNnB4XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE4cHhcIlxuICAgICAgICAqbmdJZj1cImlkU2NhbiAmJiAhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdCQUNLJ1wiPlxuICAgICAgICAgIFR1cm4gZG9jdW1lbnQgYW5kOlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jYXB0dXJlQmFja1wiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaWRTY2FuID09PSAnRlJPTlQnXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJzY2FuZG9jLmNhcHR1cmVGcm9udFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+IC0tPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXItNFwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJyZXRyeSgpXCI+XG4gICAgICAgICAge3sgXCJzY2FuZG9jLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgIChjbGljayk9XCJjb250aW51ZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IFwic2NhbmRvYy5jb250aW51ZVdpdGhTZWxlY3RlZEltYWdlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvb3Rlcj5cbiAgPC9zZWN0aW9uPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -2531,6 +2531,9 @@ class ScanComponent extends BaseComponent {
2531
2531
  this.showDialog = true;
2532
2532
  this.cd.detectChanges();
2533
2533
  }
2534
+ // reset manual scan popup interval
2535
+ this.verificationErrorSent = false;
2536
+ this.startTime = Date.now();
2534
2537
  this.displayInfo = 'scandoc.info.turn';
2535
2538
  }
2536
2539
  }
@@ -2583,40 +2586,16 @@ class ScanComponent extends BaseComponent {
2583
2586
  // save current image after 10sec
2584
2587
  let MANUAL_INTERVAL = this.scanProvider.config.manualScanDelay;
2585
2588
  const diff = (Date.now() - this.startTime) / 1000;
2586
- if (diff > MANUAL_INTERVAL &&
2587
- !this.verificationErrorSent
2588
- //&&
2589
- //this.scanProvider.config.development
2590
- ) {
2589
+ const showDialog = diff > MANUAL_INTERVAL;
2590
+ console.log('Mdiff', diff, showDialog, this.verificationErrorSent);
2591
+ if (showDialog && !this.verificationErrorSent) {
2591
2592
  this.verificationErrorSent = true;
2592
2593
  console.warn('[HANDLE ERROR]');
2593
2594
  this.zone.run(() => {
2594
- // const ref = this.snackBar.open(
2595
- // this.translate.instant('scandoc.manual'),
2596
- // this.translate.instant('scandoc.yes'),
2597
- // {
2598
- // duration: 10000,
2599
- // viewContainerRef: this.view,
2600
- // }
2601
- // );
2602
- // this.__subs(ref.onAction()).subscribe((resp) => {
2603
- // this.manualMode(type);
2604
- // });
2605
- if (!this.scanSecondSide) {
2606
- this.promptManual = true;
2607
- // MANUAL_INTERVAL += 10;
2608
- }
2609
- // this.verificationErrorSent = false;
2595
+ // if (!this.scanSecondSide) {
2596
+ this.promptManual = true;
2597
+ // }
2610
2598
  this.startTime = Date.now();
2611
- //this.promptManual = true;
2612
- // this.dialogs.promptManual().subscribe((resp: any) => {
2613
- // console.warn(resp);
2614
- // if (resp) {
2615
- // this.manualMode(type);
2616
- // }
2617
- // this.startTime = Date.now();
2618
- // this.verificationErrorSent = false;
2619
- // });
2620
2599
  });
2621
2600
  // this.verificationErrorSent = true;
2622
2601
  // const dataUrl = this.handleBitmapImage(img.bitmap);
@@ -2846,6 +2825,7 @@ class ScanComponent extends BaseComponent {
2846
2825
  data: {
2847
2826
  model: this.model,
2848
2827
  images: this.images,
2828
+ results
2849
2829
  },
2850
2830
  });
2851
2831
  if (!this.scanProvider.config.hideResults) {