@myrmidon/auth-jwt-admin 5.0.0 → 5.1.0

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.
@@ -23,8 +23,8 @@ import { UserListComponent } from './components/user-list/user-list.component';
23
23
  import { UserEditorComponent } from './components/user-editor/user-editor.component';
24
24
  import * as i0 from "@angular/core";
25
25
  export class AuthJwtAdminModule {
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAdminModule, declarations: [AuthJwtRegistrationComponent,
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAdminModule, declarations: [AuthJwtRegistrationComponent,
28
28
  PasswordStrengthBarComponent,
29
29
  UserFilterComponent,
30
30
  UserListComponent,
@@ -50,7 +50,7 @@ export class AuthJwtAdminModule {
50
50
  PasswordStrengthBarComponent,
51
51
  UserFilterComponent,
52
52
  UserListComponent] }); }
53
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAdminModule, imports: [CommonModule,
53
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAdminModule, imports: [CommonModule,
54
54
  FormsModule,
55
55
  RouterModule,
56
56
  ReactiveFormsModule,
@@ -70,7 +70,7 @@ export class AuthJwtAdminModule {
70
70
  AuthJwtLoginModule,
71
71
  NgToolsModule] }); }
72
72
  }
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAdminModule, decorators: [{
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAdminModule, decorators: [{
74
74
  type: NgModule,
75
75
  args: [{
76
76
  declarations: [
@@ -155,10 +155,10 @@ export class AuthJwtRegistrationComponent {
155
155
  },
156
156
  });
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtRegistrationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MatSnackBar }, { token: i3.AuthJwtAccountService }, { token: i4.UserListRepository }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: AuthJwtRegistrationComponent, selector: "auth-jwt-registration", inputs: { autoConfirm: "autoConfirm" }, outputs: { registered: "registered" }, ngImport: i0, template: "<div>\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\n <fieldset>\n <legend i18n=\"auth-jwt-admin\">registration</legend>\n <!-- email -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n>email</mat-label>\n <input\n matInput\n type=\"email\"\n id=\"email\"\n maxlength=\"256\"\n required\n autofocus\n spellcheck=\"false\"\n [formControl]=\"email\"\n />\n @if ( $any(email).errors?.required && (email.dirty || email.touched) )\n {\n <mat-error i18n=\"auth-jwt-admin\">email required</mat-error>\n } @if ($any(email).errors?.email && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid email</mat-error>\n } @if ( $any(email).errors?.uniqueEmail && (email.dirty ||\n email.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">email already registered</mat-error>\n }\n </mat-form-field>\n @if (email.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- name -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">username</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"name\"\n maxlength=\"50\"\n required\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\n spellcheck=\"false\"\n [formControl]=\"name\"\n />\n @if ($any(name).errors?.required && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">username required</mat-error>\n } @if ($any(name).errors?.pattern && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid username</mat-error>\n } @if ( $any(name).errors?.uniqueName && (name.dirty || name.touched)\n ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >username already registered</mat-error\n >\n }\n </mat-form-field>\n @if (name.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- first name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"firstName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"firstName\"\n />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n first name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- last name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"lastName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"lastName\"\n />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n last name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- <div [formGroup]=\"passwords\"> -->\n <!-- password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"password\"\n autocomplete=\"new-password\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"password\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"hide = !hide\"\n i18n-aria-label=\"auth-jwt-login\"\n aria-label=\"Hide password\"\n [attr.aria-pressed]=\"hide\"\n >\n <mat-icon>{{ hide ? \"visibility_off\" : \"visibility\" }}</mat-icon>\n </button>\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\n </auth-jwt-password-strength-bar>\n @if ( $any(password).errors?.required && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">password required</mat-error>\n } @if ( $any(password).errors?.passwordtooshort && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">at least 8 characters</mat-error>\n } @if ( $any(password).errors?.noupperinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 uppercase letter</mat-error\n >\n } @if ( $any(password).errors?.nolowerinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 lowercase letter</mat-error\n >\n } @if ( $any(password).errors?.nosymbolinpassword && (password.dirty\n || password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 punctuation/symbol</mat-error\n >\n }\n </mat-form-field>\n </div>\n\n <!-- confirm password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">confirm password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"confirmPassword\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"confirmPassword\"\n />\n </mat-form-field>\n </div>\n @if (form.errors?.areequal && confirmPassword.touched) {\n <div i18n=\"auth-jwt-admin\" style=\"color: red\">\n password differs from confirmation password\n </div>\n }\n\n <button\n i18n=\"auth-jwt-admin\"\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n class=\"mat-primary\"\n [disabled]=\"\n form.invalid || form.pristine || busy || name.pending || email.pending\n \"\n >\n register\n </button>\n @if (busy) {\n <mat-progress-spinner diameter=\"20\"></mat-progress-spinner>\n }\n </fieldset>\n </form>\n\n <details>\n <summary i18n=\"auth-jwt-admin\">Hints</summary>\n <div class=\"info\">\n <p i18n=\"auth-jwt-admin\">\n To register a new user, you must provide his email address, choose a\n password, and choose a username, which must be unique (you will be\n notified if another user has already taken that name). The username must\n include only letters/digits, start with a letter, and be no shorter than\n 3 characters, nor longer than 50.\n </p>\n <p i18n=\"auth-jwt-admin\">\n To promote a decent security level, the password must include at least 8\n characters, uppercase and lowercase letters, digits, and punctuation\n (like dashes, stops, parentheses, etc.).\n </p>\n <p i18n=\"auth-jwt-admin\">\n Once registered, if messaging is enabled on the server side the user\n will receive an email message to the email address you specified; he\n will have to click on the provided link to complete the registration\n process. Otherwise, you should edit the newly created user and confirm\n the email registration.\n </p>\n </div>\n </details>\n</div>\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}.info{column-width:600px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: ["passwordToCheck"], outputs: ["strengthChange"] }] }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtRegistrationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MatSnackBar }, { token: i3.AuthJwtAccountService }, { token: i4.UserListRepository }], target: i0.ɵɵFactoryTarget.Component }); }
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: AuthJwtRegistrationComponent, selector: "auth-jwt-registration", inputs: { autoConfirm: "autoConfirm" }, outputs: { registered: "registered" }, ngImport: i0, template: "<div>\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\n <fieldset>\n <legend i18n=\"auth-jwt-admin\">registration</legend>\n <!-- email -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n>email</mat-label>\n <input\n matInput\n type=\"email\"\n id=\"email\"\n maxlength=\"256\"\n required\n autofocus\n spellcheck=\"false\"\n [formControl]=\"email\"\n />\n @if ( $any(email).errors?.required && (email.dirty || email.touched) )\n {\n <mat-error i18n=\"auth-jwt-admin\">email required</mat-error>\n } @if ($any(email).errors?.email && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid email</mat-error>\n } @if ( $any(email).errors?.uniqueEmail && (email.dirty ||\n email.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">email already registered</mat-error>\n }\n </mat-form-field>\n @if (email.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- name -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">username</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"name\"\n maxlength=\"50\"\n required\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\n spellcheck=\"false\"\n [formControl]=\"name\"\n />\n @if ($any(name).errors?.required && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">username required</mat-error>\n } @if ($any(name).errors?.pattern && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid username</mat-error>\n } @if ( $any(name).errors?.uniqueName && (name.dirty || name.touched)\n ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >username already registered</mat-error\n >\n }\n </mat-form-field>\n @if (name.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- first name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"firstName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"firstName\"\n />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n first name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- last name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"lastName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"lastName\"\n />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n last name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- <div [formGroup]=\"passwords\"> -->\n <!-- password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"password\"\n autocomplete=\"new-password\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"password\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"hide = !hide\"\n i18n-aria-label=\"auth-jwt-login\"\n aria-label=\"Hide password\"\n [attr.aria-pressed]=\"hide\"\n >\n <mat-icon>{{ hide ? \"visibility_off\" : \"visibility\" }}</mat-icon>\n </button>\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\n </auth-jwt-password-strength-bar>\n @if ( $any(password).errors?.required && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">password required</mat-error>\n } @if ( $any(password).errors?.passwordtooshort && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">at least 8 characters</mat-error>\n } @if ( $any(password).errors?.noupperinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 uppercase letter</mat-error\n >\n } @if ( $any(password).errors?.nolowerinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 lowercase letter</mat-error\n >\n } @if ( $any(password).errors?.nosymbolinpassword && (password.dirty\n || password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 punctuation/symbol</mat-error\n >\n }\n </mat-form-field>\n </div>\n\n <!-- confirm password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">confirm password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"confirmPassword\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"confirmPassword\"\n />\n </mat-form-field>\n </div>\n @if (form.errors?.areequal && confirmPassword.touched) {\n <div i18n=\"auth-jwt-admin\" style=\"color: red\">\n password differs from confirmation password\n </div>\n }\n\n <button\n i18n=\"auth-jwt-admin\"\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n class=\"mat-primary\"\n [disabled]=\"\n form.invalid || form.pristine || busy || name.pending || email.pending\n \"\n >\n register\n </button>\n @if (busy) {\n <mat-progress-spinner diameter=\"20\"></mat-progress-spinner>\n }\n </fieldset>\n </form>\n\n <details>\n <summary i18n=\"auth-jwt-admin\">Hints</summary>\n <div class=\"info\">\n <p i18n=\"auth-jwt-admin\">\n To register a new user, you must provide his email address, choose a\n password, and choose a username, which must be unique (you will be\n notified if another user has already taken that name). The username must\n include only letters/digits, start with a letter, and be no shorter than\n 3 characters, nor longer than 50.\n </p>\n <p i18n=\"auth-jwt-admin\">\n To promote a decent security level, the password must include at least 8\n characters, uppercase and lowercase letters, digits, and punctuation\n (like dashes, stops, parentheses, etc.).\n </p>\n <p i18n=\"auth-jwt-admin\">\n Once registered, if messaging is enabled on the server side the user\n will receive an email message to the email address you specified; he\n will have to click on the provided link to complete the registration\n process. Otherwise, you should edit the newly created user and confirm\n the email registration.\n </p>\n </div>\n </details>\n</div>\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}.info{column-width:600px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: ["passwordToCheck"], outputs: ["strengthChange"] }] }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtRegistrationComponent, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtRegistrationComponent, decorators: [{
162
162
  type: Component,
163
163
  args: [{ selector: 'auth-jwt-registration', template: "<div>\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\n <fieldset>\n <legend i18n=\"auth-jwt-admin\">registration</legend>\n <!-- email -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n>email</mat-label>\n <input\n matInput\n type=\"email\"\n id=\"email\"\n maxlength=\"256\"\n required\n autofocus\n spellcheck=\"false\"\n [formControl]=\"email\"\n />\n @if ( $any(email).errors?.required && (email.dirty || email.touched) )\n {\n <mat-error i18n=\"auth-jwt-admin\">email required</mat-error>\n } @if ($any(email).errors?.email && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid email</mat-error>\n } @if ( $any(email).errors?.uniqueEmail && (email.dirty ||\n email.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">email already registered</mat-error>\n }\n </mat-form-field>\n @if (email.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- name -->\n <div class=\"form-row\">\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">username</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"name\"\n maxlength=\"50\"\n required\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\n spellcheck=\"false\"\n [formControl]=\"name\"\n />\n @if ($any(name).errors?.required && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">username required</mat-error>\n } @if ($any(name).errors?.pattern && (name.dirty || name.touched)) {\n <mat-error i18n=\"auth-jwt-admin\">invalid username</mat-error>\n } @if ( $any(name).errors?.uniqueName && (name.dirty || name.touched)\n ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >username already registered</mat-error\n >\n }\n </mat-form-field>\n @if (name.pending) {\n <mat-icon>hourglass</mat-icon>\n }\n </div>\n\n <!-- first name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"firstName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"firstName\"\n />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n first name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- last name -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input\n matInput\n type=\"text\"\n id=\"lastName\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"lastName\"\n />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\" class=\"text-danger small\">\n last name required\n </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- <div [formGroup]=\"passwords\"> -->\n <!-- password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"password\"\n autocomplete=\"new-password\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"password\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"hide = !hide\"\n i18n-aria-label=\"auth-jwt-login\"\n aria-label=\"Hide password\"\n [attr.aria-pressed]=\"hide\"\n >\n <mat-icon>{{ hide ? \"visibility_off\" : \"visibility\" }}</mat-icon>\n </button>\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\n </auth-jwt-password-strength-bar>\n @if ( $any(password).errors?.required && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">password required</mat-error>\n } @if ( $any(password).errors?.passwordtooshort && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\">at least 8 characters</mat-error>\n } @if ( $any(password).errors?.noupperinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 uppercase letter</mat-error\n >\n } @if ( $any(password).errors?.nolowerinpassword && (password.dirty ||\n password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 lowercase letter</mat-error\n >\n } @if ( $any(password).errors?.nosymbolinpassword && (password.dirty\n || password.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"\n >at least 1 punctuation/symbol</mat-error\n >\n }\n </mat-form-field>\n </div>\n\n <!-- confirm password -->\n <div>\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">confirm password</mat-label>\n <input\n matInput\n [type]=\"hide ? 'password' : 'text'\"\n name=\"confirmPassword\"\n maxlength=\"50\"\n required\n spellcheck=\"false\"\n [formControl]=\"confirmPassword\"\n />\n </mat-form-field>\n </div>\n @if (form.errors?.areequal && confirmPassword.touched) {\n <div i18n=\"auth-jwt-admin\" style=\"color: red\">\n password differs from confirmation password\n </div>\n }\n\n <button\n i18n=\"auth-jwt-admin\"\n mat-flat-button\n type=\"submit\"\n color=\"primary\"\n class=\"mat-primary\"\n [disabled]=\"\n form.invalid || form.pristine || busy || name.pending || email.pending\n \"\n >\n register\n </button>\n @if (busy) {\n <mat-progress-spinner diameter=\"20\"></mat-progress-spinner>\n }\n </fieldset>\n </form>\n\n <details>\n <summary i18n=\"auth-jwt-admin\">Hints</summary>\n <div class=\"info\">\n <p i18n=\"auth-jwt-admin\">\n To register a new user, you must provide his email address, choose a\n password, and choose a username, which must be unique (you will be\n notified if another user has already taken that name). The username must\n include only letters/digits, start with a letter, and be no shorter than\n 3 characters, nor longer than 50.\n </p>\n <p i18n=\"auth-jwt-admin\">\n To promote a decent security level, the password must include at least 8\n characters, uppercase and lowercase letters, digits, and punctuation\n (like dashes, stops, parentheses, etc.).\n </p>\n <p i18n=\"auth-jwt-admin\">\n Once registered, if messaging is enabled on the server side the user\n will receive an email message to the email address you specified; he\n will have to click on the provided link to complete the registration\n process. Otherwise, you should edit the newly created user and confirm\n the email registration.\n </p>\n </div>\n </details>\n</div>\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}.info{column-width:600px}\n"] }]
164
164
  }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MatSnackBar }, { type: i3.AuthJwtAccountService }, { type: i4.UserListRepository }], propDecorators: { autoConfirm: [{
@@ -66,10 +66,10 @@ export class PasswordStrengthBarComponent {
66
66
  this.bars[n] = col;
67
67
  }
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PasswordStrengthBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { strengthChange: "strengthChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"strength\">\r\n <small>strength:</small>\r\n <ul id=\"strengthBar\">\r\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\r\n </ul>\r\n</div>\r\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PasswordStrengthBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { strengthChange: "strengthChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"strength\">\r\n <small>strength:</small>\r\n <ul id=\"strengthBar\">\r\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\r\n </ul>\r\n</div>\r\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: PasswordStrengthBarComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PasswordStrengthBarComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'auth-jwt-password-strength-bar', template: "<div id=\"strength\">\r\n <small>strength:</small>\r\n <ul id=\"strengthBar\">\r\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\r\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\r\n </ul>\r\n</div>\r\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }]
75
75
  }], ctorParameters: () => [], propDecorators: { passwordToCheck: [{
@@ -116,10 +116,10 @@ export class UserListRepository {
116
116
  });
117
117
  return promise;
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserListRepository, deps: [{ token: i1.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserListRepository, providedIn: 'root' }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserListRepository, deps: [{ token: i1.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserListRepository, providedIn: 'root' }); }
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserListRepository, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserListRepository, decorators: [{
123
123
  type: Injectable,
124
124
  args: [{ providedIn: 'root' }]
125
125
  }], ctorParameters: () => [{ type: i1.AuthJwtAccountService }] });
@@ -95,12 +95,12 @@ export class UserEditorComponent {
95
95
  }
96
96
  this.userChange.emit(this.getUserFromForm());
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserEditorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: UserEditorComponent, selector: "auth-jwt-user-editor", inputs: { user: "user" }, outputs: { userChange: "userChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n @if (email.hasError('required') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> email address required </mat-error>\n } @if (email.hasError('pattern') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> invalid email address </mat-error>\n }\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n class=\"mat-primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name required </mat-error>\n } @if ( firstName.hasError('maxlength') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name too long </mat-error>\n }\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name required </mat-error>\n } @if ( lastName.hasError('maxlength') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name too long </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n @if (roles.hasError('maxlength') && (roles.dirty || roles.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> too long </mat-error>\n }\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n class=\"mat-warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n class=\"mat-primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserEditorComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.AuthJwtService }], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: UserEditorComponent, selector: "auth-jwt-user-editor", inputs: { user: "user" }, outputs: { userChange: "userChange", editorClose: "editorClose" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n @if (email.hasError('required') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> email address required </mat-error>\n } @if (email.hasError('pattern') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> invalid email address </mat-error>\n }\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon class=\"mat-primary\">lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name required </mat-error>\n } @if ( firstName.hasError('maxlength') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name too long </mat-error>\n }\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name required </mat-error>\n } @if ( lastName.hasError('maxlength') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name too long </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n @if (roles.hasError('maxlength') && (roles.dirty || roles.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> too long </mat-error>\n }\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i7.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserEditorComponent, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserEditorComponent, decorators: [{
102
102
  type: Component,
103
- args: [{ selector: 'auth-jwt-user-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n @if (email.hasError('required') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> email address required </mat-error>\n } @if (email.hasError('pattern') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> invalid email address </mat-error>\n }\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n class=\"mat-primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon>lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name required </mat-error>\n } @if ( firstName.hasError('maxlength') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name too long </mat-error>\n }\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name required </mat-error>\n } @if ( lastName.hasError('maxlength') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name too long </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n @if (roles.hasError('maxlength') && (roles.dirty || roles.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> too long </mat-error>\n }\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n class=\"mat-warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon>cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n class=\"mat-primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon>check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
103
+ args: [{ selector: 'auth-jwt-user-editor', template: "<form [formGroup]=\"form\" (submit)=\"save()\">\n <div class=\"form-row\">\n <!-- email -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">email</mat-label>\n <input type=\"text\" matInput [formControl]=\"email\" />\n @if (email.hasError('required') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> email address required </mat-error>\n } @if (email.hasError('pattern') && (email.dirty || email.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> invalid email address </mat-error>\n }\n </mat-form-field>\n\n <!-- emailConfirmed -->\n <mat-checkbox [formControl]=\"emailConfirmed\" i18n=\"auth-jwt-admin\"\n >email address confirmed</mat-checkbox\n >\n </div>\n\n <!-- lockoutEnabled -->\n <div class=\"form-row\">\n <mat-checkbox [formControl]=\"lockoutEnabled\" i18n=\"auth-jwt-admin\"\n >lockout enabled</mat-checkbox\n >\n <button\n type=\"button\"\n mat-icon-button\n color=\"primary\"\n (click)=\"endLockout()\"\n [disabled]=\"unlocked\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Unlock this user if locked\"\n >\n <mat-icon class=\"mat-primary\">lock_open</mat-icon>\n </button>\n </div>\n\n <div class=\"form-row\">\n <!-- firstName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\n <input type=\"text\" matInput [formControl]=\"firstName\" />\n @if ( firstName.hasError('required') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name required </mat-error>\n } @if ( firstName.hasError('maxlength') && (firstName.dirty ||\n firstName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> first name too long </mat-error>\n }\n </mat-form-field>\n\n <!-- lastName -->\n <mat-form-field>\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\n <input type=\"text\" matInput [formControl]=\"lastName\" />\n @if ( lastName.hasError('required') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name required </mat-error>\n } @if ( lastName.hasError('maxlength') && (lastName.dirty ||\n lastName.touched) ) {\n <mat-error i18n=\"auth-jwt-admin\"> last name too long </mat-error>\n }\n </mat-form-field>\n </div>\n\n <!-- roles -->\n <div>\n <mat-form-field style=\"width: 16em\">\n <mat-label i18n=\"auth-jwt-admin\">roles</mat-label>\n <input type=\"text\" matInput [formControl]=\"roles\" />\n @if (roles.hasError('maxlength') && (roles.dirty || roles.touched)) {\n <mat-error i18n=\"auth-jwt-admin\"> too long </mat-error>\n }\n <mat-hint i18n>roles (separated by space)</mat-hint>\n </mat-form-field>\n </div>\n\n <!-- buttons -->\n <br />\n <div>\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Close\"\n (click)=\"close()\"\n >\n <mat-icon class=\"mat-warn\">cancel</mat-icon>\n </button>\n <button\n type=\"submit\"\n mat-icon-button\n color=\"primary\"\n [disabled]=\"form.invalid\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Save user\"\n >\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\n </button>\n </div>\n</form>\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}\n"] }]
104
104
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.AuthJwtService }], propDecorators: { user: [{
105
105
  type: Input
106
106
  }], userChange: [{
@@ -108,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
108
108
  }], editorClose: [{
109
109
  type: Output
110
110
  }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZWRpdG9yL3VzZXItZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWVkaXRvci91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVF4QixNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLElBQW9CLElBQUksQ0FBQyxLQUF1QjtRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUtELFlBQVksV0FBK0IsRUFBVSxZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDL0UsU0FBUztRQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsT0FBTztRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDckMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3pDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVYLFVBQVUsQ0FBQyxJQUFzQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRTtZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7WUFDekMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztZQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0F6R1UsbUJBQW1CO2tHQUFuQixtQkFBbUIseUpDZGhDLDg0R0F5R0E7OzJGRDNGYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usc0JBQXNCO29IQWlCWixJQUFJO3NCQUF2QixLQUFLO2dCQVFJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dGhKd3RTZXJ2aWNlLCBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtdXNlci1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfdXNlcjogVXNlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIGVtYWlsOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGVtYWlsQ29uZmlybWVkOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGxvY2tvdXRFbmFibGVkOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGZpcnN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBsYXN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyByb2xlczogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBwdWJsaWMgdW5sb2NrZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdXNlcih2YWx1ZTogVXNlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fdXNlciA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcclxuICB9XHJcbiAgcHVibGljIGdldCB1c2VyKCk6IFVzZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXI7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXI+O1xyXG4gIEBPdXRwdXQoKSBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoSnd0U2VydmljZSkge1xyXG4gICAgLy8gZXZlbnRzXHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXI+KCk7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLmVtYWlsID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMuZW1haWwsXHJcbiAgICBdKTtcclxuICAgIHRoaXMuZW1haWxDb25maXJtZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcclxuICAgIHRoaXMubG9ja291dEVuYWJsZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcclxuICAgIHRoaXMuZmlyc3ROYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5sYXN0TmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMucm9sZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCkpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgZW1haWw6IHRoaXMuZW1haWwsXHJcbiAgICAgIGVtYWlsQ29uZmlybWVkOiB0aGlzLmVtYWlsQ29uZmlybWVkLFxyXG4gICAgICBsb2Nrb3V0RW5hYmxlZDogdGhpcy5sb2Nrb3V0RW5hYmxlZCxcclxuICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZSxcclxuICAgICAgbGFzdE5hbWU6IHRoaXMubGFzdE5hbWUsXHJcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh1c2VyOiBVc2VyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIXVzZXIpIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVtYWlsLnNldFZhbHVlKHVzZXIuZW1haWwpO1xyXG4gICAgICB0aGlzLmVtYWlsQ29uZmlybWVkLnNldFZhbHVlKHVzZXIuZW1haWxDb25maXJtZWQpO1xyXG4gICAgICB0aGlzLmxvY2tvdXRFbmFibGVkLnNldFZhbHVlKHVzZXIubG9ja291dEVuYWJsZWQpO1xyXG4gICAgICB0aGlzLmZpcnN0TmFtZS5zZXRWYWx1ZSh1c2VyLmZpcnN0TmFtZSk7XHJcbiAgICAgIHRoaXMubGFzdE5hbWUuc2V0VmFsdWUodXNlci5sYXN0TmFtZSk7XHJcbiAgICAgIGlmICh1c2VyLnJvbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZSh1c2VyLnJvbGVzLmpvaW4oJyAnKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVc2VyRnJvbUZvcm0oKTogVXNlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1c2VyTmFtZTogdGhpcy5fdXNlcj8udXNlck5hbWUgfHwgJycsXHJcbiAgICAgIGVtYWlsOiB0aGlzLmVtYWlsLnZhbHVlLFxyXG4gICAgICBlbWFpbENvbmZpcm1lZDogdGhpcy5lbWFpbENvbmZpcm1lZC52YWx1ZSxcclxuICAgICAgbG9ja291dEVuYWJsZWQ6IHRoaXMubG9ja291dEVuYWJsZWQudmFsdWUsXHJcbiAgICAgIGZpcnN0TmFtZTogdGhpcy5maXJzdE5hbWUudmFsdWUsXHJcbiAgICAgIGxhc3ROYW1lOiB0aGlzLmxhc3ROYW1lLnZhbHVlLFxyXG4gICAgICByb2xlczogdGhpcy5yb2xlcy52YWx1ZVxyXG4gICAgICAgID8gdGhpcy5yb2xlcy52YWx1ZS5zcGxpdCgnICcpLmZpbHRlcigoczogc3RyaW5nKSA9PiBzKVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZExvY2tvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51bmxvY2tlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl91c2VyIS5sb2Nrb3V0RW5kID0gdGhpcy5fYXV0aFNlcnZpY2UuZ2V0VVRDRGF0ZSgpO1xyXG4gICAgdGhpcy51bmxvY2tlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudXNlckNoYW5nZS5lbWl0KHRoaXMuZ2V0VXNlckZyb21Gb3JtKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8IS0tIGVtYWlsIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+ZW1haWw8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJlbWFpbFwiIC8+XG4gICAgICBAaWYgKGVtYWlsLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKSkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gZW1haWwgYWRkcmVzcyByZXF1aXJlZCA8L21hdC1lcnJvcj5cbiAgICAgIH0gQGlmIChlbWFpbC5oYXNFcnJvcigncGF0dGVybicpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKSkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gaW52YWxpZCBlbWFpbCBhZGRyZXNzIDwvbWF0LWVycm9yPlxuICAgICAgfVxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8IS0tIGVtYWlsQ29uZmlybWVkIC0tPlxuICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImVtYWlsQ29uZmlybWVkXCIgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgID5lbWFpbCBhZGRyZXNzIGNvbmZpcm1lZDwvbWF0LWNoZWNrYm94XG4gICAgPlxuICA8L2Rpdj5cblxuICA8IS0tIGxvY2tvdXRFbmFibGVkIC0tPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJsb2Nrb3V0RW5hYmxlZFwiIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICA+bG9ja291dCBlbmFibGVkPC9tYXQtY2hlY2tib3hcbiAgICA+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBjbGFzcz1cIm1hdC1wcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJlbmRMb2Nrb3V0KClcIlxuICAgICAgW2Rpc2FibGVkXT1cInVubG9ja2VkXCJcbiAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJVbmxvY2sgdGhpcyB1c2VyIGlmIGxvY2tlZFwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmxvY2tfb3BlbjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgIDwhLS0gZmlyc3ROYW1lIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+Zmlyc3QgbmFtZTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZpcnN0TmFtZVwiIC8+XG4gICAgICBAaWYgKCBmaXJzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgKGZpcnN0TmFtZS5kaXJ0eSB8fFxuICAgICAgZmlyc3ROYW1lLnRvdWNoZWQpICkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gZmlyc3QgbmFtZSByZXF1aXJlZCA8L21hdC1lcnJvcj5cbiAgICAgIH0gQGlmICggZmlyc3ROYW1lLmhhc0Vycm9yKCdtYXhsZW5ndGgnKSAmJiAoZmlyc3ROYW1lLmRpcnR5IHx8XG4gICAgICBmaXJzdE5hbWUudG91Y2hlZCkgKSB7XG4gICAgICA8bWF0LWVycm9yIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPiBmaXJzdCBuYW1lIHRvbyBsb25nIDwvbWF0LWVycm9yPlxuICAgICAgfVxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8IS0tIGxhc3ROYW1lIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+bGFzdCBuYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibGFzdE5hbWVcIiAvPlxuICAgICAgQGlmICggbGFzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgKGxhc3ROYW1lLmRpcnR5IHx8XG4gICAgICBsYXN0TmFtZS50b3VjaGVkKSApIHtcbiAgICAgIDxtYXQtZXJyb3IgaTE4bj1cImF1dGgtand0LWFkbWluXCI+IGxhc3QgbmFtZSByZXF1aXJlZCA8L21hdC1lcnJvcj5cbiAgICAgIH0gQGlmICggbGFzdE5hbWUuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIChsYXN0TmFtZS5kaXJ0eSB8fFxuICAgICAgbGFzdE5hbWUudG91Y2hlZCkgKSB7XG4gICAgICA8bWF0LWVycm9yIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPiBsYXN0IG5hbWUgdG9vIGxvbmcgPC9tYXQtZXJyb3I+XG4gICAgICB9XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSByb2xlcyAtLT5cbiAgPGRpdj5cbiAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogMTZlbVwiPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5yb2xlczwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInJvbGVzXCIgLz5cbiAgICAgIEBpZiAocm9sZXMuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIChyb2xlcy5kaXJ0eSB8fCByb2xlcy50b3VjaGVkKSkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gdG9vIGxvbmcgPC9tYXQtZXJyb3I+XG4gICAgICB9XG4gICAgICA8bWF0LWhpbnQgaTE4bj5yb2xlcyAoc2VwYXJhdGVkIGJ5IHNwYWNlKTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPCEtLSBidXR0b25zIC0tPlxuICA8YnIgLz5cbiAgPGRpdj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgIGNsYXNzPVwibWF0LXdhcm5cIlxuICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgbWF0VG9vbHRpcD1cIkNsb3NlXCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIGNsYXNzPVwibWF0LXByaW1hcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICBtYXRUb29sdGlwPVwiU2F2ZSB1c2VyXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZWRpdG9yL3VzZXItZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWVkaXRvci91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQVF4QixNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLElBQW9CLElBQUksQ0FBQyxLQUF1QjtRQUM5QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUtELFlBQVksV0FBK0IsRUFBVSxZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDL0UsU0FBUztRQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsT0FBTztRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDckMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLEtBQUs7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3pDLFVBQVUsQ0FBQyxRQUFRO1lBQ25CLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDeEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVYLFVBQVUsQ0FBQyxJQUFzQjtRQUN2QyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRTtZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUs7WUFDekMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSztZQUN6QyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQy9CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLEVBQUU7U0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs4R0F6R1UsbUJBQW1CO2tHQUFuQixtQkFBbUIseUpDZGhDLHkzR0FzR0E7OzJGRHhGYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usc0JBQXNCO29IQWlCWixJQUFJO3NCQUF2QixLQUFLO2dCQVFJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dGhKd3RTZXJ2aWNlLCBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtdXNlci1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1lZGl0b3IuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSBfdXNlcjogVXNlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgcHVibGljIGVtYWlsOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGVtYWlsQ29uZmlybWVkOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGxvY2tvdXRFbmFibGVkOiBVbnR5cGVkRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGZpcnN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBsYXN0TmFtZTogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyByb2xlczogVW50eXBlZEZvcm1Db250cm9sO1xyXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG5cclxuICBwdWJsaWMgdW5sb2NrZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdXNlcih2YWx1ZTogVXNlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fdXNlciA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcclxuICB9XHJcbiAgcHVibGljIGdldCB1c2VyKCk6IFVzZXIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXI7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXI+O1xyXG4gIEBPdXRwdXQoKSBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoSnd0U2VydmljZSkge1xyXG4gICAgLy8gZXZlbnRzXHJcbiAgICB0aGlzLnVzZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXI+KCk7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLmVtYWlsID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMuZW1haWwsXHJcbiAgICBdKTtcclxuICAgIHRoaXMuZW1haWxDb25maXJtZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcclxuICAgIHRoaXMubG9ja291dEVuYWJsZWQgPSBmb3JtQnVpbGRlci5jb250cm9sKGZhbHNlKTtcclxuICAgIHRoaXMuZmlyc3ROYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5sYXN0TmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMucm9sZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwMCkpO1xyXG5cclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgZW1haWw6IHRoaXMuZW1haWwsXHJcbiAgICAgIGVtYWlsQ29uZmlybWVkOiB0aGlzLmVtYWlsQ29uZmlybWVkLFxyXG4gICAgICBsb2Nrb3V0RW5hYmxlZDogdGhpcy5sb2Nrb3V0RW5hYmxlZCxcclxuICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZSxcclxuICAgICAgbGFzdE5hbWU6IHRoaXMubGFzdE5hbWUsXHJcbiAgICAgIHJvbGVzOiB0aGlzLnJvbGVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybSh1c2VyOiBVc2VyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIXVzZXIpIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVtYWlsLnNldFZhbHVlKHVzZXIuZW1haWwpO1xyXG4gICAgICB0aGlzLmVtYWlsQ29uZmlybWVkLnNldFZhbHVlKHVzZXIuZW1haWxDb25maXJtZWQpO1xyXG4gICAgICB0aGlzLmxvY2tvdXRFbmFibGVkLnNldFZhbHVlKHVzZXIubG9ja291dEVuYWJsZWQpO1xyXG4gICAgICB0aGlzLmZpcnN0TmFtZS5zZXRWYWx1ZSh1c2VyLmZpcnN0TmFtZSk7XHJcbiAgICAgIHRoaXMubGFzdE5hbWUuc2V0VmFsdWUodXNlci5sYXN0TmFtZSk7XHJcbiAgICAgIGlmICh1c2VyLnJvbGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZSh1c2VyLnJvbGVzLmpvaW4oJyAnKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yb2xlcy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVc2VyRnJvbUZvcm0oKTogVXNlciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1c2VyTmFtZTogdGhpcy5fdXNlcj8udXNlck5hbWUgfHwgJycsXHJcbiAgICAgIGVtYWlsOiB0aGlzLmVtYWlsLnZhbHVlLFxyXG4gICAgICBlbWFpbENvbmZpcm1lZDogdGhpcy5lbWFpbENvbmZpcm1lZC52YWx1ZSxcclxuICAgICAgbG9ja291dEVuYWJsZWQ6IHRoaXMubG9ja291dEVuYWJsZWQudmFsdWUsXHJcbiAgICAgIGZpcnN0TmFtZTogdGhpcy5maXJzdE5hbWUudmFsdWUsXHJcbiAgICAgIGxhc3ROYW1lOiB0aGlzLmxhc3ROYW1lLnZhbHVlLFxyXG4gICAgICByb2xlczogdGhpcy5yb2xlcy52YWx1ZVxyXG4gICAgICAgID8gdGhpcy5yb2xlcy52YWx1ZS5zcGxpdCgnICcpLmZpbHRlcigoczogc3RyaW5nKSA9PiBzKVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuZExvY2tvdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy51bmxvY2tlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl91c2VyIS5sb2Nrb3V0RW5kID0gdGhpcy5fYXV0aFNlcnZpY2UuZ2V0VVRDRGF0ZSgpO1xyXG4gICAgdGhpcy51bmxvY2tlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudXNlckNoYW5nZS5lbWl0KHRoaXMuZ2V0VXNlckZyb21Gb3JtKCkpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8IS0tIGVtYWlsIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+ZW1haWw8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJlbWFpbFwiIC8+XG4gICAgICBAaWYgKGVtYWlsLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKSkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gZW1haWwgYWRkcmVzcyByZXF1aXJlZCA8L21hdC1lcnJvcj5cbiAgICAgIH0gQGlmIChlbWFpbC5oYXNFcnJvcigncGF0dGVybicpICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKSkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gaW52YWxpZCBlbWFpbCBhZGRyZXNzIDwvbWF0LWVycm9yPlxuICAgICAgfVxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8IS0tIGVtYWlsQ29uZmlybWVkIC0tPlxuICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cImVtYWlsQ29uZmlybWVkXCIgaTE4bj1cImF1dGgtand0LWFkbWluXCJcbiAgICAgID5lbWFpbCBhZGRyZXNzIGNvbmZpcm1lZDwvbWF0LWNoZWNrYm94XG4gICAgPlxuICA8L2Rpdj5cblxuICA8IS0tIGxvY2tvdXRFbmFibGVkIC0tPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbF09XCJsb2Nrb3V0RW5hYmxlZFwiIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICA+bG9ja291dCBlbmFibGVkPC9tYXQtY2hlY2tib3hcbiAgICA+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwiZW5kTG9ja291dCgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJ1bmxvY2tlZFwiXG4gICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICBtYXRUb29sdGlwPVwiVW5sb2NrIHRoaXMgdXNlciBpZiBsb2NrZWRcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1wcmltYXJ5XCI+bG9ja19vcGVuPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgPCEtLSBmaXJzdE5hbWUgLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5maXJzdCBuYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwiZmlyc3ROYW1lXCIgLz5cbiAgICAgIEBpZiAoIGZpcnN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiAoZmlyc3ROYW1lLmRpcnR5IHx8XG4gICAgICBmaXJzdE5hbWUudG91Y2hlZCkgKSB7XG4gICAgICA8bWF0LWVycm9yIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPiBmaXJzdCBuYW1lIHJlcXVpcmVkIDwvbWF0LWVycm9yPlxuICAgICAgfSBAaWYgKCBmaXJzdE5hbWUuaGFzRXJyb3IoJ21heGxlbmd0aCcpICYmIChmaXJzdE5hbWUuZGlydHkgfHxcbiAgICAgIGZpcnN0TmFtZS50b3VjaGVkKSApIHtcbiAgICAgIDxtYXQtZXJyb3IgaTE4bj1cImF1dGgtand0LWFkbWluXCI+IGZpcnN0IG5hbWUgdG9vIGxvbmcgPC9tYXQtZXJyb3I+XG4gICAgICB9XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gbGFzdE5hbWUgLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5sYXN0IG5hbWU8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJsYXN0TmFtZVwiIC8+XG4gICAgICBAaWYgKCBsYXN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiAobGFzdE5hbWUuZGlydHkgfHxcbiAgICAgIGxhc3ROYW1lLnRvdWNoZWQpICkge1xuICAgICAgPG1hdC1lcnJvciBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj4gbGFzdCBuYW1lIHJlcXVpcmVkIDwvbWF0LWVycm9yPlxuICAgICAgfSBAaWYgKCBsYXN0TmFtZS5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgKGxhc3ROYW1lLmRpcnR5IHx8XG4gICAgICBsYXN0TmFtZS50b3VjaGVkKSApIHtcbiAgICAgIDxtYXQtZXJyb3IgaTE4bj1cImF1dGgtand0LWFkbWluXCI+IGxhc3QgbmFtZSB0b28gbG9uZyA8L21hdC1lcnJvcj5cbiAgICAgIH1cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8IS0tIHJvbGVzIC0tPlxuICA8ZGl2PlxuICAgIDxtYXQtZm9ybS1maWVsZCBzdHlsZT1cIndpZHRoOiAxNmVtXCI+XG4gICAgICA8bWF0LWxhYmVsIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPnJvbGVzPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwicm9sZXNcIiAvPlxuICAgICAgQGlmIChyb2xlcy5oYXNFcnJvcignbWF4bGVuZ3RoJykgJiYgKHJvbGVzLmRpcnR5IHx8IHJvbGVzLnRvdWNoZWQpKSB7XG4gICAgICA8bWF0LWVycm9yIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPiB0b28gbG9uZyA8L21hdC1lcnJvcj5cbiAgICAgIH1cbiAgICAgIDxtYXQtaGludCBpMThuPnJvbGVzIChzZXBhcmF0ZWQgYnkgc3BhY2UpPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8IS0tIGJ1dHRvbnMgLS0+XG4gIDxiciAvPlxuICA8ZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxuICAgICAgbWF0VG9vbHRpcD1cIkNsb3NlXCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCJcbiAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgIG1hdFRvb2x0aXA9XCJTYXZlIHVzZXJcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1wcmltYXJ5XCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -48,12 +48,12 @@ export class UserFilterComponent {
48
48
  this._filter = this.getFilter();
49
49
  this.filterChange.emit(this._filter);
50
50
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.2", type: UserFilterComponent, selector: "auth-jwt-user-filter", inputs: { filter: "filter", disabled: "disabled" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\r\n <input matInput [formControl]=\"name\" />\r\n <button\r\n mat-icon-button\r\n matSuffix\r\n type=\"button\"\r\n (click)=\"reset()\"\r\n color=\"warn\"\r\n class=\"mat-warn\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Reset filters\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"apply\"\r\n type=\"submit\"\r\n mat-icon-button\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n [disabled]=\"disabled\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Apply filters\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserFilterComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: UserFilterComponent, selector: "auth-jwt-user-filter", inputs: { filter: "filter", disabled: "disabled" }, outputs: { filterChange: "filterChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\r\n <input matInput [formControl]=\"name\" />\r\n <button\r\n mat-icon-button\r\n matSuffix\r\n type=\"button\"\r\n (click)=\"reset()\"\r\n color=\"warn\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Reset filters\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"apply\"\r\n type=\"submit\"\r\n mat-icon-button\r\n color=\"primary\"\r\n [disabled]=\"disabled\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Apply filters\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserFilterComponent, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserFilterComponent, decorators: [{
55
55
  type: Component,
56
- args: [{ selector: 'auth-jwt-user-filter', template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\r\n <input matInput [formControl]=\"name\" />\r\n <button\r\n mat-icon-button\r\n matSuffix\r\n type=\"button\"\r\n (click)=\"reset()\"\r\n color=\"warn\"\r\n class=\"mat-warn\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Reset filters\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon>clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"apply\"\r\n type=\"submit\"\r\n mat-icon-button\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n [disabled]=\"disabled\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Apply filters\"\r\n >\r\n <mat-icon>check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"] }]
56
+ args: [{ selector: 'auth-jwt-user-filter', template: "<form [formGroup]=\"form\" (submit)=\"apply()\" ng-disabled=\"disabled\">\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">name or ID</mat-label>\r\n <input matInput [formControl]=\"name\" />\r\n <button\r\n mat-icon-button\r\n matSuffix\r\n type=\"button\"\r\n (click)=\"reset()\"\r\n color=\"warn\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Reset filters\"\r\n [disabled]=\"disabled\"\r\n >\r\n <mat-icon class=\"mat-warn\">clear</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <button\r\n id=\"apply\"\r\n type=\"submit\"\r\n mat-icon-button\r\n color=\"primary\"\r\n [disabled]=\"disabled\"\r\n i18n-matTooltip=\"auth-jwt-admin\"\r\n matTooltip=\"Apply filters\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n</form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}#apply{margin-top:-20px}\n"] }]
57
57
  }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { filter: [{
58
58
  type: Input
59
59
  }], disabled: [{
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImpor
61
61
  }], filterChange: [{
62
62
  type: Output
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZmlsdGVyL3VzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWZpbHRlci91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVcvRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBb0M7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFjRCxZQUFZLFdBQXdCO1FBQ2xDLE9BQU87UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsUUFBUTtRQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQW1CO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQTdEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwySkNYaEMsdytCQWtDQTs7MkZEdkJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxzQkFBc0I7Z0ZBUXJCLE1BQU07c0JBRGhCLEtBQUs7Z0JBYUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBVc2VyRmlsdGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtdXNlci1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1maWx0ZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckZpbHRlckNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyPzogVXNlckZpbHRlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBVc2VyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGZpbHRlcih2YWx1ZTogVXNlckZpbHRlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9maWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZmlsdGVyIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXJGaWx0ZXI+O1xyXG5cclxuICBwdWJsaWMgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLm5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICB9KTtcclxuICAgIC8vIGV2ZW50XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlckZpbHRlcj4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybShmaWx0ZXI/OiBVc2VyRmlsdGVyKTogdm9pZCB7XHJcbiAgICBpZiAoIWZpbHRlcikge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYW1lLnNldFZhbHVlKGZpbHRlci5uYW1lIHx8IG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlcigpOiBVc2VyRmlsdGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZT8udHJpbSgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5fZmlsdGVyID0ge307XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuX2ZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWx0ZXIgPSB0aGlzLmdldEZpbHRlcigpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLl9maWx0ZXIpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cImFwcGx5KClcIiBuZy1kaXNhYmxlZD1cImRpc2FibGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+bmFtZSBvciBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5hbWVcIiAvPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxyXG4gICAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgY2xhc3M9XCJtYXQtd2FyblwiXHJcbiAgICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgIG1hdFRvb2x0aXA9XCJSZXNldCBmaWx0ZXJzXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgIDxidXR0b25cclxuICAgICAgaWQ9XCJhcHBseVwiXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgY2xhc3M9XCJtYXQtcHJpbWFyeVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgbWF0VG9vbHRpcD1cIkFwcGx5IGZpbHRlcnNcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL3VzZXItZmlsdGVyL3VzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWZpbHRlci91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVcvRSxNQUFNLE9BQU8sbUJBQW1CO0lBRzlCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsS0FBb0M7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFjRCxZQUFZLFdBQXdCO1FBQ2xDLE9BQU87UUFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsUUFBUTtRQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQW1CO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtTQUM5QixDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQTdEVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwySkNYaEMsbzlCQWdDQTs7MkZEckJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxzQkFBc0I7Z0ZBUXJCLE1BQU07c0JBRGhCLEtBQUs7Z0JBYUMsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIE9uSW5pdCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBVc2VyRmlsdGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtdXNlci1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1maWx0ZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckZpbHRlckNvbXBvbmVudCB7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyPzogVXNlckZpbHRlcjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBVc2VyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGZpbHRlcih2YWx1ZTogVXNlckZpbHRlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9maWx0ZXIgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2ZpbHRlciA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh0aGlzLl9maWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgZmlsdGVyIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPFVzZXJGaWx0ZXI+O1xyXG5cclxuICBwdWJsaWMgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLm5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICB9KTtcclxuICAgIC8vIGV2ZW50XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXNlckZpbHRlcj4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybShmaWx0ZXI/OiBVc2VyRmlsdGVyKTogdm9pZCB7XHJcbiAgICBpZiAoIWZpbHRlcikge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5uYW1lLnNldFZhbHVlKGZpbHRlci5uYW1lIHx8IG51bGwpO1xyXG4gICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlcigpOiBVc2VyRmlsdGVyIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IHRoaXMubmFtZS52YWx1ZT8udHJpbSgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgdGhpcy5fZmlsdGVyID0ge307XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KHRoaXMuX2ZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9maWx0ZXIgPSB0aGlzLmdldEZpbHRlcigpO1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCh0aGlzLl9maWx0ZXIpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cImFwcGx5KClcIiBuZy1kaXNhYmxlZD1cImRpc2FibGVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+bmFtZSBvciBJRDwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5hbWVcIiAvPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxyXG4gICAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgICAgaTE4bi1tYXRUb29sdGlwPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgIG1hdFRvb2x0aXA9XCJSZXNldCBmaWx0ZXJzXCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXdhcm5cIj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGlkPVwiYXBwbHlcIlxyXG4gICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgbWF0VG9vbHRpcD1cIkFwcGx5IGZpbHRlcnNcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtcHJpbWFyeVwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
@@ -54,14 +54,14 @@ export class UserListComponent {
54
54
  onUserEditorClose() {
55
55
  this._repository.setActiveUser(null);
56
56
  }
57
- getGravatarUrl(email, size = 80) {
58
- return this._gravatarService.buildGravatarUrl(email, size);
57
+ getGravatarUrl(email, options) {
58
+ return this._gravatarService.buildGravatarUrl(email, options);
59
59
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserListComponent, deps: [{ token: i1.UserListRepository }, { token: i2.DialogService }, { token: i3.GravatarService }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.2", type: UserListComponent, selector: "auth-jwt-user-list", ngImport: i0, template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n @if (page$ | async; as page) {\n <div id=\"list\">\n @if (loading$ | async) {\n <div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n }\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n @for (user of page.items; track user) {\n <tr>\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n class=\"mat-primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n class=\"mat-warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n }\n </tbody>\n </table>\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n class=\"mat-warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n }\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n @if (active$ | async; as active) {\n <div>\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n }\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"], dependencies: [{ kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.UserFilterComponent, selector: "auth-jwt-user-filter", inputs: ["filter", "disabled"], outputs: ["filterChange"] }, { kind: "component", type: i11.UserEditorComponent, selector: "auth-jwt-user-editor", inputs: ["user"], outputs: ["userChange", "editorClose"] }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }] }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserListComponent, deps: [{ token: i1.UserListRepository }, { token: i2.DialogService }, { token: i3.GravatarService }], target: i0.ɵɵFactoryTarget.Component }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: UserListComponent, selector: "auth-jwt-user-list", ngImport: i0, template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n @if (page$ | async; as page) {\n <div id=\"list\">\n @if (loading$ | async) {\n <div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n }\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n @for (user of page.items; track user) {\n <tr>\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon class=\"mat-primary\">mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, { size: '32' })\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n }\n </tbody>\n </table>\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon class=\"mat-warn\">autorenew</mat-icon>\n </button>\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n }\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n @if (active$ | async; as active) {\n <div>\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n }\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"], dependencies: [{ kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i10.UserFilterComponent, selector: "auth-jwt-user-filter", inputs: ["filter", "disabled"], outputs: ["filterChange"] }, { kind: "component", type: i11.UserEditorComponent, selector: "auth-jwt-user-editor", inputs: ["user"], outputs: ["userChange", "editorClose"] }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }] }); }
62
62
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: UserListComponent, decorators: [{
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UserListComponent, decorators: [{
64
64
  type: Component,
65
- args: [{ selector: 'auth-jwt-user-list', template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n @if (page$ | async; as page) {\n <div id=\"list\">\n @if (loading$ | async) {\n <div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n }\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n @for (user of page.items; track user) {\n <tr>\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n class=\"mat-primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon>mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n class=\"mat-warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon>remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, 32)\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n }\n </tbody>\n </table>\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n class=\"mat-warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon>autorenew</mat-icon>\n </button>\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n }\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n @if (active$ | async; as active) {\n <div>\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n }\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"] }]
65
+ args: [{ selector: 'auth-jwt-user-list', template: "<div id=\"container\">\n <div>\n <!-- filters -->\n <div id=\"filters\">\n <auth-jwt-user-filter\n [filter]=\"filter$ | async\"\n (filterChange)=\"onFilterChange($event)\"\n ></auth-jwt-user-filter>\n </div>\n\n <!-- list -->\n @if (page$ | async; as page) {\n <div id=\"list\">\n @if (loading$ | async) {\n <div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n }\n <table>\n <thead>\n <td></td>\n <td></td>\n <th i18n=\"auth-jwt-admin\">name</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">first</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">last</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">email</th>\n <th i18n=\"auth-jwt-admin\">roles</th>\n <th i18n=\"auth-jwt-admin\" class=\"noif-lt-md\">lock end</th>\n </thead>\n <tbody>\n @for (user of page.items; track user) {\n <tr>\n <td class=\"fit-width\">\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Edit this user\"\n color=\"primary\"\n (click)=\"setActiveUser(user)\"\n >\n <mat-icon class=\"mat-primary\">mode_edit</mat-icon>\n </button>\n <button\n mat-icon-button\n type=\"button\"\n i18n-matTooltip=\"auth-jwt-admin\"\n matTooltip=\"Delete this user\"\n color=\"warn\"\n (click)=\"deleteUser(user)\"\n >\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\n </button>\n </td>\n <td class=\"fit-width\">\n <img\n alt=\"avatar\"\n [src]=\"getGravatarUrl(user.email, { size: '32' })\"\n [alt]=\"user.userName\"\n />\n </td>\n <td>{{ user.userName }}</td>\n <td class=\"noif-lt-md\">{{ user.firstName }}</td>\n <td class=\"noif-lt-md\">{{ user.lastName }}</td>\n <td class=\"noif-lt-md\">\n <a [href]=\"'mailto:' + user.email\">{{ user.email }}</a>\n </td>\n <td>{{ user.roles.join(\" \") }}</td>\n <td class=\"noif-lt-md\">{{ user.lockoutEnd }}</td>\n </tr>\n }\n </tbody>\n </table>\n <!-- paginator -->\n <div class=\"form-row\">\n <button\n type=\"button\"\n mat-icon-button\n color=\"warn\"\n i18n-matmatTooltip=\"auth-jwt-admin\"\n matTooltip=\"Refresh list\"\n (click)=\"reset()\"\n >\n <mat-icon class=\"mat-warn\">autorenew</mat-icon>\n </button>\n <mat-paginator\n [length]=\"page.total\"\n [pageIndex]=\"page.pageNumber - 1\"\n [pageSize]=\"page.pageSize\"\n [pageSizeOptions]=\"[5, 10, 20, 50, 100]\"\n (page)=\"onPageChange($event)\"\n [showFirstLastButtons]=\"true\"\n ></mat-paginator>\n </div>\n </div>\n }\n </div>\n\n <!-- editor -->\n <mat-expansion-panel\n id=\"editor\"\n [expanded]=\"active$ | async\"\n [disabled]=\"!(active$ | async)\"\n >\n @if (active$ | async; as active) {\n <div>\n <fieldset>\n <legend>{{ active.userName }}</legend>\n <auth-jwt-user-editor\n [user]=\"active\"\n (userChange)=\"saveActiveUser($event)\"\n (editorClose)=\"resetActiveUser()\"\n ></auth-jwt-user-editor>\n </fieldset>\n </div>\n }\n </mat-expansion-panel>\n</div>\n", styles: ["tr:nth-child(odd){background-color:#f8f8f8}th{padding:0 8px;text-align:left;color:silver;font-weight:400}td{padding:0 8px}td.fit-width{width:1px;white-space:nowrap}table{width:100%;border-collapse:collapse}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}div#filters{grid-area:filters}div#list{grid-area:list}div#editor{grid-area:editor}div#container{display:grid;grid-template-rows:auto 1fr auto;grid-template-columns:1fr;grid-template-areas:\"filters\" \"list\" \"editor\";gap:8px}@media only screen and (max-width: 959px){.noif-lt-md{display:none}}@media only screen and (min-width: 1920px){div#container{grid-template-rows:auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"filters filters\" \"list editor\"}}\n"] }]
66
66
  }], ctorParameters: () => [{ type: i1.UserListRepository }, { type: i2.DialogService }, { type: i3.GravatarService }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFjaEMsTUFBTSxPQUFPLGlCQUFpQjtJQU01QixZQUNVLFdBQStCLEVBQy9CLGNBQTZCLEVBQzdCLGdCQUFpQztRQUZqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUV6QyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBa0I7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFnQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFVO1FBQzFCLElBQUksQ0FBQyxjQUFjO2FBQ2hCLE9BQU8sQ0FDTixTQUFTLENBQUEseUJBQXlCLEVBQ2xDLFNBQVMsQ0FBQSw4QkFBOEIsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FDOUQ7YUFDQSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sYUFBYSxDQUFDLElBQWlCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBVTtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUU7UUFDNUMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7OEdBN0RVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDBEQ2pCOUIsbXdIQXlIQTs7MkZEeEdhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnO1xyXG5cclxuaW1wb3J0IHsgR3JhdmF0YXJTZXJ2aWNlLCBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcclxuaW1wb3J0IHsgRGF0YVBhZ2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQG15cm1pZG9uL25nLW1hdC10b29scyc7XHJcblxyXG5pbXBvcnQgeyBVc2VyTGlzdFJlcG9zaXRvcnkgfSBmcm9tICcuLi9zdGF0ZS91c2VyLWxpc3QucmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IFVzZXJGaWx0ZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLWp3dC1hY2NvdW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC11c2VyLWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VzZXItbGlzdC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdENvbXBvbmVudCB7XHJcbiAgcHVibGljIGFjdGl2ZSQ6IE9ic2VydmFibGU8VXNlciB8IHVuZGVmaW5lZD47XHJcbiAgcHVibGljIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG4gIHB1YmxpYyBmaWx0ZXIkOiBPYnNlcnZhYmxlPFVzZXJGaWx0ZXI+O1xyXG4gIHB1YmxpYyBwYWdlJDogT2JzZXJ2YWJsZTxEYXRhUGFnZTxVc2VyPj47XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfcmVwb3NpdG9yeTogVXNlckxpc3RSZXBvc2l0b3J5LFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgX2dyYXZhdGFyU2VydmljZTogR3JhdmF0YXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpbHRlciQgPSBfcmVwb3NpdG9yeS5maWx0ZXIkO1xyXG4gICAgdGhpcy5wYWdlJCA9IF9yZXBvc2l0b3J5LnBhZ2UkO1xyXG4gICAgdGhpcy5hY3RpdmUkID0gX3JlcG9zaXRvcnkuYWN0aXZlVXNlciQ7XHJcbiAgICB0aGlzLmxvYWRpbmckID0gX3JlcG9zaXRvcnkubG9hZGluZyQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GaWx0ZXJDaGFuZ2UoZmlsdGVyOiBVc2VyRmlsdGVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEZpbHRlcihmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGFnZUNoYW5nZShldmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldFBhZ2UoZXZlbnQucGFnZUluZGV4ICsgMSwgZXZlbnQucGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybShcclxuICAgICAgICAkbG9jYWxpemVgOmF1dGgtand0LWFkbWluOkNvbmZpcm1gLFxyXG4gICAgICAgICRsb2NhbGl6ZWA6YXV0aC1qd3QtYWRtaW46RGVsZXRlIHVzZXIgYCArIHVzZXIudXNlck5hbWUgKyAnPydcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICB0aGlzLl9yZXBvc2l0b3J5LmRlbGV0ZVVzZXIodXNlci51c2VyTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3RpdmVVc2VyKHVzZXI6IFVzZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEFjdGl2ZVVzZXIodXNlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVzZXRBY3RpdmVVc2VyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmVBY3RpdmVVc2VyKHVzZXI6IFVzZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkudXBkYXRlQWN0aXZlVXNlcih1c2VyKTtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcihudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblVzZXJFZGl0b3JDbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcihudWxsKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRHcmF2YXRhclVybChlbWFpbDogc3RyaW5nLCBzaXplID0gODApOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9ncmF2YXRhclNlcnZpY2UuYnVpbGRHcmF2YXRhclVybChlbWFpbCwgc2l6ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cbiAgPGRpdj5cbiAgICA8IS0tIGZpbHRlcnMgLS0+XG4gICAgPGRpdiBpZD1cImZpbHRlcnNcIj5cbiAgICAgIDxhdXRoLWp3dC11c2VyLWZpbHRlclxuICAgICAgICBbZmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9hdXRoLWp3dC11c2VyLWZpbHRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gbGlzdCAtLT5cbiAgICBAaWYgKHBhZ2UkIHwgYXN5bmM7IGFzIHBhZ2UpIHtcbiAgICA8ZGl2IGlkPVwibGlzdFwiPlxuICAgICAgQGlmIChsb2FkaW5nJCB8IGFzeW5jKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPm5hbWU8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5maXJzdDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiIGNsYXNzPVwibm9pZi1sdC1tZFwiPmxhc3Q8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5lbWFpbDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPnJvbGVzPC90aD5cbiAgICAgICAgICA8dGggaTE4bj1cImF1dGgtand0LWFkbWluXCIgY2xhc3M9XCJub2lmLWx0LW1kXCI+bG9jayBlbmQ8L3RoPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAodXNlciBvZiBwYWdlLml0ZW1zOyB0cmFjayB1c2VyKSB7XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyB1c2VyXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVVc2VyKHVzZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb2RlX2VkaXQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGkxOG4tbWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgdXNlclwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC13YXJuXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlVXNlcih1c2VyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+cmVtb3ZlX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZpdC13aWR0aFwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgYWx0PVwiYXZhdGFyXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImdldEdyYXZhdGFyVXJsKHVzZXIuZW1haWwsIDMyKVwiXG4gICAgICAgICAgICAgICAgW2FsdF09XCJ1c2VyLnVzZXJOYW1lXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgdXNlci51c2VyTmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJub2lmLWx0LW1kXCI+e3sgdXNlci5maXJzdE5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPnt7IHVzZXIubGFzdE5hbWUgfX08L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwibm9pZi1sdC1tZFwiPlxuICAgICAgICAgICAgICA8YSBbaHJlZl09XCInbWFpbHRvOicgKyB1c2VyLmVtYWlsXCI+e3sgdXNlci5lbWFpbCB9fTwvYT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQ+e3sgdXNlci5yb2xlcy5qb2luKFwiIFwiKSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJub2lmLWx0LW1kXCI+e3sgdXNlci5sb2Nrb3V0RW5kIH19PC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgIDwvdGFibGU+XG4gICAgICA8IS0tIHBhZ2luYXRvciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJ3YXJuXCJcbiAgICAgICAgICBjbGFzcz1cIm1hdC13YXJuXCJcbiAgICAgICAgICBpMThuLW1hdG1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlJlZnJlc2ggbGlzdFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uPmF1dG9yZW5ldzwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgIFtsZW5ndGhdPVwicGFnZS50b3RhbFwiXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlLnBhZ2VOdW1iZXIgLSAxXCJcbiAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZS5wYWdlU2l6ZVwiXG4gICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDIwLCA1MCwgMTAwXVwiXG4gICAgICAgICAgKHBhZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgPjwvbWF0LXBhZ2luYXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBlZGl0b3IgLS0+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgaWQ9XCJlZGl0b3JcIlxuICAgIFtleHBhbmRlZF09XCJhY3RpdmUkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZF09XCIhKGFjdGl2ZSQgfCBhc3luYylcIlxuICA+XG4gICAgQGlmIChhY3RpdmUkIHwgYXN5bmM7IGFzIGFjdGl2ZSkge1xuICAgIDxkaXY+XG4gICAgICA8ZmllbGRzZXQ+XG4gICAgICAgIDxsZWdlbmQ+e3sgYWN0aXZlLnVzZXJOYW1lIH19PC9sZWdlbmQ+XG4gICAgICAgIDxhdXRoLWp3dC11c2VyLWVkaXRvclxuICAgICAgICAgIFt1c2VyXT1cImFjdGl2ZVwiXG4gICAgICAgICAgKHVzZXJDaGFuZ2UpPVwic2F2ZUFjdGl2ZVVzZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGVkaXRvckNsb3NlKT1cInJlc2V0QWN0aXZlVXNlcigpXCJcbiAgICAgICAgPjwvYXV0aC1qd3QtdXNlci1lZGl0b3I+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9kaXY+XG4iXX0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFrQmhDLE1BQU0sT0FBTyxpQkFBaUI7SUFNNUIsWUFDVSxXQUErQixFQUMvQixjQUE2QixFQUM3QixnQkFBaUM7UUFGakMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFFekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWtCO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBVTtRQUMxQixJQUFJLENBQUMsY0FBYzthQUNoQixPQUFPLENBQ04sU0FBUyxDQUFBLHlCQUF5QixFQUNsQyxTQUFTLENBQUEsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQzlEO2FBQ0EsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFpQjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVU7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjLENBQ25CLEtBQWEsRUFDYixPQUF5QjtRQUV6QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs4R0FoRVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsMERDckI5QixrdUhBc0hBOzsyRkRqR2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEdyYXZhdGFyT3B0aW9ucyxcclxuICBHcmF2YXRhclNlcnZpY2UsXHJcbiAgVXNlcixcclxufSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xyXG5pbXBvcnQgeyBEYXRhUGFnZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctbWF0LXRvb2xzJztcclxuXHJcbmltcG9ydCB7IFVzZXJMaXN0UmVwb3NpdG9yeSB9IGZyb20gJy4uL3N0YXRlL3VzZXItbGlzdC5yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgVXNlckZpbHRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F1dGgtand0LXVzZXItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1saXN0LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJMaXN0Q29tcG9uZW50IHtcclxuICBwdWJsaWMgYWN0aXZlJDogT2JzZXJ2YWJsZTxVc2VyIHwgdW5kZWZpbmVkPjtcclxuICBwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgcHVibGljIGZpbHRlciQ6IE9ic2VydmFibGU8VXNlckZpbHRlcj47XHJcbiAgcHVibGljIHBhZ2UkOiBPYnNlcnZhYmxlPERhdGFQYWdlPFVzZXI+PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9yZXBvc2l0b3J5OiBVc2VyTGlzdFJlcG9zaXRvcnksXHJcbiAgICBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZ3JhdmF0YXJTZXJ2aWNlOiBHcmF2YXRhclNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZmlsdGVyJCA9IF9yZXBvc2l0b3J5LmZpbHRlciQ7XHJcbiAgICB0aGlzLnBhZ2UkID0gX3JlcG9zaXRvcnkucGFnZSQ7XHJcbiAgICB0aGlzLmFjdGl2ZSQgPSBfcmVwb3NpdG9yeS5hY3RpdmVVc2VyJDtcclxuICAgIHRoaXMubG9hZGluZyQgPSBfcmVwb3NpdG9yeS5sb2FkaW5nJDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZpbHRlckNoYW5nZShmaWx0ZXI6IFVzZXJGaWx0ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0RmlsdGVyKGZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QYWdlQ2hhbmdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0UGFnZShldmVudC5wYWdlSW5kZXggKyAxLCBldmVudC5wYWdlU2l6ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlVXNlcih1c2VyOiBVc2VyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKFxyXG4gICAgICAgICRsb2NhbGl6ZWA6YXV0aC1qd3QtYWRtaW46Q29uZmlybWAsXHJcbiAgICAgICAgJGxvY2FsaXplYDphdXRoLWp3dC1hZG1pbjpEZWxldGUgdXNlciBgICsgdXNlci51c2VyTmFtZSArICc/J1xyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHllcykgPT4ge1xyXG4gICAgICAgIGlmICh5ZXMpIHtcclxuICAgICAgICAgIHRoaXMuX3JlcG9zaXRvcnkuZGVsZXRlVXNlcih1c2VyLnVzZXJOYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGl2ZVVzZXIodXNlcjogVXNlciB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlcG9zaXRvcnkuc2V0QWN0aXZlVXNlcih1c2VyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNldEFjdGl2ZVVzZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZXBvc2l0b3J5LnNldEFjdGl2ZVVzZXIobnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUFjdGl2ZVVzZXIodXNlcjogVXNlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS51cGRhdGVBY3RpdmVVc2VyKHVzZXIpO1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uVXNlckVkaXRvckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmVwb3NpdG9yeS5zZXRBY3RpdmVVc2VyKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEdyYXZhdGFyVXJsKFxyXG4gICAgZW1haWw6IHN0cmluZyxcclxuICAgIG9wdGlvbnM/OiBHcmF2YXRhck9wdGlvbnNcclxuICApOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9ncmF2YXRhclNlcnZpY2UuYnVpbGRHcmF2YXRhclVybChlbWFpbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cbiAgPGRpdj5cbiAgICA8IS0tIGZpbHRlcnMgLS0+XG4gICAgPGRpdiBpZD1cImZpbHRlcnNcIj5cbiAgICAgIDxhdXRoLWp3dC11c2VyLWZpbHRlclxuICAgICAgICBbZmlsdGVyXT1cImZpbHRlciQgfCBhc3luY1wiXG4gICAgICAgIChmaWx0ZXJDaGFuZ2UpPVwib25GaWx0ZXJDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICA+PC9hdXRoLWp3dC11c2VyLWZpbHRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gbGlzdCAtLT5cbiAgICBAaWYgKHBhZ2UkIHwgYXN5bmM7IGFzIHBhZ2UpIHtcbiAgICA8ZGl2IGlkPVwibGlzdFwiPlxuICAgICAgQGlmIChsb2FkaW5nJCB8IGFzeW5jKSB7XG4gICAgICA8ZGl2PlxuICAgICAgICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgPHRhYmxlPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPm5hbWU8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5maXJzdDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiIGNsYXNzPVwibm9pZi1sdC1tZFwiPmxhc3Q8L3RoPlxuICAgICAgICAgIDx0aCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIiBjbGFzcz1cIm5vaWYtbHQtbWRcIj5lbWFpbDwvdGg+XG4gICAgICAgICAgPHRoIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPnJvbGVzPC90aD5cbiAgICAgICAgICA8dGggaTE4bj1cImF1dGgtand0LWFkbWluXCIgY2xhc3M9XCJub2lmLWx0LW1kXCI+bG9jayBlbmQ8L3RoPlxuICAgICAgICA8L3RoZWFkPlxuICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgQGZvciAodXNlciBvZiBwYWdlLml0ZW1zOyB0cmFjayB1c2VyKSB7XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyB1c2VyXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVVc2VyKHVzZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1wcmltYXJ5XCI+bW9kZV9lZGl0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBpMThuLW1hdFRvb2x0aXA9XCJhdXRoLWp3dC1hZG1pblwiXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIHVzZXJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVVzZXIodXNlcilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXdhcm5cIj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9XCJhdmF0YXJcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0R3JhdmF0YXJVcmwodXNlci5lbWFpbCwgeyBzaXplOiAnMzInIH0pXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cInVzZXIudXNlck5hbWVcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLnVzZXJOYW1lIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj57eyB1c2VyLmZpcnN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJub2lmLWx0LW1kXCI+e3sgdXNlci5sYXN0TmFtZSB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJub2lmLWx0LW1kXCI+XG4gICAgICAgICAgICAgIDxhIFtocmVmXT1cIidtYWlsdG86JyArIHVzZXIuZW1haWxcIj57eyB1c2VyLmVtYWlsIH19PC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD57eyB1c2VyLnJvbGVzLmpvaW4oXCIgXCIpIH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm5vaWYtbHQtbWRcIj57eyB1c2VyLmxvY2tvdXRFbmQgfX08L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgfVxuICAgICAgICA8L3Rib2R5PlxuICAgICAgPC90YWJsZT5cbiAgICAgIDwhLS0gcGFnaW5hdG9yIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgIGkxOG4tbWF0bWF0VG9vbHRpcD1cImF1dGgtand0LWFkbWluXCJcbiAgICAgICAgICBtYXRUb29sdGlwPVwiUmVmcmVzaCBsaXN0XCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPmF1dG9yZW5ldzwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LXBhZ2luYXRvclxuICAgICAgICAgIFtsZW5ndGhdPVwicGFnZS50b3RhbFwiXG4gICAgICAgICAgW3BhZ2VJbmRleF09XCJwYWdlLnBhZ2VOdW1iZXIgLSAxXCJcbiAgICAgICAgICBbcGFnZVNpemVdPVwicGFnZS5wYWdlU2l6ZVwiXG4gICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDIwLCA1MCwgMTAwXVwiXG4gICAgICAgICAgKHBhZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgPjwvbWF0LXBhZ2luYXRvcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgPCEtLSBlZGl0b3IgLS0+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsXG4gICAgaWQ9XCJlZGl0b3JcIlxuICAgIFtleHBhbmRlZF09XCJhY3RpdmUkIHwgYXN5bmNcIlxuICAgIFtkaXNhYmxlZF09XCIhKGFjdGl2ZSQgfCBhc3luYylcIlxuICA+XG4gICAgQGlmIChhY3RpdmUkIHwgYXN5bmM7IGFzIGFjdGl2ZSkge1xuICAgIDxkaXY+XG4gICAgICA8ZmllbGRzZXQ+XG4gICAgICAgIDxsZWdlbmQ+e3sgYWN0aXZlLnVzZXJOYW1lIH19PC9sZWdlbmQ+XG4gICAgICAgIDxhdXRoLWp3dC11c2VyLWVkaXRvclxuICAgICAgICAgIFt1c2VyXT1cImFjdGl2ZVwiXG4gICAgICAgICAgKHVzZXJDaGFuZ2UpPVwic2F2ZUFjdGl2ZVVzZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGVkaXRvckNsb3NlKT1cInJlc2V0QWN0aXZlVXNlcigpXCJcbiAgICAgICAgPjwvYXV0aC1qd3QtdXNlci1lZGl0b3I+XG4gICAgICA8L2ZpZWxkc2V0PlxuICAgIDwvZGl2PlxuICAgIH1cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9kaXY+XG4iXX0=
@@ -191,10 +191,10 @@ export class AuthJwtAccountService {
191
191
  .delete(this._env.get('apiUrl') + 'accounts/' + name)
192
192
  .pipe(catchError(this._error.handleError));
193
193
  }
194
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAccountService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable }); }
195
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAccountService, providedIn: 'root' }); }
194
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAccountService, deps: [{ token: i1.HttpClient }, { token: i2.ErrorService }, { token: i2.EnvService }], target: i0.ɵɵFactoryTarget.Injectable }); }
195
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAccountService, providedIn: 'root' }); }
196
196
  }
197
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: AuthJwtAccountService, decorators: [{
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthJwtAccountService, decorators: [{
198
198
  type: Injectable,
199
199
  args: [{
200
200
  providedIn: 'root',