ng-prime-tools 1.0.16 → 1.0.17

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.
@@ -1,142 +1,51 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { FormInputTypeEnum } from '../enums';
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
4
2
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/forms";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "../pt-text-input/pt-text-input.component";
8
- import * as i4 from "../pt-card/pt-card.component";
9
- import * as i5 from "../pt-button/pt-button.component";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../pt-card/pt-card.component";
5
+ import * as i3 from "./pt-login-card/pt-login-card.component";
10
6
  export class PTLoginPageComponent {
11
- constructor(fb) {
12
- this.fb = fb;
7
+ constructor() {
13
8
  this.loginSubmit = new EventEmitter();
14
- this.backgroundImageStyle = '';
15
- this.formGroup = this.fb.group({});
9
+ this.defaultCardConfig = {
10
+ borderRadius: '0',
11
+ margin: '0',
12
+ width: '100%',
13
+ height: '100%',
14
+ noBorder: true,
15
+ alignContent: 'center',
16
+ alignBodyContent: 'center',
17
+ };
16
18
  }
17
19
  ngOnInit() {
18
- this.initializeDefaults();
19
- this.setupFormFields();
20
- this.formGroup.patchValue({
21
- username: this.loginPageConfig.login?.username || '',
22
- password: this.loginPageConfig.login?.password || '',
23
- });
24
- this.setBackgroundImageStyle();
25
- // Enable/Disable the button based on form validity
26
- this.formGroup.statusChanges.subscribe((status) => {
27
- this.loginPageConfig.buttonConfig.disabled = status !== 'VALID';
28
- });
29
- }
30
- // Initialize default values for all fields in loginPageConfig if not set
31
- initializeDefaults() {
32
- // Initialize backgroundImage
33
- this.loginPageConfig.backgroundImage = {
34
- imageUrl: this.loginPageConfig.backgroundImage?.imageUrl || '',
35
- transparencyPercentage: this.loginPageConfig.backgroundImage?.transparencyPercentage || '100',
36
- ...this.loginPageConfig.backgroundImage,
37
- };
38
- // Initialize title
39
- this.loginPageConfig.title = {
40
- text: this.loginPageConfig.title?.text || 'Login',
41
- position: this.loginPageConfig.title?.position || 'center',
42
- color: this.loginPageConfig.title?.color || '#333',
43
- fontSize: this.loginPageConfig.title?.fontSize || '24px',
44
- ...this.loginPageConfig.title,
45
- };
46
- // Initialize logoUrl
47
- this.loginPageConfig.logoUrl = {
48
- altText: this.loginPageConfig.logoUrl?.altText || 'Logo',
49
- imageUrl: this.loginPageConfig.logoUrl?.imageUrl || '',
50
- width: this.loginPageConfig.logoUrl?.width || '100px',
51
- height: this.loginPageConfig.logoUrl?.height || 'auto',
52
- ...this.loginPageConfig.logoUrl,
53
- };
54
- // Initialize footer
55
- this.loginPageConfig.footer = {
56
- version: this.loginPageConfig.footer?.version || 'V1.0',
57
- copyright: this.loginPageConfig.footer?.copyright || 'Your Company © 2024',
58
- ...this.loginPageConfig.footer,
59
- };
60
- // Initialize login
61
- this.loginPageConfig.login = {
62
- username: this.loginPageConfig.login?.username || '',
63
- password: this.loginPageConfig.login?.password || '',
64
- errorMessage: this.loginPageConfig.login?.errorMessage || '',
65
- emptyFieldsErrorMessage: this.loginPageConfig.login?.emptyFieldsErrorMessage ||
66
- "Veuillez saisir votre nom d'utilisateur et votre mot de passe !",
67
- ...this.loginPageConfig.login,
68
- };
69
- // Initialize cardConfig
70
- this.loginPageConfig.cardConfig = {
71
- noBorder: this.loginPageConfig.cardConfig?.noBorder ?? true,
72
- width: this.loginPageConfig.cardConfig?.width ?? '400px',
73
- padding: this.loginPageConfig.cardConfig?.padding ?? '40px',
74
- ...this.loginPageConfig.cardConfig,
75
- };
76
- // Initialize usernameField
77
- this.loginPageConfig.usernameField = {
78
- name: this.loginPageConfig.usernameField?.name || 'username',
79
- label: this.loginPageConfig.usernameField?.label || "Nom d'utilisateur",
80
- required: this.loginPageConfig.usernameField?.required ?? true,
81
- placeholder: this.loginPageConfig.usernameField?.placeholder ||
82
- "Entrer votre nom d'utilisateur",
83
- ...this.loginPageConfig.usernameField,
84
- };
85
- // Initialize passwordField
86
- this.loginPageConfig.passwordField = {
87
- name: this.loginPageConfig.passwordField?.name || 'password',
88
- label: this.loginPageConfig.passwordField?.label || 'Mot de passe',
89
- required: this.loginPageConfig.passwordField?.required ?? true,
90
- placeholder: this.loginPageConfig.passwordField?.placeholder ||
91
- 'Entrer votre mot de passe',
92
- type: this.loginPageConfig.passwordField?.type || FormInputTypeEnum.PASSWORD,
93
- ...this.loginPageConfig.passwordField,
94
- };
95
- // Initialize buttonConfig
96
- this.loginPageConfig.buttonConfig = {
97
- label: this.loginPageConfig.buttonConfig?.label || 'Login',
98
- type: this.loginPageConfig.buttonConfig?.type || 'submit',
99
- icon: this.loginPageConfig.buttonConfig?.icon || 'pi pi-sign-in',
100
- iconPos: this.loginPageConfig.buttonConfig?.iconPos || 'left',
101
- styleClass: this.loginPageConfig.buttonConfig?.styleClass || 'p-button-success',
102
- disabled: this.loginPageConfig.buttonConfig?.disabled ?? true,
103
- width: this.loginPageConfig.buttonConfig?.width ?? '100%',
104
- ...this.loginPageConfig.buttonConfig,
105
- };
20
+ this.applyDefaultConfigs();
106
21
  }
107
- setBackgroundImageStyle() {
108
- const transparency = parseFloat(this.loginPageConfig?.backgroundImage?.transparencyPercentage) / 100;
109
- this.backgroundImageStyle = `linear-gradient(rgba(255,255,255,${1 - transparency}), rgba(255,255,255,${1 - transparency})), url(${this.loginPageConfig?.backgroundImage?.imageUrl})`;
22
+ applyDefaultConfigs() {
23
+ // Apply defaults to centerCardConfig
24
+ this.loginPageConfig.centerCardConfig = this.applyDefaults(this.loginPageConfig.centerCardConfig);
25
+ // Apply defaults to leftCardConfig
26
+ this.loginPageConfig.leftCardConfig = this.applyDefaults(this.loginPageConfig.leftCardConfig);
27
+ // Apply defaults to rightCardConfig
28
+ this.loginPageConfig.rightCardConfig = this.applyDefaults(this.loginPageConfig.rightCardConfig);
110
29
  }
111
- login() {
112
- if (this.formGroup.valid) {
113
- this.loginSubmit.emit(this.formGroup.value);
114
- }
115
- else {
116
- this.loginPageConfig.login.errorMessage =
117
- this.loginPageConfig.login?.emptyFieldsErrorMessage;
118
- }
30
+ applyDefaults(config) {
31
+ return {
32
+ ...this.defaultCardConfig,
33
+ ...(config || {}),
34
+ };
119
35
  }
120
- // Setup form fields using the usernameField and passwordField from LoginPageConfig
121
- setupFormFields() {
122
- const usernameValidators = this.loginPageConfig.usernameField?.required
123
- ? [Validators.required]
124
- : [];
125
- const passwordValidators = this.loginPageConfig.passwordField?.required
126
- ? [Validators.required]
127
- : [];
128
- this.formGroup.addControl(this.loginPageConfig.usernameField.name, this.fb.control(this.loginPageConfig.login?.username, usernameValidators));
129
- this.formGroup.addControl(this.loginPageConfig.passwordField.name, this.fb.control(this.loginPageConfig.login?.password, passwordValidators));
36
+ onLoginSubmit(loginModel) {
37
+ console.log('Login Submitted:', loginModel);
38
+ this.loginSubmit.emit(loginModel);
130
39
  }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginPageComponent, selector: "pt-login-page", inputs: { loginPageConfig: "loginPageConfig" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<div\n class=\"login-container\"\n [ngStyle]=\"{\n 'background-image': backgroundImageStyle\n }\"\n>\n <pt-card [config]=\"loginPageConfig.cardConfig!\">\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText\"\n [style.width]=\"loginPageConfig.logoUrl?.width\"\n [style.height]=\"loginPageConfig.logoUrl?.height\"\n />\n </div>\n\n <div\n class=\"title-container\"\n [ngStyle]=\"{ 'text-align': loginPageConfig.title?.position }\"\n >\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color,\n 'font-size': loginPageConfig.title?.fontSize\n }\"\n >\n {{ loginPageConfig.title?.text }}\n </h1>\n </div>\n\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"login()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n </pt-card>\n</div>\n", styles: [".login-container{background-size:cover;background-position:center;background-repeat:no-repeat;height:100vh;width:100vw;display:flex;justify-content:center;align-items:center}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%}.logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}@media (max-width: 768px){.submit-btn{min-width:100%}}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.PTTextInputComponent, selector: "pt-text-input", inputs: ["formGroup", "formField"] }, { kind: "component", type: i4.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i5.PTButtonComponent, selector: "pt-button", inputs: ["buttonConfig"] }] }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTLoginPageComponent, selector: "pt-login-page", inputs: { loginPageConfig: "loginPageConfig" }, outputs: { loginSubmit: "loginSubmit" }, ngImport: i0, template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PTCardComponent, selector: "pt-card", inputs: ["config"] }, { kind: "component", type: i3.PTLoginCardComponent, selector: "pt-login-card", inputs: ["loginPageConfig"], outputs: ["loginSubmit"] }] }); }
133
42
  }
134
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageComponent, decorators: [{
135
44
  type: Component,
136
- args: [{ selector: 'pt-login-page', template: "<div\n class=\"login-container\"\n [ngStyle]=\"{\n 'background-image': backgroundImageStyle\n }\"\n>\n <pt-card [config]=\"loginPageConfig.cardConfig!\">\n <div class=\"logo-container\" *ngIf=\"loginPageConfig.logoUrl?.imageUrl\">\n <img\n [src]=\"loginPageConfig.logoUrl?.imageUrl\"\n [alt]=\"loginPageConfig.logoUrl?.altText\"\n [style.width]=\"loginPageConfig.logoUrl?.width\"\n [style.height]=\"loginPageConfig.logoUrl?.height\"\n />\n </div>\n\n <div\n class=\"title-container\"\n [ngStyle]=\"{ 'text-align': loginPageConfig.title?.position }\"\n >\n <h1\n [ngStyle]=\"{\n color: loginPageConfig.title?.color,\n 'font-size': loginPageConfig.title?.fontSize\n }\"\n >\n {{ loginPageConfig.title?.text }}\n </h1>\n </div>\n\n <form class=\"form-container\" [formGroup]=\"formGroup\" (ngSubmit)=\"login()\">\n <div *ngIf=\"loginPageConfig.login?.errorMessage\" class=\"error-message\">\n {{ loginPageConfig.login?.errorMessage }}\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.usernameField!\"\n ></pt-text-input>\n </div>\n <div class=\"field\">\n <pt-text-input\n [formGroup]=\"formGroup\"\n [formField]=\"loginPageConfig.passwordField!\"\n ></pt-text-input>\n </div>\n <div class=\"submit-btn\">\n <pt-button [buttonConfig]=\"loginPageConfig.buttonConfig!\"></pt-button>\n </div>\n </form>\n\n <div class=\"login-footer\">\n {{ loginPageConfig.footer?.version }}\n <span>{{ loginPageConfig.footer?.copyright }}</span>\n </div>\n </pt-card>\n</div>\n", styles: [".login-container{background-size:cover;background-position:center;background-repeat:no-repeat;height:100vh;width:100vw;display:flex;justify-content:center;align-items:center}.error-message{color:red;background-color:#ffe6e6;border:1px solid red;padding:10px;margin-bottom:10px;border-radius:5px;width:100%}.logo-container{display:flex;justify-content:center;align-items:center;margin-bottom:20px}.title-container{text-align:center;margin-bottom:20px}.field{display:flex;flex-direction:column;margin-bottom:20px;width:100%}.submit-btn{display:flex;justify-content:center;width:100%}::ng-deep pt-button{width:100%}::ng-deep .submit-btn p-button button{width:100%}@media (max-width: 768px){.submit-btn{min-width:100%}}.login-footer{margin-top:20px;text-align:center;font-size:.9em;color:#555}\n"] }]
137
- }], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { loginPageConfig: [{
45
+ args: [{ selector: 'pt-login-page', template: "<!-- Center Position -->\n<ng-container>\n <div *ngIf=\"loginPageConfig.position === 'center'\" class=\"center-container\">\n <pt-card\n *ngIf=\"loginPageConfig.centerCardConfig\"\n [config]=\"loginPageConfig.centerCardConfig\"\n >\n <pt-login-card\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n <!-- Left and Right Positions -->\n <div\n *ngIf=\"\n loginPageConfig.position === 'left' ||\n loginPageConfig.position === 'right'\n \"\n class=\"left-right-container\"\n >\n <!-- Left Card -->\n <pt-card\n *ngIf=\"loginPageConfig.leftCardConfig\"\n [config]=\"loginPageConfig.leftCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'left'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n\n <!-- Right Card -->\n <pt-card\n *ngIf=\"loginPageConfig.rightCardConfig\"\n [config]=\"loginPageConfig.rightCardConfig\"\n >\n <pt-login-card\n *ngIf=\"loginPageConfig.position === 'right'\"\n [loginPageConfig]=\"loginPageConfig\"\n (loginSubmit)=\"onLoginSubmit($event)\"\n ></pt-login-card>\n </pt-card>\n </div>\n</ng-container>\n", styles: [".left-right-container{display:flex;height:100vh;width:100%}.left-right-container pt-card{flex:1;max-width:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%}.center-container{display:flex;justify-content:center;align-items:center;height:100vh;width:100vw;margin:0;padding:0;box-sizing:border-box;overflow:hidden}.center-container pt-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;box-sizing:border-box}.center-container pt-card pt-login-card{display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;padding:16px;box-sizing:border-box;margin:0}\n"] }]
46
+ }], propDecorators: { loginPageConfig: [{
138
47
  type: Input
139
48
  }], loginSubmit: [{
140
49
  type: Output
141
50
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7O0FBTzdDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsWUFBb0IsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFOekIsZ0JBQVcsR0FDbkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUdqQyx5QkFBb0IsR0FBVyxFQUFFLENBQUM7UUFHaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUU7WUFDcEQsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxFQUFFO1NBQ3JELENBQUMs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RUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2dpblBhZ2VDb25maWcsIExvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUlucHV0VHlwZUVudW0gfSBmcm9tICcuLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3B0LWxvZ2luLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbG9naW4tcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B0LWxvZ2luLXBhZ2UuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQVExvZ2luUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGxvZ2luUGFnZUNvbmZpZyE6IExvZ2luUGFnZUNvbmZpZztcblxuICBAT3V0cHV0KCkgbG9naW5TdWJtaXQ6IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPigpO1xuXG4gIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBiYWNrZ3JvdW5kSW1hZ2VTdHlsZTogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe30pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdHMoKTtcbiAgICB0aGlzLnNldHVwRm9ybUZpZWxkcygpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy51c2VybmFtZSB8fCAnJyxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8ucGFzc3dvcmQgfHwgJycsXG4gICAgfSk7XG4gICAgdGhpcy5zZXRCYWNrZ3JvdW5kSW1hZ2VTdHlsZSgpO1xuXG4gICAgLy8gRW5hYmxlL0Rpc2FibGUgdGhlIGJ1dHRvbiBiYXNlZCBvbiBmb3JtIHZhbGlkaXR5XG4gICAgdGhpcy5mb3JtR3JvdXAuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnIS5kaXNhYmxlZCA9IHN0YXR1cyAhPT0gJ1ZBTElEJztcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEluaXRpYWxpemUgZGVmYXVsdCB2YWx1ZXMgZm9yIGFsbCBmaWVsZHMgaW4gbG9naW5QYWdlQ29uZmlnIGlmIG5vdCBzZXRcbiAgaW5pdGlhbGl6ZURlZmF1bHRzKCkge1xuICAgIC8vIEluaXRpYWxpemUgYmFja2dyb3VuZEltYWdlXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuYmFja2dyb3VuZEltYWdlID0ge1xuICAgICAgaW1hZ2VVcmw6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJhY2tncm91bmRJbWFnZT8uaW1hZ2VVcmwgfHwgJycsXG4gICAgICB0cmFuc3BhcmVuY3lQZXJjZW50YWdlOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2U/LnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UgfHwgJzEwMCcsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5iYWNrZ3JvdW5kSW1hZ2UsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdGl0bGVcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy50aXRsZSA9IHtcbiAgICAgIHRleHQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlPy50ZXh0IHx8ICdMb2dpbicsXG4gICAgICBwb3NpdGlvbjogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LnBvc2l0aW9uIHx8ICdjZW50ZXInLFxuICAgICAgY29sb3I6IHRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlPy5jb2xvciB8fCAnIzMzMycsXG4gICAgICBmb250U2l6ZTogdGhpcy5sb2dpblBhZ2VDb25maWcudGl0bGU/LmZvbnRTaXplIHx8ICcyNHB4JyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLnRpdGxlLFxuICAgIH07XG5cbiAgICAvLyBJbml0aWFsaXplIGxvZ29VcmxcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsID0ge1xuICAgICAgYWx0VGV4dDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uYWx0VGV4dCB8fCAnTG9nbycsXG4gICAgICBpbWFnZVVybDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uaW1hZ2VVcmwgfHwgJycsXG4gICAgICB3aWR0aDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8ud2lkdGggfHwgJzEwMHB4JyxcbiAgICAgIGhlaWdodDogdGhpcy5sb2dpblBhZ2VDb25maWcubG9nb1VybD8uaGVpZ2h0IHx8ICdhdXRvJyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ29VcmwsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgZm9vdGVyXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyID0ge1xuICAgICAgdmVyc2lvbjogdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyPy52ZXJzaW9uIHx8ICdWMS4wJyxcbiAgICAgIGNvcHlyaWdodDpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuZm9vdGVyPy5jb3B5cmlnaHQgfHwgJ1lvdXIgQ29tcGFueSDCqSAyMDI0JyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmZvb3RlcixcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBsb2dpblxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luID0ge1xuICAgICAgdXNlcm5hbWU6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy51c2VybmFtZSB8fCAnJyxcbiAgICAgIHBhc3N3b3JkOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8ucGFzc3dvcmQgfHwgJycsXG4gICAgICBlcnJvck1lc3NhZ2U6IHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy5lcnJvck1lc3NhZ2UgfHwgJycsXG4gICAgICBlbXB0eUZpZWxkc0Vycm9yTWVzc2FnZTpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcubG9naW4/LmVtcHR5RmllbGRzRXJyb3JNZXNzYWdlIHx8XG4gICAgICAgIFwiVmV1aWxsZXogc2Fpc2lyIHZvdHJlIG5vbSBkJ3V0aWxpc2F0ZXVyIGV0IHZvdHJlIG1vdCBkZSBwYXNzZSAhXCIsXG4gICAgICAuLi50aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbixcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBjYXJkQ29uZmlnXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcuY2FyZENvbmZpZyA9IHtcbiAgICAgIG5vQm9yZGVyOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5jYXJkQ29uZmlnPy5ub0JvcmRlciA/PyB0cnVlLFxuICAgICAgd2lkdGg6IHRoaXMubG9naW5QYWdlQ29uZmlnLmNhcmRDb25maWc/LndpZHRoID8/ICc0MDBweCcsXG4gICAgICBwYWRkaW5nOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5jYXJkQ29uZmlnPy5wYWRkaW5nID8/ICc0MHB4JyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmNhcmRDb25maWcsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdXNlcm5hbWVGaWVsZFxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQgPSB7XG4gICAgICBuYW1lOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkPy5uYW1lIHx8ICd1c2VybmFtZScsXG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ubGFiZWwgfHwgXCJOb20gZCd1dGlsaXNhdGV1clwiLFxuICAgICAgcmVxdWlyZWQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQ/LnJlcXVpcmVkID8/IHRydWUsXG4gICAgICBwbGFjZWhvbGRlcjpcbiAgICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZD8ucGxhY2Vob2xkZXIgfHxcbiAgICAgICAgXCJFbnRyZXIgdm90cmUgbm9tIGQndXRpbGlzYXRldXJcIixcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQsXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgcGFzc3dvcmRGaWVsZFxuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLnBhc3N3b3JkRmllbGQgPSB7XG4gICAgICBuYW1lOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy5uYW1lIHx8ICdwYXNzd29yZCcsXG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ubGFiZWwgfHwgJ01vdCBkZSBwYXNzZScsXG4gICAgICByZXF1aXJlZDogdGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZD8ucmVxdWlyZWQgPz8gdHJ1ZSxcbiAgICAgIHBsYWNlaG9sZGVyOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy5wbGFjZWhvbGRlciB8fFxuICAgICAgICAnRW50cmVyIHZvdHJlIG1vdCBkZSBwYXNzZScsXG4gICAgICB0eXBlOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy50eXBlIHx8IEZvcm1JbnB1dFR5cGVFbnVtLlBBU1NXT1JELFxuICAgICAgLi4udGhpcy5sb2dpblBhZ2VDb25maWcucGFzc3dvcmRGaWVsZCxcbiAgICB9O1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBidXR0b25Db25maWdcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWcgPSB7XG4gICAgICBsYWJlbDogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy5sYWJlbCB8fCAnTG9naW4nLFxuICAgICAgdHlwZTogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy50eXBlIHx8ICdzdWJtaXQnLFxuICAgICAgaWNvbjogdGhpcy5sb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnPy5pY29uIHx8ICdwaSBwaS1zaWduLWluJyxcbiAgICAgIGljb25Qb3M6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8uaWNvblBvcyB8fCAnbGVmdCcsXG4gICAgICBzdHlsZUNsYXNzOlxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/LnN0eWxlQ2xhc3MgfHwgJ3AtYnV0dG9uLXN1Y2Nlc3MnLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZz8uZGlzYWJsZWQgPz8gdHJ1ZSxcbiAgICAgIHdpZHRoOiB0aGlzLmxvZ2luUGFnZUNvbmZpZy5idXR0b25Db25maWc/LndpZHRoID8/ICcxMDAlJyxcbiAgICAgIC4uLnRoaXMubG9naW5QYWdlQ29uZmlnLmJ1dHRvbkNvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgc2V0QmFja2dyb3VuZEltYWdlU3R5bGUoKSB7XG4gICAgY29uc3QgdHJhbnNwYXJlbmN5ID1cbiAgICAgIHBhcnNlRmxvYXQoXG4gICAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnPy5iYWNrZ3JvdW5kSW1hZ2U/LnRyYW5zcGFyZW5jeVBlcmNlbnRhZ2UhXG4gICAgICApIC8gMTAwO1xuICAgIHRoaXMuYmFja2dyb3VuZEltYWdlU3R5bGUgPSBgbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsJHtcbiAgICAgIDEgLSB0cmFuc3BhcmVuY3lcbiAgICB9KSwgcmdiYSgyNTUsMjU1LDI1NSwkezEgLSB0cmFuc3BhcmVuY3l9KSksIHVybCgke1xuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWc/LmJhY2tncm91bmRJbWFnZT8uaW1hZ2VVcmxcbiAgICB9KWA7XG4gIH1cblxuICBsb2dpbigpIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdCh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luIS5lcnJvck1lc3NhZ2UgPVxuICAgICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZW1wdHlGaWVsZHNFcnJvck1lc3NhZ2U7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0dXAgZm9ybSBmaWVsZHMgdXNpbmcgdGhlIHVzZXJuYW1lRmllbGQgYW5kIHBhc3N3b3JkRmllbGQgZnJvbSBMb2dpblBhZ2VDb25maWdcbiAgc2V0dXBGb3JtRmllbGRzKCkge1xuICAgIGNvbnN0IHVzZXJuYW1lVmFsaWRhdG9ycyA9IHRoaXMubG9naW5QYWdlQ29uZmlnLnVzZXJuYW1lRmllbGQ/LnJlcXVpcmVkXG4gICAgICA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgOiBbXTtcbiAgICBjb25zdCBwYXNzd29yZFZhbGlkYXRvcnMgPSB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkPy5yZXF1aXJlZFxuICAgICAgPyBbVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgIDogW107XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFxuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcudXNlcm5hbWVGaWVsZCEubmFtZSxcbiAgICAgIHRoaXMuZmIuY29udHJvbCh0aGlzLmxvZ2luUGFnZUNvbmZpZy5sb2dpbj8udXNlcm5hbWUsIHVzZXJuYW1lVmFsaWRhdG9ycylcbiAgICApO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woXG4gICAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkIS5uYW1lLFxuICAgICAgdGhpcy5mYi5jb250cm9sKHRoaXMubG9naW5QYWdlQ29uZmlnLmxvZ2luPy5wYXNzd29yZCwgcGFzc3dvcmRWYWxpZGF0b3JzKVxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJsb2dpbi1jb250YWluZXJcIlxuICBbbmdTdHlsZV09XCJ7XG4gICAgJ2JhY2tncm91bmQtaW1hZ2UnOiBiYWNrZ3JvdW5kSW1hZ2VTdHlsZVxuICB9XCJcbj5cbiAgPHB0LWNhcmQgW2NvbmZpZ109XCJsb2dpblBhZ2VDb25maWcuY2FyZENvbmZpZyFcIj5cbiAgICA8ZGl2IGNsYXNzPVwibG9nby1jb250YWluZXJcIiAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5pbWFnZVVybFwiPlxuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cImxvZ2luUGFnZUNvbmZpZy5sb2dvVXJsPy5pbWFnZVVybFwiXG4gICAgICAgIFthbHRdPVwibG9naW5QYWdlQ29uZmlnLmxvZ29Vcmw/LmFsdFRleHRcIlxuICAgICAgICBbc3R5bGUud2lkdGhdPVwibG9naW5QYWdlQ29uZmlnLmxvZ29Vcmw/LndpZHRoXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJsb2dpblBhZ2VDb25maWcubG9nb1VybD8uaGVpZ2h0XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInRpdGxlLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogbG9naW5QYWdlQ29uZmlnLnRpdGxlPy5wb3NpdGlvbiB9XCJcbiAgICA+XG4gICAgICA8aDFcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgIGNvbG9yOiBsb2dpblBhZ2VDb25maWcudGl0bGU/LmNvbG9yLFxuICAgICAgICAgICdmb250LXNpemUnOiBsb2dpblBhZ2VDb25maWcudGl0bGU/LmZvbnRTaXplXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICB7eyBsb2dpblBhZ2VDb25maWcudGl0bGU/LnRleHQgfX1cbiAgICAgIDwvaDE+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiAobmdTdWJtaXQpPVwibG9naW4oKVwiPlxuICAgICAgPGRpdiAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgIHt7IGxvZ2luUGFnZUNvbmZpZy5sb2dpbj8uZXJyb3JNZXNzYWdlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICA8cHQtdGV4dC1pbnB1dFxuICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgICBbZm9ybUZpZWxkXT1cImxvZ2luUGFnZUNvbmZpZy51c2VybmFtZUZpZWxkIVwiXG4gICAgICAgID48L3B0LXRleHQtaW5wdXQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxuICAgICAgICA8cHQtdGV4dC1pbnB1dFxuICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgICBbZm9ybUZpZWxkXT1cImxvZ2luUGFnZUNvbmZpZy5wYXNzd29yZEZpZWxkIVwiXG4gICAgICAgID48L3B0LXRleHQtaW5wdXQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdWJtaXQtYnRuXCI+XG4gICAgICAgIDxwdC1idXR0b24gW2J1dHRvbkNvbmZpZ109XCJsb2dpblBhZ2VDb25maWcuYnV0dG9uQ29uZmlnIVwiPjwvcHQtYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuXG4gICAgPGRpdiBjbGFzcz1cImxvZ2luLWZvb3RlclwiPlxuICAgICAge3sgbG9naW5QYWdlQ29uZmlnLmZvb3Rlcj8udmVyc2lvbiB9fVxuICAgICAgPHNwYW4+e3sgbG9naW5QYWdlQ29uZmlnLmZvb3Rlcj8uY29weXJpZ2h0IH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L3B0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEvRSxNQUFNLE9BQU8sb0JBQW9CO0lBTGpDO1FBT1ksZ0JBQVcsR0FDbkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV6QixzQkFBaUIsR0FBZTtZQUN0QyxZQUFZLEVBQUUsR0FBRztZQUNqQixNQUFNLEVBQUUsR0FBRztZQUNYLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLFlBQVksRUFBRSxRQUFRO1lBQ3RCLGdCQUFnQixFQUFFLFFBQVE7U0FDM0IsQ0FBQztLQWtDSDtJQWhDQyxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUN0QyxDQUFDO1FBRUYsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUNwQyxDQUFDO1FBRUYsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUNyQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFtQjtRQUN2QyxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUMsaUJBQWlCO1lBQ3pCLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1NBQ2xCLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQXNCO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQzsrR0E5Q1Usb0JBQW9CO21HQUFwQixvQkFBb0IsOElDUmpDLHcxQ0E4Q0E7OzRGRHRDYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsZUFBZTs4QkFLaEIsZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9naW5Nb2RlbCwgTG9naW5QYWdlQ29uZmlnLCBDYXJkQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHQtbG9naW4tcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdC1sb2dpbi1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbG9naW4tcGFnZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFBUTG9naW5QYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbG9naW5QYWdlQ29uZmlnITogTG9naW5QYWdlQ29uZmlnO1xuICBAT3V0cHV0KCkgbG9naW5TdWJtaXQ6IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxMb2dpbk1vZGVsPigpO1xuXG4gIHByaXZhdGUgZGVmYXVsdENhcmRDb25maWc6IENhcmRDb25maWcgPSB7XG4gICAgYm9yZGVyUmFkaXVzOiAnMCcsXG4gICAgbWFyZ2luOiAnMCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICBub0JvcmRlcjogdHJ1ZSxcbiAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGFsaWduQm9keUNvbnRlbnQ6ICdjZW50ZXInLFxuICB9O1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlEZWZhdWx0Q29uZmlncygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRDb25maWdzKCk6IHZvaWQge1xuICAgIC8vIEFwcGx5IGRlZmF1bHRzIHRvIGNlbnRlckNhcmRDb25maWdcbiAgICB0aGlzLmxvZ2luUGFnZUNvbmZpZy5jZW50ZXJDYXJkQ29uZmlnID0gdGhpcy5hcHBseURlZmF1bHRzKFxuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcuY2VudGVyQ2FyZENvbmZpZ1xuICAgICk7XG5cbiAgICAvLyBBcHBseSBkZWZhdWx0cyB0byBsZWZ0Q2FyZENvbmZpZ1xuICAgIHRoaXMubG9naW5QYWdlQ29uZmlnLmxlZnRDYXJkQ29uZmlnID0gdGhpcy5hcHBseURlZmF1bHRzKFxuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcubGVmdENhcmRDb25maWdcbiAgICApO1xuXG4gICAgLy8gQXBwbHkgZGVmYXVsdHMgdG8gcmlnaHRDYXJkQ29uZmlnXG4gICAgdGhpcy5sb2dpblBhZ2VDb25maWcucmlnaHRDYXJkQ29uZmlnID0gdGhpcy5hcHBseURlZmF1bHRzKFxuICAgICAgdGhpcy5sb2dpblBhZ2VDb25maWcucmlnaHRDYXJkQ29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0cyhjb25maWc/OiBDYXJkQ29uZmlnKTogQ2FyZENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZGVmYXVsdENhcmRDb25maWcsXG4gICAgICAuLi4oY29uZmlnIHx8IHt9KSxcbiAgICB9O1xuICB9XG5cbiAgb25Mb2dpblN1Ym1pdChsb2dpbk1vZGVsOiBMb2dpbk1vZGVsKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ0xvZ2luIFN1Ym1pdHRlZDonLCBsb2dpbk1vZGVsKTtcbiAgICB0aGlzLmxvZ2luU3VibWl0LmVtaXQobG9naW5Nb2RlbCk7XG4gIH1cbn1cbiIsIjwhLS0gQ2VudGVyIFBvc2l0aW9uIC0tPlxuPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5wb3NpdGlvbiA9PT0gJ2NlbnRlcidcIiBjbGFzcz1cImNlbnRlci1jb250YWluZXJcIj5cbiAgICA8cHQtY2FyZFxuICAgICAgKm5nSWY9XCJsb2dpblBhZ2VDb25maWcuY2VudGVyQ2FyZENvbmZpZ1wiXG4gICAgICBbY29uZmlnXT1cImxvZ2luUGFnZUNvbmZpZy5jZW50ZXJDYXJkQ29uZmlnXCJcbiAgICA+XG4gICAgICA8cHQtbG9naW4tY2FyZFxuICAgICAgICBbbG9naW5QYWdlQ29uZmlnXT1cImxvZ2luUGFnZUNvbmZpZ1wiXG4gICAgICAgIChsb2dpblN1Ym1pdCk9XCJvbkxvZ2luU3VibWl0KCRldmVudClcIlxuICAgICAgPjwvcHQtbG9naW4tY2FyZD5cbiAgICA8L3B0LWNhcmQ+XG4gIDwvZGl2PlxuICA8IS0tIExlZnQgYW5kIFJpZ2h0IFBvc2l0aW9ucyAtLT5cbiAgPGRpdlxuICAgICpuZ0lmPVwiXG4gICAgICBsb2dpblBhZ2VDb25maWcucG9zaXRpb24gPT09ICdsZWZ0JyB8fFxuICAgICAgbG9naW5QYWdlQ29uZmlnLnBvc2l0aW9uID09PSAncmlnaHQnXG4gICAgXCJcbiAgICBjbGFzcz1cImxlZnQtcmlnaHQtY29udGFpbmVyXCJcbiAgPlxuICAgIDwhLS0gTGVmdCBDYXJkIC0tPlxuICAgIDxwdC1jYXJkXG4gICAgICAqbmdJZj1cImxvZ2luUGFnZUNvbmZpZy5sZWZ0Q2FyZENvbmZpZ1wiXG4gICAgICBbY29uZmlnXT1cImxvZ2luUGFnZUNvbmZpZy5sZWZ0Q2FyZENvbmZpZ1wiXG4gICAgPlxuICAgICAgPHB0LWxvZ2luLWNhcmRcbiAgICAgICAgKm5nSWY9XCJsb2dpblBhZ2VDb25maWcucG9zaXRpb24gPT09ICdsZWZ0J1wiXG4gICAgICAgIFtsb2dpblBhZ2VDb25maWddPVwibG9naW5QYWdlQ29uZmlnXCJcbiAgICAgICAgKGxvZ2luU3VibWl0KT1cIm9uTG9naW5TdWJtaXQoJGV2ZW50KVwiXG4gICAgICA+PC9wdC1sb2dpbi1jYXJkPlxuICAgIDwvcHQtY2FyZD5cblxuICAgIDwhLS0gUmlnaHQgQ2FyZCAtLT5cbiAgICA8cHQtY2FyZFxuICAgICAgKm5nSWY9XCJsb2dpblBhZ2VDb25maWcucmlnaHRDYXJkQ29uZmlnXCJcbiAgICAgIFtjb25maWddPVwibG9naW5QYWdlQ29uZmlnLnJpZ2h0Q2FyZENvbmZpZ1wiXG4gICAgPlxuICAgICAgPHB0LWxvZ2luLWNhcmRcbiAgICAgICAgKm5nSWY9XCJsb2dpblBhZ2VDb25maWcucG9zaXRpb24gPT09ICdyaWdodCdcIlxuICAgICAgICBbbG9naW5QYWdlQ29uZmlnXT1cImxvZ2luUGFnZUNvbmZpZ1wiXG4gICAgICAgIChsb2dpblN1Ym1pdCk9XCJvbkxvZ2luU3VibWl0KCRldmVudClcIlxuICAgICAgPjwvcHQtbG9naW4tY2FyZD5cbiAgICA8L3B0LWNhcmQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -5,6 +5,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
5
  import { PTTextInputModule } from '../pt-text-input/pt-text-input.module';
6
6
  import { PTCardModule } from '../pt-card/pt-card.module';
7
7
  import { PTButtonModule } from '../pt-button';
8
+ import { PTLoginCardComponent } from './pt-login-card/pt-login-card.component';
8
9
  import * as i0 from "@angular/core";
9
10
  export class PTLoginPageModule {
10
11
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -13,13 +14,15 @@ export class PTLoginPageModule {
13
14
  ReactiveFormsModule,
14
15
  PTTextInputModule,
15
16
  PTCardModule,
16
- PTButtonModule], exports: [PTLoginPageComponent] }); }
17
+ PTButtonModule,
18
+ PTLoginCardComponent], exports: [PTLoginPageComponent] }); }
17
19
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageModule, imports: [CommonModule,
18
20
  FormsModule,
19
21
  ReactiveFormsModule,
20
22
  PTTextInputModule,
21
23
  PTCardModule,
22
- PTButtonModule] }); }
24
+ PTButtonModule,
25
+ PTLoginCardComponent] }); }
23
26
  }
24
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTLoginPageModule, decorators: [{
25
28
  type: NgModule,
@@ -32,8 +35,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
32
35
  PTTextInputModule,
33
36
  PTCardModule,
34
37
  PTButtonModule,
38
+ PTLoginCardComponent,
35
39
  ],
36
40
  exports: [PTLoginPageComponent],
37
41
  }]
38
42
  }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tcGFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQWM5QyxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFYYixvQkFBb0IsYUFFakMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixjQUFjLGFBRU4sb0JBQW9CO2dIQUVuQixpQkFBaUIsWUFUMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixjQUFjOzs0RkFJTCxpQkFBaUI7a0JBWjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFBUTG9naW5QYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9wdC1sb2dpbi1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFBUVGV4dElucHV0TW9kdWxlIH0gZnJvbSAnLi4vcHQtdGV4dC1pbnB1dC9wdC10ZXh0LWlucHV0Lm1vZHVsZSc7XG5pbXBvcnQgeyBQVENhcmRNb2R1bGUgfSBmcm9tICcuLi9wdC1jYXJkL3B0LWNhcmQubW9kdWxlJztcbmltcG9ydCB7IFBUQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vcHQtYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUFRMb2dpblBhZ2VDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgUFRUZXh0SW5wdXRNb2R1bGUsXG4gICAgUFRDYXJkTW9kdWxlLFxuICAgIFBUQnV0dG9uTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbUFRMb2dpblBhZ2VDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBQVExvZ2luUGFnZU1vZHVsZSB7fVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbG9naW4tcGFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LWxvZ2luLXBhZ2UvcHQtbG9naW4tcGFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQWUvRSxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFaYixvQkFBb0IsYUFFakMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixjQUFjO1lBQ2Qsb0JBQW9CLGFBRVosb0JBQW9CO2dIQUVuQixpQkFBaUIsWUFWMUIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLFlBQVk7WUFDWixjQUFjO1lBQ2Qsb0JBQW9COzs0RkFJWCxpQkFBaUI7a0JBYjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3BDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUFRMb2dpblBhZ2VDb21wb25lbnQgfSBmcm9tICcuL3B0LWxvZ2luLXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUFRUZXh0SW5wdXRNb2R1bGUgfSBmcm9tICcuLi9wdC10ZXh0LWlucHV0L3B0LXRleHQtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IFBUQ2FyZE1vZHVsZSB9IGZyb20gJy4uL3B0LWNhcmQvcHQtY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgUFRCdXR0b25Nb2R1bGUgfSBmcm9tICcuLi9wdC1idXR0b24nO1xuaW1wb3J0IHsgUFRMb2dpbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL3B0LWxvZ2luLWNhcmQvcHQtbG9naW4tY2FyZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtQVExvZ2luUGFnZUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBQVFRleHRJbnB1dE1vZHVsZSxcbiAgICBQVENhcmRNb2R1bGUsXG4gICAgUFRCdXR0b25Nb2R1bGUsXG4gICAgUFRMb2dpbkNhcmRDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtQVExvZ2luUGFnZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFBUTG9naW5QYWdlTW9kdWxlIHt9XG4iXX0=