@smartbit4all/ng-client 3.3.216 → 3.3.217

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.
@@ -48,10 +48,19 @@ export class SmartErrorCatchingInterceptor {
48
48
  const sessionError = this.getSessionError(error);
49
49
  if (sessionError) {
50
50
  return this.resolveError(sessionError).pipe(switchMap((resolved) => {
51
- if (resolved && sessionError.behaviour !== SessionErrorBehaviour.RESTART) {
51
+ if (resolved && sessionError.behaviour === SessionErrorBehaviour.REFRESH) {
52
52
  return next.handle(this.updateRequestHeaders(request));
53
53
  }
54
54
  return throwError(() => error);
55
+ }), catchError((resolveError) => {
56
+ // when the resolveError throws a restart error (in the refreshSession), rethrow the original error
57
+ if (this.isSessionError(resolveError)) {
58
+ const resolveSessionError = this.getSessionError(resolveError);
59
+ if (resolveSessionError?.behaviour === SessionErrorBehaviour.RESTART) {
60
+ return throwError(() => error);
61
+ }
62
+ }
63
+ return throwError(() => resolveError);
55
64
  }));
56
65
  }
57
66
  }
@@ -83,4 +92,4 @@ SmartErrorCatchingInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion:
83
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartErrorCatchingInterceptor, decorators: [{
84
93
  type: Injectable
85
94
  }], ctorParameters: function () { return [{ type: i1.SmartSessionService }]; } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZXJyb3ItY2F0Y2hpbmcuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LWVycm9yLWNhdGNoaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwscUJBQXFCLEdBRXRCLE1BQU0sWUFBWSxDQUFDOzs7QUFHcEIsTUFBTSxPQUFPLDZCQUE2QjtJQWdDeEMsWUFBb0IsT0FBNEI7UUFBNUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUEvQmhELHNCQUFpQixHQUFtQjtZQUNsQztnQkFDRSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTzthQUN6QztZQUNEO2dCQUNFLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlDQUFpQztnQkFDdkMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLE9BQU87YUFDekM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsNEJBQTRCO2dCQUNsQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTzthQUN6QztZQUNEO2dCQUNFLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHdCQUF3QjtnQkFDOUIsU0FBUyxFQUFFLHFCQUFxQixDQUFDLE9BQU87YUFDekM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsNkJBQTZCO2dCQUNuQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTzthQUN6QztTQUNGLENBQUM7SUFFaUQsQ0FBQztJQUVwRCxTQUFTLENBQUMsT0FBNkIsRUFBRSxJQUFpQjtRQUN4RCxPQUFPLElBQUk7YUFDUixNQUFNLENBQUMsT0FBTyxDQUFDO2FBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVPLFdBQVcsQ0FDakIsS0FBd0IsRUFDeEIsT0FBNkIsRUFDN0IsSUFBaUI7UUFFakIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3pDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNyQixJQUFJLFFBQVEsSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLHFCQUFxQixDQUFDLE9BQU8sRUFBRTt3QkFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3FCQUN4RDtvQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQzthQUNIO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQXdCO1FBQzdDLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHLElBQUssS0FBSyxDQUFDLEtBQWtCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztJQUN4RSxDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQXdCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDaEMsQ0FBQyxZQUEwQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFNLEtBQUssQ0FBQyxLQUFrQixDQUFDLElBQUksQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZLENBQUMsWUFBMEI7UUFDN0MsSUFBSSxZQUFZLENBQUMsU0FBUyxLQUFLLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDNUQ7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLG9CQUFvQixDQUFDLE9BQTZCO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRTtZQUM3RCxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUN4RSxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OzBIQXJGVSw2QkFBNkI7OEhBQTdCLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUR6QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBIdHRwRXJyb3JSZXNwb25zZSxcclxuICBIdHRwRXZlbnQsXHJcbiAgSHR0cEhhbmRsZXIsXHJcbiAgSHR0cEludGVyY2VwdG9yLFxyXG4gIEh0dHBSZXF1ZXN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtcclxuICBBcGlFcnJvcixcclxuICBIZWFkZXJQYXJhbSxcclxuICBTZXNzaW9uRXJyb3IsXHJcbiAgU2Vzc2lvbkVycm9yQmVoYXZpb3VyLFxyXG4gIFNtYXJ0U2Vzc2lvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi9wcm9qZWN0cyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTbWFydEVycm9yQ2F0Y2hpbmdJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgc2Vzc2lvbkVycm9yQ29kZXM6IFNlc3Npb25FcnJvcltdID0gW1xyXG4gICAge1xyXG4gICAgICBjb2RlOiAnc2Vzc2lvbi5leHBpcmVkJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVGUkVTSCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLnJlZnJlc2h0b2tlbi5pbnZhbGlkJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLmJhZHJlcXVlc3QubWlzc2luZ3Rva2VuJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLnNlY3VyaXR5Lm5vY29udGV4dCcsXHJcbiAgICAgIGJlaGF2aW91cjogU2Vzc2lvbkVycm9yQmVoYXZpb3VyLlJFU1RBUlQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjb2RlOiAnc2Vzc2lvbi5pbnZhbGlkc2Vzc2lvbnVyaScsXHJcbiAgICAgIGJlaGF2aW91cjogU2Vzc2lvbkVycm9yQmVoYXZpb3VyLlJFU1RBUlQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjb2RlOiAnc2Vzc2lvbi5ub3Rpbml0aWFsaXplZCcsXHJcbiAgICAgIGJlaGF2aW91cjogU2Vzc2lvbkVycm9yQmVoYXZpb3VyLlJFU1RBUlQsXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBjb2RlOiAnc2Vzc2lvbi52aWV3Y29udGV4dC5taXNzaW5nJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXNzaW9uOiBTbWFydFNlc3Npb25TZXJ2aWNlKSB7fVxyXG5cclxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcclxuICAgIHJldHVybiBuZXh0XHJcbiAgICAgIC5oYW5kbGUocmVxdWVzdClcclxuICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yLCByZXF1ZXN0LCBuZXh0KSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcclxuICAgIGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSxcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+LFxyXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcclxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xyXG4gICAgaWYgKHRoaXMuaXNTZXNzaW9uRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgIGNvbnN0IHNlc3Npb25FcnJvciA9IHRoaXMuZ2V0U2Vzc2lvbkVycm9yKGVycm9yKTtcclxuICAgICAgaWYgKHNlc3Npb25FcnJvcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVFcnJvcihzZXNzaW9uRXJyb3IpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHJlc29sdmVkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZCAmJiBzZXNzaW9uRXJyb3IuYmVoYXZpb3VyICE9PSBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLnVwZGF0ZVJlcXVlc3RIZWFkZXJzKHJlcXVlc3QpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNTZXNzaW9uRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzID09PSA0MDAgJiYgKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlICE9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlc3Npb25FcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBTZXNzaW9uRXJyb3IgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkVycm9yQ29kZXMuZmluZChcclxuICAgICAgKHNlc3Npb25FcnJvcjogU2Vzc2lvbkVycm9yKSA9PiBzZXNzaW9uRXJyb3IuY29kZSA9PT0gKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXNvbHZlRXJyb3Ioc2Vzc2lvbkVycm9yOiBTZXNzaW9uRXJyb3IpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKHNlc3Npb25FcnJvci5iZWhhdmlvdXIgPT09IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRVNUQVJUKSB7XHJcbiAgICAgIHJldHVybiBmcm9tKHRoaXMuc2Vzc2lvbi5oYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLnNlc3Npb24ucmVmcmVzaFNlc3Npb24oKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVJlcXVlc3RIZWFkZXJzKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PHVua25vd24+KTogSHR0cFJlcXVlc3Q8dW5rbm93bj4ge1xyXG4gICAgdGhpcy5zZXNzaW9uLmhlYWRlclBhcmFtcy5mb3JFYWNoKChoZWFkZXJQYXJhbTogSGVhZGVyUGFyYW0pID0+IHtcclxuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xyXG4gICAgICAgIGhlYWRlcnM6IHJlcXVlc3QuaGVhZGVycy5zZXQoaGVhZGVyUGFyYW0uaGVhZGVyTmFtZSwgaGVhZGVyUGFyYW0udmFsdWUpLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZXJyb3ItY2F0Y2hpbmcuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zZXNzaW9uL3NtYXJ0LWVycm9yLWNhdGNoaW5nLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEVBSUwscUJBQXFCLEdBRXRCLE1BQU0sWUFBWSxDQUFDOzs7QUFHcEIsTUFBTSxPQUFPLDZCQUE2QjtJQWdDeEMsWUFBb0IsT0FBNEI7UUFBNUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUEvQmhELHNCQUFpQixHQUFtQjtZQUNsQztnQkFDRSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTzthQUN6QztZQUNEO2dCQUNFLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlDQUFpQztnQkFDdkMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLE9BQU87YUFDekM7WUFDRDtnQkFDRSxJQUFJLEVBQUUsNEJBQTRCO2dCQUNsQyxTQUFTLEVBQUUscUJBQXFCLENBQUMsT0FBTzthQUN6QztZQUNEO2dCQUNFLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2FBQ3pDO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLHdCQUF3QjtnQkFDOUIsU0FBUyxFQUFFLHFCQUFxQixDQUFDLE9BQU87YUFDekM7WUFDRDtnQkFD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QUN0QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQ3hFLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7MEhBL0ZVLDZCQUE2Qjs4SEFBN0IsNkJBQTZCOzJGQUE3Qiw2QkFBNkI7a0JBRHpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSGFuZGxlcixcclxuICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgSHR0cFJlcXVlc3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQge1xyXG4gIEFwaUVycm9yLFxyXG4gIEhlYWRlclBhcmFtLFxyXG4gIFNlc3Npb25FcnJvcixcclxuICBTZXNzaW9uRXJyb3JCZWhhdmlvdXIsXHJcbiAgU21hcnRTZXNzaW9uU2VydmljZSxcclxufSBmcm9tICcuL3Byb2plY3RzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RXJyb3JDYXRjaGluZ0ludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBzZXNzaW9uRXJyb3JDb2RlczogU2Vzc2lvbkVycm9yW10gPSBbXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLmV4cGlyZWQnLFxyXG4gICAgICBiZWhhdmlvdXI6IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRUZSRVNILFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29kZTogJ3Nlc3Npb24ucmVmcmVzaHRva2VuLmludmFsaWQnLFxyXG4gICAgICBiZWhhdmlvdXI6IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRVNUQVJULFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29kZTogJ3Nlc3Npb24uYmFkcmVxdWVzdC5taXNzaW5ndG9rZW4nLFxyXG4gICAgICBiZWhhdmlvdXI6IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRVNUQVJULFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgY29kZTogJ3Nlc3Npb24uc2VjdXJpdHkubm9jb250ZXh0JyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLmludmFsaWRzZXNzaW9udXJpJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLm5vdGluaXRpYWxpemVkJyxcclxuICAgICAgYmVoYXZpb3VyOiBTZXNzaW9uRXJyb3JCZWhhdmlvdXIuUkVTVEFSVCxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGNvZGU6ICdzZXNzaW9uLnZpZXdjb250ZXh0Lm1pc3NpbmcnLFxyXG4gICAgICBiZWhhdmlvdXI6IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRVNUQVJULFxyXG4gICAgfSxcclxuICBdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlc3Npb246IFNtYXJ0U2Vzc2lvblNlcnZpY2UpIHt9XHJcblxyXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xyXG4gICAgcmV0dXJuIG5leHRcclxuICAgICAgLmhhbmRsZShyZXF1ZXN0KVxyXG4gICAgICAucGlwZShjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHJlcXVlc3QsIG5leHQpKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiB7XHJcbiAgICBpZiAodGhpcy5pc1Nlc3Npb25FcnJvcihlcnJvcikpIHtcclxuICAgICAgY29uc3Qgc2Vzc2lvbkVycm9yID0gdGhpcy5nZXRTZXNzaW9uRXJyb3IoZXJyb3IpO1xyXG4gICAgICBpZiAoc2Vzc2lvbkVycm9yKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZUVycm9yKHNlc3Npb25FcnJvcikucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgocmVzb2x2ZWQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc29sdmVkICYmIHNlc3Npb25FcnJvci5iZWhhdmlvdXIgPT09IFNlc3Npb25FcnJvckJlaGF2aW91ci5SRUZSRVNIKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMudXBkYXRlUmVxdWVzdEhlYWRlcnMocmVxdWVzdCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigocmVzb2x2ZUVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIHJlc29sdmVFcnJvciB0aHJvd3MgYSByZXN0YXJ0IGVycm9yIChpbiB0aGUgcmVmcmVzaFNlc3Npb24pLCByZXRocm93IHRoZSBvcmlnaW5hbCBlcnJvclxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1Nlc3Npb25FcnJvcihyZXNvbHZlRXJyb3IpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzb2x2ZVNlc3Npb25FcnJvciA9IHRoaXMuZ2V0U2Vzc2lvbkVycm9yKHJlc29sdmVFcnJvcik7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc29sdmVTZXNzaW9uRXJyb3I/LmJlaGF2aW91ciA9PT0gU2Vzc2lvbkVycm9yQmVoYXZpb3VyLlJFU1RBUlQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gcmVzb2x2ZUVycm9yKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1Nlc3Npb25FcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IDQwMCAmJiAoZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3IpLmNvZGUgIT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U2Vzc2lvbkVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IFNlc3Npb25FcnJvciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uRXJyb3JDb2Rlcy5maW5kKFxyXG4gICAgICAoc2Vzc2lvbkVycm9yOiBTZXNzaW9uRXJyb3IpID0+IHNlc3Npb25FcnJvci5jb2RlID09PSAoZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3IpLmNvZGVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVFcnJvcihzZXNzaW9uRXJyb3I6IFNlc3Npb25FcnJvcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAoc2Vzc2lvbkVycm9yLmJlaGF2aW91ciA9PT0gU2Vzc2lvbkVycm9yQmVoYXZpb3VyLlJFU1RBUlQpIHtcclxuICAgICAgcmV0dXJuIGZyb20odGhpcy5zZXNzaW9uLmhhbmRsZVNlc3Npb25FcnJvcihzZXNzaW9uRXJyb3IpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tKHRoaXMuc2Vzc2lvbi5yZWZyZXNoU2Vzc2lvbigpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUmVxdWVzdEhlYWRlcnMocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4pOiBIdHRwUmVxdWVzdDx1bmtub3duPiB7XHJcbiAgICB0aGlzLnNlc3Npb24uaGVhZGVyUGFyYW1zLmZvckVhY2goKGhlYWRlclBhcmFtOiBIZWFkZXJQYXJhbSkgPT4ge1xyXG4gICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgaGVhZGVyczogcmVxdWVzdC5oZWFkZXJzLnNldChoZWFkZXJQYXJhbS5oZWFkZXJOYW1lLCBoZWFkZXJQYXJhbS52YWx1ZSksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcbn1cclxuIl19
@@ -1,5 +1,6 @@
1
+ import { HttpErrorResponse } from '@angular/common/http';
1
2
  import { Injectable } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
+ import { Subject, lastValueFrom } from 'rxjs';
3
4
  import { SmartSubject } from '../smart-subject/projects';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "./api";
@@ -37,7 +38,7 @@ export class SmartSessionService {
37
38
  }
38
39
  async handleSessionError(sessionError) {
39
40
  if (this.sessionHandlerService) {
40
- await this.sessionHandlerService.handleSessionError(sessionError);
41
+ return await this.sessionHandlerService.handleSessionError(sessionError);
41
42
  }
42
43
  throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);
43
44
  }
@@ -132,11 +133,7 @@ export class SmartSessionService {
132
133
  async startSession() {
133
134
  let sessionInfo = await this.apiService.startSession().toPromise();
134
135
  if (sessionInfo) {
135
- this.sessionInfoData = sessionInfo;
136
- this.token = sessionInfo.sid;
137
- this.saveTokenToLocalStorage();
138
- this.setAuthenticationStatus();
139
- this.setUpTokenForSessionService();
136
+ this.updateSessionInfo(sessionInfo);
140
137
  }
141
138
  return this.sessionInfoData;
142
139
  }
@@ -155,26 +152,34 @@ export class SmartSessionService {
155
152
  if (!refreshToken) {
156
153
  return await this.startSession();
157
154
  }
158
- let sessionInfo = await this.apiService
159
- .refreshSession({
160
- refreshToken,
161
- })
162
- .toPromise()
163
- .catch(async (error) => {
164
- if (error.error &&
165
- error.error.code &&
166
- error.error.code === 'session.refreshtoken.invalid') {
167
- await this.startSession();
155
+ try {
156
+ const sessionInfo = await lastValueFrom(this.apiService.refreshSession({ refreshToken }));
157
+ if (sessionInfo) {
158
+ this.updateSessionInfo(sessionInfo);
159
+ return sessionInfo;
168
160
  }
169
- });
170
- if (sessionInfo) {
171
- this.sessionInfoData = sessionInfo;
172
- this.token = sessionInfo.sid;
173
- this.saveTokenToLocalStorage();
174
- this.setAuthenticationStatus();
175
- this.setUpTokenForSessionService();
176
161
  }
177
- return this.sessionInfoData;
162
+ catch (error) {
163
+ if (this.isInvalidRefreshTokenError(error)) {
164
+ this.clearAndStartNewSession();
165
+ // still throw the error, so the error can be handled in the caller
166
+ }
167
+ throw error;
168
+ }
169
+ // no sessionInfo returned
170
+ throw new Error('Unable to refresh session');
171
+ }
172
+ updateSessionInfo(sessionInfo) {
173
+ this.sessionInfoData = sessionInfo;
174
+ this.token = sessionInfo.sid;
175
+ this.saveTokenToLocalStorage();
176
+ this.setAuthenticationStatus();
177
+ this.setUpTokenForSessionService();
178
+ }
179
+ isInvalidRefreshTokenError(error) {
180
+ return (error instanceof HttpErrorResponse &&
181
+ error.error &&
182
+ error.error.code === 'session.refreshtoken.invalid');
178
183
  }
179
184
  async getAuthenticationProviders() {
180
185
  let providers = await this.apiService
@@ -222,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
222
227
  providedIn: 'root',
223
228
  }]
224
229
  }], ctorParameters: function () { return [{ type: i1.SessionService }, { type: i2.SmartCookieService }]; } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBVS9CLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQVN6RCxNQUFNLE9BQU8sbUJBQW1CO0lBcUM5QixZQUFvQixVQUEwQixFQUFVLGFBQWlDO1FBQXJFLGVBQVUsR0FBVixVQUFVLENBQWdCO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBakNqRixjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFpQjFDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLCtCQUEwQixHQUFxQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFaEYsaUJBQVksR0FBdUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMvQyxtQkFBYyxHQUFrQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEUsU0FBUztRQUNELDJCQUFzQixHQUFXLFFBQVEsQ0FBQztRQUMzQyxrQkFBYSxHQUFrQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFHaEUsMkJBQXNCLEdBQWtCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUlZLENBQUM7SUEvQjdGLElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBWSxlQUFlLENBQUMsZUFBNEM7UUFDdEUsSUFBSSxl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Q2hGO1lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztTQUNwQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFjO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDdkQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQzs7Z0hBN1BVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEFwaUVycm9yLFxyXG4gIEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhLFxyXG4gIEdldEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzUmVzcG9uc2UsXHJcbiAgU2Vzc2lvbkluZm9EYXRhLFxyXG4gIFNlc3Npb25TZXJ2aWNlLFxyXG59IGZyb20gJy4vYXBpJztcclxuaW1wb3J0IHsgU21hcnRDb29raWVTZXJ2aWNlIH0gZnJvbSAnLi9jb29raWUtc2VydmljZS9zbWFydC1jb29raWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNlc3Npb25FcnJvciwgU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL3NtYXJ0LXNlc3Npb24taGFuZGxlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlclBhcmFtIHtcclxuICBoZWFkZXJOYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRTZXNzaW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBiYXNlUGF0aD86IHN0cmluZztcclxuICBwcml2YXRlIHRva2VuPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Nlc3Npb25JbmZvRGF0YT86IFNlc3Npb25JbmZvRGF0YTtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIHB1YmxpYyBnZXQgc2Vzc2lvbkluZm9EYXRhKCk6IFNlc3Npb25JbmZvRGF0YSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbkluZm9EYXRhO1xyXG4gIH1cclxuICBwcml2YXRlIHNldCBzZXNzaW9uSW5mb0RhdGEoc2Vzc2lvbkluZm9EYXRhOiBTZXNzaW9uSW5mb0RhdGEgfCB1bmRlZmluZWQpIHtcclxuICAgIGxldCBleHBpcmFjeUNoYW5nZWQgPSB0aGlzLnNlc3Npb25JbmZvRGF0YT8uZXhwaXJhdGlvbiAhPT0gc2Vzc2lvbkluZm9EYXRhPy5leHBpcmF0aW9uO1xyXG5cclxuICAgIHRoaXMuX3Nlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvRGF0YTtcclxuXHJcbiAgICBpZiAoZXhwaXJhY3lDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMuc2Vzc2lvbkV4cGlyYWN5Q2hhbmdlZC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb3ZpZGVycz86IEFycmF5PEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhPjtcclxuICBwcml2YXRlIGNvb2tpZU5hbWU/OiBzdHJpbmc7XHJcbiAgcHVibGljIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgYXV0aGVudGljYXRpb25TdGF0ZUNoYW5nZWQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgcHVibGljIGhlYWRlclBhcmFtczogQXJyYXk8SGVhZGVyUGFyYW0+ID0gbmV3IEFycmF5KCk7XHJcbiAgcHVibGljIGhlYWRlcnNVcGRhdGVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcblxyXG4gIC8vIExvY2FsZVxyXG4gIHByaXZhdGUgbG9jYWxTdG9yYWdlTG9jYWxlTmFtZTogc3RyaW5nID0gJ2xvY2FsZSc7XHJcbiAgcHVibGljIGxvY2FsZUNoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICBwcml2YXRlIGluaXRpYWxpemVSdW5uaW5nOiBTdWJqZWN0PHZvaWQ+IHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgc2Vzc2lvbkV4cGlyYWN5Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICBwcml2YXRlIHNlc3Npb25IYW5kbGVyU2VydmljZT86IFNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IFNlc3Npb25TZXJ2aWNlLCBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IFNtYXJ0Q29va2llU2VydmljZSkge31cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNlc3Npb25IYW5kbGVyU2VydmljZShzbWFydFNlc3Npb25IYW5kbGVyU2VydmljZTogU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2UpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vzc2lvbkhhbmRsZXJTZXJ2aWNlID0gc21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2Vzc2lvbkVycm9yKHNlc3Npb25FcnJvcjogU2Vzc2lvbkVycm9yKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UpIHtcclxuICAgICAgYXdhaXQgdGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UuaGFuZGxlU2Vzc2lvbkVycm9yKHNlc3Npb25FcnJvcik7XHJcbiAgICB9XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNlc3Npb25IYW5kbGVyU2VydmljZSB3YXMgbm90IGluaXRpYWxpemVkLiBFcnJvcjogJHtzZXNzaW9uRXJyb3IuY29kZX1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRIZWFkZXJQYXJhbShoZWFkZXJQYXJhbTogSGVhZGVyUGFyYW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlclBhcmFtcy5maW5kKChoOiBIZWFkZXJQYXJhbSkgPT4gaC5oZWFkZXJOYW1lID09PSBoZWFkZXJQYXJhbS5oZWFkZXJOYW1lKSkge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmhlYWRlclBhcmFtcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGg6IEhlYWRlclBhcmFtKSA9PiBoLmhlYWRlck5hbWUgPT09IGhlYWRlclBhcmFtLmhlYWRlck5hbWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5oZWFkZXJQYXJhbXNbaW5kZXghXS52YWx1ZSA9IGhlYWRlclBhcmFtLnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oZWFkZXJQYXJhbXMucHVzaChoZWFkZXJQYXJhbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRlcnNVcGRhdGVkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBUb2tlbkZvclNlc3Npb25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRIZWFkZXJQYXJhbSh7XHJcbiAgICAgIGhlYWRlck5hbWU6ICdBdXRob3JpemF0aW9uJyxcclxuICAgICAgdmFsdWU6IGBCZWFyZXIgJHt0aGlzLnRva2VuIX1gLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VQYXRoID0gdXJsO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5iYXNlUGF0aCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2VQYXRoIGhhcyBub3QgYmVlbiBzZXQgaW4gU21hcnRTZXNzaW9uU2VydmljZSEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhc2VQYXRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvb2tpZU5hbWUgPSBuYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLmNvb2tpZU5hbWUpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgdGhpcy5zZXNzaW9uSW5mb0RhdGEuc2lkKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAmJlxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAhPT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZnJlc2hUb2tlbicpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5yZWZyZXNoVG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQodGhpcy5jb29raWVOYW1lLCB0aGlzLnRva2VuISk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucykge1xyXG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHRoaXMuaXNBdXRoZW50aWNhdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTdGF0ZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmJhc2VQYXRoKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHVybCBvZiB0aGUgYmFja2VuZCBhcGkgaGFzIG5vdCBiZWVuIHNldCEnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY29va2llTmFtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBuYW1lIG9mIHRoZSBjb29raWUgcmVxdWlyZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldCEnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcudG9Qcm9taXNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlbWVudHMoKTtcclxuXHJcbiAgICAgICAgbGV0IHRva2VuRnJvbUxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpO1xyXG4gICAgICAgIGxldCB0b2tlbkZyb21Db29raWVzID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLmNvb2tpZU5hbWUhKTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlICYmXHJcbiAgICAgICAgICB0b2tlbkZyb21Db29raWVzICYmXHJcbiAgICAgICAgICB0b2tlbkZyb21Mb2NhbFN0b3JhZ2UgPT09IHRva2VuRnJvbUNvb2tpZXNcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkZyb21Mb2NhbFN0b3JhZ2U7XHJcbiAgICAgICAgICB0aGlzLnNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRTZXNzaW9uKCk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jbGVhckFuZFN0YXJ0TmV3U2Vzc2lvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZWQubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUnVubmluZyA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcclxuICAgIGxldCBzZXNzaW9uSW5mbyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5zdGFydFNlc3Npb24oKS50b1Byb21pc2UoKTtcclxuICAgIGlmIChzZXNzaW9uSW5mbykge1xyXG4gICAgICB0aGlzLnNlc3Npb25JbmZvRGF0YSA9IHNlc3Npb25JbmZvO1xyXG4gICAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xyXG4gICAgICB0aGlzLnNhdmVUb2tlblRvTG9jYWxTdG9yYWdlKCk7XHJcbiAgICAgIHRoaXMuc2V0QXV0aGVudGljYXRpb25TdGF0dXMoKTtcclxuICAgICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcclxuICAgIGxldCBzZXNzaW9uSW5mbyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXRTZXNzaW9uKCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoc2Vzc2lvbkluZm8pIHtcclxuICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mbztcclxuICAgICAgdGhpcy50b2tlbiA9IHNlc3Npb25JbmZvLnNpZDtcclxuICAgICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkluZm9EYXRhITtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoU2Vzc2lvbigpOiBQcm9taXNlPFNlc3Npb25JbmZvRGF0YT4ge1xyXG4gICAgbGV0IHJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKTtcclxuICAgIGlmICghcmVmcmVzaFRva2VuKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBzZXNzaW9uSW5mbyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZVxyXG4gICAgICAucmVmcmVzaFNlc3Npb24oe1xyXG4gICAgICAgIHJlZnJlc2hUb2tlbixcclxuICAgICAgfSlcclxuICAgICAgLnRvUHJvbWlzZSgpXHJcbiAgICAgIC5jYXRjaChhc3luYyAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZXJyb3IuZXJyb3IgJiZcclxuICAgICAgICAgIChlcnJvci5lcnJvciBhcyBBcGlFcnJvcikuY29kZSAmJlxyXG4gICAgICAgICAgKGVycm9yLmVycm9yIGFzIEFwaUVycm9yKS5jb2RlID09PSAnc2Vzc2lvbi5yZWZyZXNodG9rZW4uaW52YWxpZCdcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuc3RhcnRTZXNzaW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoc2Vzc2lvbkluZm8pIHtcclxuICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mbztcclxuICAgICAgdGhpcy50b2tlbiA9IHNlc3Npb25JbmZvLnNpZDtcclxuICAgICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XHJcbiAgICAgIHRoaXMuc2V0VXBUb2tlbkZvclNlc3Npb25TZXJ2aWNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkluZm9EYXRhITtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBdXRoZW50aWNhdGlvblByb3ZpZGVycygpOiBQcm9taXNlPEFycmF5PEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhPj4ge1xyXG4gICAgbGV0IHByb3ZpZGVyczogR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuYXBpU2VydmljZVxyXG4gICAgICAuZ2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnMoKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgdGhpcy5wcm92aWRlcnMgPSBwcm92aWRlcnM/LmF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnByb3ZpZGVycyE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZDtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNsZWFyQW5kU3RhcnROZXdTZXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5oZWFkZXJQYXJhbXMgPSBbXTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5jb29raWVOYW1lISk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpIHtcclxuICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSkgIT09IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSwgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBubyBTZXNzaW9uSW5mb0RhdGEgb3IgbG9jYWxlIGlzIHVuZGVmaW5lZC4nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnNldExvY2FsZShsb2NhbGUpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgIHRoaXMubG9jYWxlQ2hhbmdlZC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtc2Vzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc2Vzc2lvbi9zbWFydC1zZXNzaW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFTekQsTUFBTSxPQUFPLG1CQUFtQjtJQXFDOUIsWUFBb0IsVUFBMEIsRUFBVSxhQUFpQztRQUFyRSxlQUFVLEdBQVYsVUFBVSxDQUFnQjtRQUFVLGtCQUFhLEdBQWIsYUFBYSxDQUFvQjtRQWpDakYsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBaUIxQyxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVqQywrQkFBMEIsR0FBcUIsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWhGLGlCQUFZLEdBQXVCLElBQUksS0FBSyxFQUFFLENBQUM7UUFDL0MsbUJBQWMsR0FBa0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhFLFNBQVM7UUFDRCwyQkFBc0IsR0FBVyxRQUFRLENBQUM7UUFDM0Msa0JBQWEsR0FBa0IsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBR2hFLDJCQUFzQixHQUFrQixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFJWSxDQUFDO0lBL0I3RixJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdC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SSxDQUFDLHNCQUFzQixDQUFDLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3JGLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEY7WUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO1NBQ3BDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQWM7UUFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNFLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN2RCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDOztnSEFoUVUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQXBpRXJyb3IsXHJcbiAgQXV0aGVudGljYXRpb25Qcm92aWRlckRhdGEsXHJcbiAgR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSxcclxuICBTZXNzaW9uSW5mb0RhdGEsXHJcbiAgU2Vzc2lvblNlcnZpY2UsXHJcbn0gZnJvbSAnLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydENvb2tpZVNlcnZpY2UgfSBmcm9tICcuL2Nvb2tpZS1zZXJ2aWNlL3NtYXJ0LWNvb2tpZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Vzc2lvbkVycm9yLCBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSB9IGZyb20gJy4vc21hcnQtc2Vzc2lvbi1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydFN1YmplY3QgfSBmcm9tICcuLi9zbWFydC1zdWJqZWN0L3Byb2plY3RzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyUGFyYW0ge1xyXG4gIGhlYWRlck5hbWU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydFNlc3Npb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGJhc2VQYXRoPzogc3RyaW5nO1xyXG4gIHByaXZhdGUgdG9rZW4/OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfc2Vzc2lvbkluZm9EYXRhPzogU2Vzc2lvbkluZm9EYXRhO1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHVibGljIGdldCBzZXNzaW9uSW5mb0RhdGEoKTogU2Vzc2lvbkluZm9EYXRhIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSW5mb0RhdGE7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0IHNlc3Npb25JbmZvRGF0YShzZXNzaW9uSW5mb0RhdGE6IFNlc3Npb25JbmZvRGF0YSB8IHVuZGVmaW5lZCkge1xyXG4gICAgbGV0IGV4cGlyYWN5Q2hhbmdlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhPy5leHBpcmF0aW9uICE9PSBzZXNzaW9uSW5mb0RhdGE/LmV4cGlyYXRpb247XHJcblxyXG4gICAgdGhpcy5fc2Vzc2lvbkluZm9EYXRhID0gc2Vzc2lvbkluZm9EYXRhO1xyXG5cclxuICAgIGlmIChleHBpcmFjeUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5zZXNzaW9uRXhwaXJhY3lDaGFuZ2VkLm5leHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvdmlkZXJzPzogQXJyYXk8QXV0aGVudGljYXRpb25Qcm92aWRlckRhdGE+O1xyXG4gIHByaXZhdGUgY29va2llTmFtZT86IHN0cmluZztcclxuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBhdXRoZW50aWNhdGlvblN0YXRlQ2hhbmdlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG5cclxuICBwdWJsaWMgaGVhZGVyUGFyYW1zOiBBcnJheTxIZWFkZXJQYXJhbT4gPSBuZXcgQXJyYXkoKTtcclxuICBwdWJsaWMgaGVhZGVyc1VwZGF0ZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgLy8gTG9jYWxlXHJcbiAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VMb2NhbGVOYW1lOiBzdHJpbmcgPSAnbG9jYWxlJztcclxuICBwdWJsaWMgbG9jYWxlQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVJ1bm5pbmc6IFN1YmplY3Q8dm9pZD4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBzZXNzaW9uRXhwaXJhY3lDaGFuZ2VkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcblxyXG4gIHByaXZhdGUgc2Vzc2lvbkhhbmRsZXJTZXJ2aWNlPzogU21hcnRTZXNzaW9uSGFuZGxlclNlcnZpY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBpU2VydmljZTogU2Vzc2lvblNlcnZpY2UsIHByaXZhdGUgY29va2llU2VydmljZTogU21hcnRDb29raWVTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlKHNtYXJ0U2Vzc2lvbkhhbmRsZXJTZXJ2aWNlOiBTbWFydFNlc3Npb25IYW5kbGVyU2VydmljZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UgPSBzbWFydFNlc3Npb25IYW5kbGVyU2VydmljZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZXNzaW9uRXJyb3Ioc2Vzc2lvbkVycm9yOiBTZXNzaW9uRXJyb3IpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLnNlc3Npb25IYW5kbGVyU2VydmljZSkge1xyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXNzaW9uSGFuZGxlclNlcnZpY2UuaGFuZGxlU2Vzc2lvbkVycm9yKHNlc3Npb25FcnJvcik7XHJcbiAgICB9XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHNlc3Npb25IYW5kbGVyU2VydmljZSB3YXMgbm90IGluaXRpYWxpemVkLiBFcnJvcjogJHtzZXNzaW9uRXJyb3IuY29kZX1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRIZWFkZXJQYXJhbShoZWFkZXJQYXJhbTogSGVhZGVyUGFyYW0pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhlYWRlclBhcmFtcy5maW5kKChoOiBIZWFkZXJQYXJhbSkgPT4gaC5oZWFkZXJOYW1lID09PSBoZWFkZXJQYXJhbS5oZWFkZXJOYW1lKSkge1xyXG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmhlYWRlclBhcmFtcy5maW5kSW5kZXgoXHJcbiAgICAgICAgKGg6IEhlYWRlclBhcmFtKSA9PiBoLmhlYWRlck5hbWUgPT09IGhlYWRlclBhcmFtLmhlYWRlck5hbWVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5oZWFkZXJQYXJhbXNbaW5kZXghXS52YWx1ZSA9IGhlYWRlclBhcmFtLnZhbHVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5oZWFkZXJQYXJhbXMucHVzaChoZWFkZXJQYXJhbSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRlcnNVcGRhdGVkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBUb2tlbkZvclNlc3Npb25TZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hZGRIZWFkZXJQYXJhbSh7XHJcbiAgICAgIGhlYWRlck5hbWU6ICdBdXRob3JpemF0aW9uJyxcclxuICAgICAgdmFsdWU6IGBCZWFyZXIgJHt0aGlzLnRva2VuIX1gLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VXJsKHVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VQYXRoID0gdXJsO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0QmFzZVBhdGgoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5iYXNlUGF0aCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jhc2VQYXRoIGhhcyBub3QgYmVlbiBzZXQgaW4gU21hcnRTZXNzaW9uU2VydmljZSEnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmJhc2VQYXRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvb2tpZU5hbWUgPSBuYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLmNvb2tpZU5hbWUpIHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Rva2VuJywgdGhpcy5zZXNzaW9uSW5mb0RhdGEuc2lkKTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAmJlxyXG4gICAgICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhLnJlZnJlc2hUb2tlbiAhPT0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZnJlc2hUb2tlbicpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdyZWZyZXNoVG9rZW4nLCB0aGlzLnNlc3Npb25JbmZvRGF0YS5yZWZyZXNoVG9rZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29va2llU2VydmljZS5zZXQodGhpcy5jb29raWVOYW1lLCB0aGlzLnRva2VuISk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucykge1xyXG4gICAgICB0aGlzLmlzQXV0aGVudGljYXRlZCA9IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmF1dGhlbnRpY2F0aW9ucy5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblN0YXRlQ2hhbmdlZC5uZXh0KHRoaXMuaXNBdXRoZW50aWNhdGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2hlY2tTdGF0ZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmJhc2VQYXRoKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIHVybCBvZiB0aGUgYmFja2VuZCBhcGkgaGFzIG5vdCBiZWVuIHNldCEnKTtcclxuICAgIH0gZWxzZSBpZiAoIXRoaXMuY29va2llTmFtZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBuYW1lIG9mIHRoZSBjb29raWUgcmVxdWlyZWQgYnkgdGhlIGJhY2tlbmQgaGFzIG5vdCBiZWVuIHNldCEnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZVJ1bm5pbmcudG9Qcm9taXNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlbWVudHMoKTtcclxuXHJcbiAgICAgICAgbGV0IHRva2VuRnJvbUxvY2FsU3RvcmFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0b2tlbicpO1xyXG4gICAgICAgIGxldCB0b2tlbkZyb21Db29raWVzID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLmNvb2tpZU5hbWUhKTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdG9rZW5Gcm9tTG9jYWxTdG9yYWdlICYmXHJcbiAgICAgICAgICB0b2tlbkZyb21Db29raWVzICYmXHJcbiAgICAgICAgICB0b2tlbkZyb21Mb2NhbFN0b3JhZ2UgPT09IHRva2VuRnJvbUNvb2tpZXNcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbkZyb21Mb2NhbFN0b3JhZ2U7XHJcbiAgICAgICAgICB0aGlzLnNldFVwVG9rZW5Gb3JTZXNzaW9uU2VydmljZSgpO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5nZXRTZXNzaW9uKCk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5jbGVhckFuZFN0YXJ0TmV3U2Vzc2lvbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mb0RhdGEgJiYgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKSB7XHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgICAgICB0aGlzLmxvY2FsZUNoYW5nZWQubmV4dCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICB0aGlzLmluaXRpYWxpemVSdW5uaW5nLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUnVubmluZyA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzdGFydFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcclxuICAgIGxldCBzZXNzaW9uSW5mbyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5zdGFydFNlc3Npb24oKS50b1Byb21pc2UoKTtcclxuICAgIGlmIChzZXNzaW9uSW5mbykge1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlc3Npb25JbmZvKHNlc3Npb25JbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEhO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNlc3Npb24oKTogUHJvbWlzZTxTZXNzaW9uSW5mb0RhdGE+IHtcclxuICAgIGxldCBzZXNzaW9uSW5mbyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXRTZXNzaW9uKCkudG9Qcm9taXNlKCk7XHJcbiAgICBpZiAoc2Vzc2lvbkluZm8pIHtcclxuICAgICAgdGhpcy5zZXNzaW9uSW5mb0RhdGEgPSBzZXNzaW9uSW5mbztcclxuICAgICAgdGhpcy50b2tlbiA9IHNlc3Npb25JbmZvLnNpZDtcclxuICAgICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgICB0aGlzLnNldEF1dGhlbnRpY2F0aW9uU3RhdHVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc2Vzc2lvbkluZm9EYXRhITtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZWZyZXNoU2Vzc2lvbigpOiBQcm9taXNlPFNlc3Npb25JbmZvRGF0YT4ge1xyXG4gICAgbGV0IHJlZnJlc2hUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWZyZXNoVG9rZW4nKTtcclxuICAgIGlmICghcmVmcmVzaFRva2VuKSB7XHJcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnN0YXJ0U2Vzc2lvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNlc3Npb25JbmZvID0gYXdhaXQgbGFzdFZhbHVlRnJvbSh0aGlzLmFwaVNlcnZpY2UucmVmcmVzaFNlc3Npb24oeyByZWZyZXNoVG9rZW4gfSkpO1xyXG4gICAgICBpZiAoc2Vzc2lvbkluZm8pIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNlc3Npb25JbmZvKHNlc3Npb25JbmZvKTtcclxuICAgICAgICByZXR1cm4gc2Vzc2lvbkluZm87XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGlmICh0aGlzLmlzSW52YWxpZFJlZnJlc2hUb2tlbkVycm9yKGVycm9yKSkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJBbmRTdGFydE5ld1Nlc3Npb24oKTtcclxuICAgICAgICAvLyBzdGlsbCB0aHJvdyB0aGUgZXJyb3IsIHNvIHRoZSBlcnJvciBjYW4gYmUgaGFuZGxlZCBpbiB0aGUgY2FsbGVyXHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9XHJcbiAgICAvLyBubyBzZXNzaW9uSW5mbyByZXR1cm5lZFxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gcmVmcmVzaCBzZXNzaW9uJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVNlc3Npb25JbmZvKHNlc3Npb25JbmZvOiBTZXNzaW9uSW5mb0RhdGEpOiB2b2lkIHtcclxuICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhID0gc2Vzc2lvbkluZm87XHJcbiAgICB0aGlzLnRva2VuID0gc2Vzc2lvbkluZm8uc2lkO1xyXG4gICAgdGhpcy5zYXZlVG9rZW5Ub0xvY2FsU3RvcmFnZSgpO1xyXG4gICAgdGhpcy5zZXRBdXRoZW50aWNhdGlvblN0YXR1cygpO1xyXG4gICAgdGhpcy5zZXRVcFRva2VuRm9yU2Vzc2lvblNlcnZpY2UoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNJbnZhbGlkUmVmcmVzaFRva2VuRXJyb3IoZXJyb3I6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJlxyXG4gICAgICBlcnJvci5lcnJvciAmJlxyXG4gICAgICAoZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3IpLmNvZGUgPT09ICdzZXNzaW9uLnJlZnJlc2h0b2tlbi5pbnZhbGlkJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBdXRoZW50aWNhdGlvblByb3ZpZGVycygpOiBQcm9taXNlPEFycmF5PEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJEYXRhPj4ge1xyXG4gICAgbGV0IHByb3ZpZGVyczogR2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnNSZXNwb25zZSB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuYXBpU2VydmljZVxyXG4gICAgICAuZ2V0QXV0aGVudGljYXRpb25Qcm92aWRlcnMoKVxyXG4gICAgICAudG9Qcm9taXNlKCk7XHJcblxyXG4gICAgdGhpcy5wcm92aWRlcnMgPSBwcm92aWRlcnM/LmF1dGhlbnRpY2F0aW9uUHJvdmlkZXJzO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnByb3ZpZGVycyE7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SXNBdXRoZW50aWNhdGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmlzQXV0aGVudGljYXRlZDtcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbigpO1xyXG4gICAgcmV0dXJuIHRoaXMuaXNBdXRoZW50aWNhdGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGNsZWFyQW5kU3RhcnROZXdTZXNzaW9uKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgdGhpcy5oZWFkZXJQYXJhbXMgPSBbXTtcclxuICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5jb29raWVOYW1lISk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5zdGFydFNlc3Npb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMb2NhbGUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLnNlc3Npb25JbmZvRGF0YSAmJiB0aGlzLnNlc3Npb25JbmZvRGF0YS5sb2NhbGUpIHtcclxuICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSkgIT09IHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlTG9jYWxlTmFtZSwgdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uSW5mb0RhdGEubG9jYWxlO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGVyZSBpcyBubyBTZXNzaW9uSW5mb0RhdGEgb3IgbG9jYWxlIGlzIHVuZGVmaW5lZC4nKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjaGFuZ2VMb2NhbGUobG9jYWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2Vzc2lvbkluZm9EYXRhID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnNldExvY2FsZShsb2NhbGUpLnRvUHJvbWlzZSgpO1xyXG4gICAgaWYgKHRoaXMuc2Vzc2lvbkluZm9EYXRhICYmIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSkge1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmxvY2FsU3RvcmFnZUxvY2FsZU5hbWUsIHRoaXMuc2Vzc2lvbkluZm9EYXRhLmxvY2FsZSk7XHJcbiAgICAgIHRoaXMubG9jYWxlQ2hhbmdlZC5uZXh0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, Optional, Inject, PLATFORM_ID, NgModule, SkipSelf, Component, RendererStyleFlags2, Input, Directive, HostBinding, HostListener, ViewChild, forwardRef, EventEmitter, Output, Pipe, ViewContainerRef, ViewEncapsulation, ChangeDetectionStrategy, ViewChildren, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, ChangeDetectorRef } from '@angular/core';
3
3
  import { __awaiter } from 'tslib';
4
- import { Subject, takeUntil, startWith, map, distinctUntilChanged, catchError, throwError, from, lastValueFrom } from 'rxjs';
5
4
  import * as i1 from '@angular/common/http';
6
- import { HttpHeaders, HttpContext, HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
5
+ import { HttpHeaders, HttpContext, HttpErrorResponse, HttpParams, HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
6
+ import { Subject, lastValueFrom, takeUntil, startWith, map, distinctUntilChanged, catchError, throwError, from } from 'rxjs';
7
7
  import * as i3 from '@angular/common';
8
8
  import { isPlatformBrowser, DOCUMENT, DatePipe, CommonModule } from '@angular/common';
9
9
  import * as i2 from '@angular/material/button';
@@ -776,7 +776,7 @@ class SmartSessionService {
776
776
  handleSessionError(sessionError) {
777
777
  return __awaiter(this, void 0, void 0, function* () {
778
778
  if (this.sessionHandlerService) {
779
- yield this.sessionHandlerService.handleSessionError(sessionError);
779
+ return yield this.sessionHandlerService.handleSessionError(sessionError);
780
780
  }
781
781
  throw new Error(`sessionHandlerService was not initialized. Error: ${sessionError.code}`);
782
782
  });
@@ -875,11 +875,7 @@ class SmartSessionService {
875
875
  return __awaiter(this, void 0, void 0, function* () {
876
876
  let sessionInfo = yield this.apiService.startSession().toPromise();
877
877
  if (sessionInfo) {
878
- this.sessionInfoData = sessionInfo;
879
- this.token = sessionInfo.sid;
880
- this.saveTokenToLocalStorage();
881
- this.setAuthenticationStatus();
882
- this.setUpTokenForSessionService();
878
+ this.updateSessionInfo(sessionInfo);
883
879
  }
884
880
  return this.sessionInfoData;
885
881
  });
@@ -902,28 +898,36 @@ class SmartSessionService {
902
898
  if (!refreshToken) {
903
899
  return yield this.startSession();
904
900
  }
905
- let sessionInfo = yield this.apiService
906
- .refreshSession({
907
- refreshToken,
908
- })
909
- .toPromise()
910
- .catch((error) => __awaiter(this, void 0, void 0, function* () {
911
- if (error.error &&
912
- error.error.code &&
913
- error.error.code === 'session.refreshtoken.invalid') {
914
- yield this.startSession();
901
+ try {
902
+ const sessionInfo = yield lastValueFrom(this.apiService.refreshSession({ refreshToken }));
903
+ if (sessionInfo) {
904
+ this.updateSessionInfo(sessionInfo);
905
+ return sessionInfo;
915
906
  }
916
- }));
917
- if (sessionInfo) {
918
- this.sessionInfoData = sessionInfo;
919
- this.token = sessionInfo.sid;
920
- this.saveTokenToLocalStorage();
921
- this.setAuthenticationStatus();
922
- this.setUpTokenForSessionService();
923
907
  }
924
- return this.sessionInfoData;
908
+ catch (error) {
909
+ if (this.isInvalidRefreshTokenError(error)) {
910
+ this.clearAndStartNewSession();
911
+ // still throw the error, so the error can be handled in the caller
912
+ }
913
+ throw error;
914
+ }
915
+ // no sessionInfo returned
916
+ throw new Error('Unable to refresh session');
925
917
  });
926
918
  }
919
+ updateSessionInfo(sessionInfo) {
920
+ this.sessionInfoData = sessionInfo;
921
+ this.token = sessionInfo.sid;
922
+ this.saveTokenToLocalStorage();
923
+ this.setAuthenticationStatus();
924
+ this.setUpTokenForSessionService();
925
+ }
926
+ isInvalidRefreshTokenError(error) {
927
+ return (error instanceof HttpErrorResponse &&
928
+ error.error &&
929
+ error.error.code === 'session.refreshtoken.invalid');
930
+ }
927
931
  getAuthenticationProviders() {
928
932
  return __awaiter(this, void 0, void 0, function* () {
929
933
  let providers = yield this.apiService
@@ -9095,10 +9099,19 @@ class SmartErrorCatchingInterceptor {
9095
9099
  const sessionError = this.getSessionError(error);
9096
9100
  if (sessionError) {
9097
9101
  return this.resolveError(sessionError).pipe(switchMap((resolved) => {
9098
- if (resolved && sessionError.behaviour !== SessionErrorBehaviour.RESTART) {
9102
+ if (resolved && sessionError.behaviour === SessionErrorBehaviour.REFRESH) {
9099
9103
  return next.handle(this.updateRequestHeaders(request));
9100
9104
  }
9101
9105
  return throwError(() => error);
9106
+ }), catchError$1((resolveError) => {
9107
+ // when the resolveError throws a restart error (in the refreshSession), rethrow the original error
9108
+ if (this.isSessionError(resolveError)) {
9109
+ const resolveSessionError = this.getSessionError(resolveError);
9110
+ if ((resolveSessionError === null || resolveSessionError === void 0 ? void 0 : resolveSessionError.behaviour) === SessionErrorBehaviour.RESTART) {
9111
+ return throwError(() => error);
9112
+ }
9113
+ }
9114
+ return throwError(() => resolveError);
9102
9115
  }));
9103
9116
  }
9104
9117
  }