@propmix/profet-common-header 3.0.16-cross-tab-session-expiry → 3.0.17-cross-tab-session-expiry
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/header/header.component.mjs +2 -2
- package/fesm2015/propmix-profet-common-header.mjs +1 -1
- package/fesm2015/propmix-profet-common-header.mjs.map +1 -1
- package/fesm2020/propmix-profet-common-header.mjs +1 -1
- package/fesm2020/propmix-profet-common-header.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@ export class HeaderComponent {
|
|
|
32
32
|
this._snackbar = inject(MatSnackBar);
|
|
33
33
|
this._headerSer = inject(CommonHeaderService);
|
|
34
34
|
this._domSanitizer = inject(DomSanitizer);
|
|
35
|
-
this.INACTIVITY_LIMIT =
|
|
35
|
+
this.INACTIVITY_LIMIT = 30 * 60 * 1000; // 30 minutes
|
|
36
36
|
this.logoutEvent = new EventEmitter();
|
|
37
37
|
this.companyControl = new FormControl();
|
|
38
38
|
this.appConfig = AppConfig.appConfig;
|
|
@@ -396,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
396
396
|
type: HostListener,
|
|
397
397
|
args: ['window:focus']
|
|
398
398
|
}] } });
|
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLGVBQWU7SUF3QjFCO1FBdEJBLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDMUIsb0JBQWUsR0FBUSxFQUFFLENBQUM7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a0JBQWtCOztzQkFDL0IsWUFBWTt1QkFBQyxnQkFBZ0I7O3NCQUM3QixZQUFZO3VCQUFDLHFCQUFxQjs7c0JBQ2xDLFlBQVk7dUJBQUMsb0JBQW9COztzQkFDakMsWUFBWTt1QkFBQyxpQkFBaUI7O3NCQUM5QixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHNpZ25PdXQgfSBmcm9tICdhd3MtYW1wbGlmeS9hdXRoJztcbmltcG9ydCB7IEFwcE1lbnUsIENvbXBhbnkgfSBmcm9tICcuLi9jb21tb24taGVhZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21tb25IZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uLWhlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBhbnlTd2l0Y2hXYXJuaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcGFueS1zd2l0Y2gtd2FybmluZy9jb21wYW55LXN3aXRjaC13YXJuaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tICcuLi9jb25maWcvYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBQUk9GRVRfQVBQUyB9IGZyb20gJy4uL3V0aWxzL2FwcHMuZW51bSc7XG5pbXBvcnQgeyBpbWFnZURhdGFVcmwgfSBmcm9tICcuLi91dGlscy9pbWFnZS5kYXRhdXJsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb21wYW55UHJvZmlsZTogYW55O1xuICBwb3J0YWxVcmw6IHN0cmluZyA9ICcnO1xuICB1c2VyQXV0aERhdGE6IGFueTtcbiAgdXNlckltYWdlTGluazogYW55ID0gbnVsbDtcbiAgdXNlckNvbXBhbnlMb2dvOiBhbnkgPSAnJztcbiAgaW1hZ2VEYXRhVXJscyA9IGltYWdlRGF0YVVybDtcbiAgcHVibGljIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfc25hY2tiYXIgPSBpbmplY3QoTWF0U25hY2tCYXIpO1xuICBwdWJsaWMgX2hlYWRlclNlciA9IGluamVjdChDb21tb25IZWFkZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9kb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBpbmFjdGl2aXR5VGltZW91dDogYW55O1xuICBwcml2YXRlIGxvZ291dENoZWNrSW50ZXJ2YWw6IGFueTtcbiAgQElucHV0KCkgSU5BQ1RJVklUWV9MSU1JVCA9IDEyMDAwMDsgLy8gMiBtaW51dGVzXG5cbiAgQE91dHB1dCgpIGxvZ291dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbXBhbnlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIGFwcENvbmZpZzogYW55ID0gQXBwQ29uZmlnLmFwcENvbmZpZztcbiAgY29tcGFueUxpc3Q6IENvbXBhbnlbXSA9IFtdO1xuICBAVmlld0NoaWxkKCdzaWRlbmF2Jykgc2lkZW5hdiE6IE1hdFNpZGVuYXY7XG4gIG1lbnVMaXN0OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogQXBwTWVudVtdIH1bXSA9IFtdO1xuICBhY3RpdmVDb21wYW55OiBDb21wYW55IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVMYXN0QWNjZXNzZWRBcHBJbmZvKCk7XG4gICAgdGhpcy5nZXRDb21wYW55TGlzdCgpO1xuXG4gICAgdGhpcy5faGVhZGVyU2VyLmdldFVzZXJEZXRhaWxzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMudXNlckF1dGhEYXRhID0gcmVzO1xuICAgICAgICAgIHRoaXMuZ2V0TWVudUxpc3QoKTtcbiAgICAgICAgICBpZiAocmVzLnByb2ZpbGVJbWFnZSkge1xuICAgICAgICAgICAgdGhpcy51c2VySW1hZ2VMaW5rID0gcmVzLnByb2ZpbGVJbWFnZS5sb2NhdGlvblVybFxuICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJlcy5wcm9maWxlSW1hZ2UubG9jYXRpb25VcmwpXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIGlmICh1c2VySW5mbz8udXNlcm5hbWUpIHtcbiAgICAvLyAgIGxldCB1c2VyRGV0YWlscyA9IHRoaXMuX2hlYWRlclNlci5nZXRVc2VyRGV0YWlscygpO1xuICAgIC8vICAgZm9ya0pvaW4oW3VzZXJEZXRhaWxzXSkuc3Vic2NyaWJlKHtcbiAgICAvLyAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgIC8vICAgICAgIGlmIChyZXMgJiYgcmVzWzBdKSB7XG4gICAgLy8gICAgICAgICB0aGlzLnVzZXJBdXRoRGF0YSA9IHJlc1swXTtcbiAgICAvLyAgICAgICAgIHRoaXMudXNlcm5hbWUgPSB0aGlzLnVzZXJBdXRoRGF0YS5maXJzdE5hbWU7XG4gICAgLy8gICAgICAgICB0aGlzLmdldE1lbnVMaXN0KCk7XG4gICAgLy8gICAgICAgICBpZiAodGhpcy51c2VyQXV0aERhdGE/Ll9saW5rcz8ucHJvZmlsZUltYWdlPy5ocmVmKSB7XG4gICAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGUoKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9KTtcbiAgICAvLyB9XG4gICAgdGhpcy5yZXNldFRpbWVyKCk7XG5cbiAgICAvLyBDbGVhciBhbnkgc3RhbGUgbG9nb3V0IHNpZ25hbCBvbiBpbml0XG4gICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICcnLCAtMSk7XG5cbiAgICB0aGlzLnN0YXJ0TG9nb3V0Q2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gZ2V0IHRoZSByb290IGRvbWFpbiAoZS5nLiAubXljb20uYWkpIHRvIHNoYXJlIGNvb2tpZXMgYWNyb3NzIHN1YmRvbWFpbnMvcG9ydHMuXG4gICAqIElmIG9uIGxvY2FsaG9zdCBvciBhbiBJUCwgaXQgZmFsbHMgYmFjayB0byB0aGUgaG9zdG5hbWUuXG4gICAqL1xuICBwcml2YXRlIGdldFJvb3REb21haW4oKTogc3RyaW5nIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICBjb25zdCBwYXJ0cyA9IGhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICBpZiAocGFydHMubGVuZ3RoID4gMiAmJiAhL15cXGR7MSwzfVxcLlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfSQvLnRlc3QoaG9zdG5hbWUpKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIDQrIHBhcnRzIChlLmcuIGFwcDEubG9jYWwucHJvZmV0LmFpKSwgd2Ugd2FudCB0byBpbmNsdWRlIHRoZSBlbnZpcm9ubWVudCAobG9jYWwucHJvZmV0LmFpKVxuICAgICAgLy8gdG8gYXZvaWQgc2hhcmluZyBjb29raWVzIHdpdGggYXBwMS5kZXYucHJvZmV0LmFpIG9yIGFwcDEucHJvZmV0LmFpLlxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgcmV0dXJuICcuJyArIHBhcnRzLnNsaWNlKC0zKS5qb2luKCcuJyk7XG4gICAgICB9XG4gICAgICAvLyBGb3Igc3RhbmRhcmQgMyBwYXJ0cyAoYXBwMS5wcm9mZXQuYWkpLCBzaGFyZSBvbiAucHJvZmV0LmFpXG4gICAgICByZXR1cm4gJy4nICsgcGFydHMuc2xpY2UoLTIpLmpvaW4oJy4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvc3RuYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIpIHtcbiAgICBsZXQgZXhwaXJlcyA9IFwiXCI7XG4gICAgaWYgKGRheXMpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICBleHBpcmVzID0gXCI7IGV4cGlyZXM9XCIgKyBkYXRlLnRvVVRDU3RyaW5nKCk7XG4gICAgfVxuICAgIC8vIEltcG9ydGFudDogc2V0IGRvbWFpbiB0byBhbGxvdyBzaGFyaW5nIGFjcm9zcyBzdWJkb21haW5zXG4gICAgY29uc3QgZG9tYWluID0gXCI7IGRvbWFpbj1cIiArIHRoaXMuZ2V0Um9vdERvbWFpbigpO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyBcIj1cIiArICh2YWx1ZSB8fCBcIlwiKSArIGV4cGlyZXMgKyBkb21haW4gKyBcIjsgcGF0aD0vXCI7XG4gIH1cblxuICBwcml2YXRlIGdldENvb2tpZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lRVEgPSBuYW1lICsgXCI9XCI7XG4gICAgY29uc3QgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYyA9IGNhW2ldO1xuICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTtcbiAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PSAwKSByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnRvdWNoc3RhcnQnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaG1vdmUnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY3JvbGwnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICByZXNldFRpbWVyKGlzVXNlckFjdGl2aXR5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KTtcblxuICAgIC8vIFVwZGF0ZSBnbG9iYWwgYWN0aXZpdHkgdGltZXN0YW1wIGluIGNvb2tpZSBPTkxZIGlmIHRyaWdnZXJlZCBieSB1c2VyIGFjdGl2aXR5XG4gICAgaWYgKGlzVXNlckFjdGl2aXR5KSB7XG4gICAgICAvLyBVc2UgYSBzaG9ydCBleHBpcnkgKGUuZy4gMSBkYXkpIG9yIHN5bmMgd2l0aCBzZXNzaW9uIGxlbmd0aFxuICAgICAgdGhpcy5zZXRDb29raWUoJ2xhc3RBY3RpdmVTZXNzaW9uVGltZScsIERhdGUubm93KCkudG9TdHJpbmcoKSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9oZWFkZXJTZXIuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3Blbikge1xuICAgICAgdGhpcy5pbmFjdGl2aXR5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBnbG9iYWwgYWN0aXZpdHkgYmVmb3JlIGxvZ2dpbmcgb3V0XG4gICAgICAgIGNvbnN0IGxhc3RBY3RpdmUgPSB0aGlzLmdldENvb2tpZSgnbGFzdEFjdGl2ZVNlc3Npb25UaW1lJyk7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGxhc3RBY3RpdmVUaW1lID0gbGFzdEFjdGl2ZSA/IHBhcnNlSW50KGxhc3RBY3RpdmUsIDEwKSA6IDA7XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBub3cgLSBsYXN0QWN0aXZlVGltZTtcblxuICAgICAgICBpZiAobGFzdEFjdGl2ZSAmJiBlbGFwc2VkIDwgdGhpcy5JTkFDVElWSVRZX0xJTUlUKSB7XG4gICAgICAgICAgLy8gVXNlciB3YXMgYWN0aXZlIGluIGFub3RoZXIgdGFiL2FwcCByZWNlbnRseVxuICAgICAgICAgIC8vIFJlc2NoZWR1bGUgdGhlIGNoZWNrLCBidXQgRE8gTk9UIHVwZGF0ZSB0aGUgYWN0aXZpdHkgdGltZXN0YW1wXG4gICAgICAgICAgdGhpcy5yZXNldFRpbWVyKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZWFsbHkgaW5hY3RpdmUgYWNyb3NzIGFsbCBrbm93biB0YWJzXG4gICAgICAgICAgdGhpcy5oYW5kbGVMb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5JTkFDVElWSVRZX0xJTUlUKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqXG4gICAgICogSGVscGVyIHRvIGlkZW50aWZ5IHRoZSBzZXNzaW9uIGV4cGlyeSBpbiBpbi1hY3RpdmUgdGFicy5cbiAgKi9cbiAgcHJpdmF0ZSBzdGFydExvZ291dENoZWNrKCkge1xuICAgIC8vIFBvbGwgZm9yIHRoZSBsb2dvdXQgc2lnbmFsIGNvb2tpZSAod29ya3MgYWNyb3NzIHBvcnRzL3N1YmRvbWFpbnMpXG4gICAgdGhpcy5sb2dvdXRDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ2V0Q29va2llKCdzZXNzaW9uX2V4cGlyZWQnKSkge1xuICAgICAgICB0aGlzLmhhbmRsZUxvZ291dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgMjAwMCk7IC8vIENoZWNrIGV2ZXJ5IDIgc2Vjb25kc1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMb2dvdXQoYnJvYWRjYXN0OiBib29sZWFuID0gdHJ1ZSwgc2hvd1BvcHVwOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIC8vIFByZXZlbnQgbXVsdGlwbGUgcG9wdXBzIGlmIGFscmVhZHkgb3BlblxuICAgIGlmICh0aGlzLl9oZWFkZXJTZXIuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3BlbiAmJiBzaG93UG9wdXApIHtcbiAgICAgIHJldHVybjsgLy8gSWYgcG9wdXAgaXMgYWxyZWFkeSBvcGVuIGFuZCB3ZSB3YW50IHRvIHNob3cgaXQsIGRvIG5vdGhpbmcgKGl0J3MgdGhlcmUpLiBcbiAgICAgIC8vIElmIHdlIGRvbid0IHdhbnQgdG8gc2hvdyBpdCAobWFudWFsIGxvZ291dCksIHdlIHByb2NlZWQgdG8gc2lnbk91dCBhbnl3YXk/IFxuICAgIH1cblxuICAgIGlmIChicm9hZGNhc3QpIHtcbiAgICAgIC8vIFNldCBhIGNvb2tpZSB0byBzaWduYWwgb3RoZXIgdGFicy9wb3J0c1xuICAgICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICd0cnVlJywgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gICAgbGV0IHNlc3Npb25VcmwgPSB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgKyAnP3Nlc3Npb25FeHBpcmVkPXRydWUmdGltZW91dD0nICsgdGhpcy5JTkFDVElWSVRZX0xJTUlUO1xuICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiBzZXNzaW9uVXJsIH0gfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgd2luZG93Lm9wZW4oc2Vzc2lvblVybCwgJ19zZWxmJyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdMb2dvdXQgZmFpbGVkOicsIGVycm9yKTtcbiAgICAgICAgd2luZG93Lm9wZW4oc2Vzc2lvblVybCwgJ19zZWxmJyk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIChzaG93UG9wdXApIHtcbiAgICAvLyAgIHRoaXMuX2hlYWRlclNlci5vcGVuU2Vzc2lvbkV4cGlyZUluZm8oeyBzZXNzaW9uT3V0VGltZUluTWluczogdGhpcy5JTkFDVElWSVRZX0xJTUlUIH0pO1xuICAgIC8vIH1cblxuICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgfVxuICAgIC8vIFN0b3AgcG9sbGluZyBvbmNlIHdlIGFyZSBsb2dnaW5nIG91dFxuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDdXJyZW50Q29tcGFueSgpIHtcbiAgICBsZXQgY29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgdGhpcy5hY3RpdmVDb21wYW55ID0gY29tO1xuICB9XG5cbiAgcGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKSB7XG4gICAgbGV0IGNvbSA9IHRoaXMuY29tcGFueUxpc3QuZmluZCh4ID0+IHguaXNBY3RpdmUpO1xuICAgIHRoaXMuY29tcGFueUNvbnRyb2wucGF0Y2hWYWx1ZShjb20pO1xuICB9XG5cbiAgc2lkZU1lbnVUb2dnbGUoKSB7XG4gICAgdGhpcy5zaWRlbmF2LnRvZ2dsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cEJ5QXBwVHlwZShtZW51TGlzdDogQXBwTWVudVtdKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IEFwcE1lbnVbXSB9W10ge1xuICAgIGxldCBncm91cGVkID0gbWVudUxpc3QucmVkdWNlKChyLCBhKSA9PiB7XG4gICAgICByW2EuYXBwVHlwZV0gPSByW2EuYXBwVHlwZV0gfHwgW107XG5cbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZS4gUmVtb3ZlIHRoaXMgYmxvY2sgd2hlbiBiYWNrZW5kIGlzIHJlYWR5XG4gICAgICBpZiAoYS5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgICAgbGV0IGlzQ29tcGFueU1lbnUgPSBhLnBhdGggPT09ICdhcHAvY29tcGFuaWVzJztcbiAgICAgICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgICAgIGlmIChpc0NvbXBhbnlNZW51ICYmIGlzQ29tcGFueUFkbWluKSB7XG4gICAgICAgICAgYSA9IHsgLi4uYSwgcGF0aDogJ2FwcC9hZGRDb21wYW55L2NvbXBhbnlEZXRhaWxzJyB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBFTkQgb2YgVE9ETyBibG9ja1xuXG4gICAgICByW2EuYXBwVHlwZV0ucHVzaChhKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhncm91cGVkKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHsga2V5LCB2YWx1ZTogdmFsdWUgYXMgQXBwTWVudVtdIH0pKTtcbiAgfVxuXG4gIG1lbnVTZWxlY3Rpb24obWVudTogQXBwTWVudSkge1xuICAgIHRoaXMuc2lkZU1lbnVUb2dnbGUoKTtcbiAgICBsZXQgYWN0aXZlQ29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgbGV0IGlzQ29tcGFueU1lbnUgPSBtZW51LnBhdGggPT09ICdhcHAvYWRkQ29tcGFueS9jb21wYW55RGV0YWlscyc7XG4gICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgaWYgKG1lbnUuYXBwVHlwZSA9PSB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUpIHtcbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZVxuICAgICAgaWYgKGlzQ29tcGFueU1lbnUgJiYgaXNDb21wYW55QWRtaW4pIHtcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFttZW51LnBhdGgsIGFjdGl2ZUNvbT8uaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbbWVudS5wYXRoXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGFjdGl2ZUNvbSkge1xuICAgICAgICBpZiAoYWN0aXZlQ29tLmJhc2VVcmxzW21lbnUuYXBwVHlwZV0pIHtcbiAgICAgICAgICAvLyBUT0RPOiBQYXRoIHJlZmVyZW5jZXMgYXJlIHRvIGJlIHJlcGxhY2VkIHdpdGggdmFsdWVzIGZyb20gYmFja2VuZCBBUEkgcmVzcG9uc2VcbiAgICAgICAgICBpZiAoaXNDb21wYW55TWVudSAmJiBpc0NvbXBhbnlBZG1pbikge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke2FjdGl2ZUNvbS5iYXNlVXJsc1ttZW51LmFwcFR5cGVdfS8ke21lbnUucGF0aH0vJHthY3RpdmVDb20uaWR9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHthY3RpdmVDb20uYmFzZVVybHNbbWVudS5hcHBUeXBlXX0vJHttZW51LnBhdGh9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcGFueUxpc3QoKSB7XG4gICAgdGhpcy5faGVhZGVyU2VyLmdldENvbXBhbnlMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5faGVhZGVyU2VyLnNldENvbXBhbnlMaXN0KHYpO1xuICAgICAgICB0aGlzLmNvbXBhbnlMaXN0ID0gdjtcbiAgICAgICAgdGhpcy5zZWxlY3RDdXJyZW50Q29tcGFueSgpO1xuICAgICAgICB0aGlzLnBhdGNoQ3VycmVudENvbXBhbnlJbmZvKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnZXRNZW51TGlzdCgpIHtcbiAgICB0aGlzLl9oZWFkZXJTZXIuZ2V0TWVudUxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLl9oZWFkZXJTZXIuc2V0TWVudVN0YXRlKHYpO1xuICAgICAgICB0aGlzLm1lbnVMaXN0ID0gdGhpcy5ncm91cEJ5QXBwVHlwZSh2KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJvZmlsZSgpIHtcbiAgICBpZiAodGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwL3Byb2ZpbGUnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdXJsID0gdGhpcy5hY3RpdmVDb21wYW55Py5iYXNlVXJscy5wcm9mZXRfcG9ydGFsICsgJy9hcHAvcHJvZmlsZSc7XG4gICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH1cbiAgfVxuICBvbkxvZ291dENsaWNrKCkge1xuICAgIC8vIFN5bmMgd2l0aCBvdGhlciB0YWJzXG4gICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICd0cnVlJywgMSk7XG5cbiAgICAvLyBDbGVhciB0aW1lcnNcbiAgICBpZiAodGhpcy5pbmFjdGl2aXR5VGltZW91dCkgY2xlYXJUaW1lb3V0KHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpO1xuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcblxuICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgfSB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsLCAnX3NlbGYnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICBzaWduT3V0KHsgZ2xvYmFsOiB0cnVlLCBvYXV0aDogeyByZWRpcmVjdFVybDogdGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsIH0gfSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwsICdfc2VsZicpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coZXJyb3IpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGFzdEFjY2Vzc2VkQXBwSW5mbygpIHtcbiAgICBsZXQgcmVxID0ge1xuICAgICAgbGFzdEFjY2Vzc2VkQXBwbGljYXRpb246IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuYXBwVHlwZVxuICAgIH07XG5cbiAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb24ocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2hDb21wYW55KGluZm86IGFueSkge1xuICAgIGxldCBjb21wYW55ID0gaW5mby52YWx1ZTtcbiAgICBsZXQgY29tSW5mbyA9IHtcbiAgICAgIGFjdGl2ZUNvbXBhbnk6IHRoaXMuYWN0aXZlQ29tcGFueT8ubmFtZSxcbiAgICAgIHN3aXRjaGluZ0NvbXBhbnk6IGNvbXBhbnkubmFtZVxuICAgIH07XG4gICAgdGhpcy5faGVhZGVyU2VyLl9kaWFsb2cub3BlbihDb21wYW55U3dpdGNoV2FybmluZ0NvbXBvbmVudCwgeyBkYXRhOiBjb21JbmZvIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGRvbWFpbiBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoIWNvbXBhbnkuaXNBY3RpdmUpIHtcbiAgICAgICAgICAvLyBsZXQgZG9tYWluSW5mbyA9IHRoaXMuX2hlYWRlclNlci5nZXREb21haW5JbmZvKCk7XG4gICAgICAgICAgLy8gaWYgKGRvbWFpbkluZm8pIHtcbiAgICAgICAgICBsZXQgcmVxOiBhbnkgPSB7XG4gICAgICAgICAgICBjb21wYW55S2V5OiBjb21wYW55LmNvbXBhbnlLZXksXG4gICAgICAgICAgICBhcHBOYW1lOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlVXNlckNvbXBhbnkocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnR5cGUgJiYgcmVzcG9uc2UudHlwZSA9PSAnT0snKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYXBwbGljYXRpb25VUkwpIHtcbiAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSByZXNwb25zZS5kYXRhLmFwcGxpY2F0aW9uVVJMO1xuICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVmcmVzaCB0aGUgY3VycmVudCBwYWdlIHRvIHJlbG9hZCB0aGUgY29udGVudHMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29tcGFueVxuICAgICAgICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKFxuICAgICAgICAgICAgICAgICAgJ0NvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3Qgc3VwcG9ydC4nLFxuICAgICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICAgIHsgZHVyYXRpb246IDUwMDAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wYXRjaEN1cnJlbnRDb21wYW55SW5mbygpO1xuICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbihcbiAgICAgICAgICAgICAgICAnQ29tcGFueSBjb3VsZCBub3QgYmUgc3dpdGNoZWQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCBzdXBwb3J0LicsXG4gICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICB7IGR1cmF0aW9uOiA1MDAwIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gfSBcbiAgICAgICAgICAvLyBlbHNlIHtcbiAgICAgICAgICAvLyAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgICAgICAvLyAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oXG4gICAgICAgICAgLy8gICAgICdDb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQuJyxcbiAgICAgICAgICAvLyAgICAgJ09LJyxcbiAgICAgICAgICAvLyAgICAgeyBkdXJhdGlvbjogNTAwMCB9XG4gICAgICAgICAgLy8gICApO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtc2lkZW5hdi1jb250YWluZXIgY2xhc3M9XCJhcHAtbWVudS1zaWRlbmF2LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtc2lkZW5hdiBjZGtNZW51QmFyICNzaWRlbmF2IG1vZGU9XCJvdmVyXCIgY2xhc3M9XCJzaWRlbmF2RHJhd2VyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXJIZWFkTG9nb1wiPjxpbWcgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VEYXRhVXJscy5wcm9mZXRMb2dvKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1lbnUtY29udGVudC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhcHBUeXBlIG9mIG1lbnVMaXN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcExpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZ1thcHBUeXBlLmtleV0/LmFwcExvZ29VcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoYXBwQ29uZmlnW2FwcFR5cGUua2V5XT8uYXBwTG9nb1VyaSlcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViSGVhZExpc3RJdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFwcFR5cGUudmFsdWVcIiBjbGFzcz1cIm1lbnUtaXRlbVwiIChjbGljayk9XCJtZW51U2VsZWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW1lbnUnOiBpdGVtIHwgYWN0aXZlUm91dGUgOiBfcm91dGVyLnVybDpfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWVudUljb25MaXN0XCIgKm5nSWY9XCJpdGVtLmljb25cIj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZW51TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48bWF0LXRvb2xiYXIgY2RrTWVudUJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImhlYWRlci13cmFwcGVyIGNvbW1vbl9oZWFkZXIgc2hhZG93LXNtXCI+XG4gICAgPCEtLSBNYWluIG5hdiBidXR0b24gYW5kIG5hdmlnYXRpb24gbGlua3MgLS0+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ0aGVtZS13aGl0ZVwiIChjbGljayk9XCJzaWRlbmF2LnRvZ2dsZSgpXCJcbiAgICAgICAgY2xhc3M9XCJwbXgtYnV0dG9uIHBteC1tZW51LWJ1dHRvbiBvcmRlcnMtbWVudSBpY29uLWJ0biBtcy0wIG1lLTNcIiBhcmlhLWxhYmVsPVwibWFpbiBtZW51XCIgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIk1haW4gbWVudVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwicG9jLWhlYWRlci10b29sdGlwXCI+PG1hdC1pY29uPm1lbnU8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kIG1lLWF1dG9cIiBocmVmPVwiI1wiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGFwcENvbmZpZ1tfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlXT8uYXBwTG9nb1VyaSlcIlxuICAgICAgICAgICAgYWx0PVwiQXBwIExvZ29cIiBjbGFzcz1cImFwcC1sb2dvXCI+XG4gICAgPC9hPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJzd2l0Y2hDb21wYW55RmllbGRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5Db21wYW55PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb21wYW55Q29udHJvbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwic3dpdGNoQ29tcGFueSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGNvbXBhbnlMaXN0XCIgW3ZhbHVlXT1cIm9wdFwiPlxuICAgICAgICAgICAgICAgIHt7b3B0Lm5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG4gICAgPCEtLSBQcm9maWxlIGJ1dHRvbiBhbmQgcHJvZmlsZSBkcm9wZG93biBsaW5rcyAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwicG14LWJ1dHRvbiBwbXgtbWVudS1idXR0b24gcHJvZmlsZS1idXR0b25cIiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaW5uZXJcIj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJyYW5kLWxvZ28gYWxpZ24tc2VsZi1jZW50ZXJcIiAqbmdJZj1cImFjdGl2ZUNvbXBhbnk/LmxvZ29cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGl2ZUNvbXBhbnk/LmxvZ28gPyAnYnJhbmRlZC1sb2dvLXRydWUnIDogJ2JyYW5kZWQtbG9nby1mYWxzZSdcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGFjdGl2ZUNvbXBhbnk/LmxvZ28gKyAnKSd9XCI+PC9kaXY+IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhclwiPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ1c2VySW1hZ2VMaW5rO2Vsc2UgZGVmYXVsdEF2YXRhclwiIFtzcmNdPVwidXNlckltYWdlTGlua1wiIGNsYXNzPVwiYXZhdGFyLWltYWdlXCIgYWx0PVwiQXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QXZhdGFyPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlRGF0YVVybHMuZGVmYXVsdFVzZXJJbWFnZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdmF0YXItZGVmYXVsdFwiIGFsdD1cInByb2ZpbGUgcGljXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJhY2NvdW50c19kcnBtZW51IHBteC1tZW51LWdyb3VwIGhlYWRlci1kcm9wZG93bi1wcm9maWxlXCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQgc2hvdy1tZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci11c2VyLXRvcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ1c2VySW1hZ2VMaW5rO2Vsc2UgZGVmYXVsdExhcmdlQXZhdGFyXCIgW3NyY109XCJ1c2VySW1hZ2VMaW5rXCIgY2xhc3M9XCJhdmF0YXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMYXJnZUF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGltYWdlRGF0YVVybHMuZGVmYXVsdFVzZXJJbWFnZSArICcpJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1pY29uIGRlZmF1bHQtYXZhdGFyXCIgYWx0PVwiQXZhdGFyIGljb25cIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1kYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJwcm9maWxlLW5hbWVcIj48c3BhbiAqbmdJZj1cInVzZXJBdXRoRGF0YVwiPnt7IHVzZXJBdXRoRGF0YT8uZmlyc3ROYW1lIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBdXRoRGF0YT8ubGFzdE5hbWUgfX08L3NwYW4+PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwicG14LWJ1dHRvbiBidG4gYnRuLXNtYWxsIHZpZXctcHJvZmlsZSBtcy0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZmlsZSgpXCI+VmlldyBQcm9maWxlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicG9wb3Zlci1jb250ZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPk92ZXJ2aWV3PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyQXV0aERhdGE/LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJsaXN0LXRleHQgbGlzdC10ZXh0LWVtYWlsIG10LTMgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibGlzdC1pY29uXCI+bWFpbDwvbWF0LWljb24+PHNwYW4gY2xhc3M9XCJwbXgtbG93ZXItY2FzZSBwbXgtdGV4dC13cmFwIG1lLWF1dG9cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBdXRoRGF0YT8uZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlckF1dGhEYXRhPy5jb250YWN0UGhvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImxpc3QtdGV4dCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsaXN0LWljb25cIj5jYWxsPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cInRpdGxlLWNhc2UgbWUtYXV0b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5jb250YWN0UGhvbmUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICAgIDx1bCBjZGtNZW51IGNsYXNzPVwibGlzdC1ncm91cCBsYXN0LWdyb3VwIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNka01lbnVJdGVtIGNsYXNzPVwibGlzdC1pdGVtIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBteC1idXR0b24gbGlzdC1idXR0b24gYnRuLWxvZ291dFwiIChjbGljayk9XCJvbkxvZ291dENsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cG93ZXJfc2V0dGluZ3NfbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtdGV4dFwiPkxvZ291dDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbWVudT5cbjwvbWF0LXRvb2xiYXI+Il19
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLGVBQWU7SUF3QjFCO1FBdEJBLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDMUIsb0JBQWUsR0FBUSxFQUFFLENBQUM7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OztzQkFDakMsWUFBWTt1QkFBQyxrQkFBa0I7O3NCQUMvQixZQUFZO3VCQUFDLGdCQUFnQjs7c0JBQzdCLFlBQVk7dUJBQUMscUJBQXFCOztzQkFDbEMsWUFBWTt1QkFBQyxvQkFBb0I7O3NCQUNqQyxZQUFZO3VCQUFDLGlCQUFpQjs7c0JBQzlCLFlBQVk7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgc2lnbk91dCB9IGZyb20gJ2F3cy1hbXBsaWZ5L2F1dGgnO1xuaW1wb3J0IHsgQXBwTWVudSwgQ29tcGFueSB9IGZyb20gJy4uL2NvbW1vbi1oZWFkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbkhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24taGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGFueVN3aXRjaFdhcm5pbmdDb21wb25lbnQgfSBmcm9tICcuLi9jb21wYW55LXN3aXRjaC13YXJuaW5nL2NvbXBhbnktc3dpdGNoLXdhcm5pbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAuY29uZmlnJztcbmltcG9ydCB7IFBST0ZFVF9BUFBTIH0gZnJvbSAnLi4vdXRpbHMvYXBwcy5lbnVtJztcbmltcG9ydCB7IGltYWdlRGF0YVVybCB9IGZyb20gJy4uL3V0aWxzL2ltYWdlLmRhdGF1cmwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNvbXBhbnlQcm9maWxlOiBhbnk7XG4gIHBvcnRhbFVybDogc3RyaW5nID0gJyc7XG4gIHVzZXJBdXRoRGF0YTogYW55O1xuICB1c2VySW1hZ2VMaW5rOiBhbnkgPSBudWxsO1xuICB1c2VyQ29tcGFueUxvZ286IGFueSA9ICcnO1xuICBpbWFnZURhdGFVcmxzID0gaW1hZ2VEYXRhVXJsO1xuICBwdWJsaWMgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIF9zbmFja2JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIHB1YmxpYyBfaGVhZGVyU2VyID0gaW5qZWN0KENvbW1vbkhlYWRlclNlcnZpY2UpO1xuICBwdWJsaWMgX2RvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIGluYWN0aXZpdHlUaW1lb3V0OiBhbnk7XG4gIHByaXZhdGUgbG9nb3V0Q2hlY2tJbnRlcnZhbDogYW55O1xuICBASW5wdXQoKSBJTkFDVElWSVRZX0xJTUlUID0gMzAgKiA2MCAqIDEwMDA7IC8vIDMwIG1pbnV0ZXNcblxuICBAT3V0cHV0KCkgbG9nb3V0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29tcGFueUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgYXBwQ29uZmlnOiBhbnkgPSBBcHBDb25maWcuYXBwQ29uZmlnO1xuICBjb21wYW55TGlzdDogQ29tcGFueVtdID0gW107XG4gIEBWaWV3Q2hpbGQoJ3NpZGVuYXYnKSBzaWRlbmF2ITogTWF0U2lkZW5hdjtcbiAgbWVudUxpc3Q6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBBcHBNZW51W10gfVtdID0gW107XG4gIGFjdGl2ZUNvbXBhbnk6IENvbXBhbnkgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUxhc3RBY2Nlc3NlZEFwcEluZm8oKTtcbiAgICB0aGlzLmdldENvbXBhbnlMaXN0KCk7XG5cbiAgICB0aGlzLl9oZWFkZXJTZXIuZ2V0VXNlckRldGFpbHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgdGhpcy51c2VyQXV0aERhdGEgPSByZXM7XG4gICAgICAgICAgdGhpcy5nZXRNZW51TGlzdCgpO1xuICAgICAgICAgIGlmIChyZXMucHJvZmlsZUltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbWFnZUxpbmsgPSByZXMucHJvZmlsZUltYWdlLmxvY2F0aW9uVXJsXG4gICAgICAgICAgICAgID8gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwocmVzLnByb2ZpbGVJbWFnZS5sb2NhdGlvblVybClcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gICAgLy8gaWYgKHVzZXJJbmZvPy51c2VybmFtZSkge1xuICAgIC8vICAgbGV0IHVzZXJEZXRhaWxzID0gdGhpcy5faGVhZGVyU2VyLmdldFVzZXJEZXRhaWxzKCk7XG4gICAgLy8gICBmb3JrSm9pbihbdXNlckRldGFpbHNdKS5zdWJzY3JpYmUoe1xuICAgIC8vICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgLy8gICAgICAgaWYgKHJlcyAmJiByZXNbMF0pIHtcbiAgICAvLyAgICAgICAgIHRoaXMudXNlckF1dGhEYXRhID0gcmVzWzBdO1xuICAgIC8vICAgICAgICAgdGhpcy51c2VybmFtZSA9IHRoaXMudXNlckF1dGhEYXRhLmZpcnN0TmFtZTtcbiAgICAvLyAgICAgICAgIHRoaXMuZ2V0TWVudUxpc3QoKTtcbiAgICAvLyAgICAgICAgIGlmICh0aGlzLnVzZXJBdXRoRGF0YT8uX2xpbmtzPy5wcm9maWxlSW1hZ2U/LmhyZWYpIHtcbiAgICAvLyAgICAgICAgICAgdGhpcy5nZXRVc2VyUHJvZmlsZSgpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cbiAgICB0aGlzLnJlc2V0VGltZXIoKTtcblxuICAgIC8vIENsZWFyIGFueSBzdGFsZSBsb2dvdXQgc2lnbmFsIG9uIGluaXRcbiAgICB0aGlzLnNldENvb2tpZSgnc2Vzc2lvbl9leHBpcmVkJywgJycsIC0xKTtcblxuICAgIHRoaXMuc3RhcnRMb2dvdXRDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciB0byBnZXQgdGhlIHJvb3QgZG9tYWluIChlLmcuIC5teWNvbS5haSkgdG8gc2hhcmUgY29va2llcyBhY3Jvc3Mgc3ViZG9tYWlucy9wb3J0cy5cbiAgICogSWYgb24gbG9jYWxob3N0IG9yIGFuIElQLCBpdCBmYWxscyBiYWNrIHRvIHRoZSBob3N0bmFtZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Um9vdERvbWFpbigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuICAgIGNvbnN0IHBhcnRzID0gaG9zdG5hbWUuc3BsaXQoJy4nKTtcblxuICAgIGlmIChwYXJ0cy5sZW5ndGggPiAyICYmICEvXlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfVxcLlxcZHsxLDN9JC8udGVzdChob3N0bmFtZSkpIHtcbiAgICAgIC8vIElmIHdlIGhhdmUgNCsgcGFydHMgKGUuZy4gYXBwMS5sb2NhbC5wcm9mZXQuYWkpLCB3ZSB3YW50IHRvIGluY2x1ZGUgdGhlIGVudmlyb25tZW50IChsb2NhbC5wcm9mZXQuYWkpXG4gICAgICAvLyB0byBhdm9pZCBzaGFyaW5nIGNvb2tpZXMgd2l0aCBhcHAxLmRldi5wcm9mZXQuYWkgb3IgYXBwMS5wcm9mZXQuYWkuXG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMykge1xuICAgICAgICByZXR1cm4gJy4nICsgcGFydHMuc2xpY2UoLTMpLmpvaW4oJy4nKTtcbiAgICAgIH1cbiAgICAgIC8vIEZvciBzdGFuZGFyZCAzIHBhcnRzIChhcHAxLnByb2ZldC5haSksIHNoYXJlIG9uIC5wcm9mZXQuYWlcbiAgICAgIHJldHVybiAnLicgKyBwYXJ0cy5zbGljZSgtMikuam9pbignLicpO1xuICAgIH1cbiAgICByZXR1cm4gaG9zdG5hbWU7XG4gIH1cblxuICBwcml2YXRlIHNldENvb2tpZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGRheXM6IG51bWJlcikge1xuICAgIGxldCBleHBpcmVzID0gXCJcIjtcbiAgICBpZiAoZGF5cykge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcbiAgICAgIGV4cGlyZXMgPSBcIjsgZXhwaXJlcz1cIiArIGRhdGUudG9VVENTdHJpbmcoKTtcbiAgICB9XG4gICAgLy8gSW1wb3J0YW50OiBzZXQgZG9tYWluIHRvIGFsbG93IHNoYXJpbmcgYWNyb3NzIHN1YmRvbWFpbnNcbiAgICBjb25zdCBkb21haW4gPSBcIjsgZG9tYWluPVwiICsgdGhpcy5nZXRSb290RG9tYWluKCk7XG4gICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArIFwiPVwiICsgKHZhbHVlIHx8IFwiXCIpICsgZXhwaXJlcyArIGRvbWFpbiArIFwiOyBwYXRoPS9cIjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29va2llKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IG5hbWVFUSA9IG5hbWUgKyBcIj1cIjtcbiAgICBjb25zdCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjID0gY2FbaV07XG4gICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT0gJyAnKSBjID0gYy5zdWJzdHJpbmcoMSwgYy5sZW5ndGgpO1xuICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09IDApIHJldHVybiBjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLCBjLmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2hzdGFydCcpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnRvdWNobW92ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnNjcm9sbCcpXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpmb2N1cycpXG4gIHJlc2V0VGltZXIoaXNVc2VyQWN0aXZpdHk6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpO1xuXG4gICAgLy8gVXBkYXRlIGdsb2JhbCBhY3Rpdml0eSB0aW1lc3RhbXAgaW4gY29va2llIE9OTFkgaWYgdHJpZ2dlcmVkIGJ5IHVzZXIgYWN0aXZpdHlcbiAgICBpZiAoaXNVc2VyQWN0aXZpdHkpIHtcbiAgICAgIC8vIFVzZSBhIHNob3J0IGV4cGlyeSAoZS5nLiAxIGRheSkgb3Igc3luYyB3aXRoIHNlc3Npb24gbGVuZ3RoXG4gICAgICB0aGlzLnNldENvb2tpZSgnbGFzdEFjdGl2ZVNlc3Npb25UaW1lJywgRGF0ZS5ub3coKS50b1N0cmluZygpLCAxKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2hlYWRlclNlci5pc1Nlc3Npb25FeHBpcnlEaWFsb2dPcGVuKSB7XG4gICAgICB0aGlzLmluYWN0aXZpdHlUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIENoZWNrIGdsb2JhbCBhY3Rpdml0eSBiZWZvcmUgbG9nZ2luZyBvdXRcbiAgICAgICAgY29uc3QgbGFzdEFjdGl2ZSA9IHRoaXMuZ2V0Q29va2llKCdsYXN0QWN0aXZlU2Vzc2lvblRpbWUnKTtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgY29uc3QgbGFzdEFjdGl2ZVRpbWUgPSBsYXN0QWN0aXZlID8gcGFyc2VJbnQobGFzdEFjdGl2ZSwgMTApIDogMDtcbiAgICAgICAgY29uc3QgZWxhcHNlZCA9IG5vdyAtIGxhc3RBY3RpdmVUaW1lO1xuXG4gICAgICAgIGlmIChsYXN0QWN0aXZlICYmIGVsYXBzZWQgPCB0aGlzLklOQUNUSVZJVFlfTElNSVQpIHtcbiAgICAgICAgICAvLyBVc2VyIHdhcyBhY3RpdmUgaW4gYW5vdGhlciB0YWIvYXBwIHJlY2VudGx5XG4gICAgICAgICAgLy8gUmVzY2hlZHVsZSB0aGUgY2hlY2ssIGJ1dCBETyBOT1QgdXBkYXRlIHRoZSBhY3Rpdml0eSB0aW1lc3RhbXBcbiAgICAgICAgICB0aGlzLnJlc2V0VGltZXIoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlYWxseSBpbmFjdGl2ZSBhY3Jvc3MgYWxsIGtub3duIHRhYnNcbiAgICAgICAgICB0aGlzLmhhbmRsZUxvZ291dCgpO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzLklOQUNUSVZJVFlfTElNSVQpO1xuICAgIH1cbiAgfVxuXG5cblxuICAvKipcbiAgICAgKiBIZWxwZXIgdG8gaWRlbnRpZnkgdGhlIHNlc3Npb24gZXhwaXJ5IGluIGluLWFjdGl2ZSB0YWJzLlxuICAqL1xuICBwcml2YXRlIHN0YXJ0TG9nb3V0Q2hlY2soKSB7XG4gICAgLy8gUG9sbCBmb3IgdGhlIGxvZ291dCBzaWduYWwgY29va2llICh3b3JrcyBhY3Jvc3MgcG9ydHMvc3ViZG9tYWlucylcbiAgICB0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5nZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcpKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlTG9nb3V0KGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LCAyMDAwKTsgLy8gQ2hlY2sgZXZlcnkgMiBzZWNvbmRzXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxvZ291dChicm9hZGNhc3Q6IGJvb2xlYW4gPSB0cnVlLCBzaG93UG9wdXA6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgLy8gUHJldmVudCBtdWx0aXBsZSBwb3B1cHMgaWYgYWxyZWFkeSBvcGVuXG4gICAgaWYgKHRoaXMuX2hlYWRlclNlci5pc1Nlc3Npb25FeHBpcnlEaWFsb2dPcGVuICYmIHNob3dQb3B1cCkge1xuICAgICAgcmV0dXJuOyAvLyBJZiBwb3B1cCBpcyBhbHJlYWR5IG9wZW4gYW5kIHdlIHdhbnQgdG8gc2hvdyBpdCwgZG8gbm90aGluZyAoaXQncyB0aGVyZSkuIFxuICAgICAgLy8gSWYgd2UgZG9uJ3Qgd2FudCB0byBzaG93IGl0IChtYW51YWwgbG9nb3V0KSwgd2UgcHJvY2VlZCB0byBzaWduT3V0IGFueXdheT8gXG4gICAgfVxuXG4gICAgaWYgKGJyb2FkY2FzdCkge1xuICAgICAgLy8gU2V0IGEgY29va2llIHRvIHNpZ25hbCBvdGhlciB0YWJzL3BvcnRzXG4gICAgICB0aGlzLnNldENvb2tpZSgnc2Vzc2lvbl9leHBpcmVkJywgJ3RydWUnLCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvZ291dEV2ZW50LmVtaXQoKTtcbiAgICBsZXQgc2Vzc2lvblVybCA9IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuc2lnbk91dFVybCArICc/c2Vzc2lvbkV4cGlyZWQ9dHJ1ZSZ0aW1lb3V0PScgKyB0aGlzLklOQUNUSVZJVFlfTElNSVQ7XG4gICAgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSwgb2F1dGg6IHsgcmVkaXJlY3RVcmw6IHNlc3Npb25VcmwgfSB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB3aW5kb3cub3BlbihzZXNzaW9uVXJsLCAnX3NlbGYnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xvZ291dCBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgICB3aW5kb3cub3BlbihzZXNzaW9uVXJsLCAnX3NlbGYnKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gaWYgKHNob3dQb3B1cCkge1xuICAgIC8vICAgdGhpcy5faGVhZGVyU2VyLm9wZW5TZXNzaW9uRXhwaXJlSW5mbyh7IHNlc3Npb25PdXRUaW1lSW5NaW5zOiB0aGlzLklOQUNUSVZJVFlfTElNSVQgfSk7XG4gICAgLy8gfVxuXG4gICAgaWYgKHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KTtcbiAgICB9XG4gICAgLy8gU3RvcCBwb2xsaW5nIG9uY2Ugd2UgYXJlIGxvZ2dpbmcgb3V0XG4gICAgaWYgKHRoaXMubG9nb3V0Q2hlY2tJbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdEN1cnJlbnRDb21wYW55KCkge1xuICAgIGxldCBjb20gPSB0aGlzLmNvbXBhbnlMaXN0LmZpbmQoeCA9PiB4LmlzQWN0aXZlKTtcbiAgICB0aGlzLmFjdGl2ZUNvbXBhbnkgPSBjb207XG4gIH1cblxuICBwYXRjaEN1cnJlbnRDb21wYW55SW5mbygpIHtcbiAgICBsZXQgY29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgdGhpcy5jb21wYW55Q29udHJvbC5wYXRjaFZhbHVlKGNvbSk7XG4gIH1cblxuICBzaWRlTWVudVRvZ2dsZSgpIHtcbiAgICB0aGlzLnNpZGVuYXYudG9nZ2xlKCk7XG4gIH1cblxuICBwcml2YXRlIGdyb3VwQnlBcHBUeXBlKG1lbnVMaXN0OiBBcHBNZW51W10pOiB7IGtleTogc3RyaW5nLCB2YWx1ZTogQXBwTWVudVtdIH1bXSB7XG4gICAgbGV0IGdyb3VwZWQgPSBtZW51TGlzdC5yZWR1Y2UoKHIsIGEpID0+IHtcbiAgICAgIHJbYS5hcHBUeXBlXSA9IHJbYS5hcHBUeXBlXSB8fCBbXTtcblxuICAgICAgLy8gVE9ETzogUGF0aCByZWZlcmVuY2VzIGFyZSB0byBiZSByZXBsYWNlZCB3aXRoIHZhbHVlcyBmcm9tIGJhY2tlbmQgQVBJIHJlc3BvbnNlLiBSZW1vdmUgdGhpcyBibG9jayB3aGVuIGJhY2tlbmQgaXMgcmVhZHlcbiAgICAgIGlmIChhLmFwcFR5cGUgPT0gUFJPRkVUX0FQUFMucHJvZmV0X3BvcnRhbCkge1xuICAgICAgICBsZXQgaXNDb21wYW55TWVudSA9IGEucGF0aCA9PT0gJ2FwcC9jb21wYW5pZXMnO1xuICAgICAgICBsZXQgaXNDb21wYW55QWRtaW4gPSB0aGlzLnVzZXJBdXRoRGF0YT8ucm9sZXNGb3JDdXJyZW50Q29tcGFueS5pbmNsdWRlcyhcIkNPTVBBTllfQURNSU5cIik7XG5cbiAgICAgICAgaWYgKGlzQ29tcGFueU1lbnUgJiYgaXNDb21wYW55QWRtaW4pIHtcbiAgICAgICAgICBhID0geyAuLi5hLCBwYXRoOiAnYXBwL2FkZENvbXBhbnkvY29tcGFueURldGFpbHMnIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEVORCBvZiBUT0RPIGJsb2NrXG5cbiAgICAgIHJbYS5hcHBUeXBlXS5wdXNoKGEpO1xuICAgICAgcmV0dXJuIHI7XG4gICAgfSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGdyb3VwZWQpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoeyBrZXksIHZhbHVlOiB2YWx1ZSBhcyBBcHBNZW51W10gfSkpO1xuICB9XG5cbiAgbWVudVNlbGVjdGlvbihtZW51OiBBcHBNZW51KSB7XG4gICAgdGhpcy5zaWRlTWVudVRvZ2dsZSgpO1xuICAgIGxldCBhY3RpdmVDb20gPSB0aGlzLmNvbXBhbnlMaXN0LmZpbmQoeCA9PiB4LmlzQWN0aXZlKTtcbiAgICBsZXQgaXNDb21wYW55TWVudSA9IG1lbnUucGF0aCA9PT0gJ2FwcC9hZGRDb21wYW55L2NvbXBhbnlEZXRhaWxzJztcbiAgICBsZXQgaXNDb21wYW55QWRtaW4gPSB0aGlzLnVzZXJBdXRoRGF0YT8ucm9sZXNGb3JDdXJyZW50Q29tcGFueS5pbmNsdWRlcyhcIkNPTVBBTllfQURNSU5cIik7XG5cbiAgICBpZiAobWVudS5hcHBUeXBlID09IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuYXBwVHlwZSkge1xuICAgICAgLy8gVE9ETzogUGF0aCByZWZlcmVuY2VzIGFyZSB0byBiZSByZXBsYWNlZCB3aXRoIHZhbHVlcyBmcm9tIGJhY2tlbmQgQVBJIHJlc3BvbnNlXG4gICAgICBpZiAoaXNDb21wYW55TWVudSAmJiBpc0NvbXBhbnlBZG1pbikge1xuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW21lbnUucGF0aCwgYWN0aXZlQ29tPy5pZF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFttZW51LnBhdGhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoYWN0aXZlQ29tKSB7XG4gICAgICAgIGlmIChhY3RpdmVDb20uYmFzZVVybHNbbWVudS5hcHBUeXBlXSkge1xuICAgICAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZVxuICAgICAgICAgIGlmIChpc0NvbXBhbnlNZW51ICYmIGlzQ29tcGFueUFkbWluKSB7XG4gICAgICAgICAgICBsZXQgdXJsID0gYCR7YWN0aXZlQ29tLmJhc2VVcmxzW21lbnUuYXBwVHlwZV19LyR7bWVudS5wYXRofS8ke2FjdGl2ZUNvbS5pZH1gO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke2FjdGl2ZUNvbS5iYXNlVXJsc1ttZW51LmFwcFR5cGVdfS8ke21lbnUucGF0aH1gO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDb21wYW55TGlzdCgpIHtcbiAgICB0aGlzLl9oZWFkZXJTZXIuZ2V0Q29tcGFueUxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLl9oZWFkZXJTZXIuc2V0Q29tcGFueUxpc3Qodik7XG4gICAgICAgIHRoaXMuY29tcGFueUxpc3QgPSB2O1xuICAgICAgICB0aGlzLnNlbGVjdEN1cnJlbnRDb21wYW55KCk7XG4gICAgICAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldE1lbnVMaXN0KCkge1xuICAgIHRoaXMuX2hlYWRlclNlci5nZXRNZW51TGlzdCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAodjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuX2hlYWRlclNlci5zZXRNZW51U3RhdGUodik7XG4gICAgICAgIHRoaXMubWVudUxpc3QgPSB0aGlzLmdyb3VwQnlBcHBUeXBlKHYpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcm9maWxlKCkge1xuICAgIGlmICh0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUgPT0gUFJPRkVUX0FQUFMucHJvZmV0X3BvcnRhbCkge1xuICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hcHAvcHJvZmlsZScpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGxldCB1cmwgPSB0aGlzLmFjdGl2ZUNvbXBhbnk/LmJhc2VVcmxzLnByb2ZldF9wb3J0YWwgKyAnL2FwcC9wcm9maWxlJztcbiAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgfVxuICB9XG4gIG9uTG9nb3V0Q2xpY2soKSB7XG4gICAgLy8gU3luYyB3aXRoIG90aGVyIHRhYnNcbiAgICB0aGlzLnNldENvb2tpZSgnc2Vzc2lvbl9leHBpcmVkJywgJ3RydWUnLCAxKTtcblxuICAgIC8vIENsZWFyIHRpbWVyc1xuICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KSBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgaWYgKHRoaXMubG9nb3V0Q2hlY2tJbnRlcnZhbCkgY2xlYXJJbnRlcnZhbCh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpO1xuXG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gICAgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSwgb2F1dGg6IHsgcmVkaXJlY3RVcmw6IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuc2lnbk91dFVybCB9IH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICB3aW5kb3cub3Blbih0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwsICdfc2VsZicpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgfSB9KVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuc2lnbk91dFVybCwgJ19zZWxmJyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmxvZyhlcnJvcikpO1xuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVMYXN0QWNjZXNzZWRBcHBJbmZvKCkge1xuICAgIGxldCByZXEgPSB7XG4gICAgICBsYXN0QWNjZXNzZWRBcHBsaWNhdGlvbjogdGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlXG4gICAgfTtcblxuICAgIHRoaXMuX2hlYWRlclNlci51cGRhdGVMYXN0QWNjZXNzZWRBcHBsaWNhdGlvbihyZXEpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHN3aXRjaENvbXBhbnkoaW5mbzogYW55KSB7XG4gICAgbGV0IGNvbXBhbnkgPSBpbmZvLnZhbHVlO1xuICAgIGxldCBjb21JbmZvID0ge1xuICAgICAgYWN0aXZlQ29tcGFueTogdGhpcy5hY3RpdmVDb21wYW55Py5uYW1lLFxuICAgICAgc3dpdGNoaW5nQ29tcGFueTogY29tcGFueS5uYW1lXG4gICAgfTtcbiAgICB0aGlzLl9oZWFkZXJTZXIuX2RpYWxvZy5vcGVuKENvbXBhbnlTd2l0Y2hXYXJuaW5nQ29tcG9uZW50LCB7IGRhdGE6IGNvbUluZm8gfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgZG9tYWluIGluZm9ybWF0aW9uXG4gICAgICAgIGlmICghY29tcGFueS5pc0FjdGl2ZSkge1xuICAgICAgICAgIC8vIGxldCBkb21haW5JbmZvID0gdGhpcy5faGVhZGVyU2VyLmdldERvbWFpbkluZm8oKTtcbiAgICAgICAgICAvLyBpZiAoZG9tYWluSW5mbykge1xuICAgICAgICAgIGxldCByZXE6IGFueSA9IHtcbiAgICAgICAgICAgIGNvbXBhbnlLZXk6IGNvbXBhbnkuY29tcGFueUtleSxcbiAgICAgICAgICAgIGFwcE5hbWU6IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuYXBwVHlwZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMuX2hlYWRlclNlci51cGRhdGVVc2VyQ29tcGFueShyZXEpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudHlwZSAmJiByZXNwb25zZS50eXBlID09ICdPSycpIHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5hcHBsaWNhdGlvblVSTCkge1xuICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHJlc3BvbnNlLmRhdGEuYXBwbGljYXRpb25VUkw7XG4gICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh1cmwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyByZWZyZXNoIHRoZSBjdXJyZW50IHBhZ2UgdG8gcmVsb2FkIHRoZSBjb250ZW50cyBiYXNlZCBvbiB0aGUgY3VycmVudCBjb21wYW55XG4gICAgICAgICAgICAgICAgLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGRpc3BsYXkgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHRoYXQgdGhlIGNvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLlxuICAgICAgICAgICAgICAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oXG4gICAgICAgICAgICAgICAgICAnQ29tcGFueSBjb3VsZCBub3QgYmUgc3dpdGNoZWQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCBzdXBwb3J0LicsXG4gICAgICAgICAgICAgICAgICAnT0snLFxuICAgICAgICAgICAgICAgICAgeyBkdXJhdGlvbjogNTAwMCB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnBhdGNoQ3VycmVudENvbXBhbnlJbmZvKCk7XG4gICAgICAgICAgICAgIC8vIGRpc3BsYXkgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHRoYXQgdGhlIGNvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLlxuICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKFxuICAgICAgICAgICAgICAgICdDb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQuJyxcbiAgICAgICAgICAgICAgICAnT0snLFxuICAgICAgICAgICAgICAgIHsgZHVyYXRpb246IDUwMDAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyB9IFxuICAgICAgICAgIC8vIGVsc2Uge1xuICAgICAgICAgIC8vICAgdGhpcy5wYXRjaEN1cnJlbnRDb21wYW55SW5mbygpO1xuICAgICAgICAgIC8vICAgdGhpcy5fc25hY2tiYXIub3BlbihcbiAgICAgICAgICAvLyAgICAgJ0NvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3Qgc3VwcG9ydC4nLFxuICAgICAgICAgIC8vICAgICAnT0snLFxuICAgICAgICAgIC8vICAgICB7IGR1cmF0aW9uOiA1MDAwIH1cbiAgICAgICAgICAvLyAgICk7XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5wYXRjaEN1cnJlbnRDb21wYW55SW5mbygpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMubG9nb3V0Q2hlY2tJbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpO1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC1zaWRlbmF2LWNvbnRhaW5lciBjbGFzcz1cImFwcC1tZW51LXNpZGVuYXYtY29udGFpbmVyXCI+XG4gICAgPG1hdC1zaWRlbmF2IGNka01lbnVCYXIgI3NpZGVuYXYgbW9kZT1cIm92ZXJcIiBjbGFzcz1cInNpZGVuYXZEcmF3ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyYXdlckhlYWRMb2dvXCI+PGltZyBbc3JjXT1cIl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChpbWFnZURhdGFVcmxzLnByb2ZldExvZ28pXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbWVudS1jb250ZW50LXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFwcFR5cGUgb2YgbWVudUxpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiYXBwQ29uZmlnW2FwcFR5cGUua2V5XT8uYXBwTG9nb1VyaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChhcHBDb25maWdbYXBwVHlwZS5rZXldPy5hcHBMb2dvVXJpKVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJIZWFkTGlzdEl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYXBwVHlwZS52YWx1ZVwiIGNsYXNzPVwibWVudS1pdGVtXCIgKGNsaWNrKT1cIm1lbnVTZWxlY3Rpb24oaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUtbWVudSc6IGl0ZW0gfCBhY3RpdmVSb3V0ZSA6IF9yb3V0ZXIudXJsOl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGV9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtZW51SWNvbkxpc3RcIiAqbmdJZj1cIml0ZW0uaWNvblwiPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLm1lbnVOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1zaWRlbmF2PlxuXG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbjxtYXQtdG9vbGJhciBjZGtNZW51QmFyIGNvbG9yPVwicHJpbWFyeVwiIGNsYXNzPVwiaGVhZGVyLXdyYXBwZXIgY29tbW9uX2hlYWRlciBzaGFkb3ctc21cIj5cbiAgICA8IS0tIE1haW4gbmF2IGJ1dHRvbiBhbmQgbmF2aWdhdGlvbiBsaW5rcyAtLT5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInRoZW1lLXdoaXRlXCIgKGNsaWNrKT1cInNpZGVuYXYudG9nZ2xlKClcIlxuICAgICAgICBjbGFzcz1cInBteC1idXR0b24gcG14LW1lbnUtYnV0dG9uIG9yZGVycy1tZW51IGljb24tYnRuIG1zLTAgbWUtM1wiIGFyaWEtbGFiZWw9XCJtYWluIG1lbnVcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgICBtYXRUb29sdGlwPVwiTWFpbiBtZW51XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJwb2MtaGVhZGVyLXRvb2x0aXBcIj48bWF0LWljb24+bWVudTwvbWF0LWljb24+PC9idXR0b24+XG4gICAgPGEgY2xhc3M9XCJuYXZiYXItYnJhbmQgbWUtYXV0b1wiIGhyZWY9XCIjXCI+XG4gICAgICAgIDxpbWcgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoYXBwQ29uZmlnW19oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGVdPy5hcHBMb2dvVXJpKVwiXG4gICAgICAgICAgICBhbHQ9XCJBcHAgTG9nb1wiIGNsYXNzPVwiYXBwLWxvZ29cIj5cbiAgICA8L2E+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInN3aXRjaENvbXBhbnlGaWVsZFwiPlxuICAgICAgICA8bWF0LWxhYmVsPkNvbXBhbnk8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImNvbXBhbnlDb250cm9sXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJzd2l0Y2hDb21wYW55KCRldmVudClcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgY29tcGFueUxpc3RcIiBbdmFsdWVdPVwib3B0XCI+XG4gICAgICAgICAgICAgICAge3tvcHQubmFtZX19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG5cbiAgICA8IS0tIFByb2ZpbGUgYnV0dG9uIGFuZCBwcm9maWxlIGRyb3Bkb3duIGxpbmtzIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJwbXgtYnV0dG9uIHBteC1tZW51LWJ1dHRvbiBwcm9maWxlLWJ1dHRvblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pbm5lclwiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnJhbmQtbG9nbyBhbGlnbi1zZWxmLWNlbnRlclwiICpuZ0lmPVwiYWN0aXZlQ29tcGFueT8ubG9nb1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0aXZlQ29tcGFueT8ubG9nbyA/ICdicmFuZGVkLWxvZ28tdHJ1ZScgOiAnYnJhbmRlZC1sb2dvLWZhbHNlJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgYWN0aXZlQ29tcGFueT8ubG9nbyArICcpJ31cIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXJJbWFnZUxpbms7ZWxzZSBkZWZhdWx0QXZhdGFyXCIgW3NyY109XCJ1c2VySW1hZ2VMaW5rXCIgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIiBhbHQ9XCJBdmF0YXJcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdmF0YXI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VEYXRhVXJscy5kZWZhdWx0VXNlckltYWdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1kZWZhdWx0XCIgYWx0PVwicHJvZmlsZSBwaWNcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFjY291bnRzX2RycG1lbnUgcG14LW1lbnUtZ3JvdXAgaGVhZGVyLWRyb3Bkb3duLXByb2ZpbGVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcG92ZXItY29udGVudCBzaG93LW1lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLXVzZXItdG9wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXJJbWFnZUxpbms7ZWxzZSBkZWZhdWx0TGFyZ2VBdmF0YXJcIiBbc3JjXT1cInVzZXJJbWFnZUxpbmtcIiBjbGFzcz1cImF2YXRhci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhcmdlQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgaW1hZ2VEYXRhVXJscy5kZWZhdWx0VXNlckltYWdlICsgJyknfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWljb24gZGVmYXVsdC1hdmF0YXJcIiBhbHQ9XCJBdmF0YXIgaWNvblwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPjxzcGFuICpuZ0lmPVwidXNlckF1dGhEYXRhXCI+e3sgdXNlckF1dGhEYXRhPy5maXJzdE5hbWUgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5sYXN0TmFtZSB9fTwvc3Bhbj48L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJwbXgtYnV0dG9uIGJ0biBidG4tc21hbGwgdmlldy1wcm9maWxlIG1zLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9maWxlKClcIj5WaWV3IFByb2ZpbGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+T3ZlcnZpZXc8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJBdXRoRGF0YT8uZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImxpc3QtdGV4dCBsaXN0LXRleHQtZW1haWwgbXQtMyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsaXN0LWljb25cIj5tYWlsPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cInBteC1sb3dlci1jYXNlIHBteC10ZXh0LXdyYXAgbWUtYXV0b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyQXV0aERhdGE/LmNvbnRhY3RQaG9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBtYXQtbWVudS1pdGVtIGNsYXNzPVwibGlzdC10ZXh0IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImxpc3QtaWNvblwiPmNhbGw8L21hdC1pY29uPjxzcGFuIGNsYXNzPVwidGl0bGUtY2FzZSBtZS1hdXRvXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQXV0aERhdGE/LmNvbnRhY3RQaG9uZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPHVsIGNka01lbnUgY2xhc3M9XCJsaXN0LWdyb3VwIGxhc3QtZ3JvdXAgbXktMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2RrTWVudUl0ZW0gY2xhc3M9XCJsaXN0LWl0ZW0gcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicG14LWJ1dHRvbiBsaXN0LWJ1dHRvbiBidG4tbG9nb3V0XCIgKGNsaWNrKT1cIm9uTG9nb3V0Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wb3dlcl9zZXR0aW5nc19uZXc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0XCI+TG9nb3V0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1tZW51PlxuPC9tYXQtdG9vbGJhcj4iXX0=
|
|
@@ -414,7 +414,7 @@ class HeaderComponent {
|
|
|
414
414
|
this._snackbar = inject(MatSnackBar);
|
|
415
415
|
this._headerSer = inject(CommonHeaderService);
|
|
416
416
|
this._domSanitizer = inject(DomSanitizer);
|
|
417
|
-
this.INACTIVITY_LIMIT =
|
|
417
|
+
this.INACTIVITY_LIMIT = 30 * 60 * 1000; // 30 minutes
|
|
418
418
|
this.logoutEvent = new EventEmitter();
|
|
419
419
|
this.companyControl = new FormControl();
|
|
420
420
|
this.appConfig = AppConfig.appConfig;
|