simpo-component-library 3.0.0 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/elements/index.mjs +6 -7
- package/esm2022/lib/elements/my-documents/my-documents.component.mjs +11 -0
- package/esm2022/lib/elements/my-orders/my-orders.component.mjs +64 -0
- package/esm2022/lib/elements/my-statement/my-statement.component.mjs +26 -0
- package/esm2022/lib/elements/need-help/need-help.component.mjs +11 -0
- package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +90 -0
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +27 -45
- package/esm2022/lib/elements/properties/properties.component.mjs +35 -0
- package/esm2022/lib/elements/property-view/property-view.component.mjs +79 -0
- package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +163 -0
- package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +41 -12
- package/esm2022/lib/sections/profile-section/profile-section.component.mjs +52 -0
- package/esm2022/lib/sections/profile-section/profile-section.modal.mjs +2 -0
- package/esm2022/lib/sections/property-component/property-component.component.mjs +84 -7
- package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
- package/esm2022/lib/sections/property-detail/property-detail.component.mjs +149 -0
- package/esm2022/lib/sections/property-detail/property-detail.model.mjs +2 -0
- package/esm2022/lib/sections/property-list/property-list.component.mjs +29 -57
- package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +278 -0
- package/esm2022/lib/sections/signup-signin/signup-signin.model.mjs +2 -0
- package/esm2022/lib/sections/verify-property-payment/verify-property-payment.component.mjs +55 -0
- package/esm2022/lib/services/events.service.mjs +2 -1
- package/esm2022/lib/services/rest.service.mjs +100 -5
- package/esm2022/lib/styles/index.mjs +6 -1
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/simpo-component-library.mjs +3080 -2096
- 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 +2 -3
- package/lib/elements/my-documents/my-documents.component.d.ts +5 -0
- package/lib/elements/my-orders/my-orders.component.d.ts +10 -0
- package/lib/elements/my-statement/my-statement.component.d.ts +8 -0
- package/lib/elements/need-help/need-help.component.d.ts +5 -0
- package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +25 -0
- package/lib/elements/portfolio/portfolio.component.d.ts +10 -12
- package/lib/elements/properties/properties.component.d.ts +15 -0
- package/lib/elements/property-view/property-view.component.d.ts +15 -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/kyc-details/kyc-details.component.d.ts +38 -0
- package/lib/sections/logo-showcase/logo-showcase.component.d.ts +1 -1
- package/lib/sections/navbar-section/navbar-section.component.d.ts +9 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/sections/profile-section/profile-section.component.d.ts +16 -0
- package/lib/sections/profile-section/profile-section.modal.d.ts +5 -0
- package/lib/sections/property-component/property-component.component.d.ts +25 -4
- package/lib/sections/property-component/property-component.modal.d.ts +11 -18
- package/lib/sections/property-detail/property-detail.component.d.ts +38 -0
- package/lib/sections/property-detail/property-detail.model.d.ts +5 -0
- package/lib/sections/property-list/property-list.component.d.ts +9 -2
- package/lib/sections/signup-signin/signup-signin.component.d.ts +49 -0
- package/lib/sections/signup-signin/signup-signin.model.d.ts +10 -0
- package/lib/sections/verify-property-payment/verify-property-payment.component.d.ts +16 -0
- package/lib/services/events.service.d.ts +1 -0
- package/lib/services/rest.service.d.ts +24 -0
- package/lib/styles/index.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/simpo-component-library-3.0.2.tgz +0 -0
- package/esm2022/lib/elements/property/property.component.mjs +0 -41
- package/lib/elements/property/property.component.d.ts +0 -8
- package/simpo-component-library-3.0.0.tgz +0 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
2
|
+
import { Component, Optional } from '@angular/core';
|
3
|
+
import { FormsModule } from '@angular/forms';
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
5
|
+
import { MessageService } from 'primeng/api';
|
6
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
7
|
+
import { ToastModule } from 'primeng/toast';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "../../services/rest.service";
|
10
|
+
import * as i2 from "primeng/api";
|
11
|
+
import * as i3 from "@angular/router";
|
12
|
+
import * as i4 from "@angular/material/dialog";
|
13
|
+
import * as i5 from "@angular/material/icon";
|
14
|
+
import * as i6 from "@angular/common";
|
15
|
+
import * as i7 from "@angular/forms";
|
16
|
+
import * as i8 from "@angular/material/progress-spinner";
|
17
|
+
import * as i9 from "primeng/toast";
|
18
|
+
export class KycDetailsComponent {
|
19
|
+
constructor(restService, messageService, router, dialogRef) {
|
20
|
+
this.restService = restService;
|
21
|
+
this.messageService = messageService;
|
22
|
+
this.router = router;
|
23
|
+
this.dialogRef = dialogRef;
|
24
|
+
this.panRequest = {
|
25
|
+
panNumber: ''
|
26
|
+
};
|
27
|
+
this.aadharRequest = {
|
28
|
+
aadhaarNumber: ''
|
29
|
+
};
|
30
|
+
this.verifyAadharRequest = {
|
31
|
+
otp: '',
|
32
|
+
refId: '',
|
33
|
+
aadhaarNumber: ''
|
34
|
+
};
|
35
|
+
this.aadharOtpArray = new Array(6).fill('');
|
36
|
+
this.isPanVerified = false;
|
37
|
+
this.isAadharverified = false;
|
38
|
+
this.aadharOtpSent = false;
|
39
|
+
this.panVerifyLoader = false;
|
40
|
+
this.aadharVerifyLoader = false;
|
41
|
+
}
|
42
|
+
ngOnInit() {
|
43
|
+
this.getKycDetails();
|
44
|
+
}
|
45
|
+
ngOnDestroy() {
|
46
|
+
this.kycDetailsSubscription?.unsubscribe();
|
47
|
+
}
|
48
|
+
getKycDetails() {
|
49
|
+
this.kycDetailsSubscription = this.restService.getKycDetails().subscribe((res) => {
|
50
|
+
if (res.message) {
|
51
|
+
this.isPanVerified = res.message.panVerified === 'VALID';
|
52
|
+
this.isAadharverified = res.message.aadhaarVerified === 'VALID';
|
53
|
+
this.aadharRequest.aadhaarNumber = res.message.aadharNo;
|
54
|
+
this.panRequest.panNumber = res.message.panNo;
|
55
|
+
}
|
56
|
+
}, (err) => {
|
57
|
+
});
|
58
|
+
}
|
59
|
+
verifyPanNumber() {
|
60
|
+
this.panVerifyLoader = true;
|
61
|
+
if (!this.validatePan()) {
|
62
|
+
this.messageService.add({
|
63
|
+
severity: 'error',
|
64
|
+
summary: 'Pan Number',
|
65
|
+
detail: 'Enter valid PAN number'
|
66
|
+
});
|
67
|
+
this.panVerifyLoader = false;
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
this.restService.verifyPan(this.panRequest).subscribe((res) => {
|
71
|
+
this.isPanVerified = true;
|
72
|
+
this.restService.kycDetails = null;
|
73
|
+
this.panVerifyLoader = false;
|
74
|
+
;
|
75
|
+
this.checkKycVerification();
|
76
|
+
}, () => {
|
77
|
+
this.panVerifyLoader = false;
|
78
|
+
});
|
79
|
+
}
|
80
|
+
validatePan() {
|
81
|
+
const panRegex = /^[A-Z]{5}[0-9]{4}[A-Z]$/;
|
82
|
+
return panRegex.test(this.panRequest.panNumber);
|
83
|
+
}
|
84
|
+
sendAadharOtp() {
|
85
|
+
this.aadharVerifyLoader = true;
|
86
|
+
if (!this.validateAadhaar()) {
|
87
|
+
this.messageService.add({
|
88
|
+
severity: 'error',
|
89
|
+
summary: 'Aadhar Number',
|
90
|
+
detail: 'Enter valid Aadhar number'
|
91
|
+
});
|
92
|
+
this.aadharVerifyLoader = false;
|
93
|
+
return;
|
94
|
+
}
|
95
|
+
this.restService.sendAadharOtp(this.aadharRequest).subscribe((res) => {
|
96
|
+
this.aadharOtpSent = true;
|
97
|
+
this.messageService.add({
|
98
|
+
severity: 'success',
|
99
|
+
summary: 'OTP Sent',
|
100
|
+
detail: 'AAdhar OTP Sent in registered mobile number'
|
101
|
+
});
|
102
|
+
this.aadharVerifyLoader = false;
|
103
|
+
this.verifyAadharRequest.refId = res.message?.ref_id;
|
104
|
+
}, () => {
|
105
|
+
this.aadharVerifyLoader = false;
|
106
|
+
});
|
107
|
+
}
|
108
|
+
verifyAadharOtp() {
|
109
|
+
this.aadharVerifyLoader = true;
|
110
|
+
this.verifyAadharRequest.otp = "";
|
111
|
+
this.aadharOtpArray.forEach((otp) => {
|
112
|
+
this.verifyAadharRequest.otp += otp;
|
113
|
+
});
|
114
|
+
this.verifyAadharRequest.aadhaarNumber = this.aadharRequest.aadhaarNumber;
|
115
|
+
this.restService.verifyAadharOtp(this.verifyAadharRequest).subscribe((res) => {
|
116
|
+
this.isAadharverified = true;
|
117
|
+
this.restService.kycDetails = null;
|
118
|
+
this.aadharVerifyLoader = false;
|
119
|
+
this.checkKycVerification();
|
120
|
+
}, () => {
|
121
|
+
this.aadharVerifyLoader = false;
|
122
|
+
});
|
123
|
+
}
|
124
|
+
validateAadhaar() {
|
125
|
+
const aadhaarRegex = /^[2-9]{1}[0-9]{11}$/;
|
126
|
+
return aadhaarRegex.test(this.aadharRequest.aadhaarNumber);
|
127
|
+
}
|
128
|
+
moveAadharOtpCursor(event, idx) {
|
129
|
+
if (isNaN(Number(event.key)) && event.code != "Backspace")
|
130
|
+
return;
|
131
|
+
if (event.code != "Backspace") {
|
132
|
+
this.aadharOtpArray[idx] = event.key;
|
133
|
+
document.getElementById("aadharOtp_" + (idx + 1))?.focus();
|
134
|
+
}
|
135
|
+
if (event.code == "Backspace" && !this.aadharOtpArray[idx]) {
|
136
|
+
document.getElementById("aadharOtp_" + (idx - 1))?.focus();
|
137
|
+
}
|
138
|
+
}
|
139
|
+
checkKycVerification() {
|
140
|
+
if (this.isAadharverified && this.isPanVerified) {
|
141
|
+
document.getElementById('closeKycCanvas')?.click();
|
142
|
+
this.dialogRef?.close();
|
143
|
+
}
|
144
|
+
}
|
145
|
+
closeDialog() {
|
146
|
+
this.dialogRef?.close();
|
147
|
+
}
|
148
|
+
redirectToProductList() {
|
149
|
+
this.router.navigate(['property-list']);
|
150
|
+
}
|
151
|
+
get isMobile() {
|
152
|
+
return window.innerWidth <= 475;
|
153
|
+
}
|
154
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: KycDetailsComponent, deps: [{ token: i1.RestService }, { token: i2.MessageService }, { token: i3.Router }, { token: i4.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: KycDetailsComponent, isStandalone: true, selector: "simpo-kyc-details", providers: [MessageService], ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<section class=\"main-section\">\n <div class=\"display-center\" *ngIf=\"!(isPanVerified && isAadharverified)\">\n <img class=\"img\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/970332c1740030187726kyc.png\"\n alt=\"\">\n <div class=\"text-group\">\n <p class=\"heading\">Complete Your KYC to start Investing</p>\n <p class=\"desc\">Before you can invest, we need to verify your identity, simply upload your documents,\n <br> submit your KYC, and let us handle the rest\n </p>\n </div>\n <button class=\"submit-btn\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\n aria-controls=\"offcanvasRight\">Submit KYC Now</button>\n </div>\n <div *ngIf=\"isPanVerified && isAadharverified\" class=\"display-center\">\n <div class=\"w-50\">\n <div class=\"secured\">\n <mat-icon>security</mat-icon>\n <p>Your Data is Safe & Secure</p>\n </div>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">PAN Number</label>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" disabled>\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">Aadhar Number</label>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" disabled>\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\n </div>\n </div>\n\n <div class=\"mt-15 text-center\">\n <button class=\"submit-btn\" (click)=\"redirectToProductList()\">Let's Grow Wealth</button>\n </div>\n </div>\n </div>\n</section>\n\n<div class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\n <div class=\"header\">\n <p>KYC Details</p>\n </div>\n <div class=\"middle-section\">\n <div class=\"body\">\n <div class=\"secured\">\n <mat-icon>security</mat-icon>\n <p>Your Data is Safe & Secure</p>\n </div>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">PAN Number</label>\n <p class=\"verify-text\" (click)=\"verifyPanNumber()\" *ngIf=\"!isPanVerified && !panVerifyLoader\">Verify</p>\n <div *ngIf=\"panVerifyLoader\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" [disabled]=\"isPanVerified\">\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"isPanVerified\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">Aadhar Number</label>\n <p class=\"verify-text\" (click)=\"sendAadharOtp()\" *ngIf=\"!aadharOtpSent && !aadharVerifyLoader\">Send OTP</p>\n <div *ngIf=\"aadharVerifyLoader && !aadharOtpSent\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" [disabled]=\"isAadharverified\">\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"aadharOtpSent\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\" *ngIf=\"aadharOtpSent\">\n <label for=\"\">Enter OTP</label>\n\n <div id=\"otp\" class=\"otp-input\">\n <ng-container *ngFor=\"let otp of [1,2,3,4,5,6]; let idx = index\">\n <input type=\"number\" max=\"9\" class=\"otp-input\" [(ngModel)]=\"aadharOtpArray[idx]\"\n (keyup)=\"moveAadharOtpCursor($event, idx)\" [id]=\"'aadharOtp_'+idx\" />\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footer\">\n <button class=\"cancel-btn\" data-bs-dismiss=\"offcanvas\" id=\"closeKycCanvas\" (click)=\"closeDialog()\">Cancel</button>\n <button class=\"submit-btn\" *ngIf=\"aadharOtpSent && !aadharVerifyLoader\" (click)=\"verifyAadharOtp()\">Verify</button>\n <button class=\"d-flex submit-btn\" *ngIf=\"aadharVerifyLoader && aadharOtpSent\">\n <mat-spinner></mat-spinner> Verifying\n </button>\n </div>\n</div>\n", styles: [".main-section{height:100%;background:#fff;border-radius:10px}.display-center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.img{width:35%}.text-group{text-align:center;margin-top:3rem;margin-bottom:2rem}.heading{font-size:14px;font-family:DM SANS;font-weight:700;color:#000}.desc{font-size:14px;color:#0009;font-family:DM SANS;font-weight:500}.submit-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:#f8a938;color:#fff;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.cancel-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:transparent;color:#f8a938;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.header{padding:20px;border:1px solid rgba(14,35,60,.16);height:60px}.header p{font-size:17px;margin-bottom:0;font-weight:600;font-family:Inter}.middle-section{height:calc(100vh - 120px);overflow:scroll;background:#fcfcfc}.footer{position:absolute;bottom:0;height:60px;display:flex;align-items:center;justify-content:flex-end;border-top:1px solid rgba(14,35,60,.16);width:100%;padding:20px;gap:14px}.mat-mdc-progress-spinner{height:20px!important;width:20px!important}.offcanvas{width:40%;z-index:100000000}.body{background:#fff;margin:2.5rem;padding:2rem;border-radius:10px}.body label{font-size:14px;font-family:DM SANS;color:#434443;font-weight:400}.w-50{width:50%}.secured{display:flex;justify-content:center;gap:10px}.secured p{font-size:15px;font-family:DM SANS;font-weight:400;color:#0009}.secured mat-icon{display:flex;font-size:18px;color:#00dd80;align-items:center;justify-content:center}.input-box{width:100%;display:flex;justify-content:space-between;padding:10px;border:1px solid rgba(208,213,221,1);border-radius:7px;margin-top:8px}.input-box input{width:90%;border:none;outline:none;font-size:16px;font-family:DM SANS;background:#fff}.verified{color:#1ac100}p{margin-bottom:0}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.mt-15{margin-top:1.5rem}.otp-input{display:flex;gap:20px;margin-top:8px}.otp-input input{width:59px;border:1px solid rgba(208,213,221,1);height:54px;border-radius:8px;outline:none;justify-content:center;text-align:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.justify-space{justify-content:space-between}.verify-text{font-size:13px;font-family:DM SANS;color:#f8a938;cursor:pointer}@media screen and (max-width: 475px){.offcanvas{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i7.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: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i9.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
156
|
+
}
|
157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: KycDetailsComponent, decorators: [{
|
158
|
+
type: Component,
|
159
|
+
args: [{ selector: 'simpo-kyc-details', standalone: true, imports: [MatIconModule, CommonModule, FormsModule, MatProgressSpinnerModule, ToastModule], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\n\n<section class=\"main-section\">\n <div class=\"display-center\" *ngIf=\"!(isPanVerified && isAadharverified)\">\n <img class=\"img\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/970332c1740030187726kyc.png\"\n alt=\"\">\n <div class=\"text-group\">\n <p class=\"heading\">Complete Your KYC to start Investing</p>\n <p class=\"desc\">Before you can invest, we need to verify your identity, simply upload your documents,\n <br> submit your KYC, and let us handle the rest\n </p>\n </div>\n <button class=\"submit-btn\" type=\"button\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#offcanvasRight\"\n aria-controls=\"offcanvasRight\">Submit KYC Now</button>\n </div>\n <div *ngIf=\"isPanVerified && isAadharverified\" class=\"display-center\">\n <div class=\"w-50\">\n <div class=\"secured\">\n <mat-icon>security</mat-icon>\n <p>Your Data is Safe & Secure</p>\n </div>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">PAN Number</label>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" disabled>\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">Aadhar Number</label>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" disabled>\n <mat-icon class=\"verified\" title=\"OTP Verified\">check_circle</mat-icon>\n </div>\n </div>\n\n <div class=\"mt-15 text-center\">\n <button class=\"submit-btn\" (click)=\"redirectToProductList()\">Let's Grow Wealth</button>\n </div>\n </div>\n </div>\n</section>\n\n<div class=\"offcanvas offcanvas-end\" tabindex=\"-1\" id=\"offcanvasRight\" aria-labelledby=\"offcanvasRightLabel\">\n <div class=\"header\">\n <p>KYC Details</p>\n </div>\n <div class=\"middle-section\">\n <div class=\"body\">\n <div class=\"secured\">\n <mat-icon>security</mat-icon>\n <p>Your Data is Safe & Secure</p>\n </div>\n\n <div class=\"mt-2\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">PAN Number</label>\n <p class=\"verify-text\" (click)=\"verifyPanNumber()\" *ngIf=\"!isPanVerified && !panVerifyLoader\">Verify</p>\n <div *ngIf=\"panVerifyLoader\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"panRequest.panNumber\" [disabled]=\"isPanVerified\">\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"isPanVerified\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\">\n <div class=\"d-flex justify-space\">\n <label for=\"\">Aadhar Number</label>\n <p class=\"verify-text\" (click)=\"sendAadharOtp()\" *ngIf=\"!aadharOtpSent && !aadharVerifyLoader\">Send OTP</p>\n <div *ngIf=\"aadharVerifyLoader && !aadharOtpSent\" class=\"kyc-detail\"><mat-spinner></mat-spinner></div>\n </div>\n <div class=\"input-box\">\n <input type=\"text\" [(ngModel)]=\"aadharRequest.aadhaarNumber\" [disabled]=\"isAadharverified\">\n <mat-icon class=\"verified\" title=\"OTP Verified\" *ngIf=\"aadharOtpSent\">check_circle</mat-icon>\n </div>\n </div>\n <div class=\"mt-1\" *ngIf=\"aadharOtpSent\">\n <label for=\"\">Enter OTP</label>\n\n <div id=\"otp\" class=\"otp-input\">\n <ng-container *ngFor=\"let otp of [1,2,3,4,5,6]; let idx = index\">\n <input type=\"number\" max=\"9\" class=\"otp-input\" [(ngModel)]=\"aadharOtpArray[idx]\"\n (keyup)=\"moveAadharOtpCursor($event, idx)\" [id]=\"'aadharOtp_'+idx\" />\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"footer\">\n <button class=\"cancel-btn\" data-bs-dismiss=\"offcanvas\" id=\"closeKycCanvas\" (click)=\"closeDialog()\">Cancel</button>\n <button class=\"submit-btn\" *ngIf=\"aadharOtpSent && !aadharVerifyLoader\" (click)=\"verifyAadharOtp()\">Verify</button>\n <button class=\"d-flex submit-btn\" *ngIf=\"aadharVerifyLoader && aadharOtpSent\">\n <mat-spinner></mat-spinner> Verifying\n </button>\n </div>\n</div>\n", styles: [".main-section{height:100%;background:#fff;border-radius:10px}.display-center{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.img{width:35%}.text-group{text-align:center;margin-top:3rem;margin-bottom:2rem}.heading{font-size:14px;font-family:DM SANS;font-weight:700;color:#000}.desc{font-size:14px;color:#0009;font-family:DM SANS;font-weight:500}.submit-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:#f8a938;color:#fff;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.cancel-btn{width:max-content!important;outline:none;border:1px solid rgba(248,169,56,1);background:transparent;color:#f8a938;border-radius:5px;font-size:16px!important;font-family:DM SANS;padding:7px 20px}.header{padding:20px;border:1px solid rgba(14,35,60,.16);height:60px}.header p{font-size:17px;margin-bottom:0;font-weight:600;font-family:Inter}.middle-section{height:calc(100vh - 120px);overflow:scroll;background:#fcfcfc}.footer{position:absolute;bottom:0;height:60px;display:flex;align-items:center;justify-content:flex-end;border-top:1px solid rgba(14,35,60,.16);width:100%;padding:20px;gap:14px}.mat-mdc-progress-spinner{height:20px!important;width:20px!important}.offcanvas{width:40%;z-index:100000000}.body{background:#fff;margin:2.5rem;padding:2rem;border-radius:10px}.body label{font-size:14px;font-family:DM SANS;color:#434443;font-weight:400}.w-50{width:50%}.secured{display:flex;justify-content:center;gap:10px}.secured p{font-size:15px;font-family:DM SANS;font-weight:400;color:#0009}.secured mat-icon{display:flex;font-size:18px;color:#00dd80;align-items:center;justify-content:center}.input-box{width:100%;display:flex;justify-content:space-between;padding:10px;border:1px solid rgba(208,213,221,1);border-radius:7px;margin-top:8px}.input-box input{width:90%;border:none;outline:none;font-size:16px;font-family:DM SANS;background:#fff}.verified{color:#1ac100}p{margin-bottom:0}.mt-2{margin-top:2rem!important}.mt-1{margin-top:1rem!important}.mt-15{margin-top:1.5rem}.otp-input{display:flex;gap:20px;margin-top:8px}.otp-input input{width:59px;border:1px solid rgba(208,213,221,1);height:54px;border-radius:8px;outline:none;justify-content:center;text-align:center}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.justify-space{justify-content:space-between}.verify-text{font-size:13px;font-family:DM SANS;color:#f8a938;cursor:pointer}@media screen and (max-width: 475px){.offcanvas{width:100%}}\n"] }]
|
160
|
+
}], ctorParameters: () => [{ type: i1.RestService }, { type: i2.MessageService }, { type: i3.Router }, { type: i4.MatDialogRef, decorators: [{
|
161
|
+
type: Optional
|
162
|
+
}] }] });
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ljLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZWN0aW9ucy9reWMtZGV0YWlscy9reWMtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL2t5Yy1kZXRhaWxzL2t5Yy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHN0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7QUFXNUMsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFvQixXQUF3QixFQUN6QixjQUE4QixFQUN2QyxNQUFjLEVBQ08sU0FBNEM7UUFIdkQsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQ3ZDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDTyxjQUFTLEdBQVQsU0FBUyxDQUFtQztRQUczRSxlQUFVLEdBQVE7WUFDaEIsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFBO1FBRUQsa0JBQWEsR0FBUTtZQUNuQixhQUFhLEVBQUUsRUFBRTtTQUNsQixDQUFBO1FBRUQsd0JBQW1CLEdBQVE7WUFDekIs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O0lBRUQsb0JBQW9CO1FBQ2xCLElBQUcsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxRQUFRLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUE7WUFDbEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLE1BQU0sQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDO0lBQ2xDLENBQUM7OEdBM0pVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLGdFQUpuQixDQUFDLGNBQWMsQ0FBQywwQkNoQjdCLHNrSkFzR0EsMGtGRHZGWSxhQUFhLG1MQUFFLFlBQVksK1BBQUUsV0FBVywyOEJBQUUsd0JBQXdCLGtPQUFFLFdBQVc7OzJGQUs5RSxtQkFBbUI7a0JBUi9CLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLFdBQVcsQ0FBQyxhQUMvRSxDQUFDLGNBQWMsQ0FBQzs7MEJBUXhCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLWt5Yy1kZXRhaWxzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgVG9hc3RNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9reWMtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9reWMtZGV0YWlscy5jb21wb25lbnQuY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBLeWNEZXRhaWxzQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEt5Y0RldGFpbHNDb21wb25lbnQ+XG4gICkge31cblxuICBwYW5SZXF1ZXN0OiBhbnkgPSB7XG4gICAgcGFuTnVtYmVyOiAnJ1xuICB9XG5cbiAgYWFkaGFyUmVxdWVzdDogYW55ID0ge1xuICAgIGFhZGhhYXJOdW1iZXI6ICcnXG4gIH1cblxuICB2ZXJpZnlBYWRoYXJSZXF1ZXN0OiBhbnkgPSB7XG4gICAgb3RwOiAnJyxcbiAgICByZWZJZDogJycsXG4gICAgYWFkaGFhck51bWJlcjogJydcbiAgfVxuICBhYWRoYXJPdHBBcnJheSA9IG5ldyBBcnJheSg2KS5maWxsKCcnKVxuICBpc1BhblZlcmlmaWVkOiBib29sZWFuID0gZmFsc2U7XG4gIGlzQWFkaGFydmVyaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWFkaGFyT3RwU2VudDogYm9vbGVhbiA9IGZhbHNlO1xuICBwYW5WZXJpZnlMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWFkaGFyVmVyaWZ5TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGt5Y0RldGFpbHNTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5nZXRLeWNEZXRhaWxzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmt5Y0RldGFpbHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXRLeWNEZXRhaWxzKCkge1xuICAgIHRoaXMua3ljRGV0YWlsc1N1YnNjcmlwdGlvbiA9IHRoaXMucmVzdFNlcnZpY2UuZ2V0S3ljRGV0YWlscygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmKHJlcy5tZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuaXNQYW5WZXJpZmllZCA9IHJlcy5tZXNzYWdlLnBhblZlcmlmaWVkID09PSAnVkFMSUQnO1xuICAgICAgICB0aGlzLmlzQWFkaGFydmVyaWZpZWQgPSByZXMubWVzc2FnZS5hYWRoYWFyVmVyaWZpZWQgPT09ICdWQUxJRCc7XG4gICAgICAgIHRoaXMuYWFkaGFyUmVxdWVzdC5hYWRoYWFyTnVtYmVyID0gcmVzLm1lc3NhZ2UuYWFkaGFyTm9cbiAgICAgICAgdGhpcy5wYW5SZXF1ZXN0LnBhbk51bWJlciA9IHJlcy5tZXNzYWdlLnBhbk5vO1xuICAgICAgfVxuICAgIH0sIChlcnIpID0+IHtcblxuICAgIH0pXG4gIH1cblxuICB2ZXJpZnlQYW5OdW1iZXIoKSB7XG4gICAgdGhpcy5wYW5WZXJpZnlMb2FkZXIgPSB0cnVlO1xuICAgIGlmKCF0aGlzLnZhbGlkYXRlUGFuKCkpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXG4gICAgICAgIHN1bW1hcnk6ICdQYW4gTnVtYmVyJyxcbiAgICAgICAgZGV0YWlsOiAnRW50ZXIgdmFsaWQgUEFOIG51bWJlcidcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYW5WZXJpZnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5yZXN0U2VydmljZS52ZXJpZnlQYW4odGhpcy5wYW5SZXF1ZXN0KS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICB0aGlzLmlzUGFuVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgdGhpcy5yZXN0U2VydmljZS5reWNEZXRhaWxzID0gbnVsbDtcbiAgICAgIHRoaXMucGFuVmVyaWZ5TG9hZGVyID0gZmFsc2U7O1xuICAgICAgdGhpcy5jaGVja0t5Y1ZlcmlmaWNhdGlvbigpO1xuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMucGFuVmVyaWZ5TG9hZGVyID0gZmFsc2U7XG4gICAgfSlcbiAgfVxuXG4gIHZhbGlkYXRlUGFuKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhblJlZ2V4ID0gL15bQS1aXXs1fVswLTldezR9W0EtWl0kLztcbiAgICByZXR1cm4gcGFuUmVnZXgudGVzdCh0aGlzLnBhblJlcXVlc3QucGFuTnVtYmVyKTtcbiAgfVxuXG4gIHNlbmRBYWRoYXJPdHAoKSB7XG4gICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSB0cnVlO1xuICAgIGlmKCF0aGlzLnZhbGlkYXRlQWFkaGFhcigpKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxuICAgICAgICBzdW1tYXJ5OiAnQWFkaGFyIE51bWJlcicsXG4gICAgICAgIGRldGFpbDogJ0VudGVyIHZhbGlkIEFhZGhhciBudW1iZXInXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWFkaGFyVmVyaWZ5TG9hZGVyID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXN0U2VydmljZS5zZW5kQWFkaGFyT3RwKHRoaXMuYWFkaGFyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hYWRoYXJPdHBTZW50ID0gdHJ1ZTtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcbiAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcbiAgICAgICAgc3VtbWFyeTogJ09UUCBTZW50JyxcbiAgICAgICAgZGV0YWlsOiAnQUFkaGFyIE9UUCBTZW50IGluIHJlZ2lzdGVyZWQgbW9iaWxlIG51bWJlcidcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMudmVyaWZ5QWFkaGFyUmVxdWVzdC5yZWZJZCA9IHJlcy5tZXNzYWdlPy5yZWZfaWQ7XG4gICAgfSwoKSA9PiB7XG4gICAgICB0aGlzLmFhZGhhclZlcmlmeUxvYWRlciA9IGZhbHNlO1xuICAgIH0pXG4gIH1cblxuICB2ZXJpZnlBYWRoYXJPdHAoKSB7XG4gICAgdGhpcy5hYWRoYXJWZXJpZnlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMudmVyaWZ5QWFkaGFyUmVxdWVzdC5vdHAgPSBcIlwiO1xuICAgIHRoaXMuYWFkaGFyT3RwQXJyYXkuZm9yRWFjaCgob3RwKSA9PiB7XG4gICAgICB0aGlzLnZlcmlmeUFhZGhhclJlcXVlc3Qub3RwICs9IG90cFxuICAgIH0pXG4gICAgdGhpcy52ZXJpZnlBYWRoYXJSZXF1ZXN0LmFhZGhhYXJOdW1iZXIgPSB0aGlzLmFhZGhhclJlcXVlc3QuYWFkaGFhck51bWJlcjtcblxuICAgIHRoaXMucmVzdFNlcnZpY2UudmVyaWZ5QWFkaGFyT3RwKHRoaXMudmVyaWZ5QWFkaGFyUmVxdWVzdCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5pc0FhZGhhcnZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzdFNlcnZpY2Uua3ljRGV0YWlscyA9IG51bGw7XG4gICAgICB0aGlzLmFhZGhhclZlcmlmeUxvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGVja0t5Y1ZlcmlmaWNhdGlvbigpO1xuICAgIH0sICgpID0+IHtcbiAgICAgIHRoaXMuYWFkaGFyVmVyaWZ5TG9hZGVyID0gZmFsc2U7XG4gICAgfSlcbiAgfVxuXG4gIHZhbGlkYXRlQWFkaGFhcigpOiBib29sZWFuIHtcbiAgICBjb25zdCBhYWRoYWFyUmVnZXggPSAvXlsyLTldezF9WzAtOV17MTF9JC87XG4gICAgcmV0dXJuIGFhZGhhYXJSZWdleC50ZXN0KHRoaXMuYWFkaGFyUmVxdWVzdC5hYWRoYWFyTnVtYmVyKTtcbiAgfVxuXG4gIG1vdmVBYWRoYXJPdHBDdXJzb3IoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcblxuICAgIGlmIChpc05hTihOdW1iZXIoZXZlbnQua2V5KSkgJiYgZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKVxuICAgICAgcmV0dXJuO1xuXG4gICAgaWYgKGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIikge1xuICAgICAgdGhpcy5hYWRoYXJPdHBBcnJheVtpZHhdID0gZXZlbnQua2V5O1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhYWRoYXJPdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuY29kZSA9PSBcIkJhY2tzcGFjZVwiICYmICF0aGlzLmFhZGhhck90cEFycmF5W2lkeF0pIHtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYWFkaGFyT3RwX1wiICsgKGlkeCAtIDEpKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0t5Y1ZlcmlmaWNhdGlvbigpIHtcbiAgICBpZih0aGlzLmlzQWFkaGFydmVyaWZpZWQgJiYgdGhpcy5pc1BhblZlcmlmaWVkKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xvc2VLeWNDYW52YXMnKT8uY2xpY2soKVxuICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gIH1cblxuICByZWRpcmVjdFRvUHJvZHVjdExpc3QoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydwcm9wZXJ0eS1saXN0J10pXG4gIH1cblxuICBnZXQgaXNNb2JpbGUoKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcbiAgfVxufVxuIiwiPHAtdG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiBbYmFzZVpJbmRleF09XCIxMDAwMDAwMDAwMFwiIFthdXRvWkluZGV4XT1cInRydWVcIlxuICAgIFtzaG93VHJhbnNmb3JtT3B0aW9uc109XCJpc01vYmlsZSA/ICd0cmFuc2xhdGVZKC0xMDAlKScgOiAnJ1wiPjwvcC10b2FzdD5cblxuPHNlY3Rpb24gY2xhc3M9XCJtYWluLXNlY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImRpc3BsYXktY2VudGVyXCIgKm5nSWY9XCIhKGlzUGFuVmVyaWZpZWQgJiYgaXNBYWRoYXJ2ZXJpZmllZClcIj5cbiAgICA8aW1nIGNsYXNzPVwiaW1nXCIgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy85NzAzMzJjMTc0MDAzMDE4NzcyNmt5Yy5wbmdcIlxuICAgICAgYWx0PVwiXCI+XG4gICAgPGRpdiBjbGFzcz1cInRleHQtZ3JvdXBcIj5cbiAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ1wiPkNvbXBsZXRlIFlvdXIgS1lDIHRvIHN0YXJ0IEludmVzdGluZzwvcD5cbiAgICAgIDxwIGNsYXNzPVwiZGVzY1wiPkJlZm9yZSB5b3UgY2FuIGludmVzdCwgd2UgbmVlZCB0byB2ZXJpZnkgeW91ciBpZGVudGl0eSwgc2ltcGx5IHVwbG9hZCB5b3VyIGRvY3VtZW50cyxcbiAgICAgICAgPGJyPiBzdWJtaXQgeW91ciBLWUMsIGFuZCBsZXQgdXMgaGFuZGxlIHRoZSByZXN0XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdC1idG5cIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIiBkYXRhLWJzLXRhcmdldD1cIiNvZmZjYW52YXNSaWdodFwiXG4gICAgICBhcmlhLWNvbnRyb2xzPVwib2ZmY2FudmFzUmlnaHRcIj5TdWJtaXQgS1lDIE5vdzwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImlzUGFuVmVyaWZpZWQgJiYgaXNBYWRoYXJ2ZXJpZmllZFwiIGNsYXNzPVwiZGlzcGxheS1jZW50ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidy01MFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3VyZWRcIj5cbiAgICAgICAgPG1hdC1pY29uPnNlY3VyaXR5PC9tYXQtaWNvbj5cbiAgICAgICAgPHA+WW91ciBEYXRhIGlzIFNhZmUgJiBTZWN1cmU8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LXNwYWNlXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiPlBBTiBOdW1iZXI8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWJveFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicGFuUmVxdWVzdC5wYW5OdW1iZXJcIiBkaXNhYmxlZD5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZFwiIHRpdGxlPVwiT1RQIFZlcmlmaWVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZVwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5BYWRoYXIgTnVtYmVyPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFhZGhhclJlcXVlc3QuYWFkaGFhck51bWJlclwiIGRpc2FibGVkPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInZlcmlmaWVkXCIgdGl0bGU9XCJPVFAgVmVyaWZpZWRcIj5jaGVja19jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMTUgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInN1Ym1pdC1idG5cIiAoY2xpY2spPVwicmVkaXJlY3RUb1Byb2R1Y3RMaXN0KClcIj5MZXQncyBHcm93IFdlYWx0aDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zZWN0aW9uPlxuXG48ZGl2IGNsYXNzPVwib2ZmY2FudmFzIG9mZmNhbnZhcy1lbmRcIiB0YWJpbmRleD1cIi0xXCIgaWQ9XCJvZmZjYW52YXNSaWdodFwiIGFyaWEtbGFiZWxsZWRieT1cIm9mZmNhbnZhc1JpZ2h0TGFiZWxcIj5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICAgIDxwPktZQyBEZXRhaWxzPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pZGRsZS1zZWN0aW9uXCI+XG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN1cmVkXCI+XG4gICAgICAgIDxtYXQtaWNvbj5zZWN1cml0eTwvbWF0LWljb24+XG4gICAgICAgIDxwPllvdXIgRGF0YSBpcyBTYWZlICYgU2VjdXJlPC9wPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZVwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5QQU4gTnVtYmVyPC9sYWJlbD5cbiAgICAgICAgICA8cCBjbGFzcz1cInZlcmlmeS10ZXh0XCIgKGNsaWNrKT1cInZlcmlmeVBhbk51bWJlcigpXCIgKm5nSWY9XCIhaXNQYW5WZXJpZmllZCAmJiAhcGFuVmVyaWZ5TG9hZGVyXCI+VmVyaWZ5PC9wPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYW5WZXJpZnlMb2FkZXJcIiBjbGFzcz1cImt5Yy1kZXRhaWxcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInBhblJlcXVlc3QucGFuTnVtYmVyXCIgW2Rpc2FibGVkXT1cImlzUGFuVmVyaWZpZWRcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ2ZXJpZmllZFwiIHRpdGxlPVwiT1RQIFZlcmlmaWVkXCIgKm5nSWY9XCJpc1BhblZlcmlmaWVkXCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0xXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1zcGFjZVwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIj5BYWRoYXIgTnVtYmVyPC9sYWJlbD5cbiAgICAgICAgICA8cCBjbGFzcz1cInZlcmlmeS10ZXh0XCIgKGNsaWNrKT1cInNlbmRBYWRoYXJPdHAoKVwiICpuZ0lmPVwiIWFhZGhhck90cFNlbnQgJiYgIWFhZGhhclZlcmlmeUxvYWRlclwiPlNlbmQgT1RQPC9wPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJhYWRoYXJWZXJpZnlMb2FkZXIgJiYgIWFhZGhhck90cFNlbnRcIiBjbGFzcz1cImt5Yy1kZXRhaWxcIj48bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ib3hcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImFhZGhhclJlcXVlc3QuYWFkaGFhck51bWJlclwiIFtkaXNhYmxlZF09XCJpc0FhZGhhcnZlcmlmaWVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidmVyaWZpZWRcIiB0aXRsZT1cIk9UUCBWZXJpZmllZFwiICpuZ0lmPVwiYWFkaGFyT3RwU2VudFwiPmNoZWNrX2NpcmNsZTwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMVwiICpuZ0lmPVwiYWFkaGFyT3RwU2VudFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwiXCI+RW50ZXIgT1RQPC9sYWJlbD5cblxuICAgICAgICA8ZGl2IGlkPVwib3RwXCIgY2xhc3M9XCJvdHAtaW5wdXRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdHAgb2YgWzEsMiwzLDQsNSw2XTsgbGV0IGlkeCA9IGluZGV4XCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIG1heD1cIjlcIiBjbGFzcz1cIm90cC1pbnB1dFwiIFsobmdNb2RlbCldPVwiYWFkaGFyT3RwQXJyYXlbaWR4XVwiXG4gICAgICAgICAgICAgIChrZXl1cCk9XCJtb3ZlQWFkaGFyT3RwQ3Vyc29yKCRldmVudCwgaWR4KVwiIFtpZF09XCInYWFkaGFyT3RwXycraWR4XCIgLz5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIGRhdGEtYnMtZGlzbWlzcz1cIm9mZmNhbnZhc1wiIGlkPVwiY2xvc2VLeWNDYW52YXNcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJzdWJtaXQtYnRuXCIgKm5nSWY9XCJhYWRoYXJPdHBTZW50ICYmICFhYWRoYXJWZXJpZnlMb2FkZXJcIiAoY2xpY2spPVwidmVyaWZ5QWFkaGFyT3RwKClcIj5WZXJpZnk8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZC1mbGV4IHN1Ym1pdC1idG5cIiAqbmdJZj1cImFhZGhhclZlcmlmeUxvYWRlciAmJiBhYWRoYXJPdHBTZW50XCI+XG4gICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj4gVmVyaWZ5aW5nXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|