simpo-component-library 2.2.0 → 2.2.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.
- package/esm2022/lib/elements/index.mjs +6 -6
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
- package/esm2022/lib/elements/property/property.component.mjs +41 -0
- package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +10 -30
- package/esm2022/lib/sections/property-component/property-component.component.mjs +7 -78
- package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
- package/esm2022/lib/sections/property-list/property-list.component.mjs +48 -101
- package/esm2022/lib/services/events.service.mjs +1 -2
- package/esm2022/lib/services/rest.service.mjs +5 -61
- package/esm2022/lib/styles/index.mjs +1 -5
- package/esm2022/public-api.mjs +1 -4
- package/fesm2022/simpo-component-library.mjs +5019 -5915
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/elements/index.d.ts +3 -3
- package/lib/elements/property/property.component.d.ts +8 -0
- package/lib/sections/banner-carousel/banner-carousel.component.d.ts +2 -2
- package/lib/sections/carousel-banner/carousel-banner.component.d.ts +1 -1
- package/lib/sections/image-section/image-section.component.d.ts +2 -2
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
- package/lib/sections/navbar-section/navbar-section.component.d.ts +1 -7
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/sections/property-component/property-component.component.d.ts +4 -24
- package/lib/sections/property-component/property-component.modal.d.ts +18 -11
- package/lib/sections/property-list/property-list.component.d.ts +1 -7
- package/lib/services/events.service.d.ts +0 -1
- package/lib/services/rest.service.d.ts +0 -15
- package/lib/styles/index.d.ts +0 -3
- package/package.json +1 -1
- package/public-api.d.ts +0 -3
- package/simpo-component-library-2.2.3.tgz +0 -0
- package/esm2022/lib/elements/my-documents/my-documents.component.mjs +0 -11
- package/esm2022/lib/elements/my-orders/my-orders.component.mjs +0 -64
- package/esm2022/lib/elements/my-statement/my-statement.component.mjs +0 -26
- package/esm2022/lib/elements/need-help/need-help.component.mjs +0 -11
- package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +0 -59
- package/esm2022/lib/elements/properties/properties.component.mjs +0 -70
- package/esm2022/lib/elements/property-view/property-view.component.mjs +0 -42
- package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +0 -125
- package/esm2022/lib/sections/profile-section/profile-section.component.mjs +0 -47
- package/esm2022/lib/sections/profile-section/profile-section.modal.mjs +0 -2
- package/esm2022/lib/sections/property-detail/property-detail.component.mjs +0 -121
- package/esm2022/lib/sections/property-detail/property-detail.model.mjs +0 -2
- package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +0 -272
- package/esm2022/lib/sections/signup-signin/signup-signin.model.mjs +0 -2
- package/lib/elements/my-documents/my-documents.component.d.ts +0 -5
- package/lib/elements/my-orders/my-orders.component.d.ts +0 -10
- package/lib/elements/my-statement/my-statement.component.d.ts +0 -8
- package/lib/elements/need-help/need-help.component.d.ts +0 -5
- package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +0 -20
- package/lib/elements/properties/properties.component.d.ts +0 -12
- package/lib/elements/property-view/property-view.component.d.ts +0 -8
- package/lib/sections/kyc-details/kyc-details.component.d.ts +0 -29
- package/lib/sections/profile-section/profile-section.component.d.ts +0 -15
- package/lib/sections/profile-section/profile-section.modal.d.ts +0 -5
- package/lib/sections/property-detail/property-detail.component.d.ts +0 -32
- package/lib/sections/property-detail/property-detail.model.d.ts +0 -5
- package/lib/sections/signup-signin/signup-signin.component.d.ts +0 -48
- package/lib/sections/signup-signin/signup-signin.model.d.ts +0 -10
- package/simpo-component-library-2.2.0.tgz +0 -0
@@ -1,272 +0,0 @@
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
2
|
-
import BaseSection from '../BaseSection';
|
3
|
-
import { CommonModule } from '@angular/common';
|
4
|
-
import { SimpoComponentModule } from '../../components/index';
|
5
|
-
import { HoverElementsComponent } from "../../components/hover-elements/hover-elements.component";
|
6
|
-
import { DeleteHoverElementComponent } from "../../components/delete-hover-element/delete-hover-element.component";
|
7
|
-
import { HoverDirective } from '../../directive/hover-element-directive';
|
8
|
-
import { BackgroundDirective } from '../../directive/background-directive';
|
9
|
-
import { AnimationDirective } from '../../directive/animation-directive';
|
10
|
-
import { CornerDirective } from '../../directive/corner-directive';
|
11
|
-
import { FormsModule } from '@angular/forms';
|
12
|
-
import { MessageService } from 'primeng/api';
|
13
|
-
import { KycDetailsComponent } from '../kyc-details/kyc-details.component';
|
14
|
-
import { StorageKeys } from '../../styles/index';
|
15
|
-
import * as i0 from "@angular/core";
|
16
|
-
import * as i1 from "./../../services/events.service";
|
17
|
-
import * as i2 from "../../services/rest.service";
|
18
|
-
import * as i3 from "@angular/router";
|
19
|
-
import * as i4 from "primeng/api";
|
20
|
-
import * as i5 from "@angular/material/dialog";
|
21
|
-
import * as i6 from "@angular/common";
|
22
|
-
import * as i7 from "../../components/hover-elements/hover-elements.component";
|
23
|
-
import * as i8 from "../../components/delete-hover-element/delete-hover-element.component";
|
24
|
-
import * as i9 from "@angular/forms";
|
25
|
-
export class SignupSigninComponent extends BaseSection {
|
26
|
-
constructor(_eventService, restService, router, activatedRoute, messageService, matDialog) {
|
27
|
-
super();
|
28
|
-
this._eventService = _eventService;
|
29
|
-
this.restService = restService;
|
30
|
-
this.router = router;
|
31
|
-
this.activatedRoute = activatedRoute;
|
32
|
-
this.messageService = messageService;
|
33
|
-
this.matDialog = matDialog;
|
34
|
-
this.buttonLoader = false;
|
35
|
-
this.currentPage = 'LOGIN';
|
36
|
-
this.backgroundImage = "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/500415c1739434186310image%2016.png";
|
37
|
-
this.otpArray = new Array(4).fill('');
|
38
|
-
this.loginOtpArray = new Array(4).fill('');
|
39
|
-
this.loginEmail = '';
|
40
|
-
this.investor = {
|
41
|
-
"fullName": "",
|
42
|
-
"emailId": "",
|
43
|
-
"phoneNumber": "",
|
44
|
-
"password": "",
|
45
|
-
"kycVerified": false,
|
46
|
-
"active": true,
|
47
|
-
"otp": "",
|
48
|
-
"deleted": false
|
49
|
-
};
|
50
|
-
this.otpSent = false;
|
51
|
-
}
|
52
|
-
ngOnInit() {
|
53
|
-
this.activatedRoute.queryParams.subscribe((param) => {
|
54
|
-
if (param['type'])
|
55
|
-
this.currentPage = param['type'];
|
56
|
-
if (param['id'])
|
57
|
-
this.propertyId = param['id'];
|
58
|
-
});
|
59
|
-
}
|
60
|
-
ngOnDestroy() {
|
61
|
-
this.kycDetailsSubscription?.unsubscribe();
|
62
|
-
}
|
63
|
-
editSection() {
|
64
|
-
this._eventService.toggleEditorEvent.emit(false);
|
65
|
-
setTimeout(() => {
|
66
|
-
this._eventService.editSection.emit({ data: this.data });
|
67
|
-
}, 100);
|
68
|
-
}
|
69
|
-
move(event, idx) {
|
70
|
-
if (isNaN(Number(event.key)) && event.code != "Backspace")
|
71
|
-
return;
|
72
|
-
if (event.code != "Backspace") {
|
73
|
-
this.otpArray[idx] = event.key;
|
74
|
-
document.getElementById("otp_" + (idx + 1))?.focus();
|
75
|
-
}
|
76
|
-
if (event.code == "Backspace" && !this.otpArray[idx]) {
|
77
|
-
document.getElementById("otp_" + (idx - 1))?.focus();
|
78
|
-
}
|
79
|
-
}
|
80
|
-
moveLoginOtpCursor(event, idx) {
|
81
|
-
if (isNaN(Number(event.key)) && event.code != "Backspace")
|
82
|
-
return;
|
83
|
-
if (event.code != "Backspace") {
|
84
|
-
this.loginOtpArray[idx] = event.key;
|
85
|
-
document.getElementById("loginOtp_" + (idx + 1))?.focus();
|
86
|
-
}
|
87
|
-
if (event.code == "Backspace" && !this.otpArray[idx]) {
|
88
|
-
document.getElementById("loginOtp_" + (idx - 1))?.focus();
|
89
|
-
}
|
90
|
-
}
|
91
|
-
buttonClickedEvent() {
|
92
|
-
if (this.currentPage === 'SIGN_UP') {
|
93
|
-
this.sendOtp();
|
94
|
-
}
|
95
|
-
if (this.currentPage === 'OTP_VERIFY') {
|
96
|
-
this.signUp();
|
97
|
-
}
|
98
|
-
if (this.currentPage === 'LOGIN') {
|
99
|
-
this.loginWithPassword();
|
100
|
-
}
|
101
|
-
}
|
102
|
-
signUp() {
|
103
|
-
this.buttonLoader = true;
|
104
|
-
this.investor.otp = "";
|
105
|
-
this.otpArray.forEach((otp) => {
|
106
|
-
this.investor.otp += otp;
|
107
|
-
});
|
108
|
-
this.restService.signUp(this.investor).subscribe({
|
109
|
-
next: (res) => {
|
110
|
-
this.messageService.add({
|
111
|
-
severity: 'success',
|
112
|
-
summary: 'Sign Up',
|
113
|
-
detail: 'Sign up Successfully'
|
114
|
-
});
|
115
|
-
this.currentPage = 'LOGIN';
|
116
|
-
this.buttonLoader = false;
|
117
|
-
},
|
118
|
-
error: (err) => {
|
119
|
-
this.messageService.add({
|
120
|
-
severity: 'error',
|
121
|
-
summary: 'Sign Up Failed',
|
122
|
-
detail: 'Something went wrong. Please try again.'
|
123
|
-
});
|
124
|
-
this.buttonLoader = false;
|
125
|
-
}
|
126
|
-
});
|
127
|
-
}
|
128
|
-
sendOtp() {
|
129
|
-
this.buttonLoader = true;
|
130
|
-
this.restService.sendOtp(this.investor.emailId).subscribe({
|
131
|
-
next: (res) => {
|
132
|
-
this.messageService.add({
|
133
|
-
severity: 'success',
|
134
|
-
summary: 'OTP',
|
135
|
-
detail: 'OTP Sent Successfully'
|
136
|
-
});
|
137
|
-
this.currentPage = 'OTP_VERIFY';
|
138
|
-
this.buttonLoader = false;
|
139
|
-
},
|
140
|
-
error: (err) => {
|
141
|
-
this.messageService.add({
|
142
|
-
severity: 'error',
|
143
|
-
summary: 'OTP Failed',
|
144
|
-
detail: err.error?.message || 'Failed to send OTP. Please try again.'
|
145
|
-
});
|
146
|
-
this.buttonLoader = false;
|
147
|
-
}
|
148
|
-
});
|
149
|
-
}
|
150
|
-
loginWithPassword() {
|
151
|
-
this.buttonLoader = true;
|
152
|
-
this.restService.login({ email: this.loginEmail, password: this.investor.password }).subscribe({
|
153
|
-
next: (res) => {
|
154
|
-
this.messageService.add({
|
155
|
-
severity: 'success',
|
156
|
-
summary: 'Log In',
|
157
|
-
detail: 'Logged in successfully'
|
158
|
-
});
|
159
|
-
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
160
|
-
if (this.propertyId) {
|
161
|
-
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
162
|
-
return;
|
163
|
-
}
|
164
|
-
this.getKycDetails();
|
165
|
-
this.router.navigate(['property-list']);
|
166
|
-
this.buttonLoader = false;
|
167
|
-
},
|
168
|
-
error: (err) => {
|
169
|
-
this.messageService.add({
|
170
|
-
severity: 'error',
|
171
|
-
summary: 'Login Failed',
|
172
|
-
detail: err.error?.message || 'Invalid email or password. Please try again.'
|
173
|
-
});
|
174
|
-
this.buttonLoader = false;
|
175
|
-
}
|
176
|
-
});
|
177
|
-
}
|
178
|
-
sendOtpForLogin() {
|
179
|
-
this.buttonLoader = true;
|
180
|
-
this.otpSent = false;
|
181
|
-
this.restService.sendOtp(this.loginEmail).subscribe({
|
182
|
-
next: (res) => {
|
183
|
-
this.otpSent = true;
|
184
|
-
this.messageService.add({
|
185
|
-
severity: 'success',
|
186
|
-
summary: 'OTP',
|
187
|
-
detail: 'OTP Sent Successfully'
|
188
|
-
});
|
189
|
-
this.buttonLoader = false;
|
190
|
-
},
|
191
|
-
error: (err) => {
|
192
|
-
this.messageService.add({
|
193
|
-
severity: 'error',
|
194
|
-
summary: 'Error',
|
195
|
-
detail: 'Failed to send OTP. Please try again.'
|
196
|
-
});
|
197
|
-
this.buttonLoader = false;
|
198
|
-
}
|
199
|
-
});
|
200
|
-
}
|
201
|
-
verifyOtp() {
|
202
|
-
this.buttonLoader = true;
|
203
|
-
let logInOtp = '';
|
204
|
-
this.loginOtpArray.forEach((otp) => {
|
205
|
-
logInOtp += otp;
|
206
|
-
});
|
207
|
-
this.restService.verifyOtp(this.loginEmail, logInOtp).subscribe({
|
208
|
-
next: (res) => {
|
209
|
-
this.messageService.add({
|
210
|
-
severity: 'success',
|
211
|
-
summary: 'Log In',
|
212
|
-
detail: 'Logged in successfully'
|
213
|
-
});
|
214
|
-
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
215
|
-
if (this.propertyId) {
|
216
|
-
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
217
|
-
return;
|
218
|
-
}
|
219
|
-
this.getKycDetails();
|
220
|
-
this.router.navigate(['property-list']);
|
221
|
-
this.buttonLoader = false;
|
222
|
-
},
|
223
|
-
error: (err) => {
|
224
|
-
this.messageService.add({
|
225
|
-
severity: 'error',
|
226
|
-
summary: 'Error',
|
227
|
-
detail: 'Invalid OTP. Please try again.'
|
228
|
-
});
|
229
|
-
this.buttonLoader = false;
|
230
|
-
}
|
231
|
-
});
|
232
|
-
}
|
233
|
-
isValidEmail(email) {
|
234
|
-
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
235
|
-
return emailRegex.test(email);
|
236
|
-
}
|
237
|
-
getKycDetails() {
|
238
|
-
this.kycDetailsSubscripition = this.restService.getKycDetails().subscribe((res) => {
|
239
|
-
if (!(res?.message?.panVerified === 'VALID' && res?.message?.aadhaarVerified === 'VALID')) {
|
240
|
-
this.matDialog.open(KycDetailsComponent, { panelClass: "login-signup" });
|
241
|
-
}
|
242
|
-
});
|
243
|
-
}
|
244
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SignupSigninComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.MessageService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
245
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SignupSigninComponent, isStandalone: true, selector: "simpo-signup-signin", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && !otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Login</span> \r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP'\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN'\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN'\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:15px 5px!important;width:9%!important;border:unset!important;border-radius:20px!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i8.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.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: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type:
|
246
|
-
//Directives
|
247
|
-
BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }] }); }
|
248
|
-
}
|
249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SignupSigninComponent, decorators: [{
|
250
|
-
type: Component,
|
251
|
-
args: [{ selector: 'simpo-signup-signin', standalone: true, imports: [
|
252
|
-
CommonModule,
|
253
|
-
SimpoComponentModule,
|
254
|
-
HoverElementsComponent,
|
255
|
-
DeleteHoverElementComponent,
|
256
|
-
HoverDirective,
|
257
|
-
FormsModule,
|
258
|
-
//Directives
|
259
|
-
BackgroundDirective,
|
260
|
-
AnimationDirective,
|
261
|
-
CornerDirective
|
262
|
-
], providers: [MessageService], template: "<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Old Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Re-Enter Your Password\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"password\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY'\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP'\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && !otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP' && otpSent\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Login</span> \r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP'\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN'\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN'\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:15px 5px!important;width:9%!important;border:unset!important;border-radius:20px!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
|
263
|
-
}], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.MessageService }, { type: i5.MatDialog }], propDecorators: { data: [{
|
264
|
-
type: Input
|
265
|
-
}], index: [{
|
266
|
-
type: Input
|
267
|
-
}], edit: [{
|
268
|
-
type: Input
|
269
|
-
}], delete: [{
|
270
|
-
type: Input
|
271
|
-
}] } });
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixD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YyxDQUFDLGlEQ3hDN0IsdWpRQTZIQSxpcEREbkdJLFlBQVksa2JBQ1osb0JBQW9CLG9XQUdwQixjQUFjLCtFQUNkLFdBQVc7Z0JBRVgsWUFBWTtnQkFFWixtQkFBbUIsMEdBQ25CLGtCQUFrQix5RkFDbEIsZUFBZTs7MkZBT04scUJBQXFCO2tCQXRCakMsU0FBUzsrQkFDRSxxQkFBcUIsY0FDbkIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsY0FBYzt3QkFDZCxXQUFXO3dCQUVYLFlBQVk7d0JBRVosbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGVBQWU7cUJBRWhCLGFBQ1UsQ0FBQyxjQUFjLENBQUM7bU5BS2xCLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNpZ25JblNpZ25VcFN0eWxlc01vZGVsLCBTaWduVXBTaWduSW5Nb2RlbCB9IGZyb20gJy4vc2lnbnVwLXNpZ25pbi5tb2RlbCc7XHJcbmltcG9ydCBCYXNlU2VjdGlvbiBmcm9tICcuLi9CYXNlU2VjdGlvbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSG92ZXJFbGVtZW50c0NvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2hvdmVyLWVsZW1lbnRzL2hvdmVyLWVsZW1lbnRzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9kZWxldGUtaG92ZXItZWxlbWVudC9kZWxldGUtaG92ZXItZWxlbWVudC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSG92ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvaG92ZXItZWxlbWVudC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBCYWNrZ3JvdW5kRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2JhY2tncm91bmQtZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQW5pbWF0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlL2FuaW1hdGlvbi1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDb3JuZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvY29ybmVyLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgS3ljRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2t5Yy1kZXRhaWxzL2t5Yy1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VLZXlzIH0gZnJvbSAnLi4vLi4vc3R5bGVzL2luZGV4JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1zaWdudXAtc2lnbmluJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNpbXBvQ29tcG9uZW50TW9kdWxlLFxyXG4gICAgSG92ZXJFbGVtZW50c0NvbXBvbmVudCxcclxuICAgIERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCxcclxuICAgIEhvdmVyRGlyZWN0aXZlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcblxyXG4gICAgLy9EaXJlY3RpdmVzXHJcblxyXG4gICAgQmFja2dyb3VuZERpcmVjdGl2ZSxcclxuICAgIEFuaW1hdGlvbkRpcmVjdGl2ZSxcclxuICAgIENvcm5lckRpcmVjdGl2ZVxyXG5cclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NpZ251cC1zaWduaW4uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ251cFNpZ25pbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSBkYXRhPzogU2lnblVwU2lnbkluTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcm9wZXJ0eUlkPzogbnVtYmVyO1xyXG4gIGJ1dHRvbkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGt5Y0RldGFpbHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAocGFyYW1bJ3R5cGUnXSlcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFyYW1bJ3R5cGUnXTtcclxuICAgICAgaWYgKHBhcmFtWydpZCddKVxyXG4gICAgICAgIHRoaXMucHJvcGVydHlJZCA9IHBhcmFtWydpZCddO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5reWNEZXRhaWxzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgY3VycmVudFBhZ2U6ICdMT0dJTicgfCAnU0lHTl9VUCcgfCAnT1RQJyB8ICdGT1JHT1RfUEFTU1dPUkQnIHwgJ09UUF9WRVJJRlknID0gJ0xPR0lOJ1xyXG4gIGt5Y0RldGFpbHNTdWJzY3JpcGl0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGJhY2tncm91bmRJbWFnZTogYW55ID0gXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzUwMDQxNWMxNzM5NDM0MTg2MzEwaW1hZ2UlMjAxNi5wbmdcIlxyXG5cclxuICBlZGl0U2VjdGlvbigpIHtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7IGRhdGE6IHRoaXMuZGF0YSB9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlKGV2ZW50OiBhbnksIGlkeDogbnVtYmVyKSB7XHJcblxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihldmVudC5rZXkpKSAmJiBldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgIHRoaXMub3RwQXJyYXlbaWR4XSA9IGV2ZW50LmtleTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib3RwX1wiICsgKGlkeCAtIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ2luT3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlTG9naW5PdHBDdXJzb3IoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpICYmIGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgdGhpcy5sb2dpbk90cEFycmF5W2lkeF0gPSBldmVudC5rZXk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4IC0gMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9naW5FbWFpbDogc3RyaW5nID0gJydcclxuICBpbnZlc3RvcjogYW55ID0ge1xyXG4gICAgXCJmdWxsTmFtZVwiOiBcIlwiLFxyXG4gICAgXCJlbWFpbElkXCI6IFwiXCIsXHJcbiAgICBcInBob25lTnVtYmVyXCI6IFwiXCIsXHJcbiAgICBcInBhc3N3b3JkXCI6IFwiXCIsXHJcbiAgICBcImt5Y1ZlcmlmaWVkXCI6IGZhbHNlLFxyXG4gICAgXCJhY3RpdmVcIjogdHJ1ZSxcclxuICAgIFwib3RwXCI6IFwiXCIsXHJcbiAgICBcImRlbGV0ZWRcIjogZmFsc2VcclxuICB9XHJcbiAgb3RwU2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBidXR0b25DbGlja2VkRXZlbnQoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gJ1NJR05fVVAnKSB7XHJcbiAgICAgIHRoaXMuc2VuZE90cCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09ICdPVFBfVkVSSUZZJykge1xyXG4gICAgICB0aGlzLnNpZ25VcCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY3VycmVudFBhZ2UgPT09ICdMT0dJTicpIHtcclxuICAgICAgdGhpcy5sb2dpbldpdGhQYXNzd29yZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2lnblVwKCkge1xyXG4gICAgdGhpcy5idXR0b25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5pbnZlc3Rvci5vdHAgPSBcIlwiXHJcbiAgICB0aGlzLm90cEFycmF5LmZvckVhY2goKG90cCkgPT4ge1xyXG4gICAgICB0aGlzLmludmVzdG9yLm90cCArPSBvdHA7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5zaWduVXAodGhpcy5pbnZlc3Rvcikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICAgIGRldGFpbDogJ1NpZ24gdXAgU3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAnTE9HSU4nO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnU2lnbiBVcCBGYWlsZWQnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnU29tZXRoaW5nIHdlbnQgd3JvbmcuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBzZW5kT3RwKCkge1xyXG4gICAgdGhpcy5idXR0b25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5zZW5kT3RwKHRoaXMuaW52ZXN0b3IuZW1haWxJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnT1RQIFNlbnQgU3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAnT1RQX1ZFUklGWSc7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAgRmFpbGVkJyxcclxuICAgICAgICAgIGRldGFpbDogZXJyLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2VuZCBPVFAuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2dpbldpdGhQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UubG9naW4oeyBlbWFpbDogdGhpcy5sb2dpbkVtYWlsLCBwYXNzd29yZDogdGhpcy5pbnZlc3Rvci5wYXNzd29yZCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0xvZyBJbicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdMb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFN0b3JhZ2VLZXlzLklOVkVTVE9SX0lELCByZXMuaW52ZXN0b3JJZCk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJZCkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkZXRhaWxzJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucHJvcGVydHlJZCB9IH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldEt5Y0RldGFpbHMoKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb3BlcnR5LWxpc3QnXSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdMb2dpbiBGYWlsZWQnLFxyXG4gICAgICAgICAgZGV0YWlsOiBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZW1haWwgb3IgcGFzc3dvcmQuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBzZW5kT3RwRm9yTG9naW4oKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLm90cFNlbnQgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNlbmRPdHAodGhpcy5sb2dpbkVtYWlsKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm90cFNlbnQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnc3VjY2VzcycsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnT1RQJyxcclxuICAgICAgICAgIGRldGFpbDogJ09UUCBTZW50IFN1Y2Nlc3NmdWxseSdcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICBzdW1tYXJ5OiAnRXJyb3InLFxyXG4gICAgICAgICAgZGV0YWlsOiAnRmFpbGVkIHRvIHNlbmQgT1RQLiBQbGVhc2UgdHJ5IGFnYWluLidcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZlcmlmeU90cCgpIHtcclxuICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gdHJ1ZTtcclxuICAgIGxldCBsb2dJbk90cDogc3RyaW5nID0gJyc7XHJcbiAgICB0aGlzLmxvZ2luT3RwQXJyYXkuZm9yRWFjaCgob3RwKSA9PiB7XHJcbiAgICAgIGxvZ0luT3RwICs9IG90cDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS52ZXJpZnlPdHAodGhpcy5sb2dpbkVtYWlsLCBsb2dJbk90cCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdMb2cgSW4nLFxyXG4gICAgICAgICAgZGV0YWlsOiAnTG9nZ2VkIGluIHN1Y2Nlc3NmdWxseSdcclxuICAgICAgICB9KTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5JTlZFU1RPUl9JRCwgcmVzLmludmVzdG9ySWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5SWQpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZGV0YWlscyddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnByb3BlcnR5SWQgfSB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRLeWNEZXRhaWxzKCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydwcm9wZXJ0eS1saXN0J10pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdFcnJvcicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdJbnZhbGlkIE9UUC4gUGxlYXNlIHRyeSBhZ2Fpbi4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICAgIHJldHVybiBlbWFpbFJlZ2V4LnRlc3QoZW1haWwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0S3ljRGV0YWlscygpIHtcclxuICAgIHRoaXMua3ljRGV0YWlsc1N1YnNjcmlwaXRpb24gPSB0aGlzLnJlc3RTZXJ2aWNlLmdldEt5Y0RldGFpbHMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKCEocmVzPy5tZXNzYWdlPy5wYW5WZXJpZmllZCA9PT0gJ1ZBTElEJyAmJiByZXM/Lm1lc3NhZ2U/LmFhZGhhYXJWZXJpZmllZCA9PT0gJ1ZBTElEJykpIHtcclxuICAgICAgICB0aGlzLm1hdERpYWxvZy5vcGVuKEt5Y0RldGFpbHNDb21wb25lbnQsIHsgcGFuZWxDbGFzczogXCJsb2dpbi1zaWdudXBcIiB9KTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24gW2lkXT1cImRhdGE/LmlkXCIgY2xhc3M9XCJtYWluLWNvbnRhaW5lciBoLTg1IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgYmFja2dyb3VuZEltYWdlICsgJyknfVwiIHNpbXBvSG92ZXIgKGhvdmVyaW5nKT1cInNob3dFZGl0VGFicygkZXZlbnQpXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1pZGRsZS1jb250YWluZXIgdy00MC04NVwiIFtpZF09XCJkYXRhPy5pZFwiIFtzaW1wb0JhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kXCJcclxuICAgIFtzaW1wb0FuaW1hdGlvbl09XCJkYXRhPy5zdHlsZXM/LmFuaW1hdGlvblwiIFtzaW1wb0Nvcm5lcl09XCJkYXRhPy5zdHlsZXM/LmNvcm5lcnNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJoZWFkXCI+e3sgY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQJyA/IFwiU2lnbiBJblwiIDogY3VycmVudFBhZ2UgPT1cclxuICAgICAgJ0ZPUkdPVF9QQVNTV09SRCcgPyBcIkZvcmdvdCBQYXNzd29yZFwiIDogY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknID8gXCJPVFAgVmVyZmljYXRpb25cIiA6IFwiU2lnbiBVcFwifX08L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdPVFAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5FbWFpbCBvciBQaG9uZSBOdW1iZXI8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBSZWdpc3RlcmVkIEVtYWlsIG9yIFBob25lIG51bWJlclwiIFsobmdNb2RlbCldPVwibG9naW5FbWFpbFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyAmJiBvdHBTZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5PVFA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwib3RwXCIgY2xhc3M9XCJpbnB1dHMgZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDQpOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgZm9ybS1jb250cm9sIHJvdW5kZWQgYWRkaXRpb25hbC1zdHlsZXNcIiB0eXBlPVwibnVtYmVyXCIgbWF4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvZ2luT3RwQXJyYXlbaWR4XVwiIChrZXl1cCk9XCJtb3ZlTG9naW5PdHBDdXJzb3IoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidsb2dpbk90cF8nK2lkeFwiICNvdHBJbnB1dCAvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWSdcIj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyBcIj5PVFA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHQtMVwiPlxyXG4gICAgICAgICAgPGRpdiBpZD1cIm90cFwiIGNsYXNzPVwiaW5wdXRzIGQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgXyBvZiBbXS5jb25zdHJ1Y3Rvcig0KTsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibS0yIHRleHQtY2VudGVyIGZvcm0tY29udHJvbCByb3VuZGVkIGFkZGl0aW9uYWwtc3R5bGVzXCIgdHlwZT1cIm51bWJlclwiIG1heD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvdHBBcnJheVtpZHhdXCIgKGtleXVwKT1cIm1vdmUoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidvdHBfJytpZHhcIiAjb3RwSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OYW1lPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgTmFtZVwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IuZnVsbE5hbWVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIEVtYWlsXCIgWyhuZ01vZGVsKV09XCJpbnZlc3Rvci5lbWFpbElkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdTSUdOX1VQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+UGhvbmUgTnVtYmVyPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGhvbmUgTnVtYmVyXCIgWyhuZ01vZGVsKV09XCJpbnZlc3Rvci5waG9uZU51bWJlclwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+T2xkIFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OZXcgUGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGFzc3dvcmRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlJlLUVudGVyIFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBSZS1FbnRlciBZb3VyIFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgfHwgY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+UGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cImludmVzdG9yLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9yZ290LXBhc3N3b3JkIGN1cnNvci1wb2ludGVyXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJ1wiIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdGT1JHT1RfUEFTU1dPUkQnXCI+Rm9yZ290IFBhc3N3b3JkPzwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9yZ290LXBhc3N3b3JkIGN1cnNvci1wb2ludGVyXCIgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIlxyXG4gICAgICAgICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknXCI+UmVzZW5kIE9UUD88L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImJ0bi1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvZ2luLWJ0biBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlICE9ICdPVFAnXCJcclxuICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZEV2ZW50KClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW2NsYXNzLmJ0bi1zaXplXT1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnIHx8IGN1cnJlbnRQYWdlID09ICdTSUdOX1VQJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWSdcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uTG9hZGVyXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIj57eyBjdXJyZW50UGFnZSA9PVxyXG4gICAgICAgICAgICAnTE9HSU4nID8gXCJMb2dpblwiIDogY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCcgPyBcIlJlc2V0IFBhc3N3b3JkXCIgOlxyXG4gICAgICAgICAgICBjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWScgPyAnVmVyaWZ5IE9UUCcgOiBcIkNyZWF0ZSBBY2NvdW50XCJ9fTwvc3Bhbj48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImxvZ2luLWJ0biBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzZW5kT3RwRm9yTG9naW4oKVwiIFtkaXNhYmxlZF09XCJidXR0b25Mb2FkZXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyAmJiAhb3RwU2VudFwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJidXR0b25Mb2FkZXJcIiA+PGkgY2xhc3M9XCJmYXMgZmEtY2lyY2xlLW5vdGNoIGZhLXNwaW5cIj48L2k+Jm5ic3A7TG9hZGluZzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ1dHRvbkxvYWRlclwiPlNlbmQgT3RwPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmVyaWZ5T3RwKClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCcgJiYgb3RwU2VudFwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJidXR0b25Mb2FkZXJcIiA+PGkgY2xhc3M9XCJmYXMgZmEtY2lyY2xlLW5vdGNoIGZhLXNwaW5cIj48L2k+Jm5ic3A7TG9hZGluZzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ1dHRvbkxvYWRlclwiID5Mb2dpbjwvc3Bhbj4gXHJcbiAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFub3RoZXItcGFnZVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWdudXAtdGV4dFwiPkRvbuKAmXQgaGF2ZSBhbiBhY2NvdW50PyA8c3BhbiBjbGFzcz1cInNwYW4tdGV4dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKGNsaWNrKT1cImN1cnJlbnRQYWdlID0gJ1NJR05fVVAnXCI+U2lnblxyXG4gICAgICAgICAgICBVcDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHQgbS01XCI+b3I8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHRcIj5Mb2dpbiB3aXRoIDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImN1cnJlbnRQYWdlID0gJ09UUCdcIj5PVFA8L3NwYW4+PHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ09UUCdcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnTE9HSU4nXCI+UGFzc3dvcmQ8L3NwYW4+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYW5vdGhlci1wYWdlXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCcgfHwgY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lnbnVwLXRleHRcIj5BbHJlYWR5IGhhdmUgYW4gYWNjb3VudD8gPHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdMT0dJTidcIj5TaWduXHJcbiAgICAgICAgICAgIEluPC9zcGFuPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZWRpdH1cIiAqbmdJZj1cInNob3dFZGl0b3JzXCI+XHJcbiAgICA8c2ltcG8taG92ZXItZWxlbWVudHMgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiIFtlZGl0T3B0aW9uc109XCJlZGl0XCI+PC9zaW1wby1ob3Zlci1lbGVtZW50cz5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2hvd0RlbGV0ZVwiIFtuZ0NsYXNzXT1cInsnaG92ZXJfZWZmZWN0JzogZGVsZXRlfVwiPlxyXG4gICAgPHNpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50IFtkYXRhXT1cImRhdGFcIiBbaW5kZXhdPVwiaW5kZXhcIj48L3NpbXBvLWRlbGV0ZS1ob3Zlci1lbGVtZW50PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcbiJdfQ==
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvc2lnbnVwLXNpZ25pbi9zaWdudXAtc2lnbmluLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXJkU3R5bGVzLCBTdHlsZXNNb2RlbCB9IGZyb20gXCIuLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaWduVXBTaWduSW5Nb2RlbHtcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBzZWN0aW9uVHlwZTogc3RyaW5nLFxyXG4gICAgc2VjdGlvbk5hbWU6IHN0cmluZyxcclxuICAgIGNvbnRlbnQgOiB7fSxcclxuICAgIHN0eWxlczogU2lnbkluU2lnblVwU3R5bGVzTW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluU2lnblVwU3R5bGVzTW9kZWwgZXh0ZW5kcyBTdHlsZXNNb2RlbCxDYXJkU3R5bGVze1xyXG5cclxufSJdfQ==
|
@@ -1,5 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
export declare class MyDocumentsComponent {
|
3
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MyDocumentsComponent, never>;
|
4
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MyDocumentsComponent, "simpo-my-documents", never, {}, {}, never, never, true, never>;
|
5
|
-
}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
export declare class MyOrdersComponent {
|
3
|
-
constructor();
|
4
|
-
ngOnInit(): void;
|
5
|
-
activeTab: any;
|
6
|
-
tabs: any;
|
7
|
-
properties: any;
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MyOrdersComponent, never>;
|
9
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MyOrdersComponent, "simpo-my-orders", never, {}, {}, never, never, true, never>;
|
10
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
export declare class MyStatementComponent {
|
3
|
-
constructor();
|
4
|
-
tableHeaders: any;
|
5
|
-
tableData: any;
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<MyStatementComponent, never>;
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<MyStatementComponent, "simpo-my-statement", never, {}, {}, never, never, true, never>;
|
8
|
-
}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { MatDialogRef } from '@angular/material/dialog';
|
2
|
-
import { RestService } from '../../services/rest.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class PaymentConfirmationComponent {
|
5
|
-
dialogRef: MatDialogRef<PaymentConfirmationComponent>;
|
6
|
-
data: any;
|
7
|
-
private restService;
|
8
|
-
constructor(dialogRef: MatDialogRef<PaymentConfirmationComponent>, data: any, restService: RestService);
|
9
|
-
propertyDetails: any;
|
10
|
-
sqFeetArea: number;
|
11
|
-
payload: any;
|
12
|
-
ngOnInit(): void;
|
13
|
-
close(): void;
|
14
|
-
addOrRemoveProperty(): void;
|
15
|
-
addSqFeet(): void;
|
16
|
-
removeSqFeet(): void;
|
17
|
-
purchaseProperty(): void;
|
18
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PaymentConfirmationComponent, never>;
|
19
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PaymentConfirmationComponent, "simpo-payment-confirmation", never, {}, {}, never, never, true, never>;
|
20
|
-
}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
export declare class PropertiesComponent {
|
3
|
-
constructor();
|
4
|
-
ngOnInit(): void;
|
5
|
-
investments: any;
|
6
|
-
activeTab: any;
|
7
|
-
tabs: any;
|
8
|
-
propertyDetails: any;
|
9
|
-
viewTab: boolean;
|
10
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PropertiesComponent, never>;
|
11
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PropertiesComponent, "simpo-properties", never, {}, {}, never, never, true, never>;
|
12
|
-
}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as i0 from "@angular/core";
|
2
|
-
export declare class PropertyViewComponent {
|
3
|
-
text: string;
|
4
|
-
ngOnInit(): void;
|
5
|
-
propertyDetails: any;
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PropertyViewComponent, never>;
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PropertyViewComponent, "simpo-property-view", never, { "text": { "alias": "text"; "required": false; }; }, {}, never, never, true, never>;
|
8
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import { RestService } from '../../services/rest.service';
|
2
|
-
import { MessageService } from 'primeng/api';
|
3
|
-
import { Subscription } from 'rxjs';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
export declare class KycDetailsComponent {
|
6
|
-
private restService;
|
7
|
-
private readonly messageService;
|
8
|
-
constructor(restService: RestService, messageService: MessageService);
|
9
|
-
panRequest: any;
|
10
|
-
aadharRequest: any;
|
11
|
-
verifyAadharRequest: any;
|
12
|
-
aadharOtpArray: any[];
|
13
|
-
isPanVerified: boolean;
|
14
|
-
isAadharverified: boolean;
|
15
|
-
aadharOtpSent: boolean;
|
16
|
-
kycDetailsSubscription?: Subscription;
|
17
|
-
ngOnInit(): void;
|
18
|
-
ngOnDestroy(): void;
|
19
|
-
getKycDetails(): void;
|
20
|
-
verifyPanNumber(): void;
|
21
|
-
validatePan(): boolean;
|
22
|
-
sendAadharOtp(): void;
|
23
|
-
verifyAadharOtp(): void;
|
24
|
-
validateAadhaar(): boolean;
|
25
|
-
moveAadharOtpCursor(event: any, idx: number): void;
|
26
|
-
checkKycVerification(): void;
|
27
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<KycDetailsComponent, never>;
|
28
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KycDetailsComponent, "simpo-kyc-details", never, {}, {}, never, never, true, never>;
|
29
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { ProfileSectionModel } from './profile-section.modal';
|
2
|
-
import { RestService } from '../../services/rest.service';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export declare class ProfileSectionComponent {
|
5
|
-
private restService;
|
6
|
-
data?: ProfileSectionModel;
|
7
|
-
constructor(restService: RestService);
|
8
|
-
ngOnInit(): void;
|
9
|
-
selectedPanel: string;
|
10
|
-
sidePanelTabs: any[];
|
11
|
-
investorDetails: any;
|
12
|
-
getInvestorDetails(): void;
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ProfileSectionComponent, never>;
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ProfileSectionComponent, "simpo-profile-section", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
|
15
|
-
}
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import { PropertyDetailModel } from './property-detail.model';
|
2
|
-
import { RestService } from '../../services/rest.service';
|
3
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
4
|
-
import { MatDialog } from '@angular/material/dialog';
|
5
|
-
import { Subscription } from 'rxjs';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
export declare class PropertyDetailComponent {
|
8
|
-
private restService;
|
9
|
-
private activatedRoute;
|
10
|
-
private router;
|
11
|
-
private readonly matDialog;
|
12
|
-
data?: PropertyDetailModel;
|
13
|
-
constructor(restService: RestService, activatedRoute: ActivatedRoute, router: Router, matDialog: MatDialog);
|
14
|
-
propertyId: string;
|
15
|
-
propertyDetails: any;
|
16
|
-
kycDetailsSubscription?: Subscription;
|
17
|
-
ngOnInit(): void;
|
18
|
-
ngOnDestroy(): void;
|
19
|
-
getPropertyDetails(): void;
|
20
|
-
index: number;
|
21
|
-
propertyNumbers: any;
|
22
|
-
aboutText: string;
|
23
|
-
keyValue: any;
|
24
|
-
investmentCards: any;
|
25
|
-
pdfCards: any;
|
26
|
-
sqft: number;
|
27
|
-
noOfSqft: number;
|
28
|
-
purchaseProperty(): void;
|
29
|
-
getKycDetails(): void;
|
30
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<PropertyDetailComponent, never>;
|
31
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PropertyDetailComponent, "simpo-property-detail", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
|
32
|
-
}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import { SignUpSignInModel } from './signup-signin.model';
|
2
|
-
import BaseSection from '../BaseSection';
|
3
|
-
import { EventsService } from './../../services/events.service';
|
4
|
-
import { RestService } from '../../services/rest.service';
|
5
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
6
|
-
import { MessageService } from 'primeng/api';
|
7
|
-
import { MatDialog } from '@angular/material/dialog';
|
8
|
-
import { Subscription } from 'rxjs';
|
9
|
-
import * as i0 from "@angular/core";
|
10
|
-
export declare class SignupSigninComponent extends BaseSection {
|
11
|
-
private _eventService;
|
12
|
-
private restService;
|
13
|
-
private router;
|
14
|
-
private activatedRoute;
|
15
|
-
private readonly messageService;
|
16
|
-
private matDialog;
|
17
|
-
data?: SignUpSignInModel;
|
18
|
-
index?: number;
|
19
|
-
edit?: boolean;
|
20
|
-
delete?: boolean;
|
21
|
-
constructor(_eventService: EventsService, restService: RestService, router: Router, activatedRoute: ActivatedRoute, messageService: MessageService, matDialog: MatDialog);
|
22
|
-
propertyId?: number;
|
23
|
-
buttonLoader: boolean;
|
24
|
-
kycDetailsSubscription?: Subscription;
|
25
|
-
ngOnInit(): void;
|
26
|
-
ngOnDestroy(): void;
|
27
|
-
currentPage: 'LOGIN' | 'SIGN_UP' | 'OTP' | 'FORGOT_PASSWORD' | 'OTP_VERIFY';
|
28
|
-
kycDetailsSubscripition?: Subscription;
|
29
|
-
backgroundImage: any;
|
30
|
-
editSection(): void;
|
31
|
-
otpArray: any[];
|
32
|
-
move(event: any, idx: number): void;
|
33
|
-
loginOtpArray: any[];
|
34
|
-
moveLoginOtpCursor(event: any, idx: number): void;
|
35
|
-
loginEmail: string;
|
36
|
-
investor: any;
|
37
|
-
otpSent: boolean;
|
38
|
-
buttonClickedEvent(): void;
|
39
|
-
signUp(): void;
|
40
|
-
sendOtp(): void;
|
41
|
-
loginWithPassword(): void;
|
42
|
-
sendOtpForLogin(): void;
|
43
|
-
verifyOtp(): void;
|
44
|
-
isValidEmail(email: string): boolean;
|
45
|
-
getKycDetails(): void;
|
46
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SignupSigninComponent, never>;
|
47
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SignupSigninComponent, "simpo-signup-signin", never, { "data": { "alias": "data"; "required": false; }; "index": { "alias": "index"; "required": false; }; "edit": { "alias": "edit"; "required": false; }; "delete": { "alias": "delete"; "required": false; }; }, {}, never, never, true, never>;
|
48
|
-
}
|