@annalib/anna-cognito-lib 2.2.5 → 2.2.7

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.
@@ -8,13 +8,13 @@ import * as i6 from "./directives/spinner-button/spinner-button.directive";
8
8
  import * as i7 from "./components/version-and-term-policy/version-and-term-policy.component";
9
9
  import * as i8 from "./components/surewaves-year-logo/surewaves-year-logo.component";
10
10
  import * as i9 from "./components/powered-by-logo-template/powered-by-logo-template.component";
11
- import * as i10 from "./components/duo-sso-login/duo-sso-login.component";
11
+ import * as i10 from "./components/sso-login/sso-login.component";
12
12
  import * as i11 from "@angular/forms";
13
13
  import * as i12 from "@angular/router";
14
14
  import * as i13 from "@angular/common";
15
15
  export declare class AnnaCognitoLibModule {
16
16
  constructor();
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<AnnaCognitoLibModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.DuoSsoLoginComponent], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.RouterModule, typeof i13.CommonModule, typeof i13.NgOptimizedImage], [typeof i1.LoginComponent, typeof i10.DuoSsoLoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i13.NgOptimizedImage]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AnnaCognitoLibModule, [typeof i1.LoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i10.SsoLoginComponent], [typeof i11.FormsModule, typeof i11.ReactiveFormsModule, typeof i12.RouterModule, typeof i13.CommonModule, typeof i13.NgOptimizedImage], [typeof i1.LoginComponent, typeof i10.SsoLoginComponent, typeof i2.SetNewPasswordComponent, typeof i3.PasswordMatchingComponent, typeof i4.ForgotPasswordComponent, typeof i5.VerifyAndSetNewPasswordComponent, typeof i6.SpinnerButtonDirective, typeof i7.VersionAndTermPolicyComponent, typeof i8.SurewavesYearLogoComponent, typeof i9.PoweredByLogoTemplateComponent, typeof i13.NgOptimizedImage]>;
19
19
  static ɵinj: i0.ɵɵInjectorDeclaration<AnnaCognitoLibModule>;
20
20
  }
@@ -2,13 +2,13 @@ import { IConfigService } from '../../config/config-service.token';
2
2
  import { LoginConstant } from '../../constants/loginConstant';
3
3
  import { AnnaLibAuthService } from '../../services/auth.service';
4
4
  import * as i0 from "@angular/core";
5
- export declare class DuoSsoLoginComponent {
5
+ export declare class SsoLoginComponent {
6
6
  authService: AnnaLibAuthService;
7
7
  consumingProjectConfigService: IConfigService;
8
8
  constants: typeof LoginConstant;
9
9
  constructor(authService: AnnaLibAuthService, consumingProjectConfigService: IConfigService);
10
10
  ngOnInit(): void;
11
11
  signInWithSSO(): void;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<DuoSsoLoginComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<DuoSsoLoginComponent, "anna-cognito-lib-duo-sso-login", never, {}, {}, never, never, false, never>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<SsoLoginComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<SsoLoginComponent, "anna-cognito-lib-sso-login", never, {}, {}, never, never, false, never>;
14
14
  }
@@ -4,7 +4,7 @@ import { Observable } from 'rxjs';
4
4
  export declare const AUTH_SERVICE_TOKEN: InjectionToken<IAuthService>;
5
5
  export interface IAuthService {
6
6
  isLoggingIn: boolean;
7
- onSuccessfulAuthenticatingUser(result: any): void;
7
+ onSuccessfulAuthenticatingUser(loggedInViaSso: boolean): void;
8
8
  isUsernameAvailable(username: string): Observable<any>;
9
9
  isEmailAvailable(emailId: string, ogId: number): Observable<any>;
10
10
  getUserState(username: string): Observable<any>;
@@ -26,13 +26,11 @@ export declare class AnnaLibAuthService {
26
26
  userName: any;
27
27
  accessTokenTimerId: any;
28
28
  forgotPasswordAndGlobalSignoutLoader: boolean;
29
- userPassword: any;
30
29
  constructor(router: Router, aclService: AnnaLibAclService, httpClient: HttpClient, toastr: ToastrService, consumingProjectAuthService: IAuthService, consumingProjectConfigService: IConfigService);
31
30
  ngOnInit(): void;
32
31
  isUserLoggedIn(): Promise<boolean>;
33
32
  sessionTimeout(): void;
34
- computeTokenExpiration(token: any): number;
35
- getCurrentSession(): Promise<any>;
33
+ computeTokenExpiration(idToken: any): number;
36
34
  handleSignIn({ username, password }: SignInInput): Promise<void>;
37
35
  getAllCognitoTokenAndGroups(token: AuthTokens): Promise<void>;
38
36
  refreshAccessToken(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annalib/anna-cognito-lib",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^15.2.9",
6
6
  "@angular/core": "^15.2.9",
package/public-api.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from './lib/anna-cognito-lib.module';
2
2
  export * from './lib/components/login/login.component';
3
- export * from './lib/components/duo-sso-login/duo-sso-login.component';
3
+ export * from './lib/components/sso-login/sso-login.component';
4
4
  export * from './lib/components/forgot-password/forgot-password.component';
5
5
  export * from './lib/components/set-new-password/set-new-password.component';
6
6
  export * from './lib/components/password-matching/password-matching.component';
@@ -1,32 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { CONFIG_SERVICE_TOKEN } from '../../config/config-service.token';
3
- import { LoginConstant } from '../../constants/loginConstant';
4
- import { AnnaLibAuthService } from '../../services/auth.service';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../services/auth.service";
7
- import * as i2 from "@angular/common";
8
- import * as i3 from "../version-and-term-policy/version-and-term-policy.component";
9
- import * as i4 from "../surewaves-year-logo/surewaves-year-logo.component";
10
- import * as i5 from "../powered-by-logo-template/powered-by-logo-template.component";
11
- export class DuoSsoLoginComponent {
12
- constructor(authService, consumingProjectConfigService) {
13
- this.authService = authService;
14
- this.consumingProjectConfigService = consumingProjectConfigService;
15
- }
16
- ngOnInit() {
17
- this.constants = LoginConstant;
18
- }
19
- signInWithSSO() {
20
- this.authService.signInWithDuo();
21
- }
22
- }
23
- DuoSsoLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, deps: [{ token: i1.AnnaLibAuthService }, { token: CONFIG_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
24
- DuoSsoLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DuoSsoLoginComponent, selector: "anna-cognito-lib-duo-sso-login", ngImport: i0, template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "component", type: i3.VersionAndTermPolicyComponent, selector: "anna-cognito-lib-version-and-term-policy" }, { kind: "component", type: i4.SurewavesYearLogoComponent, selector: "anna-cognito-lib-surewaves-year-logo" }, { kind: "component", type: i5.PoweredByLogoTemplateComponent, selector: "anna-cognito-lib-powered-by-logo-template" }] });
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DuoSsoLoginComponent, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'anna-cognito-lib-duo-sso-login', template: "<div class=\"main\">\n <section *ngIf=\"constants.forgotPassword\">\n <header>\n <img [ngSrc]=\"consumingProjectConfigService.appGenericConfig.loginPageLogoImgUrl\" width=\"145\" height=\"50\"\n alt=\"Anna Logo\" priority />\n </header>\n <article>\n <p class=\"sub-title\">Login</p>\n <p>Sign in to your account with SSO</p>\n <button class=\"login-btn\" (click)=\"signInWithSSO()\">Login</button>\n <div class=\"dashed-line\"></div>\n <!-- <a tabindex=\"4\" class=\"login-link\" [routerLink]=\"constants.loginPageUrl\">Sign in with username</a> -->\n </article>\n <footer>\n <anna-cognito-lib-powered-by-logo-template>\n </anna-cognito-lib-powered-by-logo-template>\n </footer>\n </section>\n</div>\n\n<div class=\"page-footer\">\n <anna-cognito-lib-surewaves-year-logo></anna-cognito-lib-surewaves-year-logo>\n <anna-cognito-lib-version-and-term-policy></anna-cognito-lib-version-and-term-policy>\n</div>", styles: ["@keyframes show{0%{opacity:0}50%{opacity:.5}to{opacity:1}}html{overflow-y:scroll}.main{background-color:#fff;background-size:cover;font-family:Roboto;height:calc(100vh - 50px)}section{top:45%;left:50%;position:absolute;transform:translate(-50%,-50%);width:20.875rem;animation:show .5s 1;-moz-animation:show .5s 1}.container{width:100%;height:100%;overflow:auto}header{height:auto;width:100%;text-align:center}article{margin-top:.9375rem;margin-bottom:.9375rem;border:1px solid #979797;background-color:#f4f4f4;padding:2rem 1.375rem;border-radius:.375rem;box-shadow:0 .125rem .4375rem #0000001a}article .sub-title{color:#6e6e6e;font-family:Roboto;font-size:1.25rem;font-weight:700;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}article #heading{color:#212121;text-align:center;margin-bottom:1.5rem;font-family:Roboto;font-size:1.125rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}p{text-align:center;margin-bottom:1rem}#alert-div{padding:.25rem 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div .material-icons{color:#f44336;font-size:1rem;margin-left:.5rem}#alert-div .mdi-info{color:#268bff;font-size:1rem}#alert-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}#info-div{padding:6px 0;margin-bottom:.75rem;border-radius:.25rem;border:1px solid #268bff;background:#e3f0ff}#info-div .mdi-info{color:#268bff;font-size:1rem;margin-left:6px}#info-div p{margin:-1.5625rem 0 0 1.8rem;padding:.3125rem 0;color:#4a4a4a;font-family:Roboto;font-size:.75rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}footer{align-items:baseline;color:#6e6e6e;opacity:.9;display:flex;font-family:Ubuntu;font-size:1.25rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;justify-content:center}footer span{font-size:1.5625rem;margin-left:.25rem}input[type=password],input[type=text],input[type=number]{width:100%;height:30px;padding:.75rem 1rem;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}.login-btn{width:100%;height:2.5rem;border:0;color:#fff;background-color:#268bff;border-radius:.375rem;font-size:1rem}.login-btn:hover{background-color:#4099ff;cursor:pointer}.login-btn:disabled{background-color:#ccc;color:#fff;cursor:not-allowed}.input-invalid{border:1px solid #fe3824!important}input[type=password].ng-dirty.ng-invalid,input[type=text].ng-dirty.ng-invalid{border:1px solid #fe3824}input[type=submit]:focus,input[type=password]:focus,input[type=text]:focus,input[type=checkbox]:focus,button:focus{outline:none}input::placeholder{color:#a4a4a4}:host ::ng-deep .verison-and-policy{color:#8bac2a}\n"] }]
28
- }], ctorParameters: function () { return [{ type: i1.AnnaLibAuthService }, { type: undefined, decorators: [{
29
- type: Inject,
30
- args: [CONFIG_SERVICE_TOKEN]
31
- }] }]; } });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVvLXNzby1sb2dpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9kdW8tc3NvLWxvZ2luL2R1by1zc28tbG9naW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZHVvLXNzby1sb2dpbi9kdW8tc3NvLWxvZ2luLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBa0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFPakUsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUNTLFdBQStCLEVBQ0QsNkJBQTZDO1FBRDNFLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUNELGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBZ0I7SUFDaEYsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7aUhBZFUsb0JBQW9CLG9EQUtyQixvQkFBb0I7cUdBTG5CLG9CQUFvQixzRUNWakMsMGlDQXVCTTsyRkRiTyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFTdkMsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09ORklHX1NFUlZJQ0VfVE9LRU4sIElDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29uZmlnL2NvbmZpZy1zZXJ2aWNlLnRva2VuJztcbmltcG9ydCB7IExvZ2luQ29uc3RhbnQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvbG9naW5Db25zdGFudCc7XG5pbXBvcnQgeyBBbm5hTGliQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbm5hLWNvZ25pdG8tbGliLWR1by1zc28tbG9naW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vZHVvLXNzby1sb2dpbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1by1zc28tbG9naW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEdW9Tc29Mb2dpbkNvbXBvbmVudCB7XG4gIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBbm5hTGliQXV0aFNlcnZpY2UsXG4gICAgQEluamVjdChDT05GSUdfU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlOiBJQ29uZmlnU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uc3RhbnRzID0gTG9naW5Db25zdGFudDtcbiAgfVxuXG4gIHNpZ25JbldpdGhTU08oKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5zaWduSW5XaXRoRHVvKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gICAgPHNlY3Rpb24gKm5nSWY9XCJjb25zdGFudHMuZm9yZ290UGFzc3dvcmRcIj5cbiAgICAgICAgPGhlYWRlcj5cbiAgICAgICAgICAgIDxpbWcgW25nU3JjXT1cImNvbnN1bWluZ1Byb2plY3RDb25maWdTZXJ2aWNlLmFwcEdlbmVyaWNDb25maWcubG9naW5QYWdlTG9nb0ltZ1VybFwiIHdpZHRoPVwiMTQ1XCIgaGVpZ2h0PVwiNTBcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkFubmEgTG9nb1wiIHByaW9yaXR5IC8+XG4gICAgICAgIDwvaGVhZGVyPlxuICAgICAgICA8YXJ0aWNsZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwic3ViLXRpdGxlXCI+TG9naW48L3A+XG4gICAgICAgICAgICA8cD5TaWduIGluIHRvIHlvdXIgYWNjb3VudCB3aXRoIFNTTzwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG5cIiAoY2xpY2spPVwic2lnbkluV2l0aFNTTygpXCI+TG9naW48L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8YSB0YWJpbmRleD1cIjRcIiBjbGFzcz1cImxvZ2luLWxpbmtcIiBbcm91dGVyTGlua109XCJjb25zdGFudHMubG9naW5QYWdlVXJsXCI+U2lnbiBpbiB3aXRoIHVzZXJuYW1lPC9hPiAtLT5cbiAgICAgICAgPC9hcnRpY2xlPlxuICAgICAgICA8Zm9vdGVyPlxuICAgICAgICAgICAgPGFubmEtY29nbml0by1saWItcG93ZXJlZC1ieS1sb2dvLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hbm5hLWNvZ25pdG8tbGliLXBvd2VyZWQtYnktbG9nby10ZW1wbGF0ZT5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgPC9zZWN0aW9uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYWdlLWZvb3RlclwiPlxuICAgIDxhbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+PC9hbm5hLWNvZ25pdG8tbGliLXN1cmV3YXZlcy15ZWFyLWxvZ28+XG4gICAgPGFubmEtY29nbml0by1saWItdmVyc2lvbi1hbmQtdGVybS1wb2xpY3k+PC9hbm5hLWNvZ25pdG8tbGliLXZlcnNpb24tYW5kLXRlcm0tcG9saWN5PlxuPC9kaXY+Il19