@annalib/anna-cognito-lib 3.0.1 → 3.0.2

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.
package/README.md CHANGED
@@ -1,66 +1,66 @@
1
- # AnnaCognitoLib
2
-
3
- ## How to use the library in the consuming project ?
4
-
5
- 1. Install the package from npm `npm install @annalib/anna-cognito-lib` (if not working use with --force flag).
6
- 2. After installing the Library, you need to install it's peer dependancies. You can find the peer-dependecies in
7
- package.json file of library. Install all the peer depedencies with respective version number mentioned. this is
8
- important step otherwise library will throw error. ex: `npm install ngx-toastr@13.2.1`
9
- 3. Also make sure to Install the Roboto font locally in assets folder of your consuming project.
10
-
11
- If using the library locally (library from your system locally not npm),then in angular json file you have to set
12
- `preserveSymlinks: true`.
13
-
14
- ## Adding Configuration
15
-
16
- 1. import the `AnnaCognitoLibModule` module and pass the configuration to root
17
- `AnnaCognitoLibModule.forRoot(appGenericConfig)`
18
- 2. configuration const should be:
19
- ````const appGenericConfig = {
20
- cognito : {
21
- userPoolId: "",
22
- clientId: "",
23
- },
24
- loginPageLogoImgUrl: ""
25
- } ```
26
- ````
27
- 3. Keep the logo image in consuming project and provide the path for loginPageLogoImgUrl. ex:
28
- "assets/images/Anna-Logo.png" Note: for better loading of logo image, provide logo image in minified format.
29
-
30
- ## Adding new custom function implemetation for any service file.
31
-
32
- 1. Background Understanding - when we want to provide custom implemenetation - We write the custom implementation in a
33
- service file of consuming project and that is injected in the library. Injection is taken care by library itself. You
34
- just need to provide the definition and implementation of new function added.
35
- 2. Ex: let's say we want to add a new function `onSuccessfulAuthenticatingUser() this function is called from library
36
- when user is succesfully authenticated and logged in. (Note: this function is already present in lib).
37
- 3. Then In library add the new function declaration `onSuccessfulAuthenticatingUser()` in interface file `IAuthService`
38
- of `auth-service.token.ts` file.
39
- 4. In consuming project, for `onSuccessfulAuthenticatingUser()` provide the implementation in the service file say
40
- `AuthService` of `auth.service.ts`.
41
- 5. Then In consuming project, app.module.ts file add following in providers array.
42
- `{ provide: AUTH_SERVICE_TOKEN, useExisting: AuthService }` i.e. your consuming project's existing AuthService will
43
- be injected in Library's auth-service file with the help of AUTH_SERVICE_TOKEN.
44
- 6. Now you're good to go!
45
-
46
- ## List of function implementation we need to provide in consuming project.
47
-
48
- 1. `onSuccessfulAuthenticatingUser()` - provide the implementation of what happens when user is succefully logged in.
49
- (any API call or routing you need to provide).
50
- 2. `isUsernameAvailable()` - in thie implementation call an backend API to find out if username is already present in
51
- Database or not. format of response should be `{"isUsernameAvailable":true}`. This is used in forgot-password page
52
- before calling forgot-password cognito sdk call, we need to check thorough backend db if the username is actually
53
- available.
54
- 3. `isLoggingIn` - set this variable to false. this will stop the spinner on top on button. use case: after successful
55
- login i.e. when we are done with all API call we need to call post succesfull calling or when we have routed to home
56
- page.
57
-
58
- ## How to make changes in library and build it
59
-
60
- 1. Make the changes and Run `ng build anna-cognito-lib` to build the project.
61
- 2. The build artifacts will be stored in the `dist/` directory.
62
-
63
- ## Publishing
64
-
65
- After building your library with `ng build anna-cognito-lib`, go to the dist folder `cd dist/anna-cognito-lib` and run
66
- `npm publish`.
1
+ # AnnaCognitoLib
2
+
3
+ ## How to use the library in the consuming project ?
4
+
5
+ 1. Install the package from npm `npm install @annalib/anna-cognito-lib` (if not working use with --force flag).
6
+ 2. After installing the Library, you need to install it's peer dependancies. You can find the peer-dependecies in
7
+ package.json file of library. Install all the peer depedencies with respective version number mentioned. this is
8
+ important step otherwise library will throw error. ex: `npm install ngx-toastr@13.2.1`
9
+ 3. Also make sure to Install the Roboto font locally in assets folder of your consuming project.
10
+
11
+ If using the library locally (library from your system locally not npm),then in angular json file you have to set
12
+ `preserveSymlinks: true`.
13
+
14
+ ## Adding Configuration
15
+
16
+ 1. import the `AnnaCognitoLibModule` module and pass the configuration to root
17
+ `AnnaCognitoLibModule.forRoot(appGenericConfig)`
18
+ 2. configuration const should be:
19
+ ````const appGenericConfig = {
20
+ cognito : {
21
+ userPoolId: "",
22
+ clientId: "",
23
+ },
24
+ loginPageLogoImgUrl: ""
25
+ } ```
26
+ ````
27
+ 3. Keep the logo image in consuming project and provide the path for loginPageLogoImgUrl. ex:
28
+ "assets/images/Anna-Logo.png" Note: for better loading of logo image, provide logo image in minified format.
29
+
30
+ ## Adding new custom function implemetation for any service file.
31
+
32
+ 1. Background Understanding - when we want to provide custom implemenetation - We write the custom implementation in a
33
+ service file of consuming project and that is injected in the library. Injection is taken care by library itself. You
34
+ just need to provide the definition and implementation of new function added.
35
+ 2. Ex: let's say we want to add a new function `onSuccessfulAuthenticatingUser() this function is called from library
36
+ when user is succesfully authenticated and logged in. (Note: this function is already present in lib).
37
+ 3. Then In library add the new function declaration `onSuccessfulAuthenticatingUser()` in interface file `IAuthService`
38
+ of `auth-service.token.ts` file.
39
+ 4. In consuming project, for `onSuccessfulAuthenticatingUser()` provide the implementation in the service file say
40
+ `AuthService` of `auth.service.ts`.
41
+ 5. Then In consuming project, app.module.ts file add following in providers array.
42
+ `{ provide: AUTH_SERVICE_TOKEN, useExisting: AuthService }` i.e. your consuming project's existing AuthService will
43
+ be injected in Library's auth-service file with the help of AUTH_SERVICE_TOKEN.
44
+ 6. Now you're good to go!
45
+
46
+ ## List of function implementation we need to provide in consuming project.
47
+
48
+ 1. `onSuccessfulAuthenticatingUser()` - provide the implementation of what happens when user is succefully logged in.
49
+ (any API call or routing you need to provide).
50
+ 2. `isUsernameAvailable()` - in thie implementation call an backend API to find out if username is already present in
51
+ Database or not. format of response should be `{"isUsernameAvailable":true}`. This is used in forgot-password page
52
+ before calling forgot-password cognito sdk call, we need to check thorough backend db if the username is actually
53
+ available.
54
+ 3. `isLoggingIn` - set this variable to false. this will stop the spinner on top on button. use case: after successful
55
+ login i.e. when we are done with all API call we need to call post succesfull calling or when we have routed to home
56
+ page.
57
+
58
+ ## How to make changes in library and build it
59
+
60
+ 1. Make the changes and Run `ng build anna-cognito-lib` to build the project.
61
+ 2. The build artifacts will be stored in the `dist/` directory.
62
+
63
+ ## Publishing
64
+
65
+ After building your library with `ng build anna-cognito-lib`, go to the dist folder `cd dist/anna-cognito-lib` and run
66
+ `npm publish`.
@@ -9,13 +9,13 @@ export class CognitoAndSSOLoginContainerComponent {
9
9
  this.consumingProjectSSOLoginService = consumingProjectSSOLoginService;
10
10
  }
11
11
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CognitoAndSSOLoginContainerComponent, deps: [{ token: SSO_LOGIN_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CognitoAndSSOLoginContainerComponent, isStandalone: true, selector: "anna-cognito-lib-cognito-and-sso-login-container", ngImport: i0, template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\r\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AnnaLoginComponent, selector: "anna-cognito-lib-anna-login" }, { kind: "component", type: SsoLoginComponent, selector: "anna-cognito-lib-sso-login" }] }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CognitoAndSSOLoginContainerComponent, isStandalone: true, selector: "anna-cognito-lib-cognito-and-sso-login-container", ngImport: i0, template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AnnaLoginComponent, selector: "anna-cognito-lib-anna-login" }, { kind: "component", type: SsoLoginComponent, selector: "anna-cognito-lib-sso-login" }] }); }
13
13
  }
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CognitoAndSSOLoginContainerComponent, decorators: [{
15
15
  type: Component,
16
- args: [{ selector: "anna-cognito-lib-cognito-and-sso-login-container", standalone: true, imports: [NgIf, AnnaLoginComponent, SsoLoginComponent], template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\r\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\r\n" }]
16
+ args: [{ selector: "anna-cognito-lib-cognito-and-sso-login-container", standalone: true, imports: [NgIf, AnnaLoginComponent, SsoLoginComponent], template: "<anna-cognito-lib-anna-login *ngIf=\"!consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-anna-login>\n<anna-cognito-lib-sso-login *ngIf=\"consumingProjectSSOLoginService?.isSsoIntegrated\"></anna-cognito-lib-sso-login>\n" }]
17
17
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
18
18
  type: Inject,
19
19
  args: [SSO_LOGIN_SERVICE_TOKEN]
20
20
  }] }]; } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyL2NvZ25pdG8tYW5kLXNzby1sb2dpbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBU3JFLE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsWUFBb0QsK0JBQWlEO1FBQWpELG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBa0I7SUFBRyxDQUFDOytHQURoRyxvQ0FBb0Msa0JBQ3pCLHVCQUF1QjttR0FEbEMsb0NBQW9DLDRHQ2RqRCxxUEFFQSwwRERVYyxJQUFJLDZGQUFFLGtCQUFrQix3RUFBRSxpQkFBaUI7OzRGQUU1QyxvQ0FBb0M7a0JBUGhELFNBQVM7K0JBQ0ksa0RBQWtELGNBR2hELElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQzs7MEJBR3pDLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgSVNTT0xvZ2luU2VydmljZSwgU1NPX0xPR0lOX1NFUlZJQ0VfVE9LRU4gfSBmcm9tIFwiLi4vLi4vY29uZmlnL3Nzby1sb2dpbi1zZXJ2aWNlLnRva2VuXCI7XHJcbmltcG9ydCB7IEFubmFMb2dpbkNvbXBvbmVudCB9IGZyb20gXCIuLi9hbm5hLWxvZ2luL2FubmEtbG9naW4uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNzb0xvZ2luQ29tcG9uZW50IH0gZnJvbSBcIi4uL3Nzby1sb2dpbi9zc28tbG9naW4uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFubmEtY29nbml0by1saWItY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZiwgQW5uYUxvZ2luQ29tcG9uZW50LCBTc29Mb2dpbkNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2duaXRvQW5kU1NPTG9naW5Db250YWluZXJDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UpIHt9XHJcbn1cclxuIiwiPGFubmEtY29nbml0by1saWItYW5uYS1sb2dpbiAqbmdJZj1cIiFjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWRcIj48L2FubmEtY29nbml0by1saWItYW5uYS1sb2dpbj5cclxuPGFubmEtY29nbml0by1saWItc3NvLWxvZ2luICpuZ0lmPVwiY29uc3VtaW5nUHJvamVjdFNTT0xvZ2luU2VydmljZT8uaXNTc29JbnRlZ3JhdGVkXCI+PC9hbm5hLWNvZ25pdG8tbGliLXNzby1sb2dpbj5cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbm5hLWNvZ25pdG8tbGliL3NyYy9saWIvY29tcG9uZW50cy9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyL2NvZ25pdG8tYW5kLXNzby1sb2dpbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQW9CLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBU3JFLE1BQU0sT0FBTyxvQ0FBb0M7SUFDN0MsWUFBb0QsK0JBQWlEO1FBQWpELG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBa0I7SUFBRyxDQUFDOytHQURoRyxvQ0FBb0Msa0JBQ3pCLHVCQUF1QjttR0FEbEMsb0NBQW9DLDRHQ2RqRCxpUEFFQSwwRERVYyxJQUFJLDZGQUFFLGtCQUFrQix3RUFBRSxpQkFBaUI7OzRGQUU1QyxvQ0FBb0M7a0JBUGhELFNBQVM7K0JBQ0ksa0RBQWtELGNBR2hELElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsQ0FBQzs7MEJBR3pDLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgSVNTT0xvZ2luU2VydmljZSwgU1NPX0xPR0lOX1NFUlZJQ0VfVE9LRU4gfSBmcm9tIFwiLi4vLi4vY29uZmlnL3Nzby1sb2dpbi1zZXJ2aWNlLnRva2VuXCI7XHJcbmltcG9ydCB7IEFubmFMb2dpbkNvbXBvbmVudCB9IGZyb20gXCIuLi9hbm5hLWxvZ2luL2FubmEtbG9naW4uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNzb0xvZ2luQ29tcG9uZW50IH0gZnJvbSBcIi4uL3Nzby1sb2dpbi9zc28tbG9naW4uY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFubmEtY29nbml0by1saWItY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9jb2duaXRvLWFuZC1zc28tbG9naW4tY29udGFpbmVyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vY29nbml0by1hbmQtc3NvLWxvZ2luLWNvbnRhaW5lci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZiwgQW5uYUxvZ2luQ29tcG9uZW50LCBTc29Mb2dpbkNvbXBvbmVudF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb2duaXRvQW5kU1NPTG9naW5Db250YWluZXJDb21wb25lbnQge1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChTU09fTE9HSU5fU0VSVklDRV9UT0tFTikgcHVibGljIGNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U6IElTU09Mb2dpblNlcnZpY2UpIHt9XHJcbn1cclxuIiwiPGFubmEtY29nbml0by1saWItYW5uYS1sb2dpbiAqbmdJZj1cIiFjb25zdW1pbmdQcm9qZWN0U1NPTG9naW5TZXJ2aWNlPy5pc1Nzb0ludGVncmF0ZWRcIj48L2FubmEtY29nbml0by1saWItYW5uYS1sb2dpbj5cbjxhbm5hLWNvZ25pdG8tbGliLXNzby1sb2dpbiAqbmdJZj1cImNvbnN1bWluZ1Byb2plY3RTU09Mb2dpblNlcnZpY2U/LmlzU3NvSW50ZWdyYXRlZFwiPjwvYW5uYS1jb2duaXRvLWxpYi1zc28tbG9naW4+XG4iXX0=
@@ -76,11 +76,11 @@ export class PasswordMatchingComponent {
76
76
  };
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordMatchingComponent, deps: [{ token: FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordMatchingComponent, isStandalone: true, selector: "anna-cognito-lib-password-matching", inputs: { passwordNotMatching: "passwordNotMatching" }, outputs: { passwordChange: "passwordChange", confirmPasswordChange: "confirmPasswordChange" }, ngImport: i0, template: "<form [formGroup]=\"passwordForm\">\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"passwordNotMatching\"\r\n >\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('number')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('number')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div\r\n [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\"\r\n >\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n", styles: ["input[type=password],input[type=text]{width:100%;height:30px;padding:10px 16px;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}input[type=password].ng-dirty.ng-invalid,.input-invalid{border:1px solid #fe3824!important}input[type=password]:focus:focus{outline:none;box-shadow:none}input[type=password]:focus::placeholder{color:#a4a4a4}.password-policies{margin-bottom:1rem}.password-policies p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal;margin-bottom:0}.span-text{vertical-align:top;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal}#icon-div-msg{display:inline;margin-right:.3125rem}#icon-div-msg .material-icons{margin-top:1px;font-size:16px}#alert-div{padding:4px 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div #icon-div{width:18px;margin-top:-5px;display:inline-block}#alert-div #icon-div .material-icons{color:#f44336;font-size:1.125rem;margin-left:.5rem}#alert-div p{display:inline;vertical-align:top;margin-left:.5rem;color:#4a4a4a;font-family:Roboto;font-size:.7188rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}.error-color{color:#fe3824}.success-color{color:#43a047}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PasswordMatchingComponent, isStandalone: true, selector: "anna-cognito-lib-password-matching", inputs: { passwordNotMatching: "passwordNotMatching" }, outputs: { passwordChange: "passwordChange", confirmPasswordChange: "confirmPasswordChange" }, ngImport: i0, template: "<form [formGroup]=\"passwordForm\">\n <div\n id=\"alert-div\"\n *ngIf=\"passwordNotMatching\"\n >\n <div id=\"icon-div\">\n <span class=\"material-icons\">report</span>\n </div>\n <p>{{ constants.passwordNotMatching }}</p>\n </div>\n <div class=\"password-policies\">\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\n <p>\n <b>{{ constants.passwordMustContain }} </b>\n </p>\n <p>{{ constants.minimumCharacter }}</p>\n <p>{{ constants.oneUppercase }}</p>\n <p>{{ constants.oneLowercase }}</p>\n <p>{{ constants.oneNumber }}</p>\n <p>{{ constants.specialCharacter }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\n <p>\n <b>{{ constants.passwordMustContain }}</b>\n </p>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('number')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('number')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\n </div>\n\n <div\n [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\"\n >\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\n </div>\n </ng-container>\n </div>\n\n <input\n type=\"password\"\n tabindex=\"2\"\n formControlName=\"password\"\n [placeholder]=\"constants.password\"\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\n />\n\n <input\n type=\"password\"\n tabindex=\"3\"\n formControlName=\"confirmPassword\"\n [placeholder]=\"constants.confirmPassword\"\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\n />\n</form>\n", styles: ["input[type=password],input[type=text]{width:100%;height:30px;padding:10px 16px;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}input[type=password].ng-dirty.ng-invalid,.input-invalid{border:1px solid #fe3824!important}input[type=password]:focus:focus{outline:none;box-shadow:none}input[type=password]:focus::placeholder{color:#a4a4a4}.password-policies{margin-bottom:1rem}.password-policies p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal;margin-bottom:0}.span-text{vertical-align:top;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal}#icon-div-msg{display:inline;margin-right:.3125rem}#icon-div-msg .material-icons{margin-top:1px;font-size:16px}#alert-div{padding:4px 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div #icon-div{width:18px;margin-top:-5px;display:inline-block}#alert-div #icon-div .material-icons{color:#f44336;font-size:1.125rem;margin-left:.5rem}#alert-div p{display:inline;vertical-align:top;margin-left:.5rem;color:#4a4a4a;font-family:Roboto;font-size:.7188rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}.error-color{color:#fe3824}.success-color{color:#43a047}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { 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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordMatchingComponent, decorators: [{
82
82
  type: Component,
83
- args: [{ selector: "anna-cognito-lib-password-matching", standalone: true, imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass], template: "<form [formGroup]=\"passwordForm\">\r\n <div\r\n id=\"alert-div\"\r\n *ngIf=\"passwordNotMatching\"\r\n >\r\n <div id=\"icon-div\">\r\n <span class=\"material-icons\">report</span>\r\n </div>\r\n <p>{{ constants.passwordNotMatching }}</p>\r\n </div>\r\n <div class=\"password-policies\">\r\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }} </b>\r\n </p>\r\n <p>{{ constants.minimumCharacter }}</p>\r\n <p>{{ constants.oneUppercase }}</p>\r\n <p>{{ constants.oneLowercase }}</p>\r\n <p>{{ constants.oneNumber }}</p>\r\n <p>{{ constants.specialCharacter }}</p>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\r\n <p>\r\n <b>{{ constants.passwordMustContain }}</b>\r\n </p>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\r\n </div>\r\n\r\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('number')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('number')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\r\n </div>\r\n\r\n <div\r\n [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\"\r\n >\r\n <div id=\"icon-div-msg\">\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"\r\n >\r\n cancel\r\n </span>\r\n <span\r\n class=\"material-icons\"\r\n *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\"\r\n >\r\n check_circle\r\n </span>\r\n </div>\r\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"2\"\r\n formControlName=\"password\"\r\n [placeholder]=\"constants.password\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n\r\n <input\r\n type=\"password\"\r\n tabindex=\"3\"\r\n formControlName=\"confirmPassword\"\r\n [placeholder]=\"constants.confirmPassword\"\r\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\r\n />\r\n</form>\r\n", styles: ["input[type=password],input[type=text]{width:100%;height:30px;padding:10px 16px;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}input[type=password].ng-dirty.ng-invalid,.input-invalid{border:1px solid #fe3824!important}input[type=password]:focus:focus{outline:none;box-shadow:none}input[type=password]:focus::placeholder{color:#a4a4a4}.password-policies{margin-bottom:1rem}.password-policies p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal;margin-bottom:0}.span-text{vertical-align:top;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal}#icon-div-msg{display:inline;margin-right:.3125rem}#icon-div-msg .material-icons{margin-top:1px;font-size:16px}#alert-div{padding:4px 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div #icon-div{width:18px;margin-top:-5px;display:inline-block}#alert-div #icon-div .material-icons{color:#f44336;font-size:1.125rem;margin-left:.5rem}#alert-div p{display:inline;vertical-align:top;margin-left:.5rem;color:#4a4a4a;font-family:Roboto;font-size:.7188rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}.error-color{color:#fe3824}.success-color{color:#43a047}\n"] }]
83
+ args: [{ selector: "anna-cognito-lib-password-matching", standalone: true, imports: [FormsModule, ReactiveFormsModule, NgIf, NgClass], template: "<form [formGroup]=\"passwordForm\">\n <div\n id=\"alert-div\"\n *ngIf=\"passwordNotMatching\"\n >\n <div id=\"icon-div\">\n <span class=\"material-icons\">report</span>\n </div>\n <p>{{ constants.passwordNotMatching }}</p>\n </div>\n <div class=\"password-policies\">\n <ng-container *ngIf=\"!passwordForm.get('password')?.dirty\">\n <p>\n <b>{{ constants.passwordMustContain }} </b>\n </p>\n <p>{{ constants.minimumCharacter }}</p>\n <p>{{ constants.oneUppercase }}</p>\n <p>{{ constants.oneLowercase }}</p>\n <p>{{ constants.oneNumber }}</p>\n <p>{{ constants.specialCharacter }}</p>\n </ng-container>\n\n <ng-container *ngIf=\"passwordForm.get('password')?.dirty\">\n <p>\n <b>{{ constants.passwordMustContain }}</b>\n </p>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('minLength') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('minLength')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('minLength')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.minimumCharacter }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('uppercase') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('uppercase')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('uppercase')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneUppercase }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('lowercase') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('lowercase')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('lowercase')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneLowercase }}</span>\n </div>\n\n <div [ngClass]=\"passwordForm.get('password')?.hasError('number') ? 'error-color' : 'success-color'\">\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('number')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('number')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.oneNumber }}</span>\n </div>\n\n <div\n [ngClass]=\"passwordForm.get('password')?.hasError('specialCharacter') ? 'error-color' : 'success-color'\"\n >\n <div id=\"icon-div-msg\">\n <span\n class=\"material-icons\"\n *ngIf=\"passwordForm.get('password')?.hasError('specialCharacter')\"\n >\n cancel\n </span>\n <span\n class=\"material-icons\"\n *ngIf=\"!passwordForm.get('password')?.hasError('specialCharacter')\"\n >\n check_circle\n </span>\n </div>\n <span class=\"span-text\">{{ constants.specialCharacter }}</span>\n </div>\n </ng-container>\n </div>\n\n <input\n type=\"password\"\n tabindex=\"2\"\n formControlName=\"password\"\n [placeholder]=\"constants.password\"\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\n />\n\n <input\n type=\"password\"\n tabindex=\"3\"\n formControlName=\"confirmPassword\"\n [placeholder]=\"constants.confirmPassword\"\n [ngClass]=\"{ 'input-invalid': passwordNotMatching }\"\n />\n</form>\n", styles: ["input[type=password],input[type=text]{width:100%;height:30px;padding:10px 16px;border:1px solid #979797;margin-bottom:.625rem;border-radius:.375rem}input[type=password].ng-dirty.ng-invalid,.input-invalid{border:1px solid #fe3824!important}input[type=password]:focus:focus{outline:none;box-shadow:none}input[type=password]:focus::placeholder{color:#a4a4a4}.password-policies{margin-bottom:1rem}.password-policies p{color:#4a4a4a;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal;margin-bottom:0}.span-text{vertical-align:top;font-family:Roboto;font-size:1rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:1.31;letter-spacing:normal}#icon-div-msg{display:inline;margin-right:.3125rem}#icon-div-msg .material-icons{margin-top:1px;font-size:16px}#alert-div{padding:4px 0 0;margin-bottom:.75rem;border-radius:.25rem;border:solid 1px #f9b3ae;background-color:#fde4e3}#alert-div #icon-div{width:18px;margin-top:-5px;display:inline-block}#alert-div #icon-div .material-icons{color:#f44336;font-size:1.125rem;margin-left:.5rem}#alert-div p{display:inline;vertical-align:top;margin-left:.5rem;color:#4a4a4a;font-family:Roboto;font-size:.7188rem;font-weight:400;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal}.error-color{color:#fe3824}.success-color{color:#43a047}\n"] }]
84
84
  }], ctorParameters: function () { return [{ type: i1.FormBuilder, decorators: [{
85
85
  type: Inject,
86
86
  args: [FormBuilder]
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
91
91
  }], passwordNotMatching: [{
92
92
  type: Input
93
93
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFFSCxXQUFXLEVBRVgsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVM5RCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQXlDLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTjlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBS00sQ0FBQztJQUU1RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpFLElBQUksUUFBUSxFQUFFO1lBQ1YsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLFFBQVEsRUFBRTtvQkFDVixRQUFRLENBQUMsYUFBYSxDQUFDO3dCQUNuQixVQUFVLENBQUMsUUFBUTt3QkFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO3dCQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7d0JBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLENBQUM7cUJBQ2xFLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxRQUFRLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksZUFBZSxFQUFFO1lBQ2pCLGVBQWUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2hFLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDckQsZUFBZSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osTUFBTSxNQUFNLEdBQUc7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU07U0FDckQsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsTUFBTSxNQUFNLEdBQUc7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZUFBZTtZQUM5QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU07U0FDNUQsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNoQixlQUFlLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDMUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsY0FBYyxDQUFDLEtBQWEsRUFBRSxLQUF1QjtRQUNqRCxPQUFPLENBQUMsT0FBd0IsRUFBOEIsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQztJQUNOLENBQUM7K0dBM0VRLHlCQUF5QixrQkFPZCxXQUFXO21HQVB0Qix5QkFBeUIscVBDMUJ0QyxnbExBeUlBLGs2Q0RqSGMsV0FBVywycEJBQUUsbUJBQW1CLGdWQUFFLElBQUksNkZBQUUsT0FBTzs7NEZBRWhELHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDSSxvQ0FBb0MsY0FHbEMsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7OzBCQVM3QyxNQUFNOzJCQUFDLFdBQVc7NENBTnJCLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVFLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xyXG4vLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBGb3JtQnVpbGRlcixcclxuICAgIEZvcm1Hcm91cCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFubmEtY29nbml0by1saWItcGFzc3dvcmQtbWF0Y2hpbmdcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9wYXNzd29yZC1tYXRjaGluZy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nSWYsIE5nQ2xhc3NdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNYXRjaGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAT3V0cHV0KCkgcGFzc3dvcmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY29uZmlybVBhc3N3b3JkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHBhc3N3b3JkTm90TWF0Y2hpbmc6IGJvb2xlYW47XHJcbiAgICBwYXNzd29yZEZvcm06IEZvcm1Hcm91cDtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEZvcm1CdWlsZGVyKSBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IExvZ2luQ29uc3RhbnQ7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1WYWx1ZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkRm9ybS5nZXQoXCJwYXNzd29yZFwiKTtcclxuICAgICAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkRm9ybS5nZXQoXCJjb25maXJtUGFzc3dvcmRcIik7XHJcblxyXG4gICAgICAgIGlmIChwYXNzd29yZCkge1xyXG4gICAgICAgICAgICBwYXNzd29yZC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC8uezgsfS8sIHsgbWluTGVuZ3RoOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bYS16XS8sIHsgbG93ZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bQS1aXS8sIHsgdXBwZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bMC05XS8sIHsgbnVtYmVyOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bXmEtekEtWjAtOV0vLCB7IHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25QYXNzd29yZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maXJtUGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25Db25maXJtUGFzc3dvcmRDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5wYXNzd29yZEZvcm0udmFsdWUucGFzc3dvcmQsXHJcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5wYXNzd29yZEZvcm0uY29udHJvbHMucGFzc3dvcmQuc3RhdHVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZENoYW5nZS5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db25maXJtUGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5wYXNzd29yZEZvcm0udmFsdWUuY29uZmlybVBhc3N3b3JkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHRoaXMucGFzc3dvcmRGb3JtLmNvbnRyb2xzLmNvbmZpcm1QYXNzd29yZC5zdGF0dXMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZENoYW5nZS5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IFtudWxsXSxcclxuICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkOiBbbnVsbF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRGb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IGNoZWNrIHRoZSByZXR1cm4gYWdhaW5cclxuICAgIHJlZ2V4VmFsaWRhdG9yKHJlZ2V4OiBSZWdFeHAsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogYW55IHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKHZhbGlkID8gbnVsbCA6IGVycm9yKSBhcyBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInBhc3N3b3JkRm9ybVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGlkPVwiYWxlcnQtZGl2XCJcclxuICAgICAgICAqbmdJZj1cInBhc3N3b3JkTm90TWF0Y2hpbmdcIlxyXG4gICAgPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVwb3J0PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxwPnt7IGNvbnN0YW50cy5wYXNzd29yZE5vdE1hdGNoaW5nIH19PC9wPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFzc3dvcmQtcG9saWNpZXNcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LmRpcnR5XCI+XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgPGI+e3sgY29uc3RhbnRzLnBhc3N3b3JkTXVzdENvbnRhaW4gfX0gPC9iPlxyXG4gICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgIDxwPnt7IGNvbnN0YW50cy5taW5pbXVtQ2hhcmFjdGVyIH19PC9wPlxyXG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMub25lVXBwZXJjYXNlIH19PC9wPlxyXG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMub25lTG93ZXJjYXNlIH19PC9wPlxyXG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMub25lTnVtYmVyIH19PC9wPlxyXG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMuc3BlY2lhbENoYXJhY3RlciB9fTwvcD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LmRpcnR5XCI+XHJcbiAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgPGI+e3sgY29uc3RhbnRzLnBhc3N3b3JkTXVzdENvbnRhaW4gfX08L2I+XHJcbiAgICAgICAgICAgIDwvcD5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ21pbkxlbmd0aCcpID8gJ2Vycm9yLWNvbG9yJyA6ICdzdWNjZXNzLWNvbG9yJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImljb24tZGl2LW1zZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdtaW5MZW5ndGgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdtaW5MZW5ndGgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLm1pbmltdW1DaGFyYWN0ZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcigndXBwZXJjYXNlJykgPyAnZXJyb3ItY29sb3InIDogJ3N1Y2Nlc3MtY29sb3InXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXYtbXNnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3VwcGVyY2FzZScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3VwcGVyY2FzZScpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmNsZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLXRleHRcIj57eyBjb25zdGFudHMub25lVXBwZXJjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ2xvd2VyY2FzZScpID8gJ2Vycm9yLWNvbG9yJyA6ICdzdWNjZXNzLWNvbG9yJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImljb24tZGl2LW1zZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdsb3dlcmNhc2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdsb3dlcmNhc2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLm9uZUxvd2VyY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdudW1iZXInKSA/ICdlcnJvci1jb2xvcicgOiAnc3VjY2Vzcy1jb2xvcidcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdi1tc2dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbnVtYmVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbnVtYmVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dFwiPnt7IGNvbnN0YW50cy5vbmVOdW1iZXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3NwZWNpYWxDaGFyYWN0ZXInKSA/ICdlcnJvci1jb2xvcicgOiAnc3VjY2Vzcy1jb2xvcidcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXYtbXNnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3NwZWNpYWxDaGFyYWN0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdzcGVjaWFsQ2hhcmFjdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dFwiPnt7IGNvbnN0YW50cy5zcGVjaWFsQ2hhcmFjdGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgdGFiaW5kZXg9XCIyXCJcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbnN0YW50cy5wYXNzd29yZFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IHBhc3N3b3JkTm90TWF0Y2hpbmcgfVwiXHJcbiAgICAvPlxyXG5cclxuICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgdGFiaW5kZXg9XCIzXCJcclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtUGFzc3dvcmRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25zdGFudHMuY29uZmlybVBhc3N3b3JkXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7ICdpbnB1dC1pbnZhbGlkJzogcGFzc3dvcmROb3RNYXRjaGluZyB9XCJcclxuICAgIC8+XHJcbjwvZm9ybT5cclxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0RBQXNEO0FBQ3RELDRCQUE0QjtBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFFSCxXQUFXLEVBRVgsV0FBVyxFQUNYLG1CQUFtQixFQUVuQixVQUFVLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixnQ0FBZ0M7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLGlDQUFpQztBQUNqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7OztBQVM5RCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQXlDLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTjlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBS00sQ0FBQztJQUU1RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcs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d0IsRUFBOEIsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQztJQUNOLENBQUM7K0dBM0VRLHlCQUF5QixrQkFPZCxXQUFXO21HQVB0Qix5QkFBeUIscVBDMUJ0Qyw4ektBeUlBLGs2Q0RqSGMsV0FBVywycEJBQUUsbUJBQW1CLGdWQUFFLElBQUksNkZBQUUsT0FBTzs7NEZBRWhELHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDSSxvQ0FBb0MsY0FHbEMsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7OzBCQVM3QyxNQUFNOzJCQUFDLFdBQVc7NENBTnJCLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVFLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xyXG4vLyBBbmd1bGFyIGltcG9ydCBzdGF0ZW1lbnRzXHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgICBGb3JtQnVpbGRlcixcclxuICAgIEZvcm1Hcm91cCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuXHJcbi8vIFVzZXIgZGVmaW5lZCBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBMb2dpbkNvbnN0YW50IH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImFubmEtY29nbml0by1saWItcGFzc3dvcmQtbWF0Y2hpbmdcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9wYXNzd29yZC1tYXRjaGluZy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nSWYsIE5nQ2xhc3NdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNYXRjaGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAT3V0cHV0KCkgcGFzc3dvcmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY29uZmlybVBhc3N3b3JkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHBhc3N3b3JkTm90TWF0Y2hpbmc6IGJvb2xlYW47XHJcbiAgICBwYXNzd29yZEZvcm06IEZvcm1Hcm91cDtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEZvcm1CdWlsZGVyKSBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IExvZ2luQ29uc3RhbnQ7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1WYWx1ZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkRm9ybS5nZXQoXCJwYXNzd29yZFwiKTtcclxuICAgICAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkRm9ybS5nZXQoXCJjb25maXJtUGFzc3dvcmRcIik7XHJcblxyXG4gICAgICAgIGlmIChwYXNzd29yZCkge1xyXG4gICAgICAgICAgICBwYXNzd29yZC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC8uezgsfS8sIHsgbWluTGVuZ3RoOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bYS16XS8sIHsgbG93ZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bQS1aXS8sIHsgdXBwZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bMC05XS8sIHsgbnVtYmVyOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKC9bXmEtekEtWjAtOV0vLCB7IHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25QYXNzd29yZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjb25maXJtUGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgICAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25Db25maXJtUGFzc3dvcmRDaGFuZ2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5wYXNzd29yZEZvcm0udmFsdWUucGFzc3dvcmQsXHJcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5wYXNzd29yZEZvcm0uY29udHJvbHMucGFzc3dvcmQuc3RhdHVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZENoYW5nZS5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db25maXJtUGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5wYXNzd29yZEZvcm0udmFsdWUuY29uZmlybVBhc3N3b3JkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHRoaXMucGFzc3dvcmRGb3JtLmNvbnRyb2xzLmNvbmZpcm1QYXNzd29yZC5zdGF0dXMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmNvbmZpcm1QYXNzd29yZENoYW5nZS5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IFtudWxsXSxcclxuICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkOiBbbnVsbF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFzc3dvcmRGb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IGNoZWNrIHRoZSByZXR1cm4gYWdhaW5cclxuICAgIHJlZ2V4VmFsaWRhdG9yKHJlZ2V4OiBSZWdFeHAsIGVycm9yOiBWYWxpZGF0aW9uRXJyb3JzKTogYW55IHtcclxuICAgICAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSByZWdleC50ZXN0KGNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKHZhbGlkID8gbnVsbCA6IGVycm9yKSBhcyBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cInBhc3N3b3JkRm9ybVwiPlxuICAgIDxkaXZcbiAgICAgICAgaWQ9XCJhbGVydC1kaXZcIlxuICAgICAgICAqbmdJZj1cInBhc3N3b3JkTm90TWF0Y2hpbmdcIlxuICAgID5cbiAgICAgICAgPGRpdiBpZD1cImljb24tZGl2XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVwb3J0PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHA+e3sgY29uc3RhbnRzLnBhc3N3b3JkTm90TWF0Y2hpbmcgfX08L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBhc3N3b3JkLXBvbGljaWVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uZGlydHlcIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxiPnt7IGNvbnN0YW50cy5wYXNzd29yZE11c3RDb250YWluIH19IDwvYj5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwPnt7IGNvbnN0YW50cy5taW5pbXVtQ2hhcmFjdGVyIH19PC9wPlxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLm9uZVVwcGVyY2FzZSB9fTwvcD5cbiAgICAgICAgICAgIDxwPnt7IGNvbnN0YW50cy5vbmVMb3dlcmNhc2UgfX08L3A+XG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMub25lTnVtYmVyIH19PC9wPlxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLnNwZWNpYWxDaGFyYWN0ZXIgfX08L3A+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5kaXJ0eVwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPGI+e3sgY29uc3RhbnRzLnBhc3N3b3JkTXVzdENvbnRhaW4gfX08L2I+XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ21pbkxlbmd0aCcpID8gJ2Vycm9yLWNvbG9yJyA6ICdzdWNjZXNzLWNvbG9yJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdi1tc2dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbWluTGVuZ3RoJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbWluTGVuZ3RoJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLm1pbmltdW1DaGFyYWN0ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcigndXBwZXJjYXNlJykgPyAnZXJyb3ItY29sb3InIDogJ3N1Y2Nlc3MtY29sb3InXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImljb24tZGl2LW1zZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCd1cHBlcmNhc2UnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCd1cHBlcmNhc2UnKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmNsZVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLXRleHRcIj57eyBjb25zdGFudHMub25lVXBwZXJjYXNlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ2xvd2VyY2FzZScpID8gJ2Vycm9yLWNvbG9yJyA6ICdzdWNjZXNzLWNvbG9yJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdi1tc2dcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbG93ZXJjYXNlJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbG93ZXJjYXNlJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLm9uZUxvd2VyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdudW1iZXInKSA/ICdlcnJvci1jb2xvcicgOiAnc3VjY2Vzcy1jb2xvcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXYtbXNnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ251bWJlcicpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ251bWJlcicpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dFwiPnt7IGNvbnN0YW50cy5vbmVOdW1iZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdzcGVjaWFsQ2hhcmFjdGVyJykgPyAnZXJyb3ItY29sb3InIDogJ3N1Y2Nlc3MtY29sb3InXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXYtbXNnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3NwZWNpYWxDaGFyYWN0ZXInKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdzcGVjaWFsQ2hhcmFjdGVyJylcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLnNwZWNpYWxDaGFyYWN0ZXIgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgdGFiaW5kZXg9XCIyXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLnBhc3N3b3JkXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IHBhc3N3b3JkTm90TWF0Y2hpbmcgfVwiXG4gICAgLz5cblxuICAgIDxpbnB1dFxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxuICAgICAgICB0YWJpbmRleD1cIjNcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtUGFzc3dvcmRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLmNvbmZpcm1QYXNzd29yZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lucHV0LWludmFsaWQnOiBwYXNzd29yZE5vdE1hdGNoaW5nIH1cIlxuICAgIC8+XG48L2Zvcm0+XG4iXX0=