123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject } from '@angular/core';
- import { Router } from '@angular/router';
- import { NB_AUTH_OPTIONS, NbAuthService } from '@nebular/auth';
- import { LoginLangService } from '../login-lang.service';
- import { getDeepFromObject } from '../helper';
- var ResetPasswordComponent = /** @class */ (function () {
- function ResetPasswordComponent(service, langService, options, cd, router) {
- if (options === void 0) { options = {}; }
- this.service = service;
- this.langService = langService;
- this.options = options;
- this.cd = cd;
- this.router = router;
- this.redirectDelay = 0;
- this.showMessages = {};
- this.strategy = '';
- this.submitted = false;
- this.errors = [];
- this.messages = [];
- this.user = {};
- this.redirectDelay = this.getConfigValue('forms.resetPassword.redirectDelay');
- this.showMessages = this.getConfigValue('forms.resetPassword.showMessages');
- this.strategy = this.getConfigValue('forms.resetPassword.strategy');
- }
- /**
- * @return {?}
- */
- ResetPasswordComponent.prototype.resetPass = /**
- * @return {?}
- */
- function () {
- var _this = this;
- this.errors = this.messages = [];
- this.submitted = true;
- this.service.resetPassword(this.strategy, this.user).subscribe((/**
- * @param {?} result
- * @return {?}
- */
- function (result) {
- _this.submitted = false;
- if (result.isSuccess()) {
- _this.messages = result.getMessages();
- }
- else {
- _this.errors = result.getErrors();
- }
- /** @type {?} */
- var redirect = result.getRedirect();
- if (redirect) {
- setTimeout((/**
- * @return {?}
- */
- function () {
- return _this.router.navigateByUrl(redirect);
- }), _this.redirectDelay);
- }
- _this.cd.detectChanges();
- }));
- };
- /**
- * @param {?} key
- * @return {?}
- */
- ResetPasswordComponent.prototype.getConfigValue = /**
- * @param {?} key
- * @return {?}
- */
- function (key) {
- return getDeepFromObject(this.options, key, null);
- };
- ResetPasswordComponent.decorators = [
- { type: Component, args: [{
- selector: 'auth-reset-password-page',
- template: "<h1 id=\"title\" class=\"title\" translate>\u4FEE\u6539\u5BC6\u7801</h1>\r\n<p class=\"sub-title\" translate>\u8BF7\u8BBE\u7F6E\u60A8\u7684\u65B0\u5BC6\u7801</p>\r\n\r\n<nb-alert *ngIf=\"showMessages.error && errors?.length && !submitted\" outline=\"danger\" role=\"alert\">\r\n <p class=\"alert-title\"><b translate>\u9519\u8BEF!</b></p>\r\n <ul class=\"alert-message-list\">\r\n <li *ngFor=\"let error of errors\" class=\"alert-message\">{{ error }}</li>\r\n </ul>\r\n</nb-alert>\r\n\r\n<nb-alert *ngIf=\"showMessages.success && messages?.length && !submitted\" outline=\"success\" role=\"alert\">\r\n <p class=\"alert-title\"><b translate>\u6210\u529F!</b></p>\r\n <ul class=\"alert-message-list\">\r\n <li *ngFor=\"let message of messages\" class=\"alert-message\">{{ message }}</li>\r\n </ul>\r\n</nb-alert>\r\n\r\n<form (ngSubmit)=\"resetPass()\" #resetPassForm=\"ngForm\" aria-labelledby=\"title\">\r\n\r\n <div class=\"form-control-group\">\r\n <label class=\"label\" for=\"input-old-password\" translate>\u65E7\u5BC6\u7801:</label>\r\n <input nbInput\r\n [(ngModel)]=\"user.loginPasswordOld\"\r\n #oldPassword=\"ngModel\"\r\n type=\"password\"\r\n id=\"input-old-password\"\r\n name=\"oldPassword\"\r\n class=\"first\"\r\n placeholder=\"{{'\u65B0\u5BC6\u7801'| translate}}\"\r\n autofocus\r\n fullWidth\r\n [status]=\"oldPassword.dirty ? (oldPassword.invalid ? 'danger' : 'success') : ''\"\r\n [required]=\"getConfigValue('forms.validation.password.required')\"\r\n [minlength]=\"getConfigValue('forms.validation.password.minLength')\"\r\n [maxlength]=\"getConfigValue('forms.validation.password.maxLength')\"\r\n [attr.aria-invalid]=\"oldPassword.invalid && oldPassword.touched ? true : null\">\r\n <ng-container *ngIf=\"oldPassword.invalid && oldPassword.touched\">\r\n <p class=\"error-message\" *ngIf=\"oldPassword.errors?.required\" translate=\"\u65E7\u5BC6\u7801\u662F\u5FC5\u586B\u7684!\">\r\n\r\n </p>\r\n <p class=\"error-message\" *ngIf=\"oldPassword.errors?.minlength || oldPassword.errors?.maxlength\"\r\n translate=\"\u5BC6\u7801\u89C4\u5219\u63D0\u793A\" [translateParams]=\"{minLength: getConfigValue('forms.validation.password.minLength'), maxLength:getConfigValue('forms.validation.password.maxLength')}\">\r\n \u5BC6\u7801\u5E94\u8BE5\u5305\u542B\r\n \u6700\u5C0F\u957F\u5EA6 {{ getConfigValue('forms.validation.password.minLength') }}\r\n \u6700\u5927\u957F\u5EA6 {{ getConfigValue('forms.validation.password.maxLength') }}\r\n \u4E2A\u5B57\u7B26\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"form-control-group\">\r\n <label class=\"label\" for=\"input-new-password\" translate>\u65B0\u5BC6\u7801:</label>\r\n <input nbInput\r\n [(ngModel)]=\"user.loginPasswordNew\"\r\n #newPassword=\"ngModel\"\r\n type=\"password\"\r\n id=\"input-new-password\"\r\n name=\"newPassword\"\r\n class=\"first\"\r\n placeholder=\"{{'\u65B0\u5BC6\u7801'| translate}}\"\r\n autofocus\r\n fullWidth\r\n [status]=\"newPassword.dirty ? (newPassword.invalid ? 'danger' : 'success') : ''\"\r\n [required]=\"getConfigValue('forms.validation.password.required')\"\r\n [minlength]=\"getConfigValue('forms.validation.password.minLength')\"\r\n [maxlength]=\"getConfigValue('forms.validation.password.maxLength')\"\r\n [attr.aria-invalid]=\"newPassword.invalid && newPassword.touched ? true : null\">\r\n <ng-container *ngIf=\"newPassword.invalid && newPassword.touched\">\r\n <p class=\"error-message\" *ngIf=\"newPassword.errors?.required\" translate=\"\u65B0\u5BC6\u7801\u662F\u5FC5\u586B\u7684!\">\r\n\r\n </p>\r\n <p class=\"error-message\" *ngIf=\"newPassword.errors?.minlength || newPassword.errors?.maxlength\"\r\n translate=\"\u5BC6\u7801\u89C4\u5219\u63D0\u793A\"\r\n [translateParams]=\"{minLength: getConfigValue('forms.validation.password.minLength'), maxLength:getConfigValue('forms.validation.password.maxLength')}\">\r\n\r\n \u5BC6\u7801\u5E94\u8BE5\u5305\u542B\r\n \u6700\u5C0F\u957F\u5EA6 {{ getConfigValue('forms.validation.password.minLength') }}\r\n \u6700\u5927\u957F\u5EA6 {{ getConfigValue('forms.validation.password.maxLength') }}\r\n \u4E2A\u5B57\u7B26\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label class=\"label\" for=\"input-re-password\" translate>\u786E\u8BA4\u5BC6\u7801:</label>\r\n <input nbInput\r\n [(ngModel)]=\"user.confirmPassword\"\r\n #rePass=\"ngModel\"\r\n id=\"input-re-password\"\r\n name=\"rePass\"\r\n type=\"password\"\r\n class=\"last\"\r\n placeholder=\"{{'\u786E\u8BA4\u5BC6\u7801'| translate}}\"\r\n fullWidth\r\n [status]=\"rePass.touched\r\n ? (rePass.invalid || newPassword.value != rePass.value ? 'danger' : 'success')\r\n : ''\"\r\n [required]=\"getConfigValue('forms.validation.password.required')\"\r\n [attr.aria-invalid]=\"rePass.invalid && rePass.touched ? true : null\">\r\n <ng-container *ngIf=\"rePass.touched\">\r\n <p class=\"error-message\" *ngIf=\"rePass.invalid && rePass.errors?.required\" translate=\"\u786E\u8BA4\u5BC6\u7801\u662F\u5FC5\u586B\u7684!\">\r\n\r\n </p>\r\n <p class=\"error-message\" *ngIf=\"newPassword.value != rePass.value && !rePass.errors?.required\" translate=\"\u4E0E\u7B2C\u4E00\u6B21\u8F93\u5165\u4E0D\u7B26\u5408\"></p>\r\n </ng-container>\r\n </div>\r\n\r\n <button nbButton\r\n status=\"success\"\r\n fullWidth\r\n [disabled]=\"submitted || !resetPassForm.valid\"\r\n [class.btn-pulse]=\"submitted\" translate=\"\u4FEE\u6539\u5BC6\u7801\">\r\n </button>\r\n</form>\r\n\r\n<!--<section class=\"sign-in-or-up\" aria-label=\"Sign in or sign up\">-->\r\n <!--<p><a class=\"text-link\" routerLink=\"../login\">Back to Log In</a></p>-->\r\n <!--<p><a class=\"text-link\" routerLink=\"../register\">Register</a></p>-->\r\n<!--</section>-->\r\n",
- changeDetection: ChangeDetectionStrategy.OnPush,
- styles: [":host .form-group:last-of-type{margin-bottom:3rem}"]
- }] }
- ];
- /** @nocollapse */
- ResetPasswordComponent.ctorParameters = function () { return [
- { type: NbAuthService },
- { type: LoginLangService },
- { type: undefined, decorators: [{ type: Inject, args: [NB_AUTH_OPTIONS,] }] },
- { type: ChangeDetectorRef },
- { type: Router }
- ]; };
- return ResetPasswordComponent;
- }());
- export { ResetPasswordComponent };
- if (false) {
- /** @type {?} */
- ResetPasswordComponent.prototype.redirectDelay;
- /** @type {?} */
- ResetPasswordComponent.prototype.showMessages;
- /** @type {?} */
- ResetPasswordComponent.prototype.strategy;
- /** @type {?} */
- ResetPasswordComponent.prototype.submitted;
- /** @type {?} */
- ResetPasswordComponent.prototype.errors;
- /** @type {?} */
- ResetPasswordComponent.prototype.messages;
- /** @type {?} */
- ResetPasswordComponent.prototype.user;
- /**
- * @type {?}
- * @protected
- */
- ResetPasswordComponent.prototype.service;
- /**
- * @type {?}
- * @protected
- */
- ResetPasswordComponent.prototype.langService;
- /**
- * @type {?}
- * @protected
- */
- ResetPasswordComponent.prototype.options;
- /**
- * @type {?}
- * @protected
- */
- ResetPasswordComponent.prototype.cd;
- /**
- * @type {?}
- * @protected
- */
- ResetPasswordComponent.prototype.router;
- }
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZ2UtYWRtaW4tYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9yZXNldC1wYXNzd29yZC9yZXNldC1wYXNzd29yZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTlDO0lBaUJFLGdDQUFzQixPQUFzQixFQUFZLFdBQTZCLEVBQ2hELE9BQVksRUFDckMsRUFBcUIsRUFDckIsTUFBYztRQUZXLHdCQUFBLEVBQUEsWUFBWTtRQUQzQixZQUFPLEdBQVAsT0FBTyxDQUFlO1FBQVksZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQ2hELFlBQU8sR0FBUCxPQUFPLENBQUs7UUFDckMsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVoxQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFRLEVBQUUsQ0FBQztRQUN2QixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRWQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBYSxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQU9iLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7SUFFRCwwQ0FBUzs7O0lBQVQ7UUFBQSxpQkFvQkM7UUFuQkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQyxNQUFvQjtZQUNsRixLQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDdEIsS0FBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdEM7aUJBQU07Z0JBQ0wsS0FBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEM7O2dCQUVLLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQ3JDLElBQUksUUFBUSxFQUFFO2dCQUNaLFVBQVU7OztnQkFBQztvQkFDVCxPQUFPLEtBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLEdBQUUsS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3hCO1lBQ0QsS0FBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7O0lBRUQsK0NBQWM7Ozs7SUFBZCxVQUFlLEdBQVc7UUFDeEIsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDOztnQkFuREYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBRXBDLGtzTUFBOEM7b0JBQzlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztpQkFDaEQ7Ozs7Z0JBVHVDLGFBQWE7Z0JBQzVDLGdCQUFnQjtnREFxQnBCLE1BQU0sU0FBQyxlQUFlO2dCQXhCTyxpQkFBaUI7Z0JBQzFDLE1BQU07O0lBeURmLDZCQUFDO0NBQUEsQUFwREQsSUFvREM7U0E5Q1ksc0JBQXNCOzs7SUFFakMsK0NBQWtCOztJQUNsQiw4Q0FBdUI7O0lBQ3ZCLDBDQUFjOztJQUVkLDJDQUFrQjs7SUFDbEIsd0NBQXNCOztJQUN0QiwwQ0FBd0I7O0lBQ3hCLHNDQUFlOzs7OztJQUVILHlDQUFnQzs7Ozs7SUFBRSw2Q0FBdUM7Ozs7O0lBQ25GLHlDQUErQzs7Ozs7SUFDL0Msb0NBQStCOzs7OztJQUMvQix3Q0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5CX0FVVEhfT1BUSU9OUywgTmJBdXRoUmVzdWx0LCBOYkF1dGhTZXJ2aWNlIH0gZnJvbSAnQG5lYnVsYXIvYXV0aCc7XHJcbmltcG9ydCB7IExvZ2luTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi9sb2dpbi1sYW5nLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBnZXREZWVwRnJvbU9iamVjdCB9IGZyb20gJy4uL2hlbHBlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1dGgtcmVzZXQtcGFzc3dvcmQtcGFnZScsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVzZXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXNldFBhc3N3b3JkQ29tcG9uZW50IHtcclxuXHJcbiAgcmVkaXJlY3REZWxheSA9IDA7XHJcbiAgc2hvd01lc3NhZ2VzOiBhbnkgPSB7fTtcclxuICBzdHJhdGVneSA9ICcnO1xyXG5cclxuICBzdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XHJcbiAgbWVzc2FnZXM6IHN0cmluZ1tdID0gW107XHJcbiAgdXNlcjogYW55ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXJ2aWNlOiBOYkF1dGhTZXJ2aWNlLCBwcm90ZWN0ZWQgbGFuZ1NlcnZpY2U6IExvZ2luTGFuZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KE5CX0FVVEhfT1BUSU9OUykgcHJvdGVjdGVkIG9wdGlvbnMgPSB7fSxcclxuICAgIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIpIHtcclxuXHJcbiAgICB0aGlzLnJlZGlyZWN0RGVsYXkgPSB0aGlzLmdldENvbmZpZ1ZhbHVlKCdmb3Jtcy5yZXNldFBhc3N3b3JkLnJlZGlyZWN0RGVsYXknKTtcclxuICAgIHRoaXMuc2hvd01lc3NhZ2VzID0gdGhpcy5nZXRDb25maWdWYWx1ZSgnZm9ybXMucmVzZXRQYXNzd29yZC5zaG93TWVzc2FnZXMnKTtcclxuICAgIHRoaXMuc3RyYXRlZ3kgPSB0aGlzLmdldENvbmZpZ1ZhbHVlKCdmb3Jtcy5yZXNldFBhc3N3b3JkLnN0cmF0ZWd5Jyk7XHJcbiAgfVxyXG5cclxuICByZXNldFBhc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IHRoaXMubWVzc2FnZXMgPSBbXTtcclxuICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UucmVzZXRQYXNzd29yZCh0aGlzLnN0cmF0ZWd5LCB0aGlzLnVzZXIpLnN1YnNjcmliZSgocmVzdWx0OiBOYkF1dGhSZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSByZXN1bHQuZ2V0TWVzc2FnZXMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmVycm9ycyA9IHJlc3VsdC5nZXRFcnJvcnMoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmVkaXJlY3QgPSByZXN1bHQuZ2V0UmVkaXJlY3QoKTtcclxuICAgICAgaWYgKHJlZGlyZWN0KSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyZWRpcmVjdCk7XHJcbiAgICAgICAgfSwgdGhpcy5yZWRpcmVjdERlbGF5KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29uZmlnVmFsdWUoa2V5OiBzdHJpbmcpOiBhbnkge1xyXG4gICAgcmV0dXJuIGdldERlZXBGcm9tT2JqZWN0KHRoaXMub3B0aW9ucywga2V5LCBudWxsKTtcclxuICB9XHJcbn1cclxuIl19
|