tango-app-ui-auth 3.0.1 → 3.0.3

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,104 +1,195 @@
1
1
  import { Component } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
2
+ import { Validators } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../services/conversion.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/forms";
7
- // import { ICreateAccount, inits } from 'src/app/modules/wizards/create-account.helper';
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "../../../../services/auth.service";
7
+ import * as i4 from "@angular/common";
8
8
  export class Step1Component {
9
9
  setterservice;
10
- colors = ['#F00', '#F90', '#FF0', '#9F0', '#0F0'];
11
- colorCode = ['', '', '', '', ''];
12
- formsCount = 3;
13
- // account$: BehaviorSubject<ICreateAccount> =
14
- // new BehaviorSubject<ICreateAccount>(inits);
15
- currentStep$ = new BehaviorSubject(1);
16
- isCurrentFormValid$ = new BehaviorSubject(false);
17
- constructor(setterservice) {
10
+ fb;
11
+ authService;
12
+ cd;
13
+ aboutForm;
14
+ passwordStrength = '0%';
15
+ confirmPasswordStrength = '0%';
16
+ isClientNameTaken;
17
+ isEmailTaken;
18
+ isMobileTaken;
19
+ subscriptions = [];
20
+ constructor(setterservice, fb, authService, cd) {
18
21
  this.setterservice = setterservice;
22
+ this.fb = fb;
23
+ this.authService = authService;
24
+ this.cd = cd;
25
+ this.initForm();
26
+ this.subscriptions.push(this.authService.aboutFormData.subscribe((data) => {
27
+ if (data) {
28
+ this.aboutForm.patchValue({
29
+ clientName: data.clientName,
30
+ firstName: data.firstName,
31
+ lastName: data.lastName,
32
+ corporateEmail: data.corporateEmail,
33
+ countryCode: data.countryCode,
34
+ mobileNumber: data.mobileNumber,
35
+ password: data.password,
36
+ confirmPassword: data.confirmPassword
37
+ });
38
+ this.reinitializePasswordValidation(data.password, data.confirmPassword);
39
+ }
40
+ }));
41
+ }
42
+ ngOnDestroy() {
43
+ this.subscriptions.forEach((subscription) => { subscription.unsubscribe(); });
44
+ }
45
+ initForm() {
46
+ this.aboutForm = this.fb.group({
47
+ clientName: ['', Validators.compose([
48
+ Validators.required,
49
+ Validators.minLength(3),
50
+ Validators.maxLength(100),
51
+ ]),
52
+ ],
53
+ firstName: ['', Validators.compose([
54
+ Validators.required,
55
+ Validators.minLength(3),
56
+ Validators.maxLength(50),
57
+ ]),
58
+ ],
59
+ lastName: ['', Validators.compose([
60
+ // Validators.required,
61
+ Validators.minLength(3),
62
+ Validators.maxLength(50),
63
+ ]),
64
+ ],
65
+ corporateEmail: ['', Validators.compose([
66
+ Validators.required,
67
+ Validators.pattern("^[a-zA-Z0-9]+([.-_]?[a-zA-Z0-9]+)*@[a-zA-Z0-9]+([.-_]?[a-zA-Z]+)*[.]{1}[a-zA-Z]{2,}$"),
68
+ Validators.minLength(3),
69
+ Validators.maxLength(100),
70
+ ]),
71
+ ],
72
+ countryCode: ['+91', Validators.compose([
73
+ Validators.required
74
+ ]),
75
+ ],
76
+ mobileNumber: ['', Validators.compose([
77
+ Validators.required,
78
+ Validators.pattern("^[5-9][0-9]{9}$")
79
+ ]),
80
+ ],
81
+ password: ['', Validators.compose([
82
+ Validators.required,
83
+ Validators.minLength(8),
84
+ Validators.maxLength(320),
85
+ Validators.pattern(/^(?=.*[A-Z])(?=.*\d).{8,}$/),
86
+ ]),
87
+ ],
88
+ confirmPassword: ['', Validators.compose([
89
+ Validators.required,
90
+ Validators.minLength(8),
91
+ Validators.maxLength(320),
92
+ Validators.pattern(/^(?=.*[A-Z])(?=.*\d).{8,}$/),
93
+ this.validateAreEqual.bind(this),
94
+ ]),
95
+ ,
96
+ ],
97
+ });
98
+ }
99
+ validateAreEqual(fieldControl) {
100
+ return fieldControl?.value === this.aboutForm?.get('password').value ? null : {
101
+ NotEqual: true,
102
+ };
103
+ }
104
+ async checkPasswordStrength(val) {
105
+ const numbers = new Promise((resolve, reject) => {
106
+ if (/[0-9]/g.test(val)) {
107
+ resolve({ mesage: 'numbers passed' });
108
+ }
109
+ else {
110
+ reject({ mesage: 'numbers failed' });
111
+ }
112
+ });
113
+ const capital = new Promise((resolve, reject) => {
114
+ if (/[a-z]/g.test(val)) {
115
+ resolve({ mesage: 'capital passed' });
116
+ }
117
+ else {
118
+ reject({ mesage: 'capital failed' });
119
+ }
120
+ });
121
+ const small = new Promise((resolve, reject) => {
122
+ if (/[A-Z]/g.test(val)) {
123
+ resolve({ mesage: 'small passed' });
124
+ }
125
+ else {
126
+ reject({ mesage: 'small failed' });
127
+ }
128
+ });
129
+ const length = new Promise((resolve, reject) => {
130
+ if (val.length > 7) {
131
+ resolve({ mesage: 'length passed' });
132
+ }
133
+ else {
134
+ reject({ mesage: 'length failed' });
135
+ }
136
+ });
137
+ const percentage = await Promise.allSettled([numbers, capital, small, length])
138
+ .then((res) => {
139
+ var percentage = 0;
140
+ res.forEach((element) => {
141
+ if (element.status === 'fulfilled') {
142
+ percentage += 25;
143
+ }
144
+ });
145
+ return percentage;
146
+ });
147
+ return percentage + '%';
148
+ }
149
+ async onPasswordChange(event) {
150
+ this.passwordStrength = await this.checkPasswordStrength(event.target.value);
151
+ }
152
+ async onConfirmPasswordChange(event) {
153
+ this.confirmPasswordStrength = await this.checkPasswordStrength(event.target.value);
154
+ }
155
+ async reinitializePasswordValidation(password, confirmPassword) {
156
+ this.passwordStrength = await this.checkPasswordStrength(password);
157
+ this.confirmPasswordStrength = await this.checkPasswordStrength(confirmPassword);
158
+ this.cd.detectChanges();
159
+ }
160
+ onClientNameBlur() {
161
+ this.authService.isClientnameTaken(this.aboutForm?.get('clientName')?.value).subscribe({
162
+ next: (res) => {
163
+ this.isClientNameTaken = res.data.isExists;
164
+ this.cd.detectChanges();
165
+ }
166
+ });
167
+ }
168
+ onEmailBlur() {
169
+ this.authService.isEmailTaken(this.aboutForm?.get('corporateEmail')?.value).subscribe({
170
+ next: (res) => {
171
+ this.isEmailTaken = res.data.isExists;
172
+ this.cd.detectChanges();
173
+ }
174
+ });
175
+ }
176
+ onMobileNumberBlur() {
177
+ this.authService.isMobileTaken(this.aboutForm?.get('mobileNumber')?.value).subscribe({
178
+ next: (res) => {
179
+ this.isMobileTaken = res.data.isExists;
180
+ this.cd.detectChanges();
181
+ }
182
+ });
19
183
  }
20
- // @ViewChild('telInput') telInput: { nativeElement: any; };
21
- // @Input() phoneNumber = '';
22
- // @Input() cssClass = 'form-control';
23
- // @Output() phoneNumberChange = new EventEmitter<string>();
24
- // iti: any;
25
- // isInvalid = false;
26
- // selectedCountryCode: any;
27
- // ngAfterViewInit(){
28
- // // const input = document.querySelector("#" + this.inputId);
29
- // this.iti = intlTelInput(this.telInput.nativeElement, {
30
- // utilsScript: "assets/scripts/utils.js",
31
- // // initialCountry: "auto",
32
- // nationalMode: false,
33
- // formatOnDisplay: true
34
- // });
35
- // this.selectedCountryCode = this.iti.getSelectedCountryData().dialCode;
36
- // }
37
- // ngOnChanges(changes: SimpleChanges) {
38
- // }
39
- // ngOnDestroy(){
40
- // this.iti.destroy();
41
- // }
42
- // onFocus = () =>{
43
- // if(this.phoneNumber == undefined || this.phoneNumber == ""){
44
- // var getCode = this.iti.getSelectedCountryData().dialCode;
45
- // this.phoneNumber = "+" + getCode;
46
- // }
47
- // }
48
- // onBlur = ()=>{
49
- // this.isInvalid = false;
50
- // if(this.phoneNumber != undefined && this.phoneNumber.trim()){
51
- // if(this.iti.isValidNumber()){
52
- // this.isInvalid = false;
53
- // }
54
- // else{
55
- // this.isInvalid = true;
56
- // }
57
- // }
58
- // }
59
- // onInputKeyPress = (event: KeyboardEvent) =>{
60
- // const allowedChars = /[0-9\+\-\ ]/;
61
- // const allowedCtrlChars = /[axcv]/; // Allows copy-pasting
62
- // const allowedOtherKeys = [
63
- // 'ArrowLeft',
64
- // 'ArrowUp',
65
- // 'ArrowRight',
66
- // 'ArrowDown',
67
- // 'Home',
68
- // 'End',
69
- // 'Insert',
70
- // 'Delete',
71
- // 'Backspace',
72
- // ];
73
- // if (
74
- // !allowedChars.test(event.key) &&
75
- // !(event.ctrlKey && allowedCtrlChars.test(event.key)) &&
76
- // !allowedOtherKeys.includes(event.key)
77
- // ) {
78
- // event.preventDefault();
79
- // }
80
- // }
81
- // formatIntlTelInput() {
82
- // if (typeof intlTelInputUtils !== 'undefined') { // utils are lazy loaded, so must check
83
- // var currentText = this.iti.getNumber(intlTelInputUtils.numberFormat.E164);
84
- // if (typeof currentText === 'string') { // sometimes the currentText is an object :)
85
- // this.iti.setNumber(currentText); // will autoformat because of formatOnDisplay=true
86
- // }
87
- // }
88
- // }
89
- // onPhoneNumberChange = () =>{
90
- // this.selectedCountryCode = this.iti.getSelectedCountryData().dialCode;
91
- // // this.formatIntlTelInput();
92
- // this.phoneNumberChange.emit(this.phoneNumber);
93
- // }
94
184
  nextStep() {
185
+ this.authService.aboutFormData.next(this.aboutForm.value);
95
186
  this.setterservice.completeStepper({ step: 2 });
96
187
  }
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: Step1Component, deps: [{ token: i1.ConversionService }], target: i0.ɵɵFactoryTarget.Component });
98
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: Step1Component, selector: "lib-step1", ngImport: i0, template: "<div class=\" me-12 my-2 h-100\">\r\n <!-- <div>\r\n <img class=\"bubble\" src=\"../../../../../../../assets/Icons/Signup-bubble-icon.svg\"\r\n alt=\"\" srcset=\"\"> -->\r\n <div class=\"mobileshow\">\r\n <h3 class=\"title1 pt-4\">AI co-pilot to boost your sales conversion</h3>\r\n <p class=\"subtext pb-4\">Join the leading global brands in understanding footfall and shopper behavior to boost\r\n sales.</p>\r\n\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Lenskart-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/nykaa-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/giva-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Duroflex-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/loccitone-logo.svg\" alt=\"\">\r\n </div>\r\n <div class=\"me-20\">\r\n <h4 style=\"font-size: 20px; \r\n font-weight: 500;\r\n color: #7E8299;\">30 +</h4>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-12\">\r\n <h6 class=\"card-label mb-7\">Create an Account</h6>\r\n <form novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"Brand\" class=\"form-label\">Brand Name *</label>\r\n <input type=\"type\" class=\"form-control\" id=\"Brand\">\r\n </div>\r\n </div>\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"firstname\" class=\"form-label\">First Name *</label>\r\n <input type=\"type\" class=\"form-control\" id=\"firstname\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"lastname\" class=\"form-label\">Last Name</label>\r\n <input type=\"type\" class=\"form-control\" id=\"lastname\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Corporate Email *</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"phonenumber\" class=\"form-label\">Phone number *</label>\r\n <!-- <input type=\"tel\"\r\n class=\"{{isInvalid ? 'text-danger': ''}}\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keypress)=\"onInputKeyPress($event)\"\r\n \r\n (ngModelChange)=\"onPhoneNumberChange()\"\r\n #telInput> -->\r\n <!-- [(ngModel)]=\"phoneNumber\" -->\r\n <input type=\"type\" class=\"form-control\" id=\"phonenumber\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"password\" class=\"form-label\">Password *</label>\r\n <input type=\"password\" class=\"form-control\" id=\"password\" autocomplete=\"new-password\">\r\n <ul class=\"px-0 mt-3\">\r\n <li class=\"point\" [style.background-color]=\"colorCode[0]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[1]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[2]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[3]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[4]\"> </li>\r\n </ul>\r\n <div class=\"mt-2\">\r\n <small>Use 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"confirm\" class=\"form-label\">Confirm Password *</label>\r\n <input type=\"password\" class=\"form-control\" id=\"confirm\">\r\n <ul class=\"px-0 mt-3\">\r\n <li class=\"point\" [style.background-color]=\"colorCode[0]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[1]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[2]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[3]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[4]\"> </li>\r\n </ul>\r\n <div class=\"mt-2\">\r\n <small>the password most contain atleast one capital letter and number.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <ng-container *ngIf=\"currentStep$.value == 1\"> -->\r\n <div class=\"text-end\">\r\n <button type=\"button\" class=\"btn btn-lg btn-primary\" (click)=\"nextStep()\">\r\n <span class=\"indicator-label px-5\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount - 1\">\r\n Next {{ \" \" }} <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount - 1\">\r\n Submit\r\n </ng-container>\r\n </span>\r\n </button>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n\r\n </div>\r\n<!-- </div> -->\r\n</div>", styles: [".logo{width:16%;height:73px!important;margin-top:150px;margin-left:44%}.heading{margin-left:41%}.title1{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:24px!important;font-weight:600!important;line-height:32px}.subtext{color:var(--Gray-400, #98A2B3)!important;font-family:Inter;font-size:18px!important;font-weight:500!important;line-height:28px}.linearGradient{background:-webkit-linear-gradient(90.11deg,#00A3FF 67.36%,#8453FC 100.09%,#8950FC 101.45%),-webkit-linear-gradient(90.11deg,#00A3FF 67.36%,#8950FC 101.45%),-webkit-linear-gradient(0deg,#464E5F,#464E5F);-webkit-text-fill-color:transparent;filter:drop-shadow(2px 4px #e5dddd)}.submit{padding-bottom:2%}.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:3px;width:85px}.form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1rem;font-weight:500;line-height:1}input,button,select,optgroup,textarea{margin:5px 0 15px;font-family:Inter}.form-control{display:block;font-size:1.1rem;font-weight:600;font-family:Inter;line-height:1.5;color:#181c32;-webkit-appearance:none;appearance:none;border-radius:.475rem;box-shadow:inset 0 1px 2px #00000014;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{font-weight:600;font-family:Inter}.card-label{font-weight:600;font-family:Inter;font-size:20px}.me-n2{margin-right:3.5rem!important}.font{font-family:Inter!important}.phone{flex:0 0 auto;width:62.666667%}@media (min-width: 1024px) and (max-width: 1299px){.title1{font-family:Inter;text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}@media (min-width: 1300px) and (max-width: 1400px){.title1{font-family:Inter;text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}small{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:10px!important;font-style:normal;font-weight:400!important;line-height:normal;text-transform:capitalize}.iti__flag{background-image:url(https://raw.githubusercontent.com/jackocnr/intl-tel-input/master/build/img/flags.png)}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){.iti__flag{background-image:url(https://raw.githubusercontent.com/jackocnr/intl-tel-input/master/build/img/flags@2x.png)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: Step1Component, deps: [{ token: i1.ConversionService }, { token: i2.FormBuilder }, { token: i3.AuthService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
189
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.8", type: Step1Component, selector: "lib-step1", ngImport: i0, template: "<div class=\"card mt-10 mx-15\">\r\n <div class=\"h-100 px-10 mx-5 my-7\">\r\n <!-- <div>\r\n <img class=\"bubble\" src=\"../../../../../../../assets/Icons/Signup-bubble-icon.svg\"\r\n alt=\"\" srcset=\"\"> -->\r\n <div class=\"mobileshow\">\r\n <h3 class=\"title1 pt-4\">AI co-pilot to boost your sales conversion</h3>\r\n <p class=\"subtext pb-4\">Join the leading global brands in understanding footfall and shopper behavior to\r\n boost\r\n sales.</p>\r\n\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Lenskart-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/nykaa-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/giva-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Duroflex-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/loccitone-logo.svg\" alt=\"\">\r\n </div>\r\n <div class=\"me-20\">\r\n <h4 class=\"icon-more\">30 +</h4>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-12\">\r\n <h6 class=\"card-label mb-7\">Create an Account</h6>\r\n <form [formGroup]=\"aboutForm\" novalidate=\"novalidate\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"Brand\" class=\"form-label\">Brand Name <span class=\"alert-required\">*</span></label>\r\n <input (blur)=\"onClientNameBlur()\" (input)=\"isClientNameTaken = 0\" formControlName=\"clientName\" type=\"type\" class=\"form-control\" id=\"Brand\" \r\n [ngClass]=\"{ 'is-invalid': aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('required') }\" autocomplete=\"off\" >\r\n \r\n \r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('minlength')\">\r\n Brand name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('maxlength')\">\r\n Brand name must be maximum of 100 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('required')\">\r\n Brand name is required\r\n </small>\r\n <small \r\n *ngIf=\"isClientNameTaken\">\r\n Brand name is already taken\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"firstname\" class=\"form-label\">First Name <span class=\"alert-required\">*</span></label>\r\n <input formControlName=\"firstName\" type=\"type\" class=\"form-control\" id=\"firstname\" autocomplete=\"off\"\r\n [ngClass]=\"{ 'is-invalid': aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('required') }\">\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('minlength')\">\r\n First name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('maxlength')\">\r\n First name must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('required')\">\r\n First name is required\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"lastname\" class=\"form-label\">Last Name</label>\r\n <input formControlName=\"lastName\" type=\"type\" class=\"form-control\" id=\"lastname\" autocomplete=\"off\">\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('minlength')\">\r\n Last name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('maxlength')\">\r\n Last name must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('required')\">\r\n Last name is required\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Corporate Email <span class=\"alert-required\">*</span></label>\r\n <input (blur)=\"onEmailBlur()\" (input)=\"isEmailTaken = 0\" formControlName=\"corporateEmail\" type=\"email\" class=\"form-control\" id=\"email\" [ngClass]=\"{ 'is-invalid': aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('required') }\"\r\n autocomplete=\"off\">\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('minlength')\">\r\n Corporate email must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('maxlength')\">\r\n Corporate email must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('required')\">\r\n Corporate email is required\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('pattern')\">\r\n Enter a valid email\r\n </small>\r\n <small \r\n *ngIf=\"isEmailTaken\">\r\n Email is already taken\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n\r\n <label for=\"phonenumber\" class=\"form-label\">Phone number <span class=\"alert-required\">*</span></label>\r\n <div class=\"input-group mb-3\">\r\n <div class=\"input-group-append\">\r\n <select formControlName=\"countryCode\" class=\"form-select select-radius ms-4 me-5\" [ngClass]=\"{ 'country-is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n id=\"inputGroupSelect01\">\r\n <option class=\"mx-2\" value=\"+91\">In</option>\r\n <option class=\"mx-2\" value=\"+93\">Af</option>\r\n <option class=\"mx-2\" value=\"+355\">Al</option>\r\n </select>\r\n </div>\r\n <input [value]=\"aboutForm.get('countryCode')?.value\" type=\"text\" [ngClass]=\"{ 'code-is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n class=\"form-control border-disabled\" readonly>\r\n <input (blur)=\"onMobileNumberBlur()\" (input)=\"isMobileTaken = 0\" formControlName=\"mobileNumber\" type=\"type\" class=\"form-control border-new\" [ngClass]=\"{ 'mobile-is-invalid is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n id=\"phonenumber\" autocomplete=\"off\">\r\n </div>\r\n <small \r\n *ngIf=\"aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required')\">\r\n Phone number is required\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('pattern')\">\r\n Enter a valid phone number\r\n </small>\r\n <small \r\n *ngIf=\"isMobileTaken\">\r\n Mobile number already taken\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"password\" class=\"form-label\">Password <span class=\"alert-required\">*</span></label>\r\n <input (input)=\"onPasswordChange($event)\" formControlName=\"password\" type=\"password\" [ngClass]=\"{ 'is-invalid': aboutForm.get('password')?.touched && aboutForm.get('password')?.hasError('required') }\"\r\n class=\"form-control\" id=\"password\" autocomplete=\"new-password\">\r\n\r\n <div class=\"progressbar-wrapper mt-2\">\r\n <span [style.width]=\"passwordStrength\"\r\n [ngStyle]=\"{'background-color': passwordStrength === '0%' ? '' : (passwordStrength === '25%' ? 'red' : (passwordStrength === '50%' ? 'orange': (passwordStrength === '75%' ? 'yellow' : (passwordStrength === '100%' ? 'green' : '')))) }\"\r\n class=\"progressbar-inner\"></span>\r\n </div>\r\n <div class=\"password-note mt-2\">the password most contain atleast one capital letter and number.</div>\r\n <div>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.hasError('required') && aboutForm.get('password')?.touched\">Password is required</small>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.hasError('pattern')\">Use\r\n 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.touched && aboutForm.get('password')?.invalid\"></small>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"confirm\" class=\"form-label\">Confirm Password <span class=\"alert-required\">*</span></label>\r\n <input (input)=\"onConfirmPasswordChange($event)\" formControlName=\"confirmPassword\" type=\"password\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': aboutForm.get('confirmPassword')?.touched && aboutForm.get('confirmPassword')?.hasError('required') }\"\r\n id=\"confirm\" autocomplete=\"off\">\r\n <div class=\"progressbar-wrapper mt-2\">\r\n <span [style.width]=\"confirmPasswordStrength\"\r\n [ngStyle]=\"{'background-color': confirmPasswordStrength === '0%' ? '' : (confirmPasswordStrength === '25%' ? 'red' : (confirmPasswordStrength === '50%' ? 'orange': (confirmPasswordStrength === '75%' ? 'yellow' : (confirmPasswordStrength === '100%' ? 'green' : '')))) }\"\r\n class=\"progressbar-inner\"></span>\r\n </div>\r\n <div class=\"password-note mt-2\">the password most contain atleast one capital letter and number.</div>\r\n <div>\r\n <small *ngIf=\"aboutForm.get('confirmPassword')?.hasError('pattern')\">The password must contain atleast one capital letter and number.</small>\r\n <small \r\n *ngIf=\"aboutForm.get('confirmPassword')?.touched && aboutForm.get('confirmPassword')?.invalid\">Password\r\n does not match</small>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <ng-container *ngIf=\"currentStep$.value == 1\"> -->\r\n <div class=\"text-end\">\r\n <button [disabled]=\"aboutForm.invalid || isMobileTaken || isEmailTaken || isClientNameTaken\" type=\"button\" class=\"btn btn-lg btn-primary\" (click)=\"nextStep()\">\r\n <span class=\"indicator-label px-5\">\r\n <ng-container>\r\n Next <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <div class=\"mb-3 d-flex flex-column flex-md-row flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-10\">\r\n <span class=\"me-1 footer\">\u00A9 2024 </span>\r\n <a target=\"_blank\" class=\"footer\">Tango IT solutions</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-10\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">About us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">Contact Us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">Privacy & policy</a></li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".logo{width:16%;height:73px!important;margin-top:150px;margin-left:44%}.heading{margin-left:41%}.title1{color:var(--Gray-700, #344054)!important;font-size:24px!important;font-weight:600!important;line-height:32px}.subtext{color:var(--Gray-400, #98A2B3)!important;font-size:18px!important;font-weight:500!important;line-height:28px}.submit{padding-bottom:2%}.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;width:85px}.form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1rem;font-weight:500;line-height:1}input,button,select,optgroup,textarea{margin:5px 0}.form-control{display:block;font-size:1.1rem;font-weight:600;line-height:1.5;color:#181c32;-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-select{font-size:1.1rem;font-weight:600;line-height:2.35;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.card-label{font-weight:600;font-size:20px}.me-n2{margin-right:3.5rem!important}.font{font-family:Inter!important}.phone{flex:0 0 auto;width:62.666667%}@media (min-width: 1024px) and (max-width: 1299px){.title1{text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}@media (min-width: 1300px) and (max-width: 1400px){.title1{text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}small{color:var(--Gray-500, #667085)!important;font-size:10px!important;font-style:normal;font-weight:400!important;line-height:normal;text-transform:capitalize}.border-new{border-radius:0 8px 8px 0!important;border-left:none!important}.border-disabled{padding:5px 0;max-width:10%;border-radius:0!important;border-right:none!important;border-left:none!important}.select-radius{padding:5px 0 5px 15px;border-radius:8px 0 0 8px!important;border-right:none!important}.progressbar-wrapper{height:4px;width:100%;background-color:#f2f4f7;border-radius:4px;position:relative}.progressbar-inner{height:100%;position:absolute;border-radius:4px}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;text-transform:capitalize}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}.alert-required{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.mobile-is-invalid{border-radius:0 8px 8px 0!important;border-left:none!important}.code-is-invalid{padding:5px 0;max-width:10%;border-radius:0!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;border-right:none!important;border-left:none!important}.country-is-invalid{padding:5px 0 5px 15px;border-radius:8px 0 0 8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;border-right:none!important}.icon-more{font-size:24px;font-weight:600;line-height:32px;color:#7e8299}.password-note{color:var(--Gray-500, #667085);font-size:10px;font-weight:400;line-height:normal}.footer{color:#7e8299!important;font-size:16px!important;font-weight:500!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
99
190
  }
100
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: Step1Component, decorators: [{
101
192
  type: Component,
102
- args: [{ selector: 'lib-step1', template: "<div class=\" me-12 my-2 h-100\">\r\n <!-- <div>\r\n <img class=\"bubble\" src=\"../../../../../../../assets/Icons/Signup-bubble-icon.svg\"\r\n alt=\"\" srcset=\"\"> -->\r\n <div class=\"mobileshow\">\r\n <h3 class=\"title1 pt-4\">AI co-pilot to boost your sales conversion</h3>\r\n <p class=\"subtext pb-4\">Join the leading global brands in understanding footfall and shopper behavior to boost\r\n sales.</p>\r\n\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Lenskart-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/nykaa-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/giva-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Duroflex-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/loccitone-logo.svg\" alt=\"\">\r\n </div>\r\n <div class=\"me-20\">\r\n <h4 style=\"font-size: 20px; \r\n font-weight: 500;\r\n color: #7E8299;\">30 +</h4>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-12\">\r\n <h6 class=\"card-label mb-7\">Create an Account</h6>\r\n <form novalidate=\"novalidate\" class=\"\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"Brand\" class=\"form-label\">Brand Name *</label>\r\n <input type=\"type\" class=\"form-control\" id=\"Brand\">\r\n </div>\r\n </div>\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"firstname\" class=\"form-label\">First Name *</label>\r\n <input type=\"type\" class=\"form-control\" id=\"firstname\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"lastname\" class=\"form-label\">Last Name</label>\r\n <input type=\"type\" class=\"form-control\" id=\"lastname\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Corporate Email *</label>\r\n <input type=\"email\" class=\"form-control\" id=\"email\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"phonenumber\" class=\"form-label\">Phone number *</label>\r\n <!-- <input type=\"tel\"\r\n class=\"{{isInvalid ? 'text-danger': ''}}\"\r\n (focus)=\"onFocus()\"\r\n (blur)=\"onBlur()\"\r\n (keypress)=\"onInputKeyPress($event)\"\r\n \r\n (ngModelChange)=\"onPhoneNumberChange()\"\r\n #telInput> -->\r\n <!-- [(ngModel)]=\"phoneNumber\" -->\r\n <input type=\"type\" class=\"form-control\" id=\"phonenumber\" autocomplete=\"off\">\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"password\" class=\"form-label\">Password *</label>\r\n <input type=\"password\" class=\"form-control\" id=\"password\" autocomplete=\"new-password\">\r\n <ul class=\"px-0 mt-3\">\r\n <li class=\"point\" [style.background-color]=\"colorCode[0]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[1]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[2]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[3]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[4]\"> </li>\r\n </ul>\r\n <div class=\"mt-2\">\r\n <small>Use 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"confirm\" class=\"form-label\">Confirm Password *</label>\r\n <input type=\"password\" class=\"form-control\" id=\"confirm\">\r\n <ul class=\"px-0 mt-3\">\r\n <li class=\"point\" [style.background-color]=\"colorCode[0]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[1]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[2]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[3]\"> </li>\r\n <li class=\"point\" [style.background-color]=\"colorCode[4]\"> </li>\r\n </ul>\r\n <div class=\"mt-2\">\r\n <small>the password most contain atleast one capital letter and number.</small>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <ng-container *ngIf=\"currentStep$.value == 1\"> -->\r\n <div class=\"text-end\">\r\n <button type=\"button\" class=\"btn btn-lg btn-primary\" (click)=\"nextStep()\">\r\n <span class=\"indicator-label px-5\">\r\n <ng-container *ngIf=\"currentStep$.value < formsCount - 1\">\r\n Next {{ \" \" }} <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"white\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </ng-container>\r\n <ng-container *ngIf=\"currentStep$.value === formsCount - 1\">\r\n Submit\r\n </ng-container>\r\n </span>\r\n </button>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n\r\n </div>\r\n<!-- </div> -->\r\n</div>", styles: [".logo{width:16%;height:73px!important;margin-top:150px;margin-left:44%}.heading{margin-left:41%}.title1{color:var(--Gray-700, #344054)!important;font-family:Inter;font-size:24px!important;font-weight:600!important;line-height:32px}.subtext{color:var(--Gray-400, #98A2B3)!important;font-family:Inter;font-size:18px!important;font-weight:500!important;line-height:28px}.linearGradient{background:-webkit-linear-gradient(90.11deg,#00A3FF 67.36%,#8453FC 100.09%,#8950FC 101.45%),-webkit-linear-gradient(90.11deg,#00A3FF 67.36%,#8950FC 101.45%),-webkit-linear-gradient(0deg,#464E5F,#464E5F);-webkit-text-fill-color:transparent;filter:drop-shadow(2px 4px #e5dddd)}.submit{padding-bottom:2%}.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:3px;width:85px}.form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1rem;font-weight:500;line-height:1}input,button,select,optgroup,textarea{margin:5px 0 15px;font-family:Inter}.form-control{display:block;font-size:1.1rem;font-weight:600;font-family:Inter;line-height:1.5;color:#181c32;-webkit-appearance:none;appearance:none;border-radius:.475rem;box-shadow:inset 0 1px 2px #00000014;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-label{font-weight:600;font-family:Inter}.card-label{font-weight:600;font-family:Inter;font-size:20px}.me-n2{margin-right:3.5rem!important}.font{font-family:Inter!important}.phone{flex:0 0 auto;width:62.666667%}@media (min-width: 1024px) and (max-width: 1299px){.title1{font-family:Inter;text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}@media (min-width: 1300px) and (max-width: 1400px){.title1{font-family:Inter;text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}small{color:var(--Gray-500, #667085)!important;font-family:Inter;font-size:10px!important;font-style:normal;font-weight:400!important;line-height:normal;text-transform:capitalize}.iti__flag{background-image:url(https://raw.githubusercontent.com/jackocnr/intl-tel-input/master/build/img/flags.png)}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){.iti__flag{background-image:url(https://raw.githubusercontent.com/jackocnr/intl-tel-input/master/build/img/flags@2x.png)}}\n"] }]
103
- }], ctorParameters: () => [{ type: i1.ConversionService }] });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMS9zdGVwMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAxL3N0ZXAxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUF1RixNQUFNLGVBQWUsQ0FBQztBQUk5SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQUN2Qyx5RkFBeUY7QUFNekYsTUFBTSxPQUFPLGNBQWM7SUFZZjtJQVhWLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNmLDhDQUE4QztJQUM5Qyw4Q0FBOEM7SUFDaEQsWUFBWSxHQUE0QixJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxtQkFBbUIsR0FBNkIsSUFBSSxlQUFlLENBQ2pFLEtBQUssQ0FDTixDQUFDO0lBQ0EsWUFFVSxhQUFnQztRQUFoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7SUFHMUMsQ0FBQztJQUNILDhEQUE4RDtJQUM5RCxpQ0FBaUM7SUFDakMsMENBQTBDO0lBQzFDLGdFQUFnRTtJQUNoRSxnQkFBZ0I7SUFDaEIseUJBQXlCO0lBQ3pCLGdDQUFnQztJQUNoQyx1QkFBdUI7SUFDdkIsbUVBQW1FO0lBQ25FLDZEQUE2RDtJQUM3RCxrREFBa0Q7SUFDbEQscUNBQXFDO0lBQ3JDLCtCQUErQjtJQUMvQixnQ0FBZ0M7SUFDaEMsVUFBVTtJQUNWLDZFQUE2RTtJQUM3RSxJQUFJO0lBQ0osd0NBQXdDO0lBRXhDLElBQUk7SUFDSixpQkFBaUI7SUFDakIsMEJBQTBCO0lBQzFCLElBQUk7SUFFSixtQkFBbUI7SUFDbkIsbUVBQW1FO0lBQ25FLG9FQUFvRTtJQUNwRSw0Q0FBNEM7SUFDNUMsUUFBUTtJQUNSLElBQUk7SUFFSixpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLG9FQUFvRTtJQUNwRSx3Q0FBd0M7SUFDeEMsc0NBQXNDO0lBQ3RDLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIscUNBQXFDO0lBQ3JDLFlBQVk7SUFDWixXQUFXO0lBQ1gsSUFBSTtJQUVKLCtDQUErQztJQUMvQywwQ0FBMEM7SUFDMUMsNERBQTREO0lBQzVELDZCQUE2QjtJQUM3QixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLFdBQVc7SUFDWCxjQUFjO0lBQ2QsY0FBYztJQUNkLGlCQUFpQjtJQUNqQixLQUFLO0lBRUwsT0FBTztJQUNQLHFDQUFxQztJQUNyQyw0REFBNEQ7SUFDNUQsMENBQTBDO0lBQzFDLE1BQU07SUFDTiw0QkFBNEI7SUFDNUIsSUFBSTtJQUNKLElBQUk7SUFFSix5QkFBeUI7SUFDekIsOEZBQThGO0lBQzlGLHFGQUFxRjtJQUNyRiw4RkFBOEY7SUFDOUYsa0dBQWtHO0lBQ2xHLFlBQVk7SUFDWixRQUFRO0lBQ1IsSUFBSTtJQUVKLCtCQUErQjtJQUMvQiw2RUFBNkU7SUFDN0Usb0NBQW9DO0lBQ3BDLHFEQUFxRDtJQUNyRCxJQUFJO0lBQ0osUUFBUTtRQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQzt1R0FuR1ksY0FBYzsyRkFBZCxjQUFjLGlEQ1gzQixzOU5Bc0hNOzsyRkQzR08sY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vLyBpbXBvcnQgaW50bFRlbElucHV0IGZyb20gJ2ludGwtdGVsLWlucHV0JztcclxuaW1wb3J0IHsgQ29udmVyc2lvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jb252ZXJzaW9uLnNlcnZpY2UnO1xyXG5kZWNsYXJlIHZhciBpbnRsVGVsSW5wdXRVdGlsczogeyBudW1iZXJGb3JtYXQ6IHsgRTE2NDogYW55OyB9OyB9O1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuLy8gaW1wb3J0IHsgSUNyZWF0ZUFjY291bnQsIGluaXRzIH0gZnJvbSAnc3JjL2FwcC9tb2R1bGVzL3dpemFyZHMvY3JlYXRlLWFjY291bnQuaGVscGVyJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RlcDEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwMS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0ZXAxLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcDFDb21wb25lbnQge1xyXG4gIGNvbG9ycyA9IFsnI0YwMCcsICcjRjkwJywgJyNGRjAnLCAnIzlGMCcsICcjMEYwJ107XHJcbiAgY29sb3JDb2RlID0gWycnLCAnJywgJycsICcnLCAnJ107XHJcbiAgZm9ybXNDb3VudCA9IDM7XHJcbiAgLy8gYWNjb3VudCQ6IEJlaGF2aW9yU3ViamVjdDxJQ3JlYXRlQWNjb3VudD4gPVxyXG4gIC8vIG5ldyBCZWhhdmlvclN1YmplY3Q8SUNyZWF0ZUFjY291bnQ+KGluaXRzKTtcclxuY3VycmVudFN0ZXAkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoMSk7XHJcbmlzQ3VycmVudEZvcm1WYWxpZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oXHJcbiAgZmFsc2VcclxuKTtcclxuICBjb25zdHJ1Y3RvcihcclxuXHJcbiAgICBwcml2YXRlIHNldHRlcnNlcnZpY2U6IENvbnZlcnNpb25TZXJ2aWNlLFxyXG4gICl7XHJcblxyXG4gIH1cclxuLy8gICBAVmlld0NoaWxkKCd0ZWxJbnB1dCcpIHRlbElucHV0OiB7IG5hdGl2ZUVsZW1lbnQ6IGFueTsgfTtcclxuLy8gICAgIEBJbnB1dCgpIHBob25lTnVtYmVyID0gJyc7XHJcbi8vICAgICBASW5wdXQoKSBjc3NDbGFzcyA9ICdmb3JtLWNvbnRyb2wnO1xyXG4vLyAgICAgQE91dHB1dCgpIHBob25lTnVtYmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbi8vICAgICBpdGk6IGFueTtcclxuLy8gICAgIGlzSW52YWxpZCA9IGZhbHNlO1xyXG4vLyAgICAgc2VsZWN0ZWRDb3VudHJ5Q29kZTogYW55O1xyXG4vLyAgIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4vLyAgICAgLy8gY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI1wiICsgdGhpcy5pbnB1dElkKTtcclxuLy8gICAgIHRoaXMuaXRpID0gaW50bFRlbElucHV0KHRoaXMudGVsSW5wdXQubmF0aXZlRWxlbWVudCwge1xyXG4vLyAgICAgICAgIHV0aWxzU2NyaXB0OiBcImFzc2V0cy9zY3JpcHRzL3V0aWxzLmpzXCIsXHJcbi8vICAgICAgICAgLy8gaW5pdGlhbENvdW50cnk6IFwiYXV0b1wiLFxyXG4vLyAgICAgICAgIG5hdGlvbmFsTW9kZTogZmFsc2UsXHJcbi8vICAgICAgICAgZm9ybWF0T25EaXNwbGF5OiB0cnVlXHJcbi8vICAgICB9KTtcclxuLy8gICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Q29kZSA9IHRoaXMuaXRpLmdldFNlbGVjdGVkQ291bnRyeURhdGEoKS5kaWFsQ29kZTtcclxuLy8gfVxyXG4vLyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcblxyXG4vLyB9XHJcbi8vIG5nT25EZXN0cm95KCl7XHJcbi8vICAgICB0aGlzLml0aS5kZXN0cm95KCk7XHJcbi8vIH1cclxuXHJcbi8vIG9uRm9jdXMgPSAoKSA9PntcclxuLy8gICAgIGlmKHRoaXMucGhvbmVOdW1iZXIgPT0gdW5kZWZpbmVkIHx8IHRoaXMucGhvbmVOdW1iZXIgPT0gXCJcIil7XHJcbi8vICAgICAgICAgdmFyIGdldENvZGUgPSB0aGlzLml0aS5nZXRTZWxlY3RlZENvdW50cnlEYXRhKCkuZGlhbENvZGU7XHJcbi8vICAgICAgICAgdGhpcy5waG9uZU51bWJlciA9IFwiK1wiICsgZ2V0Q29kZTtcclxuLy8gICAgIH1cclxuLy8gfVxyXG5cclxuLy8gb25CbHVyID0gKCk9PntcclxuLy8gICAgIHRoaXMuaXNJbnZhbGlkID0gZmFsc2U7XHJcbi8vICAgICBpZih0aGlzLnBob25lTnVtYmVyICE9IHVuZGVmaW5lZCAmJiB0aGlzLnBob25lTnVtYmVyLnRyaW0oKSl7XHJcbi8vICAgICAgICAgaWYodGhpcy5pdGkuaXNWYWxpZE51bWJlcigpKXtcclxuLy8gICAgICAgICAgICAgdGhpcy5pc0ludmFsaWQgPSBmYWxzZTtcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgZWxzZXtcclxuLy8gICAgICAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xyXG4vLyAgICAgICAgIH1cclxuLy8gICAgIH0gICBcclxuLy8gfVxyXG5cclxuLy8gb25JbnB1dEtleVByZXNzID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PntcclxuLy8gICAgIGNvbnN0IGFsbG93ZWRDaGFycyA9IC9bMC05XFwrXFwtXFwgXS87XHJcbi8vIGNvbnN0IGFsbG93ZWRDdHJsQ2hhcnMgPSAvW2F4Y3ZdLzsgLy8gQWxsb3dzIGNvcHktcGFzdGluZ1xyXG4vLyBjb25zdCBhbGxvd2VkT3RoZXJLZXlzID0gW1xyXG4vLyAgICdBcnJvd0xlZnQnLFxyXG4vLyAgICdBcnJvd1VwJyxcclxuLy8gICAnQXJyb3dSaWdodCcsXHJcbi8vICAgJ0Fycm93RG93bicsXHJcbi8vICAgJ0hvbWUnLFxyXG4vLyAgICdFbmQnLFxyXG4vLyAgICdJbnNlcnQnLFxyXG4vLyAgICdEZWxldGUnLFxyXG4vLyAgICdCYWNrc3BhY2UnLFxyXG4vLyBdO1xyXG5cclxuLy8gaWYgKFxyXG4vLyAgICFhbGxvd2VkQ2hhcnMudGVzdChldmVudC5rZXkpICYmXHJcbi8vICAgIShldmVudC5jdHJsS2V5ICYmIGFsbG93ZWRDdHJsQ2hhcnMudGVzdChldmVudC5rZXkpKSAmJlxyXG4vLyAgICFhbGxvd2VkT3RoZXJLZXlzLmluY2x1ZGVzKGV2ZW50LmtleSlcclxuLy8gKSB7XHJcbi8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuLy8gfVxyXG4vLyB9XHJcblxyXG4vLyBmb3JtYXRJbnRsVGVsSW5wdXQoKSB7XHJcbi8vICAgICBpZiAodHlwZW9mIGludGxUZWxJbnB1dFV0aWxzICE9PSAndW5kZWZpbmVkJykgeyAvLyB1dGlscyBhcmUgbGF6eSBsb2FkZWQsIHNvIG11c3QgY2hlY2tcclxuLy8gICAgICAgICB2YXIgY3VycmVudFRleHQgPSB0aGlzLml0aS5nZXROdW1iZXIoaW50bFRlbElucHV0VXRpbHMubnVtYmVyRm9ybWF0LkUxNjQpO1xyXG4vLyAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudFRleHQgPT09ICdzdHJpbmcnKSB7IC8vIHNvbWV0aW1lcyB0aGUgY3VycmVudFRleHQgaXMgYW4gb2JqZWN0IDopXHJcbi8vICAgICAgICAgICAgIHRoaXMuaXRpLnNldE51bWJlcihjdXJyZW50VGV4dCk7IC8vIHdpbGwgYXV0b2Zvcm1hdCBiZWNhdXNlIG9mIGZvcm1hdE9uRGlzcGxheT10cnVlXHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgfVxyXG4vLyB9XHJcblxyXG4vLyBvblBob25lTnVtYmVyQ2hhbmdlID0gKCkgPT57XHJcbi8vICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeUNvZGUgPSB0aGlzLml0aS5nZXRTZWxlY3RlZENvdW50cnlEYXRhKCkuZGlhbENvZGU7XHJcbi8vICAgICAvLyB0aGlzLmZvcm1hdEludGxUZWxJbnB1dCgpO1xyXG4vLyAgICAgdGhpcy5waG9uZU51bWJlckNoYW5nZS5lbWl0KHRoaXMucGhvbmVOdW1iZXIpO1xyXG4vLyB9XHJcbm5leHRTdGVwKCl7XHJcbnRoaXMuc2V0dGVyc2VydmljZS5jb21wbGV0ZVN0ZXBwZXIoeyBzdGVwOiAyIH0pO1xyXG59XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIiBtZS0xMiBteS0yIGgtMTAwXCI+XHJcbiAgICA8IS0tIDxkaXY+XHJcbiAgICAgICAgPGltZyBjbGFzcz1cImJ1YmJsZVwiIHNyYz1cIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2Fzc2V0cy9JY29ucy9TaWdudXAtYnViYmxlLWljb24uc3ZnXCJcclxuICAgICAgICAgICAgIGFsdD1cIlwiIHNyY3NldD1cIlwiPiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGVzaG93XCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwidGl0bGUxIHB0LTRcIj5BSSBjby1waWxvdCB0byBib29zdCB5b3VyIHNhbGVzIGNvbnZlcnNpb248L2gzPlxyXG4gICAgICAgIDxwIGNsYXNzPVwic3VidGV4dCBwYi00XCI+Sm9pbiB0aGUgbGVhZGluZyBnbG9iYWwgYnJhbmRzIGluIHVuZGVyc3RhbmRpbmcgZm9vdGZhbGwgYW5kIHNob3BwZXIgYmVoYXZpb3IgdG8gYm9vc3RcclxuICAgICAgICAgICAgc2FsZXMuPC9wPlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL0xlbnNrYXJ0LWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL255a2FhLWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2dpdmEtbG9nby5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvRHVyb2ZsZXgtbG9nby5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9jY2l0b25lLWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWUtMjBcIj5cclxuICAgICAgICAgICAgICAgIDxoNCBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgXHJcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgIGNvbG9yOiAjN0U4Mjk5O1wiPjMwICs8L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEyXCI+XHJcbiAgICAgICAgICAgIDxoNiBjbGFzcz1cImNhcmQtbGFiZWwgbWItN1wiPkNyZWF0ZSBhbiBBY2NvdW50PC9oNj5cclxuICAgICAgICAgICAgPGZvcm0gbm92YWxpZGF0ZT1cIm5vdmFsaWRhdGVcIiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiQnJhbmRcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5CcmFuZCBOYW1lICo8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInR5cGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiQnJhbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmlyc3RuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Rmlyc3QgTmFtZSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImZpcnN0bmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxhc3RuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGFzdCBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImxhc3RuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db3Jwb3JhdGUgRW1haWwgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZW1haWxcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaG9uZW51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBob25lIG51bWJlciAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInt7aXNJbnZhbGlkID8gJ3RleHQtZGFuZ2VyJzogJyd9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbklucHV0S2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblBob25lTnVtYmVyQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3RlbElucHV0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyXCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaG9uZW51bWJlclwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBhc3N3b3JkXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGFzc3dvcmQgKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwicHgtMCBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yQ29kZVswXVwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvckNvZGVbMV1cIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JDb2RlWzJdXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yQ29kZVszXVwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvckNvZGVbNF1cIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5Vc2UgOCBvciBtb3JlIGNoYXJhY3RlcnMgd2l0aCBhIG1peCBvZiBsZXR0ZXJzLCBudW1iZXJzICYgc3ltYm9scy48L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb25maXJtXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29uZmlybSBQYXNzd29yZCAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb25maXJtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInB4LTAgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvckNvZGVbMF1cIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JDb2RlWzFdXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImNvbG9yQ29kZVsyXVwiPiA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJjb2xvckNvZGVbM11cIj4gPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiY29sb3JDb2RlWzRdXCI+IDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+dGhlIHBhc3N3b3JkIG1vc3QgY29udGFpbiBhdGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlciBhbmQgbnVtYmVyLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlID09IDFcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibmV4dFN0ZXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGljYXRvci1sYWJlbCBweC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlIDwgZm9ybXNDb3VudCAtIDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXh0IHt7IFwiIFwiIH19IDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcuNSAxNUwxMi41IDEwTDcuNSA1XCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1cnJlbnRTdGVwJC52YWx1ZSA9PT0gZm9ybXNDb3VudCAtIDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdWJtaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbjwhLS0gPC9kaXY+IC0tPlxyXG48L2Rpdj4iXX0=
193
+ args: [{ selector: 'lib-step1', template: "<div class=\"card mt-10 mx-15\">\r\n <div class=\"h-100 px-10 mx-5 my-7\">\r\n <!-- <div>\r\n <img class=\"bubble\" src=\"../../../../../../../assets/Icons/Signup-bubble-icon.svg\"\r\n alt=\"\" srcset=\"\"> -->\r\n <div class=\"mobileshow\">\r\n <h3 class=\"title1 pt-4\">AI co-pilot to boost your sales conversion</h3>\r\n <p class=\"subtext pb-4\">Join the leading global brands in understanding footfall and shopper behavior to\r\n boost\r\n sales.</p>\r\n\r\n\r\n <div class=\"d-flex justify-content-between\">\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Lenskart-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/nykaa-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/giva-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/Duroflex-logo.svg\" alt=\"\">\r\n </div>\r\n <div>\r\n <img class=\"imgsrc\" src=\"./assets/tango/Icons/loccitone-logo.svg\" alt=\"\">\r\n </div>\r\n <div class=\"me-20\">\r\n <h4 class=\"icon-more\">30 +</h4>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-12\">\r\n <h6 class=\"card-label mb-7\">Create an Account</h6>\r\n <form [formGroup]=\"aboutForm\" novalidate=\"novalidate\">\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"Brand\" class=\"form-label\">Brand Name <span class=\"alert-required\">*</span></label>\r\n <input (blur)=\"onClientNameBlur()\" (input)=\"isClientNameTaken = 0\" formControlName=\"clientName\" type=\"type\" class=\"form-control\" id=\"Brand\" \r\n [ngClass]=\"{ 'is-invalid': aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('required') }\" autocomplete=\"off\" >\r\n \r\n \r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('minlength')\">\r\n Brand name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('maxlength')\">\r\n Brand name must be maximum of 100 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('clientName')?.touched && aboutForm.get('clientName')?.hasError('required')\">\r\n Brand name is required\r\n </small>\r\n <small \r\n *ngIf=\"isClientNameTaken\">\r\n Brand name is already taken\r\n </small>\r\n </div>\r\n </div>\r\n <div class=\"row px-0\">\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"firstname\" class=\"form-label\">First Name <span class=\"alert-required\">*</span></label>\r\n <input formControlName=\"firstName\" type=\"type\" class=\"form-control\" id=\"firstname\" autocomplete=\"off\"\r\n [ngClass]=\"{ 'is-invalid': aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('required') }\">\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('minlength')\">\r\n First name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('maxlength')\">\r\n First name must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('firstName')?.touched && aboutForm.get('firstName')?.hasError('required')\">\r\n First name is required\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"lastname\" class=\"form-label\">Last Name</label>\r\n <input formControlName=\"lastName\" type=\"type\" class=\"form-control\" id=\"lastname\" autocomplete=\"off\">\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('minlength')\">\r\n Last name must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('maxlength')\">\r\n Last name must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('lastName')?.touched && aboutForm.get('lastName')?.hasError('required')\">\r\n Last name is required\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"email\" class=\"form-label\">Corporate Email <span class=\"alert-required\">*</span></label>\r\n <input (blur)=\"onEmailBlur()\" (input)=\"isEmailTaken = 0\" formControlName=\"corporateEmail\" type=\"email\" class=\"form-control\" id=\"email\" [ngClass]=\"{ 'is-invalid': aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('required') }\"\r\n autocomplete=\"off\">\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('minlength')\">\r\n Corporate email must be minimum of 3 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('maxlength')\">\r\n Corporate email must be maximum of 50 letters\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('required')\">\r\n Corporate email is required\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('corporateEmail')?.touched && aboutForm.get('corporateEmail')?.hasError('pattern')\">\r\n Enter a valid email\r\n </small>\r\n <small \r\n *ngIf=\"isEmailTaken\">\r\n Email is already taken\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n\r\n <label for=\"phonenumber\" class=\"form-label\">Phone number <span class=\"alert-required\">*</span></label>\r\n <div class=\"input-group mb-3\">\r\n <div class=\"input-group-append\">\r\n <select formControlName=\"countryCode\" class=\"form-select select-radius ms-4 me-5\" [ngClass]=\"{ 'country-is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n id=\"inputGroupSelect01\">\r\n <option class=\"mx-2\" value=\"+91\">In</option>\r\n <option class=\"mx-2\" value=\"+93\">Af</option>\r\n <option class=\"mx-2\" value=\"+355\">Al</option>\r\n </select>\r\n </div>\r\n <input [value]=\"aboutForm.get('countryCode')?.value\" type=\"text\" [ngClass]=\"{ 'code-is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n class=\"form-control border-disabled\" readonly>\r\n <input (blur)=\"onMobileNumberBlur()\" (input)=\"isMobileTaken = 0\" formControlName=\"mobileNumber\" type=\"type\" class=\"form-control border-new\" [ngClass]=\"{ 'mobile-is-invalid is-invalid': aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required') }\"\r\n id=\"phonenumber\" autocomplete=\"off\">\r\n </div>\r\n <small \r\n *ngIf=\"aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('required')\">\r\n Phone number is required\r\n </small>\r\n <small \r\n *ngIf=\"aboutForm.get('mobileNumber')?.touched && aboutForm.get('mobileNumber')?.hasError('pattern')\">\r\n Enter a valid phone number\r\n </small>\r\n <small \r\n *ngIf=\"isMobileTaken\">\r\n Mobile number already taken\r\n </small>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"password\" class=\"form-label\">Password <span class=\"alert-required\">*</span></label>\r\n <input (input)=\"onPasswordChange($event)\" formControlName=\"password\" type=\"password\" [ngClass]=\"{ 'is-invalid': aboutForm.get('password')?.touched && aboutForm.get('password')?.hasError('required') }\"\r\n class=\"form-control\" id=\"password\" autocomplete=\"new-password\">\r\n\r\n <div class=\"progressbar-wrapper mt-2\">\r\n <span [style.width]=\"passwordStrength\"\r\n [ngStyle]=\"{'background-color': passwordStrength === '0%' ? '' : (passwordStrength === '25%' ? 'red' : (passwordStrength === '50%' ? 'orange': (passwordStrength === '75%' ? 'yellow' : (passwordStrength === '100%' ? 'green' : '')))) }\"\r\n class=\"progressbar-inner\"></span>\r\n </div>\r\n <div class=\"password-note mt-2\">the password most contain atleast one capital letter and number.</div>\r\n <div>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.hasError('required') && aboutForm.get('password')?.touched\">Password is required</small>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.hasError('pattern')\">Use\r\n 8 or more characters with a mix of letters, numbers & symbols.</small>\r\n <small \r\n *ngIf=\"aboutForm.get('password')?.touched && aboutForm.get('password')?.invalid\"></small>\r\n </div>\r\n </div>\r\n <div class=\"col-md-12 col-lg-6 col-xl-6 col-xxl-6 mb-7\">\r\n <label for=\"confirm\" class=\"form-label\">Confirm Password <span class=\"alert-required\">*</span></label>\r\n <input (input)=\"onConfirmPasswordChange($event)\" formControlName=\"confirmPassword\" type=\"password\" class=\"form-control\" [ngClass]=\"{ 'is-invalid': aboutForm.get('confirmPassword')?.touched && aboutForm.get('confirmPassword')?.hasError('required') }\"\r\n id=\"confirm\" autocomplete=\"off\">\r\n <div class=\"progressbar-wrapper mt-2\">\r\n <span [style.width]=\"confirmPasswordStrength\"\r\n [ngStyle]=\"{'background-color': confirmPasswordStrength === '0%' ? '' : (confirmPasswordStrength === '25%' ? 'red' : (confirmPasswordStrength === '50%' ? 'orange': (confirmPasswordStrength === '75%' ? 'yellow' : (confirmPasswordStrength === '100%' ? 'green' : '')))) }\"\r\n class=\"progressbar-inner\"></span>\r\n </div>\r\n <div class=\"password-note mt-2\">the password most contain atleast one capital letter and number.</div>\r\n <div>\r\n <small *ngIf=\"aboutForm.get('confirmPassword')?.hasError('pattern')\">The password must contain atleast one capital letter and number.</small>\r\n <small \r\n *ngIf=\"aboutForm.get('confirmPassword')?.touched && aboutForm.get('confirmPassword')?.invalid\">Password\r\n does not match</small>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n <!-- <ng-container *ngIf=\"currentStep$.value == 1\"> -->\r\n <div class=\"text-end\">\r\n <button [disabled]=\"aboutForm.invalid || isMobileTaken || isEmailTaken || isClientNameTaken\" type=\"button\" class=\"btn btn-lg btn-primary\" (click)=\"nextStep()\">\r\n <span class=\"indicator-label px-5\">\r\n <ng-container>\r\n Next <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M7.5 15L12.5 10L7.5 5\" stroke=\"white\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n\r\n </span>\r\n </button>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n\r\n </div>\r\n <!-- </div> -->\r\n </div>\r\n <div class=\"mb-3 d-flex flex-column flex-md-row flex-md-stack pt-3 container-fluid\">\r\n <div class=\"text-gray-900 order-2 order-md-1 ms-10\">\r\n <span class=\"me-1 footer\">\u00A9 2024 </span>\r\n <a target=\"_blank\" class=\"footer\">Tango IT solutions</a>\r\n </div>\r\n <ul class=\"menu menu-gray-600 menu-hover-primary fw-semibold order-1 me-10\">\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">About us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">Contact Us</a></li>\r\n <li class=\"menu-item footer\"><a target=\"_blank\" class=\"menu-link px-5\">Privacy & policy</a></li>\r\n </ul>\r\n </div>\r\n</div>", styles: [".logo{width:16%;height:73px!important;margin-top:150px;margin-left:44%}.heading{margin-left:41%}.title1{color:var(--Gray-700, #344054)!important;font-size:24px!important;font-weight:600!important;line-height:32px}.subtext{color:var(--Gray-400, #98A2B3)!important;font-size:18px!important;font-weight:500!important;line-height:28px}.submit{padding-bottom:2%}.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;width:85px}.form-control{display:block;height:45px;padding:.5rem 1rem;font-size:1rem;font-weight:500;line-height:1}input,button,select,optgroup,textarea{margin:5px 0}.form-control{display:block;font-size:1.1rem;font-weight:600;line-height:1.5;color:#181c32;-webkit-appearance:none;appearance:none;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-select{font-size:1.1rem;font-weight:600;line-height:2.35;border-radius:8px!important;border:1px solid var(--Gray-300, #D0D5DD)!important}.form-label{color:var(--Gray-700, #344054);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.card-label{font-weight:600;font-size:20px}.me-n2{margin-right:3.5rem!important}.font{font-family:Inter!important}.phone{flex:0 0 auto;width:62.666667%}@media (min-width: 1024px) and (max-width: 1299px){.title1{text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}@media (min-width: 1300px) and (max-width: 1400px){.title1{text-shadow:1px 1px 1px #096dd7;font-weight:600;font-size:21px!important;line-height:34px;text-align:center;color:#464e5f}.subtext{font-family:Inter;font-size:18px;font-weight:600;line-height:37px;letter-spacing:0em;text-align:center;color:#7e8299}.imgsrc{width:100px}}small{color:var(--Gray-500, #667085)!important;font-size:10px!important;font-style:normal;font-weight:400!important;line-height:normal;text-transform:capitalize}.border-new{border-radius:0 8px 8px 0!important;border-left:none!important}.border-disabled{padding:5px 0;max-width:10%;border-radius:0!important;border-right:none!important;border-left:none!important}.select-radius{padding:5px 0 5px 15px;border-radius:8px 0 0 8px!important;border-right:none!important}.progressbar-wrapper{height:4px;width:100%;background-color:#f2f4f7;border-radius:4px;position:relative}.progressbar-inner{height:100%;position:absolute;border-radius:4px}small{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:400!important;line-height:20px;text-transform:capitalize}.is-invalid{border-radius:8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;padding-right:calc(1.5em + .75rem)!important;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyMDFfMjA5NTApIj4KPHBhdGggZD0iTTcuOTk5NjcgNS4zMzM5OFY4LjAwMDY1TTcuOTk5NjcgMTAuNjY3M0g4LjAwNjM0TTE0LjY2NjMgOC4wMDA2NUMxNC42NjYzIDExLjY4MjYgMTEuNjgxNiAxNC42NjczIDcuOTk5NjcgMTQuNjY3M0M0LjMxNzc4IDE0LjY2NzMgMS4zMzMwMSAxMS42ODI2IDEuMzMzMDEgOC4wMDA2NUMxLjMzMzAxIDQuMzE4NzUgNC4zMTc3OCAxLjMzMzk4IDcuOTk5NjcgMS4zMzM5OEMxMS42ODE2IDEuMzMzOTggMTQuNjY2MyA0LjMxODc1IDE0LjY2NjMgOC4wMDA2NVoiIHN0cm9rZT0iI0YwNDQzOCIgc3Ryb2tlLXdpZHRoPSIxLjMzMzMzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8yMjAxXzIwOTUwIj4KPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=)!important;background-repeat:no-repeat!important;background-position:right calc(.375em + .1875rem) center!important;background-size:calc(.75em + .375rem) calc(.75em + .375rem)!important}.alert-required{color:var(--Error-500, #F04438)!important;font-size:14px!important;font-weight:500!important;line-height:20px}.mobile-is-invalid{border-radius:0 8px 8px 0!important;border-left:none!important}.code-is-invalid{padding:5px 0;max-width:10%;border-radius:0!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;border-right:none!important;border-left:none!important}.country-is-invalid{padding:5px 0 5px 15px;border-radius:8px 0 0 8px!important;border:1px solid var(--Error-300, #FDA29B)!important;background:var(--White, #FFF)!important;box-shadow:0 1px 2px #1018280d!important;border-right:none!important}.icon-more{font-size:24px;font-weight:600;line-height:32px;color:#7e8299}.password-note{color:var(--Gray-500, #667085);font-size:10px;font-weight:400;line-height:normal}.footer{color:#7e8299!important;font-size:16px!important;font-weight:500!important}\n"] }]
194
+ }], ctorParameters: () => [{ type: i1.ConversionService }, { type: i2.FormBuilder }, { type: i3.AuthService }, { type: i0.ChangeDetectorRef }] });
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcDEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYXV0aC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYXV0aC1zaWdudXAvc3RlcC9zdGVwMS9zdGVwMS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hdXRoL3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hdXRoLXNpZ251cC9zdGVwL3N0ZXAxL3N0ZXAxLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXhFLE9BQU8sRUFBMkMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQVFyRixNQUFNLE9BQU8sY0FBYztJQVFMO0lBQTBDO0lBQXlCO0lBQWlDO0lBUHhILFNBQVMsQ0FBVztJQUNwQixnQkFBZ0IsR0FBVyxJQUFJLENBQUE7SUFDL0IsdUJBQXVCLEdBQVcsSUFBSSxDQUFBO0lBQ3RDLGlCQUFpQixDQUFNO0lBQ3ZCLFlBQVksQ0FBTTtJQUNsQixhQUFhLENBQU07SUFDbkIsYUFBYSxHQUFrQixFQUFFLENBQUE7SUFDakMsWUFBb0IsYUFBZ0MsRUFBVSxFQUFlLEVBQVUsV0FBdUIsRUFBVSxFQUFvQjtRQUF4SCxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFrQjtRQUMxSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUMsRUFBRTtZQUFDLElBQUcsSUFBSSxF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LEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwRixJQUFJLEVBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFBO2dCQUNyQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNuRixJQUFJLEVBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFBO2dCQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBQ3pCLENBQUM7U0FDRixDQUFDLENBQUE7SUFDSCxDQUFDO0lBSUYsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzt1R0F4TFUsY0FBYzsyRkFBZCxjQUFjLGlEQ1YzQix1dGdCQThOTTs7MkZEcE5PLGNBQWM7a0JBTDFCLFNBQVM7K0JBQ0UsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb252ZXJzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnZlcnNpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItc3RlcDEnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zdGVwMS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3N0ZXAxLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RlcDFDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIGFib3V0Rm9ybTogRm9ybUdyb3VwXHJcbiAgcGFzc3dvcmRTdHJlbmd0aDpzdHJpbmcgID0gJzAlJ1xyXG4gIGNvbmZpcm1QYXNzd29yZFN0cmVuZ3RoOnN0cmluZyAgPSAnMCUnXHJcbiAgaXNDbGllbnROYW1lVGFrZW46IGFueTtcclxuICBpc0VtYWlsVGFrZW46IGFueTtcclxuICBpc01vYmlsZVRha2VuOiBhbnk7XHJcbiAgc3Vic2NyaXB0aW9uczpTdWJzY3JpcHRpb25bXSA9IFtdXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXR0ZXJzZXJ2aWNlOiBDb252ZXJzaW9uU2VydmljZSwgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgYXV0aFNlcnZpY2U6QXV0aFNlcnZpY2UsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuaW5pdEZvcm0oKVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5hdXRoU2VydmljZS5hYm91dEZvcm1EYXRhLnN1YnNjcmliZSgoZGF0YSk9PntpZihkYXRhKXsgIFxyXG4gICAgICB0aGlzLmFib3V0Rm9ybS5wYXRjaFZhbHVlKHtcclxuICAgICAgICBjbGllbnROYW1lOmRhdGEuY2xpZW50TmFtZSxcclxuICAgICAgICBmaXJzdE5hbWU6ZGF0YS5maXJzdE5hbWUsXHJcbiAgICAgICAgbGFzdE5hbWU6ZGF0YS5sYXN0TmFtZSxcclxuICAgICAgICBjb3Jwb3JhdGVFbWFpbDpkYXRhLmNvcnBvcmF0ZUVtYWlsLFxyXG4gICAgICAgIGNvdW50cnlDb2RlOmRhdGEuY291bnRyeUNvZGUsXHJcbiAgICAgICAgbW9iaWxlTnVtYmVyOmRhdGEubW9iaWxlTnVtYmVyLFxyXG4gICAgICAgIHBhc3N3b3JkOmRhdGEucGFzc3dvcmQsXHJcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOmRhdGEuY29uZmlybVBhc3N3b3JkXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMucmVpbml0aWFsaXplUGFzc3dvcmRWYWxpZGF0aW9uKGRhdGEucGFzc3dvcmQsIGRhdGEuY29uZmlybVBhc3N3b3JkKVxyXG4gICAgfX0pKVxyXG5cclxuXHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHN1YnNjcmlwdGlvbik9PntzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKX0pXHJcbiAgfVxyXG5cclxuICBpbml0Rm9ybSgpIHtcclxuICAgIHRoaXMuYWJvdXRGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIGNsaWVudE5hbWU6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCksXHJcbiAgICAgIF0pLFxyXG4gICAgXSxcclxuICAgICAgZmlyc3ROYW1lOiBbJycsIFZhbGlkYXRvcnMuY29tcG9zZShbXHJcbiAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcclxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgICBsYXN0TmFtZTogWycnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgIC8vIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMyksXHJcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApLFxyXG4gICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgY29ycG9yYXRlRW1haWw6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aMC05XSsoWy4tX10/W2EtekEtWjAtOV0rKSpAW2EtekEtWjAtOV0rKFsuLV9dP1thLXpBLVpdKykqWy5dezF9W2EtekEtWl17Mix9JFwiKSxcclxuICAgICAgICBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKSxcclxuICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApLFxyXG4gICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgY291bnRyeUNvZGU6IFsnKzkxJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgIF0pLFxyXG4gICAgICBdLFxyXG4gICAgICBtb2JpbGVOdW1iZXI6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bNS05XVswLTldezl9JFwiKVxyXG4gICAgICBdKSxcclxuICAgICAgXSxcclxuICAgICAgcGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5jb21wb3NlKFtcclxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxyXG4gICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDMyMCksXHJcbiAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKC9eKD89LipbQS1aXSkoPz0uKlxcZCkuezgsfSQvKSxcclxuICAgICAgXSksXHJcbiAgICAgIF0sXHJcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xyXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXHJcbiAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzIwKSxcclxuICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oL14oPz0uKltBLVpdKSg/PS4qXFxkKS57OCx9JC8pLFxyXG4gICAgICAgIHRoaXMudmFsaWRhdGVBcmVFcXVhbC5iaW5kKHRoaXMpLFxyXG4gICAgICBdKSxcclxuICAgICAgICAsXHJcbiAgICAgIF0sXHJcblxyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVBcmVFcXVhbChmaWVsZENvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnk+KSB7XHJcbiAgICByZXR1cm4gZmllbGRDb250cm9sPy52YWx1ZSA9PT0gdGhpcy5hYm91dEZvcm0/LmdldCgncGFzc3dvcmQnKSEudmFsdWUgPyBudWxsIDoge1xyXG4gICAgICBOb3RFcXVhbDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuIGFzeW5jIGNoZWNrUGFzc3dvcmRTdHJlbmd0aCh2YWw6c3RyaW5nKXsgIFxyXG4gICAgY29uc3QgbnVtYmVycyA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XHJcbiAgICAgIGlmKC9bMC05XS9nLnRlc3QodmFsKSl7XHJcbiAgICAgICAgcmVzb2x2ZSh7bWVzYWdlOidudW1iZXJzIHBhc3NlZCd9KVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZWplY3Qoe21lc2FnZTonbnVtYmVycyBmYWlsZWQnfSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIGNvbnN0IGNhcGl0YWwgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xyXG4gICAgICBpZigvW2Etel0vZy50ZXN0KHZhbCkpe1xyXG4gICAgICAgIHJlc29sdmUoe21lc2FnZTonY2FwaXRhbCBwYXNzZWQnfSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmVqZWN0KHttZXNhZ2U6J2NhcGl0YWwgZmFpbGVkJ30pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBjb25zdCBzbWFsbCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XHJcbiAgICAgIGlmKC9bQS1aXS9nLnRlc3QodmFsKSl7XHJcbiAgICAgICAgcmVzb2x2ZSh7bWVzYWdlOidzbWFsbCBwYXNzZWQnfSlcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmVqZWN0KHttZXNhZ2U6J3NtYWxsIGZhaWxlZCd9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgY29uc3QgbGVuZ3RoID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcclxuICAgICAgaWYodmFsLmxlbmd0aCA+IDcpe1xyXG4gICAgICAgIHJlc29sdmUoe21lc2FnZTonbGVuZ3RoIHBhc3NlZCd9KVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICByZWplY3Qoe21lc2FnZTonbGVuZ3RoIGZhaWxlZCd9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIFxyXG4gIGNvbnN0IHBlcmNlbnRhZ2UgPSAgYXdhaXQgKFByb21pc2UgYXMgYW55KS5hbGxTZXR0bGVkKFtudW1iZXJzLCBjYXBpdGFsLCBzbWFsbCwgbGVuZ3RoXSlcclxuICAgIC50aGVuKChyZXM6YW55KT0+e1xyXG4gICAgICB2YXIgcGVyY2VudGFnZSA9IDBcclxuICAgICAgcmVzLmZvckVhY2goKGVsZW1lbnQ6YW55KSA9PiB7XHJcbiAgICAgICAgaWYoZWxlbWVudC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKXtcclxuICAgICAgICAgIHBlcmNlbnRhZ2UrPTI1XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHBlcmNlbnRhZ2VcclxuICAgIH0pICAgIFxyXG5cclxuICAgIHJldHVybiBwZXJjZW50YWdlICsgJyUnXHJcbiAgfVxyXG5cclxuIGFzeW5jIG9uUGFzc3dvcmRDaGFuZ2UoZXZlbnQ6YW55KXtcclxuICAgdGhpcy5wYXNzd29yZFN0cmVuZ3RoID0gYXdhaXQgdGhpcy5jaGVja1Bhc3N3b3JkU3RyZW5ndGgoZXZlbnQudGFyZ2V0LnZhbHVlKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25Db25maXJtUGFzc3dvcmRDaGFuZ2UoZXZlbnQ6YW55KXtcclxuICAgIHRoaXMuY29uZmlybVBhc3N3b3JkU3RyZW5ndGggPSBhd2FpdCB0aGlzLmNoZWNrUGFzc3dvcmRTdHJlbmd0aChldmVudC50YXJnZXQudmFsdWUpXHJcbiAgIH1cclxuXHJcbiBhc3luYyByZWluaXRpYWxpemVQYXNzd29yZFZhbGlkYXRpb24ocGFzc3dvcmQ6c3RyaW5nLCBjb25maXJtUGFzc3dvcmQ6c3RyaW5nKXtcclxuICB0aGlzLnBhc3N3b3JkU3RyZW5ndGggPSBhd2FpdCB0aGlzLmNoZWNrUGFzc3dvcmRTdHJlbmd0aChwYXNzd29yZClcclxuICB0aGlzLmNvbmZpcm1QYXNzd29yZFN0cmVuZ3RoID0gYXdhaXQgdGhpcy5jaGVja1Bhc3N3b3JkU3RyZW5ndGgoY29uZmlybVBhc3N3b3JkKVxyXG4gIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgfVxyXG5cclxuICAgb25DbGllbnROYW1lQmx1cigpe1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5pc0NsaWVudG5hbWVUYWtlbih0aGlzLmFib3V0Rm9ybT8uZ2V0KCdjbGllbnROYW1lJyk/LnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXMpPT57XHJcbiAgICAgICAgdGhpcy5pc0NsaWVudE5hbWVUYWtlbiA9IHJlcy5kYXRhLmlzRXhpc3RzXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgfVxyXG5cclxuICAgb25FbWFpbEJsdXIoKXtcclxuICAgIHRoaXMuYXV0aFNlcnZpY2UuaXNFbWFpbFRha2VuKHRoaXMuYWJvdXRGb3JtPy5nZXQoJ2NvcnBvcmF0ZUVtYWlsJyk/LnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OihyZXMpPT57XHJcbiAgICAgICAgdGhpcy5pc0VtYWlsVGFrZW4gPSByZXMuZGF0YS5pc0V4aXN0c1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgIH1cclxuXHJcbiAgIG9uTW9iaWxlTnVtYmVyQmx1cigpe1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5pc01vYmlsZVRha2VuKHRoaXMuYWJvdXRGb3JtPy5nZXQoJ21vYmlsZU51bWJlcicpPy52YWx1ZSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDoocmVzKT0+e1xyXG4gICAgICAgIHRoaXMuaXNNb2JpbGVUYWtlbiA9IHJlcy5kYXRhLmlzRXhpc3RzXHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgfVxyXG5cclxuXHJcblxyXG4gIG5leHRTdGVwKCkge1xyXG4gICAgdGhpcy5hdXRoU2VydmljZS5hYm91dEZvcm1EYXRhLm5leHQodGhpcy5hYm91dEZvcm0udmFsdWUpXHJcbiAgICB0aGlzLnNldHRlcnNlcnZpY2UuY29tcGxldGVTdGVwcGVyKHsgc3RlcDogMiB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmQgbXQtMTAgbXgtMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoLTEwMCBweC0xMCBteC01ICBteS03XCI+XHJcbiAgICAgICAgPCEtLSA8ZGl2PlxyXG4gICAgICAgIDxpbWcgY2xhc3M9XCJidWJibGVcIiBzcmM9XCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9hc3NldHMvSWNvbnMvU2lnbnVwLWJ1YmJsZS1pY29uLnN2Z1wiXHJcbiAgICAgICAgICAgICBhbHQ9XCJcIiBzcmNzZXQ9XCJcIj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZXNob3dcIj5cclxuICAgICAgICAgICAgPGgzIGNsYXNzPVwidGl0bGUxIHB0LTRcIj5BSSBjby1waWxvdCB0byBib29zdCB5b3VyIHNhbGVzIGNvbnZlcnNpb248L2gzPlxyXG4gICAgICAgICAgICA8cCBjbGFzcz1cInN1YnRleHQgcGItNFwiPkpvaW4gdGhlIGxlYWRpbmcgZ2xvYmFsIGJyYW5kcyBpbiB1bmRlcnN0YW5kaW5nIGZvb3RmYWxsIGFuZCBzaG9wcGVyIGJlaGF2aW9yIHRvXHJcbiAgICAgICAgICAgICAgICBib29zdFxyXG4gICAgICAgICAgICAgICAgc2FsZXMuPC9wPlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL0xlbnNrYXJ0LWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL255a2FhLWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZ3NyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL2dpdmEtbG9nby5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvRHVyb2ZsZXgtbG9nby5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvbG9jY2l0b25lLWxvZ28uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS0yMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImljb24tbW9yZVwiPjMwICs8L2g0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTdcIj5DcmVhdGUgYW4gQWNjb3VudDwvaDY+XHJcbiAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFib3V0Rm9ybVwiIG5vdmFsaWRhdGU9XCJub3ZhbGlkYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBweC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJCcmFuZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkJyYW5kIE5hbWUgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoYmx1cik9XCJvbkNsaWVudE5hbWVCbHVyKClcIiAoaW5wdXQpPVwiaXNDbGllbnROYW1lVGFrZW4gPSAwXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xpZW50TmFtZVwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cIkJyYW5kXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogYWJvdXRGb3JtLmdldCgnY2xpZW50TmFtZScpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2NsaWVudE5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgfVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NsaWVudE5hbWUnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdjbGllbnROYW1lJyk/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIG5hbWUgbXVzdCBiZSBtaW5pbXVtIG9mIDMgbGV0dGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NsaWVudE5hbWUnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdjbGllbnROYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyYW5kIG5hbWUgbXVzdCBiZSBtYXhpbXVtIG9mIDEwMCBsZXR0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgnY2xpZW50TmFtZScpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2NsaWVudE5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBuYW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNDbGllbnROYW1lVGFrZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCcmFuZCBuYW1lIGlzIGFscmVhZHkgdGFrZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IGNvbC14bC02IGNvbC14eGwtNiBtYi03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmlyc3RuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Rmlyc3QgTmFtZSAgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJmaXJzdE5hbWVcIiB0eXBlPVwidHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJmaXJzdG5hbWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGFib3V0Rm9ybS5nZXQoJ2ZpcnN0TmFtZScpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2ZpcnN0TmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdmaXJzdE5hbWUnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdmaXJzdE5hbWUnKT8uaGFzRXJyb3IoJ21pbmxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlyc3QgbmFtZSBtdXN0IGJlIG1pbmltdW0gb2YgMyBsZXR0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgnZmlyc3ROYW1lJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgnZmlyc3ROYW1lJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcnN0IG5hbWUgbXVzdCBiZSBtYXhpbXVtIG9mIDUwIGxldHRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdmaXJzdE5hbWUnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdmaXJzdE5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXJzdCBuYW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImxhc3RuYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TGFzdCBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIHR5cGU9XCJ0eXBlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImxhc3RuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdsYXN0TmFtZScpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2xhc3ROYW1lJyk/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3QgbmFtZSBtdXN0IGJlIG1pbmltdW0gb2YgMyBsZXR0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgnbGFzdE5hbWUnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdsYXN0TmFtZScpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXN0IG5hbWUgbXVzdCBiZSBtYXhpbXVtIG9mIDUwIGxldHRlcnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdsYXN0TmFtZScpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2xhc3ROYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdCBuYW1lIGlzIHJlcXVpcmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29ycG9yYXRlIEVtYWlsICA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChibHVyKT1cIm9uRW1haWxCbHVyKClcIiAoaW5wdXQpPVwiaXNFbWFpbFRha2VuID0gMFwiIGZvcm1Db250cm9sTmFtZT1cImNvcnBvcmF0ZUVtYWlsXCIgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImVtYWlsXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGFib3V0Rm9ybS5nZXQoJ2NvcnBvcmF0ZUVtYWlsJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgnY29ycG9yYXRlRW1haWwnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgnY29ycG9yYXRlRW1haWwnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdjb3Jwb3JhdGVFbWFpbCcpPy5oYXNFcnJvcignbWlubGVuZ3RoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3Jwb3JhdGUgZW1haWwgbXVzdCBiZSBtaW5pbXVtIG9mIDMgbGV0dGVyc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NvcnBvcmF0ZUVtYWlsJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgnY29ycG9yYXRlRW1haWwnKT8uaGFzRXJyb3IoJ21heGxlbmd0aCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ycG9yYXRlIGVtYWlsIG11c3QgYmUgbWF4aW11bSBvZiA1MCBsZXR0ZXJzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgnY29ycG9yYXRlRW1haWwnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdjb3Jwb3JhdGVFbWFpbCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcnBvcmF0ZSBlbWFpbCBpcyByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NvcnBvcmF0ZUVtYWlsJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgnY29ycG9yYXRlRW1haWwnKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyIGEgdmFsaWQgZW1haWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0VtYWlsVGFrZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBpcyBhbHJlYWR5IHRha2VuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBjb2wteGwtNiBjb2wteHhsLTYgbWItN1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaG9uZW51bWJlclwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBob25lIG51bWJlciAgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlDb2RlXCIgY2xhc3M9XCJmb3JtLXNlbGVjdCBzZWxlY3QtcmFkaXVzIG1zLTQgbWUtNVwiIFtuZ0NsYXNzXT1cInsgJ2NvdW50cnktaXMtaW52YWxpZCc6IGFib3V0Rm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy5oYXNFcnJvcigncmVxdWlyZWQnKSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiaW5wdXRHcm91cFNlbGVjdDAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGNsYXNzPVwibXgtMlwiIHZhbHVlPVwiKzkxXCI+SW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gY2xhc3M9XCJteC0yXCIgdmFsdWU9XCIrOTNcIj5BZjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz1cIm14LTJcIiB2YWx1ZT1cIiszNTVcIj5BbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3ZhbHVlXT1cImFib3V0Rm9ybS5nZXQoJ2NvdW50cnlDb2RlJyk/LnZhbHVlXCIgdHlwZT1cInRleHRcIiAgW25nQ2xhc3NdPVwieyAnY29kZS1pcy1pbnZhbGlkJzogYWJvdXRGb3JtLmdldCgnbW9iaWxlTnVtYmVyJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgnbW9iaWxlTnVtYmVyJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBib3JkZXItZGlzYWJsZWRcIiByZWFkb25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGJsdXIpPVwib25Nb2JpbGVOdW1iZXJCbHVyKClcIiAoaW5wdXQpPVwiaXNNb2JpbGVUYWtlbiA9IDBcIiBmb3JtQ29udHJvbE5hbWU9XCJtb2JpbGVOdW1iZXJcIiB0eXBlPVwidHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvcmRlci1uZXdcIiAgW25nQ2xhc3NdPVwieyAnbW9iaWxlLWlzLWludmFsaWQgaXMtaW52YWxpZCc6IGFib3V0Rm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ21vYmlsZU51bWJlcicpPy5oYXNFcnJvcigncmVxdWlyZWQnKSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwaG9uZW51bWJlclwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaG9uZSBudW1iZXIgaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdtb2JpbGVOdW1iZXInKT8uaGFzRXJyb3IoJ3BhdHRlcm4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudGVyIGEgdmFsaWQgcGhvbmUgbnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNb2JpbGVUYWtlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vYmlsZSBudW1iZXIgYWxyZWFkeSB0YWtlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBhc3N3b3JkICA8c3BhbiBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvblBhc3N3b3JkQ2hhbmdlKCRldmVudClcIiBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogYWJvdXRGb3JtLmdldCgncGFzc3dvcmQnKT8udG91Y2hlZCAmJiBhYm91dEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGFzc3dvcmRcIiBhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cInByb2dyZXNzYmFyLXdyYXBwZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS53aWR0aF09XCJwYXNzd29yZFN0cmVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWNvbG9yJzogcGFzc3dvcmRTdHJlbmd0aCA9PT0gJzAlJyA/ICcnIDogKHBhc3N3b3JkU3RyZW5ndGggPT09ICcyNSUnID8gJ3JlZCcgOiAocGFzc3dvcmRTdHJlbmd0aCA9PT0gJzUwJScgPyAnb3JhbmdlJzogKHBhc3N3b3JkU3RyZW5ndGggPT09ICc3NSUnID8gJ3llbGxvdycgOiAocGFzc3dvcmRTdHJlbmd0aCA9PT0gJzEwMCUnID8gJ2dyZWVuJyA6ICcnKSkpKSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwcm9ncmVzc2Jhci1pbm5lclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhc3N3b3JkLW5vdGUgbXQtMlwiPnRoZSBwYXNzd29yZCBtb3N0IGNvbnRhaW4gYXRsZWFzdCBvbmUgY2FwaXRhbCBsZXR0ZXIgYW5kIG51bWJlci48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYWJvdXRGb3JtLmdldCgncGFzc3dvcmQnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgYWJvdXRGb3JtLmdldCgncGFzc3dvcmQnKT8udG91Y2hlZFwiPlBhc3N3b3JkIGlzIHJlcXVpcmVkPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhYm91dEZvcm0uZ2V0KCdwYXNzd29yZCcpPy5oYXNFcnJvcigncGF0dGVybicpXCI+VXNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggb3IgbW9yZSBjaGFyYWN0ZXJzIHdpdGggYSBtaXggb2YgbGV0dGVycywgbnVtYmVycyAmIHN5bWJvbHMuPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnRvdWNoZWQgJiYgYWJvdXRGb3JtLmdldCgncGFzc3dvcmQnKT8uaW52YWxpZFwiPjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgY29sLXhsLTYgY29sLXh4bC02IG1iLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb25maXJtXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q29uZmlybSBQYXNzd29yZCAgPHNwYW4gY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoaW5wdXQpPVwib25Db25maXJtUGFzc3dvcmRDaGFuZ2UoJGV2ZW50KVwiIGZvcm1Db250cm9sTmFtZT1cImNvbmZpcm1QYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IGFib3V0Rm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKSB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbmZpcm1cIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc2Jhci13cmFwcGVyIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbc3R5bGUud2lkdGhdPVwiY29uZmlybVBhc3N3b3JkU3RyZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOiBjb25maXJtUGFzc3dvcmRTdHJlbmd0aCA9PT0gJzAlJyA/ICcnIDogKGNvbmZpcm1QYXNzd29yZFN0cmVuZ3RoID09PSAnMjUlJyA/ICdyZWQnIDogKGNvbmZpcm1QYXNzd29yZFN0cmVuZ3RoID09PSAnNTAlJyA/ICdvcmFuZ2UnOiAoY29uZmlybVBhc3N3b3JkU3RyZW5ndGggPT09ICc3NSUnID8gJ3llbGxvdycgOiAoY29uZmlybVBhc3N3b3JkU3RyZW5ndGggPT09ICcxMDAlJyA/ICdncmVlbicgOiAnJykpKSkgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJvZ3Jlc3NiYXItaW5uZXJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXNzd29yZC1ub3RlIG10LTJcIj50aGUgcGFzc3dvcmQgbW9zdCBjb250YWluIGF0bGVhc3Qgb25lIGNhcGl0YWwgbGV0dGVyIGFuZCBudW1iZXIuPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy5oYXNFcnJvcigncGF0dGVybicpXCI+VGhlIHBhc3N3b3JkIG11c3QgY29udGFpbiBhdGxlYXN0IG9uZSBjYXBpdGFsIGxldHRlciBhbmQgbnVtYmVyLjwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFib3V0Rm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy50b3VjaGVkICYmIGFib3V0Rm9ybS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpPy5pbnZhbGlkXCI+UGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgbWF0Y2g8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VycmVudFN0ZXAkLnZhbHVlID09IDFcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJhYm91dEZvcm0uaW52YWxpZCB8fCBpc01vYmlsZVRha2VuIHx8IGlzRW1haWxUYWtlbiB8fCBpc0NsaWVudE5hbWVUYWtlblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGcgYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibmV4dFN0ZXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZGljYXRvci1sYWJlbCBweC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5leHQgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNy41IDE1TDEyLjUgMTBMNy41IDVcIiBzdHJva2U9XCJ3aGl0ZVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICBjbGFzcz1cIm1iLTMgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtbWQtcm93ICBmbGV4LW1kLXN0YWNrIHB0LTMgY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZ3JheS05MDAgb3JkZXItMiBvcmRlci1tZC0xIG1zLTEwXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMSBmb290ZXJcIj7CqSAyMDI0IDwvc3Bhbj5cclxuICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJmb290ZXJcIj5UYW5nbyBJVCBzb2x1dGlvbnM8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibWVudSBtZW51LWdyYXktNjAwIG1lbnUtaG92ZXItcHJpbWFyeSBmdy1zZW1pYm9sZCBvcmRlci0xIG1lLTEwXCI+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cIm1lbnUtbGluayBweC01XCI+QWJvdXQgdXM8L2E+PC9saT5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibWVudS1pdGVtIGZvb3RlclwiPjxhIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwibWVudS1saW5rIHB4LTVcIj5Db250YWN0IFVzPC9hPjwvbGk+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1lbnUtaXRlbSBmb290ZXJcIj48YSB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cIm1lbnUtbGluayBweC01XCI+UHJpdmFjeSAmIHBvbGljeTwvYT48L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19