@annalib/anna-cognito-lib 2.2.25 → 2.2.27

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.
@@ -201,11 +201,14 @@ export class AnnaLibAuthService {
201
201
  }
202
202
  async verifyCode(confirmationCode, newPassword) {
203
203
  try {
204
- confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode });
205
- await this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);
204
+ confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode }).then((response) => {
205
+ this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);
206
+ }, (err) => {
207
+ this.noOfAttempts = this.noOfAttempts + 1;
208
+ this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);
209
+ });
206
210
  }
207
211
  catch (err) {
208
- console.log(err);
209
212
  this.noOfAttempts = this.noOfAttempts + 1;
210
213
  this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);
211
214
  }
@@ -214,18 +217,19 @@ export class AnnaLibAuthService {
214
217
  }
215
218
  }
216
219
  forgotPasswordError(err, noOfAttempts) {
217
- let errorMessage;
218
- switch (err.code) {
219
- case "LimitExceededException":
220
- this.sessionLocked = true;
221
- errorMessage = LoginConstant.attemptLimitExceeded;
222
- break;
223
- case "ExpiredCodeException":
224
- errorMessage = LoginConstant.sessionExpired;
225
- this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;
226
- break;
227
- default:
228
- errorMessage = LoginConstant.attempt + " " + noOfAttempts + LoginConstant.attemptMessage;
220
+ let errorMessage = '';
221
+ console.log(err);
222
+ let errorThrown = JSON.stringify(err);
223
+ if (errorThrown.includes("LimitExceededException")) {
224
+ this.sessionLocked = true;
225
+ errorMessage = LoginConstant.attemptLimitExceeded;
226
+ }
227
+ else if (errorThrown.includes("ExpiredCodeException")) {
228
+ errorMessage = LoginConstant.sessionExpired;
229
+ this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;
230
+ }
231
+ else {
232
+ errorMessage = LoginConstant.attempt + " " + noOfAttempts + LoginConstant.attemptMessage;
229
233
  }
230
234
  return errorMessage;
231
235
  }
@@ -285,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
285
289
  type: Inject,
286
290
  args: [AUTH_SERVICE_TOKEN]
287
291
  }] }]; } });
288
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUNzQixvQkFBb0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQzlFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFDakQsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUs5RixNQUFNLE9BQU8sa0JBQWtCO0lBWTNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3JCLE1BQXFCLEVBQ1csK0JBQWlELEVBQ3RELDJCQUF5QztRQUxwRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ1csb0NBQStCLEdBQS9CLCtCQUEr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QUZmLE1BQU07MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBa0JRLE1BQU07MkJBQUMsdUJBQXVCOzswQkFDOUIsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHtcclxuICAgIEF1dGhUb2tlbnMsIFNpZ25JbklucHV0LCBjb25maXJtUmVzZXRQYXNzd29yZCwgY29uZmlybVNpZ25JbiwgZmV0Y2hBdXRoU2Vzc2lvbixcclxuICAgIGdldEN1cnJlbnRVc2VyLCByZXNldFBhc3N3b3JkLCBzaWduSW4sIHNpZ25PdXRcclxufSBmcm9tIFwiYXdzLWFtcGxpZnkvYXV0aFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQVVUSF9TRVJWSUNFX1RPS0VOLCBJQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvYXV0aC1zZXJ2aWNlLnRva2VuJztcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gXCIuLi9jb25zdGFudHMvbG9naW5Db25zdGFudFwiO1xyXG5pbXBvcnQgeyBBbm5hTGliQWNsU2VydmljZSB9IGZyb20gJy4vYWNsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU1NPTG9naW5TZXJ2aWNlLCBTU09fTE9HSU5fU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy9zc28tbG9naW4tc2VydmljZS50b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFMaWJBdXRoU2VydmljZSB7XHJcbiAgICBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIHNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBzZXROZXdQYXNzd29yZEJ1dHRvbk1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uOiBzdHJpbmc7XHJcbiAgICBub09mQXR0ZW1wdHMgPSAwO1xyXG4gICAgc2Vzc2lvbkxvY2tlZCA9IGZhbHNlO1xyXG4gICAgYWNjZXNzVG9rZW5UaW1lcklkOiBhbnk7XHJcbiAgICBmb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXI6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgYWNsU2VydmljZTogQW5uYUxpYkFjbFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChBVVRIX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2U6IElBdXRoU2VydmljZSkge1xyXG4gICAgICAgIGlmICghY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGF1dGhTZXJ2aWNlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gICAgYXN5bmMgaXNVc2VyTG9nZ2VkSW4oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gYXdhaXQgZ2V0Q3VycmVudFVzZXIoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb246IGFueSA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uPy50b2tlbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5JZFRva2VuID0gc2Vzc2lvbj8udG9rZW5zLmlkVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3VwcyhzZXNzaW9uLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZEVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb25UaW1lb3V0KCkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hY2Nlc3NUb2tlblRpbWVySWQpO1xyXG4gICAgICAgIGxldCBhZnRlckxvZ291dFJlZGlyZWN0VG86IHN0cmluZztcclxuICAgICAgICBpZiAodGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmlzU3NvSW50ZWdyYXRlZCAmJiAhdGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmxvZ2dlZEluVmlhU3NvKSB7XHJcbiAgICAgICAgICAgIGFmdGVyTG9nb3V0UmVkaXJlY3RUbyA9IExvZ2luQ29uc3RhbnQuY29QaWxvdGxvZ2luUGFnZVVybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFmdGVyTG9nb3V0UmVkaXJlY3RUbyA9IExvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcHV0ZVRva2VuRXhwaXJhdGlvbihpZFRva2VuOiBhbnkpIHtcclxuICAgICAgICBsZXQgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICBsZXQgdG9rZW5UaW1lID0gaWRUb2tlbi5wYXlsb2FkLmV4cDtcclxuICAgICAgICBsZXQgZXhwVGltZSA9ICh0b2tlblRpbWUgLSBjdXJyZW50VGltZSkgKiAxMDAwO1xyXG4gICAgICAgIHJldHVybiBleHBUaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGhhbmRsZVNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9OiBTaWduSW5JbnB1dCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaXNTaWduZWRJbiwgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHMoc2Vzc2lvbi50b2tlbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgXCJDT05GSVJNX1NJR05fSU5fV0lUSF9ORVdfUEFTU1dPUkRfUkVRVUlSRURcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gdXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQuc2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkVTRVRfUEFTU1dPUkRcIjpcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlID09IExvZ2luQ29uc3RhbnQudGVtcFBhc3N3b3JkRXhwaXJ5RXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnRlbXBQYXNzd29yZE9uRXhwaXJ5RXJyb3JNc2c7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zZW5kUmVnZW5lcmF0aW9uRW1haWwodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yPy5tZXNzYWdlID09PSBcIlBhc3N3b3JkIGF0dGVtcHRzIGV4Y2VlZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LmF0dGVtcHRMaW1pdEV4Y2VlZGVkO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IHRoaXMuY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZS5pc1Nzb0ludGVncmF0ZWQgP1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQudXNlckNvZGVQYXNzd29yZEluY29ycmVjdCA6IExvZ2luQ29uc3RhbnQudXNlck5hbWVQYXNzd29yZEluY29ycmVjdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkxvZ2luT3JTZXROZXdQYXNzd29yZChzZXNzaW9uOiBhbnkpIHtcclxuICAgICAgICBsZXQgbmV3RXhwVGltZSA9IHRoaXMuY29tcHV0ZVRva2VuRXhwaXJhdGlvbihzZXNzaW9uLnRva2Vucy5pZFRva2VuKTtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5hY2Nlc3NUb2tlbiA9IHNlc3Npb24udG9rZW5zLmFjY2Vzc1Rva2VuLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbiA9IHNlc3Npb24udG9rZW5zLmlkVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWNjZXNzQW5kSURUb2tlbnModG9rZW46IEF1dGhUb2tlbnMpIHtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5hY2Nlc3NUb2tlbiA9IHRva2VuLmFjY2Vzc1Rva2VuLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbiA9IHRva2VuLmlkVG9rZW47XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuOiBBdXRoVG9rZW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRBY2Nlc3NBbmRJRFRva2Vucyh0b2tlbik7XHJcbiAgICAgICAgaWYgKFwiY29nbml0bzpncm91cHNcIiBpbiB0b2tlbi5hY2Nlc3NUb2tlbi5wYXlsb2FkKSB7XHJcbiAgICAgICAgICAgIGxldCB1c2VyR3JvdXBzSW5Db2duaXRvSldUOiBhbnkgPSB0b2tlbi5hY2Nlc3NUb2tlbi5wYXlsb2FkW1wiY29nbml0bzpncm91cHNcIl07XHJcbiAgICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gdXNlckdyb3Vwc0luQ29nbml0b0pXVDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UudXNlckdyb3Vwc0luQ29nbml0b0pXVCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQWNjZXNzVG9rZW4oKSB7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuRXhwaXJhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIpO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gYWNjZXNzVG9rZW5FeHBpcmF0aW9uID8gcGFyc2VJbnQoYWNjZXNzVG9rZW5FeHBpcmF0aW9uKSA6IDA7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudGVyID0gMTAwMDtcclxuICAgICAgICAgICAgbGV0IGRlbGF5RnVuY3Rpb24gPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRva2VuID0gc2Vzc2lvbi50b2tlbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0V4cFRpbWUgPSB0aGlzLmNvbXB1dGVUb2tlbkV4cGlyYXRpb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgY291bnRlcik7XHJcbiAgICAgICAgfSwgZXhwVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlUGFzc3dvcmQobmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBpbnB1dFBhcmFtID0ge1xyXG4gICAgICAgICAgICAgICAgY2hhbGxlbmdlUmVzcG9uc2U6IG5ld1Bhc3N3b3JkLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBjb25maXJtU2lnbkluKGlucHV0UGFyYW0pO1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJuYW1lIH0gPSBhd2FpdCBnZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbk9yU2V0TmV3UGFzc3dvcmQoc2Vzc2lvbik7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uUGFzc3dvcmRVcGRhdGUodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UubmV3UGFzc3dvcmRTZXRUaGVuVXBkYXRlVG9CYWNrZW5kKHVzZXJuYW1lKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlID0gTG9naW5Db25zdGFudC5sb2dpbkFnYWluO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIGxldCB1c2VybmFtZSA9IGVtYWlsO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gZW1haWw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdDogYW55ID0gYXdhaXQgcmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ/Lm5leHRTdGVwPy5jb2RlRGVsaXZlcnlEZXRhaWxzPy5kZXN0aW5hdGlvbiArXHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnBsZWFzZUVudGVySXRCZWxvdztcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdmVyaWZ5Q29kZShjb25maXJtYXRpb25Db2RlOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25maXJtUmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lOiB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSwgbmV3UGFzc3dvcmQ6IG5ld1Bhc3N3b3JkLCBjb25maXJtYXRpb25Db2RlOiBjb25maXJtYXRpb25Db2RlIH0pO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4cGlyeUFsbEV4aXN0aW5nQ3VycmVudFNlc3Npb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UudXNlck5hbWUsIG5ld1Bhc3N3b3JkKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5ub09mQXR0ZW1wdHMgPSB0aGlzLm5vT2ZBdHRlbXB0cyArIDE7XHJcbiAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgdGhpcy5mb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yZ290UGFzc3dvcmRFcnJvcihlcnI6IGFueSwgbm9PZkF0dGVtcHRzOiBudW1iZXIpIHtcclxuICAgICAgICBsZXQgZXJyb3JNZXNzYWdlO1xyXG4gICAgICAgIHN3aXRjaCAoZXJyLmNvZGUpIHtcclxuICAgICAgICAgICAgY2FzZSBcIkxpbWl0RXhjZWVkZWRFeGNlcHRpb25cIjpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkxvY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LmF0dGVtcHRMaW1pdEV4Y2VlZGVkO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJFeHBpcmVkQ29kZUV4Y2VwdGlvblwiOlxyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZDtcclxuICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRCdXR0b24gPSBMb2dpbkNvbnN0YW50LnJlZ2VuZXJhdGVPdHA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdCArIFwiIFwiICsgbm9PZkF0dGVtcHRzICsgTG9naW5Db25zdGFudC5hdHRlbXB0TWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICBzaWduSW5XaXRoU1NPKCkge1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnNpZ25JbldpdGhTU08oKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBoYW5kbGVTaWduT3V0KCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHNpZ25PdXQoeyBnbG9iYWw6IGZhbHNlIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzaWduaW5nIG91dDogJywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKHVzZXJuYW1lOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLmxvZ2luRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9uTG9naW5JbkNvZ250aW9Ub0dldEFjY2Vzc1Rva2VuKHVzZXJuYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgb25Mb2dpbkluQ29nbnRpb1RvR2V0QWNjZXNzVG9rZW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFjY2Vzc0FuZElEVG9rZW5zKGF3YWl0IChhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCkpLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2Uub25QYXNzd29yZFVwZGF0ZSh0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNhbGxHbG9iYWxTaWdub3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyb3IsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uQ2FsbEdsb2JhbFNpZ25vdXQoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgdGhpcy5mb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsXSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIHNpZ25pbmcgb3V0OiAnLCBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL3NlcnZpY2VzL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxnQ0FBZ0M7QUFDaEMsT0FBTyxFQUNzQixvQkFBb0IsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQzlFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFDakQsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTNDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUs5RixNQUFNLE9BQU8sa0JBQWtCO0lBWTNCLFlBQ1ksTUFBYyxFQUNmLFVBQTZCLEVBQzdCLFVBQXNCLEVBQ3JCLE1BQXFCLEVBQ1csK0JBQWlELEVBQ3RELDJCQUF5QztRQUxwRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQ1csb0NBQStCLEdBQS9CLCtCQUEr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TyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQzs7K0dBcFJRLGtCQUFrQixnSUFpQmYsdUJBQXVCLGFBQ3ZCLGtCQUFrQjttSEFsQnJCLGtCQUFrQixjQUZmLE1BQU07MkZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBa0JRLE1BQU07MkJBQUMsdUJBQXVCOzswQkFDOUIsTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5cclxuLy8gVGhpcmQgcGFydHkgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHtcclxuICAgIEF1dGhUb2tlbnMsIFNpZ25JbklucHV0LCBjb25maXJtUmVzZXRQYXNzd29yZCwgY29uZmlybVNpZ25JbiwgZmV0Y2hBdXRoU2Vzc2lvbixcclxuICAgIGdldEN1cnJlbnRVc2VyLCByZXNldFBhc3N3b3JkLCBzaWduSW4sIHNpZ25PdXRcclxufSBmcm9tIFwiYXdzLWFtcGxpZnkvYXV0aFwiO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgQVVUSF9TRVJWSUNFX1RPS0VOLCBJQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvYXV0aC1zZXJ2aWNlLnRva2VuJztcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gXCIuLi9jb25zdGFudHMvbG9naW5Db25zdGFudFwiO1xyXG5pbXBvcnQgeyBBbm5hTGliQWNsU2VydmljZSB9IGZyb20gJy4vYWNsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJU1NPTG9naW5TZXJ2aWNlLCBTU09fTE9HSU5fU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uL2NvbmZpZy9zc28tbG9naW4tc2VydmljZS50b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEFubmFMaWJBdXRoU2VydmljZSB7XHJcbiAgICBsb2dpbkVycm9yTWVzc2FnZTogc3RyaW5nIHwgbnVsbDtcclxuICAgIHNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICBzZXROZXdQYXNzd29yZEJ1dHRvbk1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB2ZXJpZnlBbmRTZXROZXdQYXNzd29yZE1lc3NhZ2U6IHN0cmluZztcclxuICAgIHZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkQnV0dG9uOiBzdHJpbmc7XHJcbiAgICBub09mQXR0ZW1wdHMgPSAwO1xyXG4gICAgc2Vzc2lvbkxvY2tlZCA9IGZhbHNlO1xyXG4gICAgYWNjZXNzVG9rZW5UaW1lcklkOiBhbnk7XHJcbiAgICBmb3Jnb3RQYXNzd29yZEFuZEdsb2JhbFNpZ25vdXRMb2FkZXI6IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgYWNsU2VydmljZTogQW5uYUxpYkFjbFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChBVVRIX1NFUlZJQ0VfVE9LRU4pIHB1YmxpYyBjb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2U6IElBdXRoU2VydmljZSkge1xyXG4gICAgICAgIGlmICghY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgcHJvdmlkZSBhIGF1dGhTZXJ2aWNlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gICAgYXN5bmMgaXNVc2VyTG9nZ2VkSW4oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gYXdhaXQgZ2V0Q3VycmVudFVzZXIoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNlc3Npb246IGFueSA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uPy50b2tlbnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5JZFRva2VuID0gc2Vzc2lvbj8udG9rZW5zLmlkVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbENvZ25pdG9Ub2tlbkFuZEdyb3VwcyhzZXNzaW9uLnRva2Vucyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoTG9naW5Db25zdGFudC5zZXNzaW9uRXhwaXJlZEVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmFjY2Vzc1Rva2VuVGltZXJJZCk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb25UaW1lb3V0KCkge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5hY2Nlc3NUb2tlblRpbWVySWQpO1xyXG4gICAgICAgIGxldCBhZnRlckxvZ291dFJlZGlyZWN0VG86IHN0cmluZztcclxuICAgICAgICBpZiAodGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmlzU3NvSW50ZWdyYXRlZCAmJiAhdGhpcy5jb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlLmxvZ2dlZEluVmlhU3NvKSB7XHJcbiAgICAgICAgICAgIGFmdGVyTG9nb3V0UmVkaXJlY3RUbyA9IExvZ2luQ29uc3RhbnQuY29QaWxvdGxvZ2luUGFnZVVybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGFmdGVyTG9nb3V0UmVkaXJlY3RUbyA9IExvZ2luQ29uc3RhbnQubG9naW5QYWdlVXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYWZ0ZXJMb2dvdXRSZWRpcmVjdFRvXSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcHV0ZVRva2VuRXhwaXJhdGlvbihpZFRva2VuOiBhbnkpIHtcclxuICAgICAgICBsZXQgY3VycmVudFRpbWUgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcclxuICAgICAgICBsZXQgdG9rZW5UaW1lID0gaWRUb2tlbi5wYXlsb2FkLmV4cDtcclxuICAgICAgICBsZXQgZXhwVGltZSA9ICh0b2tlblRpbWUgLSBjdXJyZW50VGltZSkgKiAxMDAwO1xyXG4gICAgICAgIHJldHVybiBleHBUaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGhhbmRsZVNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9OiBTaWduSW5JbnB1dCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgaXNTaWduZWRJbiwgbmV4dFN0ZXAgfSA9IGF3YWl0IHNpZ25Jbih7IHVzZXJuYW1lLCBwYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgc3dpdGNoIChuZXh0U3RlcD8uc2lnbkluU3RlcCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcIkRPTkVcIjpcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IGZldGNoQXV0aFNlc3Npb24oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTG9naW5PclNldE5ld1Bhc3N3b3JkKHNlc3Npb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uU3VjY2Vzc2Z1bEF1dGhlbnRpY2F0aW5nVXNlcihmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxDb2duaXRvVG9rZW5BbmRHcm91cHMoc2Vzc2lvbi50b2tlbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgXCJDT05GSVJNX1NJR05fSU5fV0lUSF9ORVdfUEFTU1dPUkRfUkVRVUlSRURcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5pc0xvZ2dpbmdJbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gdXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQuc2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkVTRVRfUEFTU1dPUkRcIjpcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuaXNMb2dnaW5nSW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlID09IExvZ2luQ29uc3RhbnQudGVtcFBhc3N3b3JkRXhwaXJ5RXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnRlbXBQYXNzd29yZE9uRXhwaXJ5RXJyb3JNc2c7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zZW5kUmVnZW5lcmF0aW9uRW1haWwodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yPy5tZXNzYWdlID09PSBcIlBhc3N3b3JkIGF0dGVtcHRzIGV4Y2VlZGVkXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9naW5FcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LmF0dGVtcHRMaW1pdEV4Y2VlZGVkO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IHRoaXMuY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZS5pc1Nzb0ludGVncmF0ZWQgP1xyXG4gICAgICAgICAgICAgICAgICAgIExvZ2luQ29uc3RhbnQudXNlckNvZGVQYXNzd29yZEluY29ycmVjdCA6IExvZ2luQ29uc3RhbnQudXNlck5hbWVQYXNzd29yZEluY29ycmVjdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkxvZ2luT3JTZXROZXdQYXNzd29yZChzZXNzaW9uOiBhbnkpIHtcclxuICAgICAgICBsZXQgbmV3RXhwVGltZSA9IHRoaXMuY29tcHV0ZVRva2VuRXhwaXJhdGlvbihzZXNzaW9uLnRva2Vucy5pZFRva2VuKTtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5hY2Nlc3NUb2tlbiA9IHNlc3Npb24udG9rZW5zLmFjY2Vzc1Rva2VuLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbiA9IHNlc3Npb24udG9rZW5zLmlkVG9rZW4udG9TdHJpbmcoKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaEFjY2Vzc1Rva2VuKCk7XHJcbiAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QWNjZXNzQW5kSURUb2tlbnModG9rZW46IEF1dGhUb2tlbnMpIHtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5hY2Nlc3NUb2tlbiA9IHRva2VuLmFjY2Vzc1Rva2VuLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbiA9IHRva2VuLmlkVG9rZW47XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuOiBBdXRoVG9rZW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRBY2Nlc3NBbmRJRFRva2Vucyh0b2tlbik7XHJcbiAgICAgICAgaWYgKFwiY29nbml0bzpncm91cHNcIiBpbiB0b2tlbi5hY2Nlc3NUb2tlbi5wYXlsb2FkKSB7XHJcbiAgICAgICAgICAgIGxldCB1c2VyR3JvdXBzSW5Db2duaXRvSldUOiBhbnkgPSB0b2tlbi5hY2Nlc3NUb2tlbi5wYXlsb2FkW1wiY29nbml0bzpncm91cHNcIl07XHJcbiAgICAgICAgICAgIHRoaXMuYWNsU2VydmljZS51c2VyR3JvdXBzSW5Db2duaXRvSldUID0gdXNlckdyb3Vwc0luQ29nbml0b0pXVDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UudXNlckdyb3Vwc0luQ29nbml0b0pXVCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZWZyZXNoQWNjZXNzVG9rZW4oKSB7XHJcbiAgICAgICAgbGV0IGFjY2Vzc1Rva2VuRXhwaXJhdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYWNjZXNzVG9rZW5FeHBpcmF0aW9uXCIpO1xyXG4gICAgICAgIGxldCBleHBUaW1lID0gYWNjZXNzVG9rZW5FeHBpcmF0aW9uID8gcGFyc2VJbnQoYWNjZXNzVG9rZW5FeHBpcmF0aW9uKSA6IDA7XHJcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlblRpbWVySWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudGVyID0gMTAwMDtcclxuICAgICAgICAgICAgbGV0IGRlbGF5RnVuY3Rpb24gPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRva2VuID0gc2Vzc2lvbi50b2tlbnM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QWxsQ29nbml0b1Rva2VuQW5kR3JvdXBzKHRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0V4cFRpbWUgPSB0aGlzLmNvbXB1dGVUb2tlbkV4cGlyYXRpb24odGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UuSWRUb2tlbik7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3RXhwVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFeHBUaW1lID0gMTAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGF5RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGRlbGF5RnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cFRpbWUgPSBuZXdFeHBUaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImFjY2Vzc1Rva2VuRXhwaXJhdGlvblwiLCBuZXdFeHBUaW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYWNjZXNzVG9rZW5UaW1lcklkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25UaW1lb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvblRpbWVvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgY291bnRlcik7XHJcbiAgICAgICAgfSwgZXhwVGltZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hhbmdlUGFzc3dvcmQobmV3UGFzc3dvcmQ6IHN0cmluZykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBpbnB1dFBhcmFtID0ge1xyXG4gICAgICAgICAgICAgICAgY2hhbGxlbmdlUmVzcG9uc2U6IG5ld1Bhc3N3b3JkLFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBjb25maXJtU2lnbkluKGlucHV0UGFyYW0pO1xyXG4gICAgICAgICAgICBjb25zdCB7IHVzZXJuYW1lIH0gPSBhd2FpdCBnZXRDdXJyZW50VXNlcigpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgbGV0IHNlc3Npb24gPSBhd2FpdCBmZXRjaEF1dGhTZXNzaW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMub25Mb2dpbk9yU2V0TmV3UGFzc3dvcmQoc2Vzc2lvbik7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uUGFzc3dvcmRVcGRhdGUodXNlcm5hbWUpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbTG9naW5Db25zdGFudC5sb2dpblBhZ2VVcmxdKTtcclxuICAgICAgICAgICAgdGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UubmV3UGFzc3dvcmRTZXRUaGVuVXBkYXRlVG9CYWNrZW5kKHVzZXJuYW1lKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuc2Vzc2lvbkV4cGlyZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV3UGFzc3dvcmRCdXR0b25NZXNzYWdlID0gTG9naW5Db25zdGFudC5sb2dpbkFnYWluO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkZvcmdvdFBhc3N3b3JkR2VuZXJhdGVPVFAoZW1haWw6IHN0cmluZykge1xyXG4gICAgICAgIGxldCB1c2VybmFtZSA9IGVtYWlsO1xyXG4gICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lID0gZW1haWw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdDogYW55ID0gYXdhaXQgcmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSA9XHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkTWVzc2FnZSArXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ/Lm5leHRTdGVwPy5jb2RlRGVsaXZlcnlEZXRhaWxzPy5kZXN0aW5hdGlvbiArXHJcbiAgICAgICAgICAgICAgICBMb2dpbkNvbnN0YW50LnBsZWFzZUVudGVySXRCZWxvdztcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0xvZ2luQ29uc3RhbnQudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRVcmxdKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdmVyaWZ5Q29kZShjb25maXJtYXRpb25Db2RlOiBzdHJpbmcsIG5ld1Bhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25maXJtUmVzZXRQYXNzd29yZCh7IHVzZXJuYW1lOiB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS51c2VyTmFtZSwgbmV3UGFzc3dvcmQ6IG5ld1Bhc3N3b3JkLCBjb25maXJtYXRpb25Db2RlOiBjb25maXJtYXRpb25Db2RlIH0pLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSk9PntcclxuICAgICAgICAgICAgICAgdGhpcy5leHBpcnlBbGxFeGlzdGluZ0N1cnJlbnRTZXNzaW9uKHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLnVzZXJOYW1lLCBuZXdQYXNzd29yZCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIChlcnIpPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubm9PZkF0dGVtcHRzID0gdGhpcy5ub09mQXR0ZW1wdHMgKyAxO1xyXG4gICAgICAgICAgICAgIHRoaXMudmVyaWZ5QW5kU2V0TmV3UGFzc3dvcmRFcnJvck1lc3NhZ2UgPSB0aGlzLmZvcmdvdFBhc3N3b3JkRXJyb3IoZXJyLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICB0aGlzLm5vT2ZBdHRlbXB0cyA9IHRoaXMubm9PZkF0dGVtcHRzICsgMTtcclxuICAgICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEVycm9yTWVzc2FnZSA9IHRoaXMuZm9yZ290UGFzc3dvcmRFcnJvcihlcnIsIHRoaXMubm9PZkF0dGVtcHRzKTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcmdvdFBhc3N3b3JkQW5kR2xvYmFsU2lnbm91dExvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3Jnb3RQYXNzd29yZEVycm9yKGVycjogYW55LCBub09mQXR0ZW1wdHM6IG51bWJlcikge1xyXG4gICAgICAgIGxldCBlcnJvck1lc3NhZ2UgPSAnJztcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnIpXHJcbiAgICAgICAgbGV0IGVycm9yVGhyb3duID0gSlNPTi5zdHJpbmdpZnkoZXJyKTtcclxuICAgICAgICBpZihlcnJvclRocm93bi5pbmNsdWRlcyhcIkxpbWl0RXhjZWVkZWRFeGNlcHRpb25cIikpe1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uTG9ja2VkID0gdHJ1ZTtcclxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IExvZ2luQ29uc3RhbnQuYXR0ZW1wdExpbWl0RXhjZWVkZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoZXJyb3JUaHJvd24uaW5jbHVkZXMoXCJFeHBpcmVkQ29kZUV4Y2VwdGlvblwiKSl7XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LnNlc3Npb25FeHBpcmVkO1xyXG4gICAgICAgICAgdGhpcy52ZXJpZnlBbmRTZXROZXdQYXNzd29yZEJ1dHRvbiA9IExvZ2luQ29uc3RhbnQucmVnZW5lcmF0ZU90cDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBMb2dpbkNvbnN0YW50LmF0dGVtcHQgKyBcIiBcIiArIG5vT2ZBdHRlbXB0cyArIExvZ2luQ29uc3RhbnQuYXR0ZW1wdE1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2lnbkluV2l0aFNTTygpIHtcclxuICAgICAgICB0aGlzLmNvbnN1bWluZ1Byb2plY3RBdXRoU2VydmljZS5zaWduSW5XaXRoU1NPKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaGFuZGxlU2lnbk91dCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBzaWduT3V0KHsgZ2xvYmFsOiBmYWxzZSB9KTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igc2lnbmluZyBvdXQ6ICcsIGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwaXJ5QWxsRXhpc3RpbmdDdXJyZW50U2Vzc2lvbih1c2VybmFtZTogc3RyaW5nLCBuZXdQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5sb2dpbkVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5vbkxvZ2luSW5Db2dudGlvVG9HZXRBY2Nlc3NUb2tlbih1c2VybmFtZSwgbmV3UGFzc3dvcmQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG9uTG9naW5JbkNvZ250aW9Ub0dldEFjY2Vzc1Rva2VuKHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB7IG5leHRTdGVwIH0gPSBhd2FpdCBzaWduSW4oeyB1c2VybmFtZSwgcGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobmV4dFN0ZXA/LnNpZ25JblN0ZXApIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJET05FXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBY2Nlc3NBbmRJRFRva2Vucyhhd2FpdCAoYXdhaXQgZmV0Y2hBdXRoU2Vzc2lvbigpKS50b2tlbnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3VtaW5nUHJvamVjdEF1dGhTZXJ2aWNlLm9uUGFzc3dvcmRVcGRhdGUodGhpcy5jb25zdW1pbmdQcm9qZWN0QXV0aFNlcnZpY2UudXNlck5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DYWxsR2xvYmFsU2lnbm91dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgdGhpcy5ub09mQXR0ZW1wdHMgPSB0aGlzLm5vT2ZBdHRlbXB0cyArIDE7XHJcbiAgICAgICAgICB0aGlzLnZlcmlmeUFuZFNldE5ld1Bhc3N3b3JkRXJyb3JNZXNzYWdlID0gdGhpcy5mb3Jnb3RQYXNzd29yZEVycm9yKGVycm9yLCB0aGlzLm5vT2ZBdHRlbXB0cyk7XHJcbiAgICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBvbkNhbGxHbG9iYWxTaWdub3V0KCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHNpZ25PdXQoeyBnbG9iYWw6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9yZ290UGFzc3dvcmRBbmRHbG9iYWxTaWdub3V0TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtMb2dpbkNvbnN0YW50LmxvZ2luUGFnZVVybF0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzaWduaW5nIG91dDogJywgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -304,11 +304,14 @@ class AnnaLibAuthService {
304
304
  verifyCode(confirmationCode, newPassword) {
305
305
  return __awaiter(this, void 0, void 0, function* () {
306
306
  try {
307
- confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode });
308
- yield this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);
307
+ confirmResetPassword({ username: this.consumingProjectAuthService.userName, newPassword: newPassword, confirmationCode: confirmationCode }).then((response) => {
308
+ this.expiryAllExistingCurrentSession(this.consumingProjectAuthService.userName, newPassword);
309
+ }, (err) => {
310
+ this.noOfAttempts = this.noOfAttempts + 1;
311
+ this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);
312
+ });
309
313
  }
310
314
  catch (err) {
311
- console.log(err);
312
315
  this.noOfAttempts = this.noOfAttempts + 1;
313
316
  this.verifyAndSetNewPasswordErrorMessage = this.forgotPasswordError(err, this.noOfAttempts);
314
317
  }
@@ -318,18 +321,19 @@ class AnnaLibAuthService {
318
321
  });
319
322
  }
320
323
  forgotPasswordError(err, noOfAttempts) {
321
- let errorMessage;
322
- switch (err.code) {
323
- case "LimitExceededException":
324
- this.sessionLocked = true;
325
- errorMessage = LoginConstant.attemptLimitExceeded;
326
- break;
327
- case "ExpiredCodeException":
328
- errorMessage = LoginConstant.sessionExpired;
329
- this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;
330
- break;
331
- default:
332
- errorMessage = LoginConstant.attempt + " " + noOfAttempts + LoginConstant.attemptMessage;
324
+ let errorMessage = '';
325
+ console.log(err);
326
+ let errorThrown = JSON.stringify(err);
327
+ if (errorThrown.includes("LimitExceededException")) {
328
+ this.sessionLocked = true;
329
+ errorMessage = LoginConstant.attemptLimitExceeded;
330
+ }
331
+ else if (errorThrown.includes("ExpiredCodeException")) {
332
+ errorMessage = LoginConstant.sessionExpired;
333
+ this.verifyAndSetNewPasswordButton = LoginConstant.regenerateOtp;
334
+ }
335
+ else {
336
+ errorMessage = LoginConstant.attempt + " " + noOfAttempts + LoginConstant.attemptMessage;
333
337
  }
334
338
  return errorMessage;
335
339
  }