@annalib/anna-cognito-lib 2.3.21 → 2.3.22
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/esm2022/lib/components/anna-login/anna-login.component.mjs +18 -19
- package/esm2022/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.mjs +8 -7
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +27 -28
- package/esm2022/lib/components/password-matching/password-matching.component.mjs +21 -23
- package/esm2022/lib/components/powered-by-logo-template/powered-by-logo-template.component.mjs +7 -5
- package/esm2022/lib/components/set-new-password/set-new-password.component.mjs +15 -16
- package/esm2022/lib/components/sso-login/sso-login.component.mjs +10 -10
- package/esm2022/lib/components/surewaves-year-logo/surewaves-year-logo.component.mjs +5 -4
- package/esm2022/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.mjs +23 -23
- package/esm2022/lib/components/version-and-term-policy/version-and-term-policy.component.mjs +5 -4
- package/esm2022/lib/config/acl-service.token.mjs +1 -1
- package/esm2022/lib/config/auth-service.token.mjs +3 -3
- package/esm2022/lib/config/config-service.token.mjs +3 -3
- package/esm2022/lib/config/sso-login-service.token.mjs +3 -3
- package/esm2022/lib/constants/loginConstant.mjs +49 -53
- package/esm2022/lib/directives/spinner-button/index.mjs +2 -2
- package/esm2022/lib/directives/spinner-button/spinner-button.directive.mjs +18 -15
- package/esm2022/lib/models/auth.model.mjs +2 -2
- package/esm2022/lib/services/acl.service.mjs +6 -6
- package/esm2022/lib/services/auth.service.mjs +61 -62
- package/esm2022/lib/services/config.service.mjs +5 -5
- package/esm2022/lib/services/sso-login.service.mjs +5 -5
- package/esm2022/public-api.mjs +25 -25
- package/fesm2022/annalib-anna-cognito-lib.mjs +248 -250
- package/fesm2022/annalib-anna-cognito-lib.mjs.map +1 -1
- package/lib/components/anna-login/anna-login.component.d.ts +6 -7
- package/lib/components/cognito-and-sso-login-container/cognito-and-sso-login-container.component.d.ts +4 -2
- package/lib/components/forgot-password/forgot-password.component.d.ts +12 -12
- package/lib/components/password-matching/password-matching.component.d.ts +4 -3
- package/lib/components/powered-by-logo-template/powered-by-logo-template.component.d.ts +4 -1
- package/lib/components/set-new-password/set-new-password.component.d.ts +10 -10
- package/lib/components/sso-login/sso-login.component.d.ts +4 -5
- package/lib/components/surewaves-year-logo/surewaves-year-logo.component.d.ts +2 -1
- package/lib/components/verify-and-set-new-password/verify-and-set-new-password.component.d.ts +11 -11
- package/lib/components/version-and-term-policy/version-and-term-policy.component.d.ts +4 -2
- package/lib/config/acl-service.token.d.ts +2 -2
- package/lib/config/auth-service.token.d.ts +4 -4
- package/lib/config/config-service.token.d.ts +1 -1
- package/lib/config/sso-login-service.token.d.ts +2 -2
- package/lib/directives/spinner-button/index.d.ts +1 -1
- package/lib/directives/spinner-button/spinner-button.directive.d.ts +5 -4
- package/lib/services/acl.service.d.ts +1 -1
- package/lib/services/auth.service.d.ts +8 -7
- package/lib/services/config.service.d.ts +1 -1
- package/lib/services/sso-login.service.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +20 -20
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
1
|
// Angular import statements
|
|
3
|
-
import {
|
|
4
|
-
import { Component
|
|
5
|
-
import { FormBuilder, FormsModule, ReactiveFormsModule,
|
|
2
|
+
import { EventEmitter, Inject, Input, Output } from '@angular/core';
|
|
3
|
+
import { Component } from '@angular/core';
|
|
4
|
+
import { FormBuilder, Validators, FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
6
5
|
// Third party import statements
|
|
7
|
-
import { debounceTime } from
|
|
6
|
+
import { debounceTime } from 'rxjs/operators';
|
|
8
7
|
// User defined import statements
|
|
9
|
-
import { LoginConstant } from
|
|
8
|
+
import { LoginConstant } from '../../constants/loginConstant';
|
|
9
|
+
import { NgIf, NgClass } from '@angular/common';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@angular/forms";
|
|
12
12
|
export class PasswordMatchingComponent {
|
|
@@ -21,24 +21,22 @@ export class PasswordMatchingComponent {
|
|
|
21
21
|
this.formValueChanged();
|
|
22
22
|
}
|
|
23
23
|
formValueChanged() {
|
|
24
|
-
const password = this.passwordForm.get(
|
|
25
|
-
const confirmPassword = this.passwordForm.get(
|
|
26
|
-
|
|
24
|
+
const password = this.passwordForm.get('password');
|
|
25
|
+
const confirmPassword = this.passwordForm.get('confirmPassword');
|
|
26
|
+
password &&
|
|
27
27
|
password.valueChanges.subscribe(() => {
|
|
28
|
-
|
|
28
|
+
password &&
|
|
29
29
|
password.setValidators([
|
|
30
30
|
Validators.required,
|
|
31
|
-
this.regexValidator(
|
|
32
|
-
this.regexValidator(
|
|
33
|
-
this.regexValidator(
|
|
34
|
-
this.regexValidator(
|
|
35
|
-
this.regexValidator(
|
|
31
|
+
this.regexValidator(new RegExp('.{8,}'), { minLength: true }),
|
|
32
|
+
this.regexValidator(new RegExp('[a-z]'), { lowercase: true }),
|
|
33
|
+
this.regexValidator(new RegExp('[A-Z]'), { uppercase: true }),
|
|
34
|
+
this.regexValidator(new RegExp('[0-9]'), { number: true }),
|
|
35
|
+
this.regexValidator(new RegExp('[^a-zA-Z0-9]'), { specialCharacter: true }),
|
|
36
36
|
]);
|
|
37
|
-
}
|
|
38
37
|
password.updateValueAndValidity({ emitEvent: false });
|
|
39
38
|
this.onPasswordChange();
|
|
40
39
|
});
|
|
41
|
-
}
|
|
42
40
|
if (confirmPassword) {
|
|
43
41
|
confirmPassword.valueChanges.pipe(debounceTime(300)).subscribe(() => {
|
|
44
42
|
confirmPassword.setValidators([Validators.required]);
|
|
@@ -48,16 +46,16 @@ export class PasswordMatchingComponent {
|
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
48
|
onPasswordChange() {
|
|
51
|
-
|
|
49
|
+
let result = {
|
|
52
50
|
value: this.passwordForm.value.password,
|
|
53
|
-
status: this.passwordForm.controls
|
|
51
|
+
status: this.passwordForm.controls['password'].status,
|
|
54
52
|
};
|
|
55
53
|
this.passwordChange.emit(result);
|
|
56
54
|
}
|
|
57
55
|
onConfirmPasswordChange() {
|
|
58
|
-
|
|
56
|
+
let result = {
|
|
59
57
|
value: this.passwordForm.value.confirmPassword,
|
|
60
|
-
status: this.passwordForm.controls
|
|
58
|
+
status: this.passwordForm.controls['confirmPassword'].status,
|
|
61
59
|
};
|
|
62
60
|
this.confirmPasswordChange.emit(result);
|
|
63
61
|
}
|
|
@@ -80,7 +78,7 @@ export class PasswordMatchingComponent {
|
|
|
80
78
|
}
|
|
81
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PasswordMatchingComponent, decorators: [{
|
|
82
80
|
type: Component,
|
|
83
|
-
args: [{ selector:
|
|
81
|
+
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"] }]
|
|
84
82
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder, decorators: [{
|
|
85
83
|
type: Inject,
|
|
86
84
|
args: [FormBuilder]
|
|
@@ -91,4 +89,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
91
89
|
}], passwordNotMatching: [{
|
|
92
90
|
type: Input
|
|
93
91
|
}] } });
|
|
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
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5uYS1jb2duaXRvLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmQtbWF0Y2hpbmcvcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBRUgsV0FBVyxFQUlYLFVBQVUsRUFDVixXQUFXLEVBQ1gsbUJBQW1CLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsZ0NBQWdDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxpQ0FBaUM7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVNoRCxNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQXlDLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBTjlDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNwQywwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBS00sQ0FBQztJQUU1RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxhQUFhLENBQUM7UUFD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T0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCwrQkFBK0I7SUFDL0IsY0FBYyxDQUFDLEtBQWEsRUFBRSxLQUF1QjtRQUNqRCxPQUFPLENBQUMsT0FBd0IsRUFBOEIsRUFBRTtZQUM1RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBUSxDQUFDO1FBQ3pDLENBQUMsQ0FBQztJQUNOLENBQUM7K0dBekVRLHlCQUF5QixrQkFPZCxXQUFXO21HQVB0Qix5QkFBeUIscVBDNUJ0QyxnbExBeUlBLGs2Q0QvR2MsV0FBVywycEJBQUUsbUJBQW1CLGdWQUFFLElBQUksNkZBQUUsT0FBTzs7NEZBRWhELHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDSSxvQ0FBb0MsY0FHbEMsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7OzBCQVM3QyxNQUFNOzJCQUFDLFdBQVc7NENBTnJCLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0cscUJBQXFCO3NCQUE5QixNQUFNO2dCQUVFLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXIgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIEFic3RyYWN0Q29udHJvbCxcclxuICAgIEZvcm1CdWlsZGVyLFxyXG4gICAgRm9ybUdyb3VwLFxyXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcclxuICAgIFZhbGlkYXRvckZuLFxyXG4gICAgVmFsaWRhdG9ycyxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vLyBUaGlyZCBwYXJ0eSBpbXBvcnQgc3RhdGVtZW50c1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG4vLyBVc2VyIGRlZmluZWQgaW1wb3J0IHN0YXRlbWVudHNcclxuaW1wb3J0IHsgTG9naW5Db25zdGFudCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9sb2dpbkNvbnN0YW50JztcclxuaW1wb3J0IHsgTmdJZiwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYW5uYS1jb2duaXRvLWxpYi1wYXNzd29yZC1tYXRjaGluZycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFzc3dvcmQtbWF0Y2hpbmcuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE5nSWYsIE5nQ2xhc3NdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNYXRjaGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAT3V0cHV0KCkgcGFzc3dvcmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY29uZmlybVBhc3N3b3JkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHBhc3N3b3JkTm90TWF0Y2hpbmc6IGJvb2xlYW47XHJcbiAgICBwYXNzd29yZEZvcm06IEZvcm1Hcm91cDtcclxuICAgIGNvbnN0YW50czogdHlwZW9mIExvZ2luQ29uc3RhbnQ7XHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEZvcm1CdWlsZGVyKSBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IExvZ2luQ29uc3RhbnQ7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xyXG4gICAgICAgIHRoaXMuZm9ybVZhbHVlQ2hhbmdlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1WYWx1ZUNoYW5nZWQoKSB7XHJcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSB0aGlzLnBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk7XHJcbiAgICAgICAgY29uc3QgY29uZmlybVBhc3N3b3JkID0gdGhpcy5wYXNzd29yZEZvcm0uZ2V0KCdjb25maXJtUGFzc3dvcmQnKTtcclxuXHJcbiAgICAgICAgcGFzc3dvcmQgJiZcclxuICAgICAgICAgICAgcGFzc3dvcmQudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKG5ldyBSZWdFeHAoJy57OCx9JyksIHsgbWluTGVuZ3RoOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKG5ldyBSZWdFeHAoJ1thLXpdJyksIHsgbG93ZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKG5ldyBSZWdFeHAoJ1tBLVpdJyksIHsgdXBwZXJjYXNlOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKG5ldyBSZWdFeHAoJ1swLTldJyksIHsgbnVtYmVyOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2V4VmFsaWRhdG9yKG5ldyBSZWdFeHAoJ1teYS16QS1aMC05XScpLCB7IHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICBwYXNzd29yZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25QYXNzd29yZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGNvbmZpcm1QYXNzd29yZCkge1xyXG4gICAgICAgICAgICBjb25maXJtUGFzc3dvcmQudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25maXJtUGFzc3dvcmQuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG4gICAgICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkNvbmZpcm1QYXNzd29yZENoYW5nZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25QYXNzd29yZENoYW5nZSgpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5wYXNzd29yZEZvcm0udmFsdWUucGFzc3dvcmQsXHJcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy5wYXNzd29yZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uc3RhdHVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5wYXNzd29yZENoYW5nZS5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Db25maXJtUGFzc3dvcmRDaGFuZ2UoKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMucGFzc3dvcmRGb3JtLnZhbHVlLmNvbmZpcm1QYXNzd29yZCxcclxuICAgICAgICAgICAgc3RhdHVzOiB0aGlzLnBhc3N3b3JkRm9ybS5jb250cm9sc1snY29uZmlybVBhc3N3b3JkJ10uc3RhdHVzLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5jb25maXJtUGFzc3dvcmRDaGFuZ2UuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZUdyb3VwKCkge1xyXG4gICAgICAgIHRoaXMucGFzc3dvcmRGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIHBhc3N3b3JkOiBbbnVsbF0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZDogW251bGxdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhc3N3b3JkRm9ybTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUT0RPOiBjaGVjayB0aGUgcmV0dXJuIGFnYWluXHJcbiAgICByZWdleFZhbGlkYXRvcihyZWdleDogUmVnRXhwLCBlcnJvcjogVmFsaWRhdGlvbkVycm9ycyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gcmVnZXgudGVzdChjb250cm9sLnZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuICh2YWxpZCA/IG51bGwgOiBlcnJvcikgYXMgYW55O1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJwYXNzd29yZEZvcm1cIj5cclxuICAgIDxkaXZcclxuICAgICAgICBpZD1cImFsZXJ0LWRpdlwiXHJcbiAgICAgICAgKm5nSWY9XCJwYXNzd29yZE5vdE1hdGNoaW5nXCJcclxuICAgID5cclxuICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXZcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnJlcG9ydDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8cD57eyBjb25zdGFudHMucGFzc3dvcmROb3RNYXRjaGluZyB9fTwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInBhc3N3b3JkLXBvbGljaWVzXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5kaXJ0eVwiPlxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgIDxiPnt7IGNvbnN0YW50cy5wYXNzd29yZE11c3RDb250YWluIH19IDwvYj5cclxuICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICA8cD57eyBjb25zdGFudHMubWluaW11bUNoYXJhY3RlciB9fTwvcD5cclxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLm9uZVVwcGVyY2FzZSB9fTwvcD5cclxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLm9uZUxvd2VyY2FzZSB9fTwvcD5cclxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLm9uZU51bWJlciB9fTwvcD5cclxuICAgICAgICAgICAgPHA+e3sgY29uc3RhbnRzLnNwZWNpYWxDaGFyYWN0ZXIgfX08L3A+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5kaXJ0eVwiPlxyXG4gICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgIDxiPnt7IGNvbnN0YW50cy5wYXNzd29yZE11c3RDb250YWluIH19PC9iPlxyXG4gICAgICAgICAgICA8L3A+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdtaW5MZW5ndGgnKSA/ICdlcnJvci1jb2xvcicgOiAnc3VjY2Vzcy1jb2xvcidcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdi1tc2dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbWluTGVuZ3RoJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbWluTGVuZ3RoJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dFwiPnt7IGNvbnN0YW50cy5taW5pbXVtQ2hhcmFjdGVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3VwcGVyY2FzZScpID8gJ2Vycm9yLWNvbG9yJyA6ICdzdWNjZXNzLWNvbG9yJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImljb24tZGl2LW1zZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCd1cHBlcmNhc2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCd1cHBlcmNhc2UnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjbGVcclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0XCI+e3sgY29uc3RhbnRzLm9uZVVwcGVyY2FzZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdsb3dlcmNhc2UnKSA/ICdlcnJvci1jb2xvcicgOiAnc3VjY2Vzcy1jb2xvcidcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJpY29uLWRpdi1tc2dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbG93ZXJjYXNlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbG93ZXJjYXNlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY2xlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dFwiPnt7IGNvbnN0YW50cy5vbmVMb3dlcmNhc2UgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignbnVtYmVyJykgPyAnZXJyb3ItY29sb3InIDogJ3N1Y2Nlc3MtY29sb3InXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaWNvbi1kaXYtbXNnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ251bWJlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbFxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcGFzc3dvcmRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ251bWJlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmNsZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLXRleHRcIj57eyBjb25zdGFudHMub25lTnVtYmVyIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdzcGVjaWFsQ2hhcmFjdGVyJykgPyAnZXJyb3ItY29sb3InIDogJ3N1Y2Nlc3MtY29sb3InXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImljb24tZGl2LW1zZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhc3N3b3JkRm9ybS5nZXQoJ3Bhc3N3b3JkJyk/Lmhhc0Vycm9yKCdzcGVjaWFsQ2hhcmFjdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsXHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwYXNzd29yZEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcignc3BlY2lhbENoYXJhY3RlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmNsZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFuLXRleHRcIj57eyBjb25zdGFudHMuc3BlY2lhbENoYXJhY3RlciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgIHRhYmluZGV4PVwiMlwiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJjb25zdGFudHMucGFzc3dvcmRcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lucHV0LWludmFsaWQnOiBwYXNzd29yZE5vdE1hdGNoaW5nIH1cIlxyXG4gICAgLz5cclxuXHJcbiAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgIHRhYmluZGV4PVwiM1wiXHJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29uZmlybVBhc3N3b3JkXCJcclxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uc3RhbnRzLmNvbmZpcm1QYXNzd29yZFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnaW5wdXQtaW52YWxpZCc6IHBhc3N3b3JkTm90TWF0Y2hpbmcgfVwiXHJcbiAgICAvPlxyXG48L2Zvcm0+XHJcbiJdfQ==
|