ngx-scandoc 1.0.7 → 1.0.8
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.
|
@@ -457,7 +457,11 @@ export class ScanComponent extends BaseComponent {
|
|
|
457
457
|
'data:image/jpeg;base64,' + data.ImageData?.FaceImage;
|
|
458
458
|
}
|
|
459
459
|
console.log('MODEL', this.model);
|
|
460
|
-
this.actions.emit({
|
|
460
|
+
this.actions.emit({
|
|
461
|
+
type: 'scanFinish',
|
|
462
|
+
model: this.model,
|
|
463
|
+
results,
|
|
464
|
+
});
|
|
461
465
|
this.cd.detectChanges();
|
|
462
466
|
});
|
|
463
467
|
}
|
|
@@ -580,4 +584,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
580
584
|
type: HostListener,
|
|
581
585
|
args: ['window:resize', ['$event']]
|
|
582
586
|
}] } });
|
|
583
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFJWix1QkFBdUIsRUFDdkIsS0FBSyxFQUlMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnRCxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBd0JsRCxNQUFNLE9BQU8sYUFDWCxTQUFRLGFBQWE7SUFnSHJCLFlBQ1MsRUFBcUIsRUFFcEIsSUFBWSxFQUNaLFNBQTJCLEVBQzVCLGNBQXdDLEVBQ3ZDLFFBQWtCLEVBQ2xCLGNBQThCLEVBRTlCLElBQWtCLENBQUMsOEJBQThCOztRQUV6RCxLQUFLLEVBQUUsQ0FBQztRQVZELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRXBCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDdkMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixt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LElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDVjtJQUNILENBQUM7OzBHQW5wQlUsYUFBYTs4RkFBYixhQUFhLDhYQ3ZEMUIsMjJLQXNMQTsyRkQvSGEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU07a1JBbUJ0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU07Z0JBOERFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS2UsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUVjLEtBQUs7c0JBQXJDLFdBQVc7dUJBQUMsY0FBYztnQkFLM0IsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBFbGVtZW50UmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE5nWm9uZSxcbiAgSW5qZWN0b3IsXG4gIEhvc3RCaW5kaW5nLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgZm9ya0pvaW4sIGZyb20sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGRlbGF5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5wcm92aWRlcic7XG5pbXBvcnQgeyBXZWJjYW1JbWFnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBXZWJjYW1Jbml0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL2RvbWFpbi93ZWJjYW0taW5pdC1lcnJvcic7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvYXV0aC5wcm92aWRlcic7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcbmltcG9ydCB7IExheW91dFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2xheW91dC5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElXaW5kb3cgZXh0ZW5kcyBXaW5kb3cge1xuICBUZXh0RGV0ZWN0b3I6IGFueTtcbn1cblxuaW50ZXJmYWNlIFRyb3VibGVzaG9vdGluZyB7XG4gIFJlcXVlc3Q6IGFueTtcbiAgUmVzcG9uc2U6IGFueTtcbiAgRXhwZWN0ZWRPdXRwdXQ6IGFueTtcbiAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGltZXN0YW1wcyB7XG4gIHRpbWU6IG51bWJlcjtcbiAgbG9hZDogbnVtYmVyO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3gtc2NhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zY2FuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NhbkNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgc2NhbkJsYXN0RGF0YTogYW55ID0gW1xuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5mcm9udCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnREZXNjcmlwdGlvbicsXG4gICAgICBzaWRlOiAnRlJPTlQnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2snLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmJhY2tEZXNjcmlwdGlvbicsXG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIHNpZGU6ICdCQUNLJyxcbiAgICB9LFxuICBdO1xuICBASW5wdXQoKSB0eXBlID0gJ2Rlc2t0b3AnO1xuICBASW5wdXQoKSBkaWFsb2dzOiBhbnk7XG4gIEBPdXRwdXQoKSBhY3Rpb25zID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBtZWRpYURldmljZXM6IGFueSA9IFtdO1xuICBwdWJsaWMgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIHB1YmxpYyB2aWRlb09wdGlvbnM6IE1lZGlhVHJhY2tDb25zdHJhaW50cyA9IHtcbiAgICB3aWR0aDogMTkyMCxcbiAgICBoZWlnaHQ6IDEwODAsXG4gICAgZmFjaW5nTW9kZTogJ2Vudmlyb25tZW50JyxcbiAgfTtcbiAgZGlhbG9nUmVmPzogTWF0RGlhbG9nUmVmPGFueT47XG4gIGRhdGE6IGFueTtcbiAgc3RhcnRUaW1lOiBudW1iZXIgPSAwO1xuICBpc0RlYnVnID0gZmFsc2U7XG4gIG11bHRpcGxlV2ViY2Ftc0F2YWlsYWJsZSA9IGZhbHNlO1xuICBzY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBmaWVsZHM6IGFueTtcbiAgLy8gd2ViY2FtIHNuYXBzaG90IHRyaWdnZXJcbiAgZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBzZWxlY3RlZFNpZGU6IGFueTtcbiAgaW1hZ2VzOiBhbnk7XG4gIHNjYW5UaW1lb3V0OiBhbnk7XG4gIHByZXZpZXc6IGFueSA9IG51bGw7XG4gIHNjYW5UeXBlOiBhbnk7XG4gIHdpZHRoOiBhbnk7XG4gIGhlaWdodDogYW55O1xuICB2aWRlb1dpZHRoOiBhbnk7XG4gIHZpZGVvSGVpZ2h0OiBhbnk7XG4gIGVycm9yQ29kZSA9ICcxMDAwJztcbiAgZGlzcGxheUluZm86IGFueSA9ICdQb3NpdGlvbiBkb2N1bWVudCBpbnNpZGUgcmVjdGFuZ2UgYW5kIGhvbGQgc3RlYWR5Lic7XG4gIGFsbG93Q2FtZXJhU3dpdGNoID0gdHJ1ZTtcbiAgdmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gZmFsc2U7XG4gIGVycm9yID0gZmFsc2U7XG4gIGNhbWVyYVJlYWR5ID0gZmFsc2U7XG4gIHJlc3VsdDogYW55O1xuICBzY2FuaW5nID0gZmFsc2U7XG5cbiAgaW1hZ2VIYW5kbGVyID0gbmV3IFN1YmplY3QoKTtcblxuICBsb2dEYXRhOiBUcm91Ymxlc2hvb3RpbmcgPSB7XG4gICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgIFJlcXVlc3Q6IG51bGwsXG4gICAgUmVzcG9uc2U6IG51bGwsXG4gICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gIH07XG4gIGRlZmF1bHREZXZpY2U6IGFueTtcbiAgc2NhbkRhdGFzOiBhbnkgPSBbXTtcbiAgc2NhblNpZGU6IGFueTtcbiAgaWRTY2FuOiBhbnkgPSBudWxsO1xuICB3ZWJjYW1JbWFnZT86IFdlYmNhbUltYWdlO1xuICBtb2RlbDogYW55O1xuICB2YWxpZGF0aW9uID0gZmFsc2U7XG4gIHNjYW5uZWRJbWFnZXM6IGFueVtdID0gW107XG4gIHNjYW5EZWxheTogYW55ID0gMDtcbiAgcHVibGljIHRyaWdnZXI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgLy8gc3dpdGNoIHRvIG5leHQgLyBwcmV2aW91cyAvIHNwZWNpZmljIHdlYmNhbTsgdHJ1ZS9mYWxzZTogZm9yd2FyZC9iYWNrd2FyZHMsIHN0cmluZzogZGV2aWNlSWRcbiAgcHVibGljIG5leHRXZWJjYW06IFN1YmplY3Q8Ym9vbGVhbiB8IHN0cmluZz4gPSBuZXcgU3ViamVjdDxcbiAgICBib29sZWFuIHwgc3RyaW5nXG4gID4oKTtcbiAgaW1hZ2VWZXJpZmllZCA9IGZhbHNlO1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgaXNNb2JpbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd0RpYWxvZyA9IGZhbHNlO1xuICBzY2FuSW1hZ2VUaW1lc3RhbXBzOiBUaW1lc3RhbXBzID0ge1xuICAgIHRpbWU6IDAsXG4gICAgbG9hZDogMCxcbiAgfTtcbiAgQFZpZXdDaGlsZCgnd3JhcGVyJykgd3JhcGVyPzogRWxlbWVudFJlZjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1vYmlsZScpIGdldCBjbGFzcygpIHtcbiAgICByZXR1cm4gdGhpcy5pc01vYmlsZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAodGhpcy53cmFwZXIpIHtcbiAgICAgIHRoaXMud2lkdGggPSB0aGlzLndyYXBlci5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLndyYXBlci5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpZGVvID0gdGhpcy53cmFwZXI/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTtcbiAgICAgICAgaWYgKHZpZGVvKSB7XG4gICAgICAgICAgLy8gICBjb25zb2xlLmxvZyh2aWRlby5jbGllbnRXaWR0aCwgdmlkZW8uY2xpZW50SGVpZ2h0KTtcbiAgICAgICAgICB0aGlzLnZpZGVvV2lkdGggPSB2aWRlby5jbGllbnRXaWR0aDtcbiAgICAgICAgICB0aGlzLnZpZGVvSGVpZ2h0ID0gdmlkZW8uY2xpZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSwgMTAwKTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHNjYW5Qcm92aWRlciE6IFNjYW5Qcm92aWRlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGNhbWVyYVByb3ZpZGVyOiBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBsYXlvdXRQcm92aWRlcjogTGF5b3V0UHJvdmlkZXIsXG5cbiAgICBwcml2YXRlIGF1dGg6IEF1dGhQcm92aWRlciAvLyBwcml2YXRlIGFwaTogU2VydmVyUHJvdmlkZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNjYW5Qcm92aWRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFNjYW5Qcm92aWRlcik7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0TG9nRGF0YSgpIHtcbiAgICB0aGlzLmxvZ0RhdGEgPSB7XG4gICAgICBSZXF1ZXN0OiBudWxsLFxuICAgICAgUmVzcG9uc2U6IG51bGwsXG4gICAgICBFeHBlY3RlZE91dHB1dDogbnVsbCxcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICB9O1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjYW5UaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zY2FuVGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnREVTVFJPWFknKTtcblxuICAgIHRoaXMuX19kZXN0cm95KCk7XG4gIH1cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmF1dGguYWNjZXNUb2tlbi5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2V0TG9nRGF0YSgpO1xuICAgIC8vIHRoaXMucmVzdWx0PXRydWU7XG4gICAgLy8gdGhpcy5yZXN1bHQgPXt9O1xuXG4gICAgY29uc29sZS5sb2coJ0lOSVQgU0NBTicpO1xuICB9XG5cbiAgY2FtZXJhT2ZmKGV2OiBhbnkpIHtcbiAgICB0aGlzLmNhbWVyYVJlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb250aW51ZSgpIHtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gdGhpcy53ZWJjYW1JbWFnZTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkU2lkZS5zaWRlID09PSAnRlJPTlQnKSB7XG4gICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIHNjYW4oKSB7XG4gICAgLy8gdGhpcy50cmlnZ2VyU25hcHNob3QoKTtcbiAgICAvLyAgIHRoaXMuc2NhbkRhdGFzWzBdID0gdHJ1ZTtcbiAgICAvLyBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgIC8vICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIC8vIH1cbiAgICAvLyB0aGlzLnNjYW5UaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLnNjYW4oKTtcbiAgICAvLyB9LCAxKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVJbWFnZSh3ZWJjYW1JbWFnZTogV2ViY2FtSW1hZ2UpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmxvZygnW3JlY2VpdmVkIHdlYmNhbSBpbWFnZV0nLCB3ZWJjYW1JbWFnZSk7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgICAgICAvLyAgIGNvbnNvbGUubG9nKCd0aW1lOicsIGRpZmYpO1xuICAgICAgICB0aGlzLnNjYW5EZWxheSA9IGRpZmY7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID0gdGltZTtcblxuICAgICAgaWYgKHdlYmNhbUltYWdlLmltYWdlRGF0YSkge1xuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGggPiA0ICYmICF0aGlzLnZhbGlkYXRpb24pIHtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdzY2FuJyk7XG4gICAgICAgIGNvbnNvbGUudGltZSgnc2NhbicpO1xuICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgICAgICBjb25zb2xlLmxvZygnQ0FQVFVSRUQ6JywgdGhpcy5zY2FubmVkSW1hZ2VzLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuc2Nhbm5lZEltYWdlcy5zbGljZSgtNSk7XG4gICAgICAgIC8vIHNldCBpbWFnZXMgdG8gMFxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAgICAgY29uc3QgaW1hZ2VzQXJyYXkgPSBpbWFnZXMubWFwKChtKSA9PiBtLmltYWdlUmVzaXplZC5zcGxpdCgnLCcpWzFdKTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY2FtZXJhUmVhZHkpIHtcbiAgICAgICAgdGhpcy50cmlnZ2VyLm5leHQobmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCdXJzdERhdGEoXG4gICAgaW1hZ2VzQXJyYXk6IGFueSxcbiAgICBpbWFnZXM6IGFueSxcbiAgICB0eXBlOiAnd29ya2VyJyB8ICdwbGFpbicgPSAncGxhaW4nXG4gICkge1xuICAgIHRoaXMuX19zdWJzKHRoaXMuc2NhblByb3ZpZGVyLmJ1cnN0KGltYWdlc0FycmF5KSkuc3Vic2NyaWJlKChyZXNwOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuZGlzcGxheUluZm8gPSByZXNwLkluZm87XG4gICAgICBjb25zb2xlLnRpbWVFbmQoJ3ZhbGlkYXRpb25QT1NUJyk7XG4gICAgICBjb25zb2xlLmxvZygnQW5hbHlzaXNUaW1lJywgcmVzcC5BbmFseXNpc1RpbWUpO1xuICAgICAgY29uc3QgeyBEb2NUeXBlLCBTZXJpZXMsIFNpZGUsIEluZm9Db2RlIH0gPSByZXNwO1xuXG4gICAgICAvLyBpZiAoSW5mb0NvZGUgPT09ICcxMDA2JyAmJiB0aGlzLmlkU2Nhbikge1xuICAgICAgLy8gICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoaW1hZ2UpO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAocmVzcC5WYWxpZGF0ZWQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tTQ0FOTkVEIElOREVYXScsIHJlc3AuSW5kZXgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZEltYWdlID0gaW1hZ2VzW3Jlc3AuSW5kZXhdO1xuXG4gICAgICAgIC8vIHRoaXMucHJldmlldyA9IHRoaXMud2ViY2FtSW1hZ2UuaW1hZ2VBc0RhdGFVcmw7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIGxldCBpbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG4gICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgY29uc3QgZGF0YVVybCA9IHRoaXMuaGFuZGxlQml0bWFwSW1hZ2Uoc2VsZWN0ZWRJbWFnZS5iaXRtYXApO1xuICAgICAgICAgIGltYWdlID0geyBkYXRhVXJsIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoSW5mb0NvZGUgPT09ICcxMDA3Jykge1xuICAgICAgICAgIC8vIEZvciBJRCBhc2sgZm9yIG90aGVyIHNpZGVcbiAgICAgICAgICBpZiAoU2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgJiYgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1VQTE9BRCcpO1xuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IFNpZGUgPT09ICdGUk9OVCcgPyAxIDogMDtcblxuICAgICAgICAgICAgdGhpcy5zaW5nbGVTY2FuKHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dKTtcbiAgICAgICAgICAgIHRoaXMuc2NhbigpO1xuICAgICAgICAgICAgdGhpcy5pZFNjYW4gPSB0aGlzLnNjYW5CbGFzdERhdGFbbnVtXS5zaWRlO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9ncy50dXJuRG9jdW1lbnQodGhpcy5pZFNjYW4pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0lEIFNJREUnLCB0aGlzLmlkU2Nhbik7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUluZm8gPSAnUGxlYXNlIHR1cm4gdGhlIGRvY3VtZW50IG92ZXIhJztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID0gaW1hZ2U7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUhhbmRsZXIubmV4dCh7IHR5cGU6ICdzdG9wJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuXG4gICAgICAgIC8vIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IHNlbGVjdGVkSW1hZ2U7XG5cbiAgICAgICAgLy90aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW5pdEVycm9yKGVycm9yOiBXZWJjYW1Jbml0RXJyb3IpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cblxuICBnZXQgc2NhbkJsYXN0Q2FuVXBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPyB0cnVlIDogZmFsc2U7XG4gIH1cbiAgcHVibGljIGNhbWVyYVdhc1N3aXRjaGVkKGRldmljZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZygnW2FjdGl2ZSBkZXZpY2VdJywgZGV2aWNlSWQpO1xuICAgIHRoaXMuZGV2aWNlSWQgPSBkZXZpY2VJZDtcbiAgICB0aGlzLmNhbWVyYVJlYWR5ID0gdHJ1ZTtcbiAgICB0aGlzLmRlZmF1bHREZXZpY2UgPSBkZXZpY2VJZDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vblJlc2l6ZSgpO1xuICAgICAgdGhpcy5zY2FuKCk7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV4dFdlYmNhbU9ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMubmV4dFdlYmNhbS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcihpbWc6IGFueSkge1xuICAgIC8vIHNhdmUgY3VycmVudCBpbWFnZSBhZnRlciAxMHNlY1xuXG4gICAgY29uc3QgZGlmZiA9IChEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUpIC8gMTAwMDtcblxuICAgIGlmIChcbiAgICAgIGRpZmYgPiAxNSAmJlxuICAgICAgIXRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ICYmXG4gICAgICB0aGlzLnNjYW5Qcm92aWRlci5jb25maWcuZGV2ZWxvcG1lbnRcbiAgICApIHtcbiAgICAgIHRoaXMudmVyaWZpY2F0aW9uRXJyb3JTZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKGltZy5iaXRtYXApO1xuXG4gICAgICBjb25zb2xlLndhcm4oJ1NFTlQnKTtcbiAgICAgIC8vICB0aGlzLmRpc3BsYXlJbmZvID0gJ0NhbnQgZGV0ZWN0IGRvY3VtZW50ISc7XG4gICAgICB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IHRoaXMuX19zdWJzKFxuICAgICAgICB0aGlzLnNjYW5Qcm92aWRlci5zZW5kTG9nKHtcbiAgICAgICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICAgICAgRXhwZWN0ZWRPdXRwdXQ6IHt9LFxuICAgICAgICAgIFJlcXVlc3Q6IHtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbjogZGF0YVVybC5zcGxpdCgnLCcpWzFdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgUmVzcG9uc2U6IHtcbiAgICAgICAgICAgIFRyYW5zYWN0aW9uSUQ6IHV1aWR2NCgpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5fX3N1YnModGhpcy5sYXlvdXRQcm92aWRlci5icmVha3BvaW50JCkuc3Vic2NyaWJlKCh2OiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSAhdi5tYXRjaGVzO1xuICAgICAgY29uc29sZS5sb2coJ01OT0JJTEUnLCB0aGlzLmlzTW9iaWxlKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uID0gdGhpcy5pbWFnZUhhbmRsZXIuc3Vic2NyaWJlKFxuICAgICAgKHdlYmNhbUltYWdlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zdGFydFRpbWUgPT09IDApIHtcbiAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgIGlmICh3ZWJjYW1JbWFnZS5iYXNlNjQpIHtcbiAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcy5sb2FkID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCB7IGxvYWQgfSA9IHRoaXMuc2NhbkltYWdlVGltZXN0YW1wcztcbiAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IHRpbWUgLSBsb2FkO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLndhcm4oJ1RJTUUnLCBkaWZmKTtcbiAgICAgICAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcy5wdXNoKHdlYmNhbUltYWdlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTG9uZ1ZhbGlkYXRpb25FcnJvcih3ZWJjYW1JbWFnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgaWYgKHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGggPiA0ICYmICF0aGlzLnZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgIC8vIGdldCBsYXN0IDEwXG4gICAgICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3ZhbGlkYXRpb25UT1RBTF9VSScpO1xuICAgICAgICAgICAgY29uc29sZS50aW1lKCd2YWxpZGF0aW9uVE9UQUxfVUknKTtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlcyA9IHRoaXMuc2Nhbm5lZEltYWdlcy5zbGljZSgtNSk7XG4gICAgICAgICAgICAvLyBzZXQgaW1hZ2VzIHRvIDBcbiAgICAgICAgICAgIHRoaXMuc2Nhbm5lZEltYWdlcyA9IFtdO1xuICAgICAgICAgICAgY29uc29sZS5sb2coaW1hZ2VzKTtcblxuICAgICAgICAgICAgY29uc3QgaW1hZ2VzQXJyYXkgPSBpbWFnZXMubWFwKChtKSA9PiBtLmJhc2U2NC5zcGxpdCgnLCcpWzFdKTtcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQnVyc3REYXRhKGltYWdlc0FycmF5LCBpbWFnZXMsICd3b3JrZXInKTtcblxuICAgICAgICAgICAgY29uc29sZS50aW1lKCd2YWxpZGF0aW9uUE9TVCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUJpdG1hcEltYWdlKGJpdG1hcDogYW55KSB7XG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBiaXRtYXA7XG5cbiAgICBjb25zdCBvZmZzY3JlZW5TbWFsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIG9mZnNjcmVlblNtYWxsLndpZHRoID0gd2lkdGg7XG4gICAgb2Zmc2NyZWVuU21hbGwuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGNvbnN0IGN0eDogYW55ID0gb2Zmc2NyZWVuU21hbGwuZ2V0Q29udGV4dCgnYml0bWFwcmVuZGVyZXInKTtcblxuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5pbWFnZVNtb290aGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGN0eC50cmFuc2ZlckZyb21JbWFnZUJpdG1hcChiaXRtYXApO1xuICAgICAgYml0bWFwLmNsb3NlKCk7XG4gICAgICBjb25zdCBkYXRhID0gY3R4LmNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGF1dG9TY2FuKCkge1xuICAgIGNvbnN0IHNpZGUgPSB0aGlzLnNjYW5CbGFzdERhdGFbMF07XG4gICAgdGhpcy5pZFNjYW4gPSBudWxsO1xuICAgIHRoaXMuc2luZ2xlU2NhbihzaWRlKTtcbiAgfVxuXG4gIHNpbmdsZVNjYW4oc2lkZTogYW55KSB7XG4gICAgdGhpcy5zY2FuVHlwZSA9IHNpZGUuc2lkZTtcbiAgICB0aGlzLnByZXZpZXcgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRTaWRlID0gc2lkZTtcblxuICAgIHRoaXMuc2VsZWN0ZWRTaWRlLmltYWdlID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBwcml2YXRlIGdldEltZ0Jhc2U2NChudW06IGFueSkge1xuICAgIGNvbnNvbGUubG9nKCdHRVQgNjQnKTtcbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uaW1hZ2UuZGF0YVVybC5zcGxpdCgnLCcpWzFdO1xuICB9XG4gIHNjYW5CbGFzdEZpbmlzaCgpIHtcbiAgICBjb25zb2xlLnRpbWUoJ3VwbG9hZCcpO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdtb2JpbGUnKSB7XG4gICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7IGRhdGE6IHRoaXMuc2NhbkJsYXN0RGF0YSB9KTtcbiAgICAgIHRoaXMucmV0YWtlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICAvLyBjb25zdCBsb2FkaW5nID0gdGhpcy5kaWFsb2dzLmxvYWRpbmcoKTtcbiAgICB0aGlzLnNjYW5pbmcgPSB0cnVlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnNvbGUudGltZSgncGF5bG9hZCcpO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIERhdGFGaWVsZHM6IHtcbiAgICAgICAgRnJvbnRJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBGcm9udEltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEJhY2tJbWFnZVR5cGU6ICdiYXNlNjQnLFxuICAgICAgICBCYWNrSW1hZ2VDcm9wcGVkOiBmYWxzZSxcbiAgICAgICAgRnJvbnRJbWFnZTogdGhpcy5nZXRJbWdCYXNlNjQoMCksXG4gICAgICAgIEJhY2tJbWFnZTogdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlID8gdGhpcy5nZXRJbWdCYXNlNjQoMSkgOiBudWxsLFxuICAgICAgfSxcbiAgICAgIFNldHRpbmdzOiB7XG4gICAgICAgIFNob3VsZFZhbGlkYXRlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5Eb2N1bWVudEltYWdlOiB0cnVlLFxuICAgICAgICBTaG91bGRSZXR1cm5GYWNlSWZEZXRlY3RlZDogdHJ1ZSxcbiAgICAgICAgU2tpcEltYWdlU2l6ZUNoZWNrOiB0cnVlLFxuICAgICAgICBDYW5TdG9yZUltYWdlczogdGhpcy5zY2FuUHJvdmlkZXIuY2FuU3RvcmVJbWFnZXMsXG4gICAgICB9LFxuICAgICAgLy8gQ2FsbEJhY2tVcmw6ICdodHRwOi8vZGVtbzo1MDAwL3JlcG9ydC9leHRyYWN0ZWQvJyxcbiAgICB9O1xuICAgIGlmICghdGhpcy5zY2FuQmxhc3REYXRhWzFdLmltYWdlKSB7XG4gICAgICBwYXlsb2FkLlNldHRpbmdzLklnbm9yZUJhY2tJbWFnZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMubG9nRGF0YS5SZXF1ZXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSk7XG5cbiAgICBjb25zb2xlLnRpbWVFbmQoJ3BheWxvYWQnKTtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5ibGFzdFBvc3QocGF5bG9hZCkpLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGRhdGEuRGF0YTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCd1cGxvYWQnKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdwYXJzZScpO1xuICAgICAgICAvLyBkYXRhLkluZm9Db2RlID0gJzEwMDEnO1xuICAgICAgICB0aGlzLmxvZ0RhdGEuUmVzcG9uc2UgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgICAgLy9sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNjYW5pbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDEnKSB7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5sb2coJ1tFUlJPUl0gMTAwMScpO1xuICAgICAgICAgIHRoaXMuZXJyb3JDb2RlID0gJzEwMDEnO1xuICAgICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuSW5mb0NvZGUgPT09ICcxMDAyJykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbRVJST1JdIDEwMDInKTtcbiAgICAgICAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAyJztcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHRzICYmIGRhdGEuTWV0YWRhdGEubGVuZ3RoID4gMCAmJiBkYXRhLkluZm9Db2RlID09PSAnMTAwMCcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRXh0cmFjdGlvbiB0aW1lJywgZGF0YS5BbmFseXNpc1RpbWUpO1xuICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5Eb2N1bWVudHMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBEb2N1bWVudHMgfSA9IGRhdGEuSW1hZ2VEYXRhO1xuICAgICAgICAgICAgICB0aGlzLmltYWdlcyA9IERvY3VtZW50cy5tYXAoKGltYWdlOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGRhdGE6ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBEb2N1bWVudHNbaV0gfTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gdGhpcy5zY2FuUHJvdmlkZXIucGFyc2VCbGFzdChyZXN1bHRzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSRVMnLCB0aGlzLnJlc3VsdCk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHRoaXMucmVzdWx0Lm1vZGVsO1xuICAgICAgICAgICAgaWYgKGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2UpIHtcbiAgICAgICAgICAgICAgdGhpcy5tb2RlbC5fYXZhdGFyID1cbiAgICAgICAgICAgICAgICAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgZGF0YS5JbWFnZURhdGE/LkZhY2VJbWFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdNT0RFTCcsIHRoaXMubW9kZWwpO1xuXG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMuZW1pdCh7IHR5cGU6ICdzY2FuRmluaXNoJywgbW9kZWw6IHRoaXMubW9kZWwgfSk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRVJST1InKTtcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNjYW5CbGFzdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGVsZW1lbnQuaW1hZ2UgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgcHVibGljIHRyaWdnZXJTbmFwc2hvdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIubmV4dCgwKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRha2UoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSh7XG4gICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgIGltYWdlczogdGhpcy5pbWFnZXMsXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIHRoaXMuZGlhbG9nc1xuICAgICAgLnNjYW5TZWxmaWUoeyBhdmF0YXI6IHRoaXMubW9kZWwuX2F2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW9kZWwuX2F2YXRhciA9IHJlc3AuaW1hZ2VBc0RhdGFVcmw7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdmlkZW9SZWFkeShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBldmVudDtcbiAgICBpZiAodGhpcy5jYW1lcmFSZWFkeSAmJiAhdGhpcy5zY2FuSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXIubmV4dChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgKGFjdGlvbik9XCJzZWxmaWUoKVwiXG4gICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICBbaW1hZ2VzXT1cImltYWdlc1wiXG4gID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgPGZvb3Rlcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBmeEZsZXggY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldGFrZSgpXCI+XG4gICAgICAgIHt7IFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5yZVRha2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJlcnJvciB8fCBmb3JtLmludmFsaWRcIlxuICAgICAgICBmeEZsZXhcbiAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLnVzZURhdGFcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiAqbmdJZj1cIiFyZXN1bHQgJiYgZG9jdW1lbnRUeXBlU2VsZWN0ZWRcIj5cbiAgPGRpdiAjd3JhcGVyIGNsYXNzPVwid3JhcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIiFjYW1lcmFSZWFkeSAmJiAhcHJldmlld1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVycm9yXCI+XG4gICAgICA8YXBwLXdlYmNhbVxuICAgICAgICAqbmdJZj1cIiFwcmV2aWV3ICYmICFzY2FuaW5nXCJcbiAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgW2ltYWdlUXVhbGl0eV09XCIxXCJcbiAgICAgICAgI3dlYmNhbVxuICAgICAgICBmeEZsZXhcbiAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgW3RyaWdnZXJdPVwidHJpZ2dlclwiXG4gICAgICAgIFtpbWFnZUhhbmRsZXJdPVwiaW1hZ2VIYW5kbGVyXCJcbiAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgW2FsbG93Q2FtZXJhU3dpdGNoXT1cImFsbG93Q2FtZXJhU3dpdGNoXCJcbiAgICAgICAgW3ZpZGVvT3B0aW9uc109XCJ2aWRlb09wdGlvbnNcIlxuICAgICAgICBbc3dpdGNoQ2FtZXJhXT1cImNhbWVyYVByb3ZpZGVyLm5leHRXZWJjYW1PYnNlcnZhYmxlXCJcbiAgICAgICAgKGNhbWVyYVN3aXRjaGVkKT1cImNhbWVyYVdhc1N3aXRjaGVkKCRldmVudClcIlxuICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgW3dpZHRoXT1cIndpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJoZWlnaHRcIlxuICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgKHZpZGVvUmVhZHkpPVwidmlkZW9SZWFkeSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLXdlYmNhbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICBmeEZsZXhcbiAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgIHN0eWxlPVwiei1pbmRleDogMjA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUudW5hYmxlVG9EZXRlY3RJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvckNvZGUgPT09ICcxMDAxJ1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgQ291bGQgbm90IGNsYXNzaWZ5IHRoZSBnaXZlbiBvYmplY3QgYXMgYSBzdXBwb3J0ZWQgZG9jdW1lbnQuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIFNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIGV4dHJhY3Rpb24gZGF0YS4gUGxlYXNlIHRyeSBhZ2Fpbi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHVsICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMCdcIj5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUucGxhY2VJZENsb3NlVG9EZXZpY2VcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuaG9sZERvY3VtZW50U3RlYWR5XCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLm1ha2VTdXJlVGhlcmVBcmVOb0dsYXJlQW5kU2hhZG93c09uVGhlSWRcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjYW5QcmV2aWV3XCJcbiAgICAgICAgZnhGbGV4XG4gICAgICAgIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGZ4RmxleFxuICAgICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGZvb3Rlcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRpc3BsYXlJbmZvXCJcbiAgICAgIG5nQ2xhc3MubHQtc209XCJtb2JpbGVcIlxuICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgPlxuICAgICAge3sgZGlzcGxheUluZm8gfX1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDI2cHhcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMThweFwiXG4gICAgICAgICpuZ0lmPVwiaWRTY2FuICYmICFwcmV2aWV3ICYmIGNhbWVyYVJlYWR5XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdGUk9OVCdcIj5cbiAgICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAgICB7eyBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuY2FwdHVyZUZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgPGJ1dHRvbiBmeEZsZXggY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldHJ5KClcIj5cbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgIGZ4RmxleFxuICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY29udGludWUoKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNvbnRpbnVlV2l0aFNlbGVjdGVkSW1hZ2VcIlxuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvb3Rlcj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
587
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4vc2Nhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFJWix1QkFBdUIsRUFDdkIsS0FBSyxFQUlMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnRCxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBTWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7O0FBd0JsRCxNQUFNLE9BQU8sYUFDWCxTQUFRLGFBQWE7SUFnSHJCLFlBQ1MsRUFBcUIsRUFFcEIsSUFBWSxFQUNaLFNBQTJCLEVBQzVCLGNBQXdDLEVBQ3ZDLFFBQWtCLEVBQ2xCLGNBQThCLEVBRTlCLElBQWtCLENBQUMsOEJBQThCOztRQUV6RCxLQUFLLEVBQUUsQ0FBQztRQVZELE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRXBCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUM1QixtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFDdkMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixt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TyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ1Y7SUFDSCxDQUFDOzswR0F2cEJVLGFBQWE7OEZBQWIsYUFBYSw4WEN2RDFCLDIyS0FzTEE7MkZEL0hhLGFBQWE7a0JBTnpCLFNBQVM7K0JBQ0UsVUFBVSxtQkFHSCx1QkFBdUIsQ0FBQyxNQUFNO2tSQW1CdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxPQUFPO3NCQUFoQixNQUFNO2dCQThERSxVQUFVO3NCQUFsQixLQUFLO2dCQUtlLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFFYyxLQUFLO3NCQUFyQyxXQUFXO3VCQUFDLGNBQWM7Z0JBSzNCLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRWxlbWVudFJlZixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBOZ1pvbmUsXG4gIEluamVjdG9yLFxuICBIb3N0QmluZGluZyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSwgb2YsIGZvcmtKb2luLCBmcm9tLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBkZWxheSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgU2NhblByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL3NjYW4ucHJvdmlkZXInO1xuaW1wb3J0IHsgV2ViY2FtSW1hZ2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL2RvbWFpbi93ZWJjYW0taW1hZ2UnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9jb21wb25lbnRzL3dlYmNhbS9kb21haW4vd2ViY2FtLWluaXQtZXJyb3InO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2F1dGgucHJvdmlkZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBMYXlvdXRQcm92aWRlciB9IGZyb20gJy4uLy4uLy4uL3Byb3ZpZGVycy9sYXlvdXQucHJvdmlkZXInO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJV2luZG93IGV4dGVuZHMgV2luZG93IHtcbiAgVGV4dERldGVjdG9yOiBhbnk7XG59XG5cbmludGVyZmFjZSBUcm91Ymxlc2hvb3Rpbmcge1xuICBSZXF1ZXN0OiBhbnk7XG4gIFJlc3BvbnNlOiBhbnk7XG4gIEV4cGVjdGVkT3V0cHV0OiBhbnk7XG4gIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFRpbWVzdGFtcHMge1xuICB0aW1lOiBudW1iZXI7XG4gIGxvYWQ6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNjYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NjYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjYW5Db21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIHNjYW5CbGFzdERhdGE6IGFueSA9IFtcbiAgICB7XG4gICAgICB0aXRsZTogJ3Btcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuZnJvbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmZyb250RGVzY3JpcHRpb24nLFxuICAgICAgc2lkZTogJ0ZST05UJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAncG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5iYWNrRGVzY3JpcHRpb24nLFxuICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICBzaWRlOiAnQkFDSycsXG4gICAgfSxcbiAgXTtcbiAgQElucHV0KCkgdHlwZSA9ICdkZXNrdG9wJztcbiAgQElucHV0KCkgZGlhbG9nczogYW55O1xuICBAT3V0cHV0KCkgYWN0aW9ucyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgbWVkaWFEZXZpY2VzOiBhbnkgPSBbXTtcbiAgcHVibGljIGRldmljZUlkPzogc3RyaW5nO1xuICBwdWJsaWMgdmlkZW9PcHRpb25zOiBNZWRpYVRyYWNrQ29uc3RyYWludHMgPSB7XG4gICAgd2lkdGg6IDE5MjAsXG4gICAgaGVpZ2h0OiAxMDgwLFxuICAgIGZhY2luZ01vZGU6ICdlbnZpcm9ubWVudCcsXG4gIH07XG4gIGRpYWxvZ1JlZj86IE1hdERpYWxvZ1JlZjxhbnk+O1xuICBkYXRhOiBhbnk7XG4gIHN0YXJ0VGltZTogbnVtYmVyID0gMDtcbiAgaXNEZWJ1ZyA9IGZhbHNlO1xuICBtdWx0aXBsZVdlYmNhbXNBdmFpbGFibGUgPSBmYWxzZTtcbiAgc2NhbkluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgZmllbGRzOiBhbnk7XG4gIC8vIHdlYmNhbSBzbmFwc2hvdCB0cmlnZ2VyXG4gIGRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gIGltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgc2VsZWN0ZWRTaWRlOiBhbnk7XG4gIGltYWdlczogYW55O1xuICBzY2FuVGltZW91dDogYW55O1xuICBwcmV2aWV3OiBhbnkgPSBudWxsO1xuICBzY2FuVHlwZTogYW55O1xuICB3aWR0aDogYW55O1xuICBoZWlnaHQ6IGFueTtcbiAgdmlkZW9XaWR0aDogYW55O1xuICB2aWRlb0hlaWdodDogYW55O1xuICBlcnJvckNvZGUgPSAnMTAwMCc7XG4gIGRpc3BsYXlJbmZvOiBhbnkgPSAnUG9zaXRpb24gZG9jdW1lbnQgaW5zaWRlIHJlY3RhbmdlIGFuZCBob2xkIHN0ZWFkeS4nO1xuICBhbGxvd0NhbWVyYVN3aXRjaCA9IHRydWU7XG4gIHZlcmlmaWNhdGlvbkVycm9yU2VudCA9IGZhbHNlO1xuICBlcnJvciA9IGZhbHNlO1xuICBjYW1lcmFSZWFkeSA9IGZhbHNlO1xuICByZXN1bHQ6IGFueTtcbiAgc2NhbmluZyA9IGZhbHNlO1xuXG4gIGltYWdlSGFuZGxlciA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbG9nRGF0YTogVHJvdWJsZXNob290aW5nID0ge1xuICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICBSZXF1ZXN0OiBudWxsLFxuICAgIFJlc3BvbnNlOiBudWxsLFxuICAgIEV4cGVjdGVkT3V0cHV0OiBudWxsLFxuICB9O1xuICBkZWZhdWx0RGV2aWNlOiBhbnk7XG4gIHNjYW5EYXRhczogYW55ID0gW107XG4gIHNjYW5TaWRlOiBhbnk7XG4gIGlkU2NhbjogYW55ID0gbnVsbDtcbiAgd2ViY2FtSW1hZ2U/OiBXZWJjYW1JbWFnZTtcbiAgbW9kZWw6IGFueTtcbiAgdmFsaWRhdGlvbiA9IGZhbHNlO1xuICBzY2FubmVkSW1hZ2VzOiBhbnlbXSA9IFtdO1xuICBzY2FuRGVsYXk6IGFueSA9IDA7XG4gIHB1YmxpYyB0cmlnZ2VyOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG4gIC8vIHN3aXRjaCB0byBuZXh0IC8gcHJldmlvdXMgLyBzcGVjaWZpYyB3ZWJjYW07IHRydWUvZmFsc2U6IGZvcndhcmQvYmFja3dhcmRzLCBzdHJpbmc6IGRldmljZUlkXG4gIHB1YmxpYyBuZXh0V2ViY2FtOiBTdWJqZWN0PGJvb2xlYW4gfCBzdHJpbmc+ID0gbmV3IFN1YmplY3Q8XG4gICAgYm9vbGVhbiB8IHN0cmluZ1xuICA+KCk7XG4gIGltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIGlzTW9iaWxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dEaWFsb2cgPSBmYWxzZTtcbiAgc2NhbkltYWdlVGltZXN0YW1wczogVGltZXN0YW1wcyA9IHtcbiAgICB0aW1lOiAwLFxuICAgIGxvYWQ6IDAsXG4gIH07XG4gIEBWaWV3Q2hpbGQoJ3dyYXBlcicpIHdyYXBlcj86IEVsZW1lbnRSZWY7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tb2JpbGUnKSBnZXQgY2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgb25SZXNpemUoKSB7XG4gICAgaWYgKHRoaXMud3JhcGVyKSB7XG4gICAgICB0aGlzLndpZHRoID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy53cmFwZXIubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCB2aWRlbyA9IHRoaXMud3JhcGVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7XG4gICAgICAgIGlmICh2aWRlbykge1xuICAgICAgICAgIC8vICAgY29uc29sZS5sb2codmlkZW8uY2xpZW50V2lkdGgsIHZpZGVvLmNsaWVudEhlaWdodCk7XG4gICAgICAgICAgdGhpcy52aWRlb1dpZHRoID0gdmlkZW8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgdGhpcy52aWRlb0hlaWdodCA9IHZpZGVvLmNsaWVudEhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICBzY2FuUHJvdmlkZXIhOiBTY2FuUHJvdmlkZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcblxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgbGF5b3V0UHJvdmlkZXI6IExheW91dFByb3ZpZGVyLFxuXG4gICAgcHJpdmF0ZSBhdXRoOiBBdXRoUHJvdmlkZXIgLy8gcHJpdmF0ZSBhcGk6IFNlcnZlclByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zY2FuUHJvdmlkZXIgPSB0aGlzLmluamVjdG9yLmdldChTY2FuUHJvdmlkZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldExvZ0RhdGEoKSB7XG4gICAgdGhpcy5sb2dEYXRhID0ge1xuICAgICAgUmVxdWVzdDogbnVsbCxcbiAgICAgIFJlc3BvbnNlOiBudWxsLFxuICAgICAgRXhwZWN0ZWRPdXRwdXQ6IG51bGwsXG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgfTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY2FuVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2NhblRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pbWFnZUhhbmRsZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ0RFU1RST1hZJyk7XG5cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuICB9XG4gIGluaXQoKSB7XG4gICAgdGhpcy5hdXRoLmFjY2VzVG9rZW4uc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZXNldExvZ0RhdGEoKTtcbiAgICAvLyB0aGlzLnJlc3VsdD10cnVlO1xuICAgIC8vIHRoaXMucmVzdWx0ID17fTtcblxuICAgIGNvbnNvbGUubG9nKCdJTklUIFNDQU4nKTtcbiAgfVxuXG4gIGNhbWVyYU9mZihldjogYW55KSB7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IGZhbHNlO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29udGludWUoKSB7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IHRoaXMud2ViY2FtSW1hZ2U7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNpZGUuc2lkZSA9PT0gJ0ZST05UJykge1xuICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBzY2FuKCkge1xuICAgIC8vIHRoaXMudHJpZ2dlclNuYXBzaG90KCk7XG4gICAgLy8gICB0aGlzLnNjYW5EYXRhc1swXSA9IHRydWU7XG4gICAgLy8gaWYgKHRoaXMuc2NhblRpbWVvdXQpIHtcbiAgICAvLyAgIGNsZWFyVGltZW91dCh0aGlzLnNjYW5UaW1lb3V0KTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5zY2FuVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgdGhpcy5zY2FuKCk7XG4gICAgLy8gfSwgMSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlSW1hZ2Uod2ViY2FtSW1hZ2U6IFdlYmNhbUltYWdlKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5sb2coJ1tyZWNlaXZlZCB3ZWJjYW0gaW1hZ2VdJywgd2ViY2FtSW1hZ2UpO1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygndGltZTonLCBkaWZmKTtcbiAgICAgICAgdGhpcy5zY2FuRGVsYXkgPSBkaWZmO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA9IHRpbWU7XG5cbiAgICAgIGlmICh3ZWJjYW1JbWFnZS5pbWFnZURhdGEpIHtcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzLnB1c2god2ViY2FtSW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnc2NhbicpO1xuICAgICAgICBjb25zb2xlLnRpbWUoJ3NjYW4nKTtcbiAgICAgICAgLy8gZ2V0IGxhc3QgMTBcbiAgICAgICAgY29uc29sZS5sb2coJ0NBUFRVUkVEOicsIHRoaXMuc2Nhbm5lZEltYWdlcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgICAgICAvLyBzZXQgaW1hZ2VzIHRvIDBcbiAgICAgICAgdGhpcy5zY2FubmVkSW1hZ2VzID0gW107XG4gICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5pbWFnZVJlc2l6ZWQuc3BsaXQoJywnKVsxXSk7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5oYW5kbGVCdXJzdERhdGEoaW1hZ2VzQXJyYXksIGltYWdlcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNhbWVyYVJlYWR5KSB7XG4gICAgICAgIHRoaXMudHJpZ2dlci5uZXh0KG5ldyBEYXRlKCkuZ2V0VGltZSgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQnVyc3REYXRhKFxuICAgIGltYWdlc0FycmF5OiBhbnksXG4gICAgaW1hZ2VzOiBhbnksXG4gICAgdHlwZTogJ3dvcmtlcicgfCAncGxhaW4nID0gJ3BsYWluJ1xuICApIHtcbiAgICB0aGlzLl9fc3Vicyh0aGlzLnNjYW5Qcm92aWRlci5idXJzdChpbWFnZXNBcnJheSkpLnN1YnNjcmliZSgocmVzcDogYW55KSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXlJbmZvID0gcmVzcC5JbmZvO1xuICAgICAgY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uUE9TVCcpO1xuICAgICAgY29uc29sZS5sb2coJ0FuYWx5c2lzVGltZScsIHJlc3AuQW5hbHlzaXNUaW1lKTtcbiAgICAgIGNvbnN0IHsgRG9jVHlwZSwgU2VyaWVzLCBTaWRlLCBJbmZvQ29kZSB9ID0gcmVzcDtcblxuICAgICAgLy8gaWYgKEluZm9Db2RlID09PSAnMTAwNicgJiYgdGhpcy5pZFNjYW4pIHtcbiAgICAgIC8vICAgdGhpcy5oYW5kbGVMb25nVmFsaWRhdGlvbkVycm9yKGltYWdlKTtcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKHJlc3AuVmFsaWRhdGVkKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbU0NBTk5FRCBJTkRFWF0nLCByZXNwLkluZGV4KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbWFnZSA9IGltYWdlc1tyZXNwLkluZGV4XTtcblxuICAgICAgICAvLyB0aGlzLnByZXZpZXcgPSB0aGlzLndlYmNhbUltYWdlLmltYWdlQXNEYXRhVXJsO1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBsZXQgaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuICAgICAgICBpZiAodHlwZSA9PSAnd29ya2VyJykge1xuICAgICAgICAgIGNvbnN0IGRhdGFVcmwgPSB0aGlzLmhhbmRsZUJpdG1hcEltYWdlKHNlbGVjdGVkSW1hZ2UuYml0bWFwKTtcbiAgICAgICAgICBpbWFnZSA9IHsgZGF0YVVybCB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEluZm9Db2RlID09PSAnMTAwNycpIHtcbiAgICAgICAgICAvLyBGb3IgSUQgYXNrIGZvciBvdGhlciBzaWRlXG4gICAgICAgICAgaWYgKFNpZGUgPT09ICdGUk9OVCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdERhdGFbMV0uaW1hZ2UgPSBpbWFnZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlICYmIHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdVUExPQUQnKTtcbiAgICAgICAgICAgIGlmICh0eXBlID09ICd3b3JrZXInKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNjYW5CbGFzdEZpbmlzaCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBTaWRlID09PSAnRlJPTlQnID8gMSA6IDA7XG5cbiAgICAgICAgICAgIHRoaXMuc2luZ2xlU2Nhbih0aGlzLnNjYW5CbGFzdERhdGFbbnVtXSk7XG4gICAgICAgICAgICB0aGlzLnNjYW4oKTtcbiAgICAgICAgICAgIHRoaXMuaWRTY2FuID0gdGhpcy5zY2FuQmxhc3REYXRhW251bV0uc2lkZTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dEaWFsb2cpIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ3MudHVybkRvY3VtZW50KHRoaXMuaWRTY2FuKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdJRCBTSURFJywgdGhpcy5pZFNjYW4pO1xuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlJbmZvID0gJ1BsZWFzZSB0dXJuIHRoZSBkb2N1bWVudCBvdmVyISc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RGF0YVswXS5pbWFnZSA9IGltYWdlO1xuICAgICAgICAgIGNvbnNvbGUud2FybignVVBMT0FEJyk7XG4gICAgICAgICAgaWYgKHR5cGUgPT0gJ3dvcmtlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VIYW5kbGVyLm5leHQoeyB0eXBlOiAnc3RvcCcgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2NhbkJsYXN0RmluaXNoKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcblxuICAgICAgICAvLyB0aGlzLnNjYW5CbGFzdERhdGFbMF0uaW1hZ2UgPSBzZWxlY3RlZEltYWdlO1xuXG4gICAgICAgIC8vdGhpcy5zY2FuQmxhc3RGaW5pc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGlvbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUluaXRFcnJvcihlcnJvcjogV2ViY2FtSW5pdEVycm9yKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xuICB9XG5cbiAgZ2V0IHNjYW5CbGFzdENhblVwbG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2FuQmxhc3REYXRhWzBdLmltYWdlID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG4gIHB1YmxpYyBjYW1lcmFXYXNTd2l0Y2hlZChkZXZpY2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1thY3RpdmUgZGV2aWNlXScsIGRldmljZUlkKTtcbiAgICB0aGlzLmRldmljZUlkID0gZGV2aWNlSWQ7XG4gICAgdGhpcy5jYW1lcmFSZWFkeSA9IHRydWU7XG4gICAgdGhpcy5kZWZhdWx0RGV2aWNlID0gZGV2aWNlSWQ7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgIHRoaXMuc2NhbigpO1xuICAgIH0sIDMwMCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5leHRXZWJjYW1PYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLm5leHRXZWJjYW0uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3IoaW1nOiBhbnkpIHtcbiAgICAvLyBzYXZlIGN1cnJlbnQgaW1hZ2UgYWZ0ZXIgMTBzZWNcblxuICAgIGNvbnN0IGRpZmYgPSAoRGF0ZS5ub3coKSAtIHRoaXMuc3RhcnRUaW1lKSAvIDEwMDA7XG5cbiAgICBpZiAoXG4gICAgICBkaWZmID4gMTUgJiZcbiAgICAgICF0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCAmJlxuICAgICAgdGhpcy5zY2FuUHJvdmlkZXIuY29uZmlnLmRldmVsb3BtZW50XG4gICAgKSB7XG4gICAgICB0aGlzLnZlcmlmaWNhdGlvbkVycm9yU2VudCA9IHRydWU7XG4gICAgICBjb25zdCBkYXRhVXJsID0gdGhpcy5oYW5kbGVCaXRtYXBJbWFnZShpbWcuYml0bWFwKTtcblxuICAgICAgY29uc29sZS53YXJuKCdTRU5UJyk7XG4gICAgICAvLyAgdGhpcy5kaXNwbGF5SW5mbyA9ICdDYW50IGRldGVjdCBkb2N1bWVudCEnO1xuICAgICAgdGhpcy5sb2dEYXRhLlJlcXVlc3QgPSB0aGlzLl9fc3VicyhcbiAgICAgICAgdGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh7XG4gICAgICAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgICAgICAgIEV4cGVjdGVkT3V0cHV0OiB7fSxcbiAgICAgICAgICBSZXF1ZXN0OiB7XG4gICAgICAgICAgICB2ZXJpZmljYXRpb246IGRhdGFVcmwuc3BsaXQoJywnKVsxXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFJlc3BvbnNlOiB7XG4gICAgICAgICAgICBUcmFuc2FjdGlvbklEOiB1dWlkdjQoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuYXV0b1NjYW4oKTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMubGF5b3V0UHJvdmlkZXIuYnJlYWtwb2ludCQpLnN1YnNjcmliZSgodjogYW55KSA9PiB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gIXYubWF0Y2hlcztcbiAgICAgIGNvbnNvbGUubG9nKCdNTk9CSUxFJywgdGhpcy5pc01vYmlsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmltYWdlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuaW1hZ2VIYW5kbGVyLnN1YnNjcmliZShcbiAgICAgICh3ZWJjYW1JbWFnZTogYW55KSA9PiB7XG4gICAgICAgIC8vIHJldHVybjtcbiAgICAgICAgaWYgKHRoaXMuc3RhcnRUaW1lID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICBpZiAod2ViY2FtSW1hZ2UuYmFzZTY0KSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHMubG9hZCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBsb2FkIH0gPSB0aGlzLnNjYW5JbWFnZVRpbWVzdGFtcHM7XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSB0aW1lIC0gbG9hZDtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS53YXJuKCdUSU1FJywgZGlmZik7XG4gICAgICAgICAgICAgIHRoaXMuc2NhbkRlbGF5ID0gZGlmZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zY2FuSW1hZ2VUaW1lc3RhbXBzLmxvYWQgPSB0aW1lO1xuXG4gICAgICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMucHVzaCh3ZWJjYW1JbWFnZSk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUxvbmdWYWxpZGF0aW9uRXJyb3Iod2ViY2FtSW1hZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5uZWRJbWFnZXMubGVuZ3RoID4gNCAmJiAhdGhpcy52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAvLyBnZXQgbGFzdCAxMFxuICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCd2YWxpZGF0aW9uVE9UQUxfVUknKTtcbiAgICAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblRPVEFMX1VJJyk7XG4gICAgICAgICAgICBjb25zdCBpbWFnZXMgPSB0aGlzLnNjYW5uZWRJbWFnZXMuc2xpY2UoLTUpO1xuICAgICAgICAgICAgLy8gc2V0IGltYWdlcyB0byAwXG4gICAgICAgICAgICB0aGlzLnNjYW5uZWRJbWFnZXMgPSBbXTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGltYWdlcyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGltYWdlc0FycmF5ID0gaW1hZ2VzLm1hcCgobSkgPT4gbS5iYXNlNjQuc3BsaXQoJywnKVsxXSk7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb24gPSB0cnVlO1xuXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUJ1cnN0RGF0YShpbWFnZXNBcnJheSwgaW1hZ2VzLCAnd29ya2VyJyk7XG5cbiAgICAgICAgICAgIGNvbnNvbGUudGltZSgndmFsaWRhdGlvblBPU1QnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVCaXRtYXBJbWFnZShiaXRtYXA6IGFueSkge1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gYml0bWFwO1xuXG4gICAgY29uc3Qgb2Zmc2NyZWVuU21hbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBvZmZzY3JlZW5TbWFsbC53aWR0aCA9IHdpZHRoO1xuICAgIG9mZnNjcmVlblNtYWxsLmhlaWdodCA9IGhlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IG9mZnNjcmVlblNtYWxsLmdldENvbnRleHQoJ2JpdG1hcHJlbmRlcmVyJyk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICBjdHgudHJhbnNmZXJGcm9tSW1hZ2VCaXRtYXAoYml0bWFwKTtcbiAgICAgIGJpdG1hcC5jbG9zZSgpO1xuICAgICAgY29uc3QgZGF0YSA9IGN0eC5jYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhdXRvU2NhbigpIHtcbiAgICBjb25zdCBzaWRlID0gdGhpcy5zY2FuQmxhc3REYXRhWzBdO1xuICAgIHRoaXMuaWRTY2FuID0gbnVsbDtcbiAgICB0aGlzLnNpbmdsZVNjYW4oc2lkZSk7XG4gIH1cblxuICBzaW5nbGVTY2FuKHNpZGU6IGFueSkge1xuICAgIHRoaXMuc2NhblR5cGUgPSBzaWRlLnNpZGU7XG4gICAgdGhpcy5wcmV2aWV3ID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkU2lkZSA9IHNpZGU7XG5cbiAgICB0aGlzLnNlbGVjdGVkU2lkZS5pbWFnZSA9IG51bGw7XG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5zY2FuQmxhc3REYXRhWzFdLmRpc2FibGVkID0gZmFsc2U7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVzaXplKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbWdCYXNlNjQobnVtOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZygnR0VUIDY0Jyk7XG4gICAgcmV0dXJuIHRoaXMuc2NhbkJsYXN0RGF0YVtudW1dLmltYWdlLmRhdGFVcmwuc3BsaXQoJywnKVsxXTtcbiAgfVxuICBzY2FuQmxhc3RGaW5pc2goKSB7XG4gICAgY29uc29sZS50aW1lKCd1cGxvYWQnKTtcbiAgICBpZiAodGhpcy50eXBlID09PSAnbW9iaWxlJykge1xuICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoeyBkYXRhOiB0aGlzLnNjYW5CbGFzdERhdGEgfSk7XG4gICAgICB0aGlzLnJldGFrZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmlkU2NhbiA9IG51bGw7XG4gICAgLy8gY29uc3QgbG9hZGluZyA9IHRoaXMuZGlhbG9ncy5sb2FkaW5nKCk7XG4gICAgdGhpcy5zY2FuaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICBjb25zb2xlLnRpbWUoJ3BheWxvYWQnKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBBY2NlcHRUZXJtc0FuZENvbmRpdGlvbnM6IHRydWUsXG4gICAgICBEYXRhRmllbGRzOiB7XG4gICAgICAgIEZyb250SW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgRnJvbnRJbWFnZUNyb3BwZWQ6IGZhbHNlLFxuICAgICAgICBCYWNrSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgQmFja0ltYWdlQ3JvcHBlZDogZmFsc2UsXG4gICAgICAgIEZyb250SW1hZ2U6IHRoaXMuZ2V0SW1nQmFzZTY0KDApLFxuICAgICAgICBCYWNrSW1hZ2U6IHRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSA/IHRoaXMuZ2V0SW1nQmFzZTY0KDEpIDogbnVsbCxcbiAgICAgIH0sXG4gICAgICBTZXR0aW5nczoge1xuICAgICAgICBTaG91bGRWYWxpZGF0ZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRG9jdW1lbnRJbWFnZTogdHJ1ZSxcbiAgICAgICAgU2hvdWxkUmV0dXJuRmFjZUlmRGV0ZWN0ZWQ6IHRydWUsXG4gICAgICAgIFNraXBJbWFnZVNpemVDaGVjazogdHJ1ZSxcbiAgICAgICAgQ2FuU3RvcmVJbWFnZXM6IHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzLFxuICAgICAgfSxcbiAgICAgIC8vIENhbGxCYWNrVXJsOiAnaHR0cDovL2RlbW86NTAwMC9yZXBvcnQvZXh0cmFjdGVkLycsXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuc2NhbkJsYXN0RGF0YVsxXS5pbWFnZSkge1xuICAgICAgcGF5bG9hZC5TZXR0aW5ncy5JZ25vcmVCYWNrSW1hZ2UgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmxvZ0RhdGEuUmVxdWVzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGF5bG9hZCkpO1xuXG4gICAgY29uc29sZS50aW1lRW5kKCdwYXlsb2FkJyk7XG4gICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuYmxhc3RQb3N0KHBheWxvYWQpKS5zdWJzY3JpYmUoXG4gICAgICAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coZGF0YSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBkYXRhLkRhdGE7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgndXBsb2FkJyk7XG4gICAgICAgIGNvbnNvbGUudGltZSgncGFyc2UnKTtcbiAgICAgICAgLy8gZGF0YS5JbmZvQ29kZSA9ICcxMDAxJztcbiAgICAgICAgdGhpcy5sb2dEYXRhLlJlc3BvbnNlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIC8vbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zY2FuaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGRhdGEuSW5mb0NvZGUgPT09ICcxMDAxJykge1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdbRVJST1JdIDEwMDEnKTtcbiAgICAgICAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAxJztcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcblxuICAgICAgICAgIHRoaXMucHJldmlldyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLkluZm9Db2RlID09PSAnMTAwMicpIHtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnW0VSUk9SXSAxMDAyJyk7XG4gICAgICAgICAgdGhpcy5lcnJvckNvZGUgPSAnMTAwMic7XG4gICAgICAgICAgLy8gdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzdWx0cyAmJiBkYXRhLk1ldGFkYXRhLmxlbmd0aCA+IDAgJiYgZGF0YS5JbmZvQ29kZSA9PT0gJzEwMDAnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0V4dHJhY3Rpb24gdGltZScsIGRhdGEuQW5hbHlzaXNUaW1lKTtcbiAgICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgRG9jdW1lbnRzIH0gPSBkYXRhLkltYWdlRGF0YTtcbiAgICAgICAgICAgICAgdGhpcy5pbWFnZXMgPSBEb2N1bWVudHMubWFwKChpbWFnZTogYW55LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBkYXRhOiAnZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwnICsgRG9jdW1lbnRzW2ldIH07XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlc3VsdCA9IHRoaXMuc2NhblByb3ZpZGVyLnBhcnNlQmxhc3QocmVzdWx0cyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUkVTJywgdGhpcy5yZXN1bHQpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICAgICAgICAgIHRoaXMubW9kZWwgPSB0aGlzLnJlc3VsdC5tb2RlbDtcbiAgICAgICAgICAgIGlmIChkYXRhLkltYWdlRGF0YT8uRmFjZUltYWdlKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWwuX2F2YXRhciA9XG4gICAgICAgICAgICAgICAgJ2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJyArIGRhdGEuSW1hZ2VEYXRhPy5GYWNlSW1hZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTU9ERUwnLCB0aGlzLm1vZGVsKTtcblxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zLmVtaXQoe1xuICAgICAgICAgICAgICB0eXBlOiAnc2NhbkZpbmlzaCcsXG4gICAgICAgICAgICAgIG1vZGVsOiB0aGlzLm1vZGVsLFxuICAgICAgICAgICAgICByZXN1bHRzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnRVJST1InKTtcbiAgICAgICAgICAvLyB0aGlzLnNjYW5TaWRlID0gMDtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIC8vIHRoaXMuZG9jdW1lbnRUeXBlU2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHRoaXMucmV0cnkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ3BhcnNlJyk7XG4gICAgICB9LFxuICAgICAgKGVycikgPT4ge1xuICAgICAgICAvLyBsb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgIC8vIHRoaXMuc2NhblNpZGUgPSAwO1xuICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2aWV3ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZXRyeSgpIHtcbiAgICB0aGlzLnByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnZhbGlkYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9ICcxMDAwJztcbiAgICB0aGlzLnJlc3VsdCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLmRvY3VtZW50VHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNjYW5CbGFzdERhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICAgIGVsZW1lbnQuaW1hZ2UgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmF1dG9TY2FuKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgcHVibGljIHRyaWdnZXJTbmFwc2hvdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIubmV4dCgwKTtcbiAgfVxuXG4gIHB1YmxpYyByZXRha2UoKSB7XG4gICAgdGhpcy52YWxpZGF0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2aWV3ID0gZmFsc2U7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVzdWx0ID0gZmFsc2U7XG4gICAgdGhpcy5zY2FuU2lkZSA9IDA7XG5cbiAgICB0aGlzLmltYWdlVmVyaWZpZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNjYW5EYXRhcyA9IFtdO1xuICAgIHRoaXMuc2NhbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VzID0gW107XG4gICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgdGhpcy5kb2N1bWVudFR5cGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2NhbkJsYXN0RGF0YS5mb3JFYWNoKChtOiBhbnkpID0+IHtcbiAgICAgIG0uaW1hZ2UgPSBudWxsO1xuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvU2NhbigpO1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICB1c2UoKSB7XG4gICAgLy8gc2F2ZSBpbWFnZXM/P1xuXG4gICAgaWYgKHRoaXMuc2NhblByb3ZpZGVyLmNhblN0b3JlSW1hZ2VzKSB7XG4gICAgICB0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubW9kZWwpKTtcbiAgICAgIGlmICh0aGlzLmxvZ0RhdGEuRXhwZWN0ZWRPdXRwdXQ/Ll9hdmF0YXIpIHtcbiAgICAgICAgZGVsZXRlIHRoaXMubG9nRGF0YS5FeHBlY3RlZE91dHB1dC5fYXZhdGFyO1xuICAgICAgfVxuICAgICAgdGhpcy5fX3N1YnModGhpcy5zY2FuUHJvdmlkZXIuc2VuZExvZyh0aGlzLmxvZ0RhdGEpKS5zdWJzY3JpYmUoKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubG9nRGF0YSk7XG4gICAgfVxuICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSh7XG4gICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgIGltYWdlczogdGhpcy5pbWFnZXMsXG4gICAgfSk7XG4gIH1cbiAgc2VsZmllKCkge1xuICAgIHRoaXMuZGlhbG9nc1xuICAgICAgLnNjYW5TZWxmaWUoeyBhdmF0YXI6IHRoaXMubW9kZWwuX2F2YXRhciB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3A6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzcCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHJlc3ApO1xuICAgICAgICAgIGlmICh0aGlzLnNjYW5Qcm92aWRlci5lbmFibGVWZXJpZmljYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VWZXJpZmllZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW9kZWwuX2F2YXRhciA9IHJlc3AuaW1hZ2VBc0RhdGFVcmw7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgdmlkZW9SZWFkeShldmVudDogYm9vbGVhbikge1xuICAgIHRoaXMuY2FtZXJhUmVhZHkgPSBldmVudDtcbiAgICBpZiAodGhpcy5jYW1lcmFSZWFkeSAmJiAhdGhpcy5zY2FuSW5Qcm9ncmVzcykge1xuICAgICAgdGhpcy5zY2FuSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRyaWdnZXIubmV4dChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxzZWN0aW9uICpuZ0lmPVwicmVzdWx0XCI+XG4gIDxuZ3gtc2Nhbi1yZXN1bHRzXG4gICAgKGFjdGlvbik9XCJzZWxmaWUoKVwiXG4gICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICBbaW1hZ2VzXT1cImltYWdlc1wiXG4gID48L25neC1zY2FuLXJlc3VsdHM+XG5cbiAgPGZvb3Rlcj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPGJ1dHRvbiBmeEZsZXggY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldGFrZSgpXCI+XG4gICAgICAgIHt7IFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5yZVRha2VcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJlcnJvciB8fCBmb3JtLmludmFsaWRcIlxuICAgICAgICBmeEZsZXhcbiAgICAgICAgY2xhc3M9XCJtbC00XCJcbiAgICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgICAgKGNsaWNrKT1cInVzZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLnVzZURhdGFcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZm9vdGVyPlxuPC9zZWN0aW9uPlxuXG48c2VjdGlvbiAqbmdJZj1cIiFyZXN1bHQgJiYgZG9jdW1lbnRUeXBlU2VsZWN0ZWRcIj5cbiAgPGRpdiAjd3JhcGVyIGNsYXNzPVwid3JhcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRpbmdcIiAqbmdJZj1cIiFjYW1lcmFSZWFkeSAmJiAhcHJldmlld1wiPlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWVycm9yXCI+XG4gICAgICA8YXBwLXdlYmNhbVxuICAgICAgICAqbmdJZj1cIiFwcmV2aWV3ICYmICFzY2FuaW5nXCJcbiAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgW2ltYWdlUXVhbGl0eV09XCIxXCJcbiAgICAgICAgI3dlYmNhbVxuICAgICAgICBmeEZsZXhcbiAgICAgICAgdHlwZT1cImRvY3VtZW50XCJcbiAgICAgICAgW3RyaWdnZXJdPVwidHJpZ2dlclwiXG4gICAgICAgIFtpbWFnZUhhbmRsZXJdPVwiaW1hZ2VIYW5kbGVyXCJcbiAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJoYW5kbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgW2FsbG93Q2FtZXJhU3dpdGNoXT1cImFsbG93Q2FtZXJhU3dpdGNoXCJcbiAgICAgICAgW3ZpZGVvT3B0aW9uc109XCJ2aWRlb09wdGlvbnNcIlxuICAgICAgICBbc3dpdGNoQ2FtZXJhXT1cImNhbWVyYVByb3ZpZGVyLm5leHRXZWJjYW1PYnNlcnZhYmxlXCJcbiAgICAgICAgKGNhbWVyYVN3aXRjaGVkKT1cImNhbWVyYVdhc1N3aXRjaGVkKCRldmVudClcIlxuICAgICAgICAoaW5pdEVycm9yKT1cImhhbmRsZUluaXRFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgW3dpZHRoXT1cIndpZHRoXCJcbiAgICAgICAgW2hlaWdodF09XCJoZWlnaHRcIlxuICAgICAgICAoZGVzdHJveWVkKT1cImNhbWVyYU9mZigkZXZlbnQpXCJcbiAgICAgICAgKHZpZGVvUmVhZHkpPVwidmlkZW9SZWFkeSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXBwLXdlYmNhbT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICBmeEZsZXhcbiAgICAgIGNsYXNzPVwicHJldmlld0RhdGFcIlxuICAgICAgKm5nSWY9XCJwcmV2aWV3XCJcbiAgICAgIHN0eWxlPVwiei1pbmRleDogMjA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZXJyb3JcIiAqbmdJZj1cImVycm9yXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZXJyb3Jfb3V0bGluZTwvbWF0LWljb25cbiAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm1sLThcIj57e1xuICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUudW5hYmxlVG9EZXRlY3RJZFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvckNvZGUgPT09ICcxMDAxJ1wiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgQ291bGQgbm90IGNsYXNzaWZ5IHRoZSBnaXZlbiBvYmplY3QgYXMgYSBzdXBwb3J0ZWQgZG9jdW1lbnQuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMidcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIFNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIGV4dHJhY3Rpb24gZGF0YS4gUGxlYXNlIHRyeSBhZ2Fpbi5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHVsICpuZ0lmPVwiZXJyb3JDb2RlID09PSAnMTAwMCdcIj5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUucGxhY2VJZENsb3NlVG9EZXZpY2VcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmVuc3VyZVN1ZmZpY2llbnRMaWdodFwiXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuaG9sZERvY3VtZW50U3RlYWR5XCJcbiAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5tYWtlU3VyZUFsbEVkZ2VzT2ZUaGVJZEFyZVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLm1ha2VTdXJlVGhlcmVBcmVOb0dsYXJlQW5kU2hhZG93c09uVGhlSWRcIlxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjYW5QcmV2aWV3XCJcbiAgICAgICAgZnhGbGV4XG4gICAgICAgIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgKm5nSWY9XCIhZXJyb3IgJiYgIXNjYW5pbmdcIlxuICAgICAgPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJweS0xNlwiIHN0eWxlPVwiZm9udC1zaXplOiAxNnB4XCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIFwicG1zLmRpYWxvZ3MuY29tcG9uZW50cy5zY2FuUHJvZmlsZS5lbnN1cmVBbGxUZXh0c0FyZVZpc2libGVcIlxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGZ4RmxleFxuICAgICAgICAgIGNsYXNzPVwiaW1hZ2VcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIid1cmwoJyArIHByZXZpZXcgKyAnKSdcIlxuICAgICAgICA+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGZvb3Rlcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRpc3BsYXlJbmZvXCJcbiAgICAgIG5nQ2xhc3MubHQtc209XCJtb2JpbGVcIlxuICAgICAgKm5nSWY9XCIhcHJldmlldyAmJiBjYW1lcmFSZWFkeVwiXG4gICAgPlxuICAgICAge3sgZGlzcGxheUluZm8gfX1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDI2cHhcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtc2l6ZTogMThweFwiXG4gICAgICAgICpuZ0lmPVwiaWRTY2FuICYmICFwcmV2aWV3ICYmIGNhbWVyYVJlYWR5XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlkU2NhbiA9PT0gJ0JBQ0snXCI+XG4gICAgICAgICAgVHVybiBkb2N1bWVudCBhbmQ6XG4gICAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNhcHR1cmVCYWNrXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpZFNjYW4gPT09ICdGUk9OVCdcIj5cbiAgICAgICAgICBUdXJuIGRvY3VtZW50IGFuZDpcbiAgICAgICAgICB7eyBcInBtcy5kaWFsb2dzLmNvbXBvbmVudHMuc2NhblByb2ZpbGUuY2FwdHVyZUZyb250XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiICpuZ0lmPVwicHJldmlld1wiPlxuICAgICAgPGJ1dHRvbiBmeEZsZXggY2xhc3M9XCJtci00XCIgbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cInJldHJ5KClcIj5cbiAgICAgICAge3sgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLnJldHJ5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJlcnJvclwiXG4gICAgICAgIGZ4RmxleFxuICAgICAgICBjbGFzcz1cIm1sLTRcIlxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY29udGludWUoKVwiXG4gICAgICA+XG4gICAgICAgIHt7XG4gICAgICAgICAgXCJwbXMuZGlhbG9ncy5jb21wb25lbnRzLnNjYW5Qcm9maWxlLmNvbnRpbnVlV2l0aFNlbGVjdGVkSW1hZ2VcIlxuICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Zvb3Rlcj5cbjwvc2VjdGlvbj5cbiJdfQ==
|
package/fesm2015/ngx-scandoc.mjs
CHANGED
|
@@ -2792,7 +2792,11 @@ class ScanComponent extends BaseComponent {
|
|
|
2792
2792
|
'data:image/jpeg;base64,' + ((_c = data.ImageData) === null || _c === void 0 ? void 0 : _c.FaceImage);
|
|
2793
2793
|
}
|
|
2794
2794
|
console.log('MODEL', this.model);
|
|
2795
|
-
this.actions.emit({
|
|
2795
|
+
this.actions.emit({
|
|
2796
|
+
type: 'scanFinish',
|
|
2797
|
+
model: this.model,
|
|
2798
|
+
results,
|
|
2799
|
+
});
|
|
2796
2800
|
this.cd.detectChanges();
|
|
2797
2801
|
});
|
|
2798
2802
|
}
|