@sunbird-cb/cbp-ai 0.0.1
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/README.md +24 -0
- package/esm2022/lib/ai-cbp-routing.module.mjs +56 -0
- package/esm2022/lib/ai-cbp.component.mjs +14 -0
- package/esm2022/lib/ai-cbp.module.mjs +263 -0
- package/esm2022/lib/ai-cbp.service.mjs +14 -0
- package/esm2022/lib/components/add-course/add-course.component.mjs +444 -0
- package/esm2022/lib/components/add-designation/add-designation.component.mjs +460 -0
- package/esm2022/lib/components/add-personalisation/add-personalisation.component.mjs +33 -0
- package/esm2022/lib/components/approval-request-form/approval-request-form.component.mjs +392 -0
- package/esm2022/lib/components/approval-requests/approval-requests.component.mjs +398 -0
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +265 -0
- package/esm2022/lib/components/delete-role-mapping/delete-role-mapping.component.mjs +53 -0
- package/esm2022/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.mjs +39 -0
- package/esm2022/lib/components/edit-cbp-plan/edit-cbp-plan.component.mjs +699 -0
- package/esm2022/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.mjs +188 -0
- package/esm2022/lib/components/generate-course-recommendation/generate-course-recommendation.component.mjs +1949 -0
- package/esm2022/lib/components/list-popup/list-popup.component.mjs +32 -0
- package/esm2022/lib/components/review-request/review-request.component.mjs +138 -0
- package/esm2022/lib/components/role-mapping-generation/role-mapping-generation.component.mjs +1082 -0
- package/esm2022/lib/components/role-mapping-list/role-mapping-list.component.mjs +714 -0
- package/esm2022/lib/components/suggest-more-courses/suggest-more-courses.component.mjs +370 -0
- package/esm2022/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.mjs +235 -0
- package/esm2022/lib/components/view-cbp-plan/view-cbp-plan.component.mjs +125 -0
- package/esm2022/lib/components/view-course-recommendation/view-course-recommendation.component.mjs +397 -0
- package/esm2022/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.mjs +883 -0
- package/esm2022/lib/modules/initial-screen/initial-screen.component.mjs +127 -0
- package/esm2022/lib/modules/shared/constant/app.constant.mjs +2036 -0
- package/esm2022/lib/modules/shared/directives/clickoutside.directive.mjs +38 -0
- package/esm2022/lib/modules/shared/directives/directive.module.mjs +21 -0
- package/esm2022/lib/modules/shared/pipes/order-by-name.pipe.mjs +23 -0
- package/esm2022/lib/modules/shared/services/event.service.mjs +24 -0
- package/esm2022/lib/modules/shared/services/events.mjs +125 -0
- package/esm2022/lib/modules/shared/services/init.service.mjs +41 -0
- package/esm2022/lib/modules/shared/services/role-mapping.service.mjs +261 -0
- package/esm2022/lib/modules/shared/services/shared.service.mjs +869 -0
- package/esm2022/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.mjs +53 -0
- package/esm2022/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.mjs +186 -0
- package/esm2022/lib/modules/upload-document-page/upload-document-page.component.mjs +367 -0
- package/esm2022/lib/pipe-public-URL/pipe-public-URL.module.mjs +20 -0
- package/esm2022/lib/pipe-public-URL/pipe-public-URL.pipe.mjs +23 -0
- package/esm2022/public-api.mjs +14 -0
- package/esm2022/sunbird-cb-cbp-ai.mjs +5 -0
- package/fesm2022/sunbird-cb-cbp-ai.mjs +12952 -0
- package/fesm2022/sunbird-cb-cbp-ai.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/ai-cbp-routing.module.d.ts +8 -0
- package/lib/ai-cbp-routing.module.d.ts.map +1 -0
- package/lib/ai-cbp.component.d.ts +7 -0
- package/lib/ai-cbp.component.d.ts.map +1 -0
- package/lib/ai-cbp.module.d.ts +68 -0
- package/lib/ai-cbp.module.d.ts.map +1 -0
- package/lib/ai-cbp.service.d.ts +7 -0
- package/lib/ai-cbp.service.d.ts.map +1 -0
- package/lib/components/add-course/add-course.component.d.ts +67 -0
- package/lib/components/add-course/add-course.component.d.ts.map +1 -0
- package/lib/components/add-designation/add-designation.component.d.ts +52 -0
- package/lib/components/add-designation/add-designation.component.d.ts.map +1 -0
- package/lib/components/add-personalisation/add-personalisation.component.d.ts +16 -0
- package/lib/components/add-personalisation/add-personalisation.component.d.ts.map +1 -0
- package/lib/components/approval-request-form/approval-request-form.component.d.ts +48 -0
- package/lib/components/approval-request-form/approval-request-form.component.d.ts.map +1 -0
- package/lib/components/approval-requests/approval-requests.component.d.ts +80 -0
- package/lib/components/approval-requests/approval-requests.component.d.ts.map +1 -0
- package/lib/components/dashboard/dashboard.component.d.ts +55 -0
- package/lib/components/dashboard/dashboard.component.d.ts.map +1 -0
- package/lib/components/delete-role-mapping/delete-role-mapping.component.d.ts +18 -0
- package/lib/components/delete-role-mapping/delete-role-mapping.component.d.ts.map +1 -0
- package/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.d.ts +18 -0
- package/lib/components/delete-role-mapping-popup/delete-role-mapping-popup.component.d.ts.map +1 -0
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts +94 -0
- package/lib/components/edit-cbp-plan/edit-cbp-plan.component.d.ts.map +1 -0
- package/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.d.ts +35 -0
- package/lib/components/gap-analysis-recommended-course/gap-analysis-recommended-course.component.d.ts.map +1 -0
- package/lib/components/generate-course-recommendation/generate-course-recommendation.component.d.ts +198 -0
- package/lib/components/generate-course-recommendation/generate-course-recommendation.component.d.ts.map +1 -0
- package/lib/components/list-popup/list-popup.component.d.ts +13 -0
- package/lib/components/list-popup/list-popup.component.d.ts.map +1 -0
- package/lib/components/review-request/review-request.component.d.ts +39 -0
- package/lib/components/review-request/review-request.component.d.ts.map +1 -0
- package/lib/components/role-mapping-generation/role-mapping-generation.component.d.ts +99 -0
- package/lib/components/role-mapping-generation/role-mapping-generation.component.d.ts.map +1 -0
- package/lib/components/role-mapping-list/role-mapping-list.component.d.ts +83 -0
- package/lib/components/role-mapping-list/role-mapping-list.component.d.ts.map +1 -0
- package/lib/components/suggest-more-courses/suggest-more-courses.component.d.ts +48 -0
- package/lib/components/suggest-more-courses/suggest-more-courses.component.d.ts.map +1 -0
- package/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.d.ts +41 -0
- package/lib/components/update-designation-hierarchy/update-designation-hierarchy.component.d.ts.map +1 -0
- package/lib/components/view-cbp-plan/view-cbp-plan.component.d.ts +29 -0
- package/lib/components/view-cbp-plan/view-cbp-plan.component.d.ts.map +1 -0
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts +49 -0
- package/lib/components/view-course-recommendation/view-course-recommendation.component.d.ts.map +1 -0
- package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts +73 -0
- package/lib/components/view-final-cbp-plan/view-final-cbp-plan.component.d.ts.map +1 -0
- package/lib/modules/initial-screen/initial-screen.component.d.ts +85 -0
- package/lib/modules/initial-screen/initial-screen.component.d.ts.map +1 -0
- package/lib/modules/shared/constant/app.constant.d.ts +457 -0
- package/lib/modules/shared/constant/app.constant.d.ts.map +1 -0
- package/lib/modules/shared/directives/clickoutside.directive.d.ts +13 -0
- package/lib/modules/shared/directives/clickoutside.directive.d.ts.map +1 -0
- package/lib/modules/shared/directives/directive.module.d.ts +8 -0
- package/lib/modules/shared/directives/directive.module.d.ts.map +1 -0
- package/lib/modules/shared/pipes/order-by-name.pipe.d.ts +8 -0
- package/lib/modules/shared/pipes/order-by-name.pipe.d.ts.map +1 -0
- package/lib/modules/shared/services/event.service.d.ts +12 -0
- package/lib/modules/shared/services/event.service.d.ts.map +1 -0
- package/lib/modules/shared/services/events.d.ts +200 -0
- package/lib/modules/shared/services/events.d.ts.map +1 -0
- package/lib/modules/shared/services/init.service.d.ts +13 -0
- package/lib/modules/shared/services/init.service.d.ts.map +1 -0
- package/lib/modules/shared/services/role-mapping.service.d.ts +21 -0
- package/lib/modules/shared/services/role-mapping.service.d.ts.map +1 -0
- package/lib/modules/shared/services/shared.service.d.ts +108 -0
- package/lib/modules/shared/services/shared.service.d.ts.map +1 -0
- package/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.d.ts +14 -0
- package/lib/modules/upload-document-page/progress-dialog/progress-dialog.component.d.ts.map +1 -0
- package/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.d.ts +29 -0
- package/lib/modules/upload-document-page/upload-dialog/upload-dialog.component.d.ts.map +1 -0
- package/lib/modules/upload-document-page/upload-document-page.component.d.ts +64 -0
- package/lib/modules/upload-document-page/upload-document-page.component.d.ts.map +1 -0
- package/lib/pipe-public-URL/pipe-public-URL.module.d.ts +9 -0
- package/lib/pipe-public-URL/pipe-public-URL.module.d.ts.map +1 -0
- package/lib/pipe-public-URL/pipe-public-URL.pipe.d.ts +11 -0
- package/lib/pipe-public-URL/pipe-public-URL.pipe.d.ts.map +1 -0
- package/package.json +28 -0
- package/public-api.d.ts +11 -0
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-cbp-ai-0.0.1.tgz +0 -0
- package/sunbird-cb-cbp-ai.d.ts.map +1 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import moment from 'moment';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "../../modules/shared/services/shared.service";
|
|
6
|
+
import * as i3 from "@angular/material/snack-bar";
|
|
7
|
+
import * as i4 from "@angular/router";
|
|
8
|
+
import * as i5 from "@angular/common";
|
|
9
|
+
import * as i6 from "@angular/material/legacy-card";
|
|
10
|
+
import * as i7 from "@angular/material/legacy-form-field";
|
|
11
|
+
import * as i8 from "@angular/material/legacy-input";
|
|
12
|
+
import * as i9 from "@angular/material/icon";
|
|
13
|
+
import * as i10 from "@angular/material/legacy-select";
|
|
14
|
+
import * as i11 from "@angular/material/legacy-core";
|
|
15
|
+
import * as i12 from "ngx-daterangepicker-material";
|
|
16
|
+
export class DashboardComponent {
|
|
17
|
+
constructor(fb, sharedService, snackBar, router) {
|
|
18
|
+
this.fb = fb;
|
|
19
|
+
this.sharedService = sharedService;
|
|
20
|
+
this.snackBar = snackBar;
|
|
21
|
+
this.router = router;
|
|
22
|
+
this.isSuperAdmin = false;
|
|
23
|
+
this.selected = {
|
|
24
|
+
startDate: moment().subtract(3, 'month'),
|
|
25
|
+
endDate: moment()
|
|
26
|
+
};
|
|
27
|
+
this.ministriesList = [
|
|
28
|
+
{ id: 1, name: 'Ministry A' },
|
|
29
|
+
{ id: 2, name: 'Ministry B' },
|
|
30
|
+
{ id: 3, name: 'Ministry C' }
|
|
31
|
+
];
|
|
32
|
+
this.departmentsList = [
|
|
33
|
+
{ id: 1, name: 'Dept X' },
|
|
34
|
+
{ id: 2, name: 'Dept Y' },
|
|
35
|
+
{ id: 3, name: 'Dept Z' }
|
|
36
|
+
];
|
|
37
|
+
this.selectedMinistryType = 'ministry';
|
|
38
|
+
this.selectedMinistryId = '';
|
|
39
|
+
this.panelOpen = false;
|
|
40
|
+
this.departmentPanelOpen = false;
|
|
41
|
+
this.filteredList = [];
|
|
42
|
+
this.filteredDepartmentList = [];
|
|
43
|
+
this.ministryData = [];
|
|
44
|
+
this.ministryFullData = [];
|
|
45
|
+
this.departmentData = [];
|
|
46
|
+
this.selectedMinistryObj = {};
|
|
47
|
+
this.apiLoading = false;
|
|
48
|
+
this.loginUserOrgIds = [];
|
|
49
|
+
this.dashboardResponseObj = {};
|
|
50
|
+
this.cbpFinalObj = {};
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.userProfile = JSON.parse(localStorage.getItem('userProfile') || '{}');
|
|
54
|
+
this.isSuperAdmin = this.userProfile?.role_info?.role_name === 'Super Admin'
|
|
55
|
+
&& this.userProfile?.role_info?.is_active;
|
|
56
|
+
this.loginUserOrgIds = this.userProfile?.organization_ids;
|
|
57
|
+
this.cbpFinalObj = this.sharedService.getCBPPlanLocalStorage();
|
|
58
|
+
console.log('this.cbpFinalObj--', this.cbpFinalObj);
|
|
59
|
+
// Initialize the form without disabling anything
|
|
60
|
+
this.filtersForm = this.fb.group({
|
|
61
|
+
centreState: [''],
|
|
62
|
+
ministries: [[]],
|
|
63
|
+
departments: [[]],
|
|
64
|
+
dateRange: [{ startDate: moment().subtract(3, 'month'), endDate: moment() }]
|
|
65
|
+
});
|
|
66
|
+
if (this.cbpFinalObj) {
|
|
67
|
+
let event = { value: this.cbpFinalObj?.ministry?.sbOrgType };
|
|
68
|
+
let ministryEvent = { value: this.cbpFinalObj?.ministry?.identifier };
|
|
69
|
+
this.onMinistryTypeChange(event);
|
|
70
|
+
this.onMinistryChange(ministryEvent);
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
this.filtersForm.patchValue({
|
|
73
|
+
centreState: this.selectedMinistryType,
|
|
74
|
+
ministries: [this.cbpFinalObj?.ministry?.identifier],
|
|
75
|
+
departments: [this.cbpFinalObj?.departments]
|
|
76
|
+
});
|
|
77
|
+
}, 1000);
|
|
78
|
+
}
|
|
79
|
+
// Dynamically enable controls if super admin
|
|
80
|
+
if (this.isSuperAdmin) {
|
|
81
|
+
this.filtersForm.get('centreState')?.enable();
|
|
82
|
+
this.filtersForm.get('ministries')?.enable();
|
|
83
|
+
this.filtersForm.get('departments')?.enable();
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// optionally disable for non-super-admin
|
|
87
|
+
this.filtersForm.get('centreState')?.disable();
|
|
88
|
+
this.filtersForm.get('ministries')?.disable();
|
|
89
|
+
this.filtersForm.get('departments')?.disable();
|
|
90
|
+
}
|
|
91
|
+
// Trigger API call on filter change
|
|
92
|
+
this.filtersForm.valueChanges.subscribe(val => {
|
|
93
|
+
this.getDashboardData(val);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
getDashboardData(val) {
|
|
97
|
+
console.log('val', val);
|
|
98
|
+
let dateRangePayload = null;
|
|
99
|
+
if (val.dateRange && val.dateRange.startDate && val.dateRange.endDate) {
|
|
100
|
+
dateRangePayload = {
|
|
101
|
+
from: moment(val.dateRange.startDate).format('YYYY-MM-DD'),
|
|
102
|
+
to: moment(val.dateRange.endDate).format('YYYY-MM-DD')
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
let payload = {
|
|
106
|
+
ministries: val?.ministries,
|
|
107
|
+
date_range: dateRangePayload
|
|
108
|
+
};
|
|
109
|
+
if (val?.departments?.length) {
|
|
110
|
+
payload['departments'] = val?.departments;
|
|
111
|
+
}
|
|
112
|
+
if (this.isSuperAdmin) {
|
|
113
|
+
this.dashboardData = {};
|
|
114
|
+
this.sharedService.getDashboardAdmin(payload).subscribe((res) => {
|
|
115
|
+
console.log('res from admin', res);
|
|
116
|
+
Object.assign(this.dashboardData, res); // merge data
|
|
117
|
+
console.log('this.dashboardData after admin', this.dashboardData);
|
|
118
|
+
});
|
|
119
|
+
this.sharedService.getDashboardGapAnalysisAdmin(payload).subscribe((res) => {
|
|
120
|
+
console.log('res from gap analysis', res);
|
|
121
|
+
Object.assign(this.dashboardData, res); // merge data
|
|
122
|
+
console.log('this.dashboardData after gap analysis', this.dashboardData);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
this.dashboardData = {};
|
|
127
|
+
this.sharedService.getDashboardPublic(payload).subscribe((res) => {
|
|
128
|
+
Object.assign(this.dashboardData, res);
|
|
129
|
+
});
|
|
130
|
+
this.sharedService.getDashboardGapAnalysisPublic(payload).subscribe((res) => {
|
|
131
|
+
Object.assign(this.dashboardData, res);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
console.log('this.dashboardData', this.dashboardData);
|
|
135
|
+
}
|
|
136
|
+
onOpened(opened) {
|
|
137
|
+
this.panelOpen = opened;
|
|
138
|
+
}
|
|
139
|
+
onOpenedDepartment(opened) {
|
|
140
|
+
this.departmentPanelOpen = opened;
|
|
141
|
+
}
|
|
142
|
+
filterData(event) {
|
|
143
|
+
if (event && event.target && event.target.value) {
|
|
144
|
+
const s = event.target.value.toLowerCase();
|
|
145
|
+
this.filteredList = this.ministryData.filter(x => x.orgName.toLowerCase().includes(s));
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.filteredList = this.ministryData;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
filterDepartmentData(event) {
|
|
152
|
+
if (event && event.target && event.target.value) {
|
|
153
|
+
const s = event.target.value.toLowerCase();
|
|
154
|
+
this.filteredDepartmentList = this.departmentData.filter(x => x.orgName.toLowerCase().includes(s));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
this.filteredDepartmentList = this.departmentData;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
onMinistryChange(event) {
|
|
161
|
+
const selectedMinistryId = event.value;
|
|
162
|
+
console.log('Selected Ministry ID:', selectedMinistryId);
|
|
163
|
+
this.departmentData = [];
|
|
164
|
+
// You can access the selected object if needed
|
|
165
|
+
const selectedMinistry = this.ministryData.find(item => item.identifier === selectedMinistryId);
|
|
166
|
+
this.selectedMinistryObj = selectedMinistry;
|
|
167
|
+
if (selectedMinistryId && this.selectedMinistryType === 'state') {
|
|
168
|
+
this.sharedService.getDepartmentList(selectedMinistryId).subscribe((res) => {
|
|
169
|
+
this.departmentData = res;
|
|
170
|
+
this.filteredDepartmentList = res;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
if (selectedMinistryId && this.selectedMinistryType === 'ministry') {
|
|
174
|
+
this.sharedService.getCenterBasedDepartment(selectedMinistryId).subscribe((res) => {
|
|
175
|
+
if (res?.length) {
|
|
176
|
+
this.departmentData = res;
|
|
177
|
+
this.filteredDepartmentList = res;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this.snackBar.open('No Department Found for Selected Ministry', 'X', {
|
|
181
|
+
duration: 3000,
|
|
182
|
+
panelClass: ['snackbar-error']
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
onDepartmentChange() {
|
|
189
|
+
const formData = this.filtersForm.value;
|
|
190
|
+
const selectedMinistry = this.ministryData.find(item => item.identifier === formData.ministry);
|
|
191
|
+
this.sharedService.cbpPlanFinalObj['ministry'] = selectedMinistry;
|
|
192
|
+
const departmentName = this.departmentData.find(u => u.identifier === formData.departments);
|
|
193
|
+
this.sharedService.cbpPlanFinalObj['department_name'] = departmentName?.orgName;
|
|
194
|
+
}
|
|
195
|
+
async onMinistryTypeChange(event) {
|
|
196
|
+
console.log('event', event);
|
|
197
|
+
this.selectedMinistryType = event.value;
|
|
198
|
+
await this.getMinistryData();
|
|
199
|
+
this.ministryData = [];
|
|
200
|
+
if (event?.value === 'state') {
|
|
201
|
+
this.filtersForm.patchValue({
|
|
202
|
+
centreState: this.selectedMinistryType,
|
|
203
|
+
ministries: [],
|
|
204
|
+
departments: []
|
|
205
|
+
});
|
|
206
|
+
this.ministryFullData.forEach((item) => {
|
|
207
|
+
if (item?.type === 'state') {
|
|
208
|
+
this.ministryData.push(item);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
else if (event?.value === 'ministry') {
|
|
213
|
+
this.ministryFullData.forEach((item) => {
|
|
214
|
+
if (item?.type === 'central') {
|
|
215
|
+
this.ministryData.push(item);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
this.filtersForm.patchValue({
|
|
220
|
+
centreState: this.selectedMinistryType,
|
|
221
|
+
ministries: [],
|
|
222
|
+
departments: []
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
getMinistryData() {
|
|
226
|
+
this.apiLoading = true;
|
|
227
|
+
this.sharedService.getMinistryData(this.selectedMinistryType).subscribe((data) => {
|
|
228
|
+
console.log('data--', data);
|
|
229
|
+
this.ministryFullData = data;
|
|
230
|
+
this.apiLoading = false;
|
|
231
|
+
this.ministryData = [];
|
|
232
|
+
let filteredMinistryData = [];
|
|
233
|
+
this.ministryFullData.map((item) => {
|
|
234
|
+
if (this.loginUserOrgIds.indexOf(item?.identifier) > -1) {
|
|
235
|
+
filteredMinistryData.push(item);
|
|
236
|
+
}
|
|
237
|
+
this.filteredList = filteredMinistryData;
|
|
238
|
+
});
|
|
239
|
+
if (this.selectedMinistryType === 'ministry') {
|
|
240
|
+
data.forEach((item) => {
|
|
241
|
+
if (item?.sbOrgType === 'ministry') {
|
|
242
|
+
this.ministryData.push(item);
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
else if (this.selectedMinistryType === 'state') {
|
|
247
|
+
data.forEach((item) => {
|
|
248
|
+
if (item?.sbOrgType === 'state') {
|
|
249
|
+
this.ministryData.push(item);
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
routeToInitial() {
|
|
256
|
+
this.router.navigate(['/ai/initial']);
|
|
257
|
+
}
|
|
258
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.FormBuilder }, { token: i2.SharedService }, { token: i3.MatSnackBar }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
259
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardComponent, selector: "app-dashboard", ngImport: i0, template: "<div class=\"dashboard-wrapper\">\n <div class=\"header\">\n <div class=\"sub-heading mt-10 mb-10 cursor-pointer\">\n <p (click)=\"routeToInitial()\"><mat-icon style=\"vertical-align: middle;\">arrow_back</mat-icon><span\n class=\"pl-10\">Back to Role Mapping Generation</span></p>\n </div>\n\n </div>\n <div class=\"dashboard-container\">\n\n <!-- FILTERS SECTION -->\n <form [formGroup]=\"filtersForm\" class=\"filters-form\">\n\n <mat-card class=\"filters-card\">\n <div class=\"filters-header\">\n <mat-icon>filter_list</mat-icon>\n <span>Filters</span>\n </div>\n\n <div class=\"filters-row\">\n <div>\n <label>Centre / State </label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px; border: 1px solid #ccc;width: 100%;\">\n\n <mat-select formControlName=\"centreState\" [disabled]=\"!isSuperAdmin\"\n (selectionChange)=\"onMinistryTypeChange($event)\">\n <mat-option value=\"\">Select Center/State</mat-option>\n <mat-option value=\"ministry\">Center</mat-option>\n <mat-option value=\"state\">State</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <label>Ministry </label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px; border: 1px solid #ccc;width: 100%;\">\n <mat-select panelClass=\"select-with-search\" [disabled]=\"!isSuperAdmin\" multiple\n [placeholder]=\"selectedMinistryType === 'ministry' ? 'Select Ministry/ Department':'Select State'\"\n (selectionChange)=\"onMinistryChange($event)\" formControlName=\"ministries\"\n style=\"border-radius: 25px; background: white; width:100%\"\n (openedChange)=\"onOpened($event)\">\n <div class=\"search-wrapper\" *ngIf=\"panelOpen\">\n <input type=\"text\" placeholder=\"Search...\" (input)=\"filterData($event)\"\n class=\"search-input\" (keydown.space)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n </div>\n <mat-option [value]=\"item?.identifier\" *ngFor=\"let item of filteredList\"\n [selected]=\"selectedMinistryId === item?.identifier\">{{item?.orgName}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <label>Department</label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px;border: 1px solid #ccc;\">\n <mat-select panelClass=\"select-with-search\" placeholder=\"Select Department\"\n [disabled]=\"!isSuperAdmin\" multiple formControlName=\"departments\"\n style=\"border-radius: 25px; background: white;\" (selectionChange)=\"onDepartmentChange()\"\n (openedChange)=\"onOpenedDepartment($event)\">\n <div class=\"search-wrapper\" *ngIf=\"departmentPanelOpen\">\n <input type=\"text\" placeholder=\"Search...\" (input)=\"filterDepartmentData($event)\"\n class=\"search-input\" (keydown.space)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n </div>\n <mat-option [value]=\"item?.identifier\"\n *ngFor=\"let item of filteredDepartmentList\">{{item?.orgName}}</mat-option>\n\n </mat-select>\n </mat-form-field>\n </div>\n\n <!-- Date Range -->\n <div>\n <label>Date Range </label>\n <mat-form-field appearance=\"outline\">\n\n <input matInput ngxDaterangepickerMd formControlName=\"dateRange\" style=\"margin:10px\"\n placeholder=\"Select date range\" [autoApply]=\"true\" [linkedCalendars]=\"true\"\n [locale]=\"{ format: 'DD MMM YYYY' }\" />\n </mat-form-field>\n </div>\n\n\n </div>\n </mat-card>\n </form>\n\n <!-- OVERVIEW METRICS -->\n <h2 class=\"section-title\">\n <mat-icon>dashboard</mat-icon>\n Overview Metrics\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">States/Ministries which generated Role Mapping</p>\n <h2>{{this.dashboardData?.ministry_count}}</h2>\n <p class=\"card-subtitle\">At least 1 designation/role mapping</p>\n </div>\n <mat-icon class=\"icon primary\">public</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Departments which generated Role Mapping</p>\n <h2>{{this.dashboardData?.department_count}}</h2>\n <p class=\"card-subtitle\">At least 1 designation/role mapping</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Capacity Building Plans Created</p>\n <h2>{{this.dashboardData?.total_cbp_plan_count}}</h2>\n </div>\n <mat-icon class=\"icon green\">description</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- COMPETENCIES -->\n <h2 class=\"section-title\">\n <mat-icon>psychology</mat-icon>\n Competencies Recommended\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Behavioral Competencies</p>\n <h2>{{this.dashboardData?.behavioral_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon purple\">psychology</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Functional Competencies</p>\n <h2>{{this.dashboardData?.functional_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon teal\">settings</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Domain Competencies</p>\n <h2>{{this.dashboardData?.domain_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon orange\">tune</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- DOCUMENTS -->\n <h2 class=\"section-title\">\n <mat-icon>menu_book</mat-icon>\n Documents & Course Recommendations\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Documents Uploaded</p>\n <h2>{{this.dashboardData?.total_documents}}</h2>\n <p class=\"card-subtitle\">Min 1, Max 10 per role mapping</p>\n </div>\n <mat-icon class=\"icon amber\">upload_file</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Role Mappings with Course Recommendations</p>\n <h2>{{this.dashboardData?.role_mappings_with_recommendations}}</h2>\n <p class=\"card-subtitle\">8500 of 50,000 role mappings</p>\n </div>\n <mat-icon class=\"icon green\">menu_book</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Course Recommendations Saved</p>\n <h2>{{this.dashboardData?.saved_recommended_courses_count}}</h2>\n <p class=\"card-subtitle\">{{this.dashboardData?.saved_recommended_courses_count}} of 8500\n recommendations</p>\n </div>\n <mat-icon class=\"icon teal\">save</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- GAP ANALYSIS -->\n <div class=\"gap-section\">\n <h2 class=\"section-title warning\">\n <mat-icon>warning</mat-icon>\n Gap Analysis\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card warning-bg\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Competencies Without Courses</p>\n <h2>{{this.dashboardData?.competencies_without_courses}}</h2>\n <p class=\"card-subtitle\">Unique competencies with no identified courses</p>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <!-- <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Manually Added Courses</p>\n <h2>-</h2>\n <p class=\"card-subtitle\">Competencies with user-added courses</p>\n </div>\n <mat-icon class=\"icon green\">add_circle</mat-icon>\n </div>\n </mat-card> -->\n\n </div>\n\n <div class=\"card-grid mt-2\">\n\n <mat-card class=\"metric-card warning-bg\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Behavioral Competencies Without Courses</p>\n <h2>{{this.dashboardData?.behavioral_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Functional Competencies Without Courses</p>\n <h2>{{this.dashboardData?.functional_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Domain Competencies Without Courses</p>\n <h2>{{this.dashboardData?.domain_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n </div>\n </div>\n\n <!-- OVERVIEW METRICS -->\n <h2 class=\"section-title\">\n <mat-icon>dashboard</mat-icon>\n Users and Role Mapping Metrics\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\" *ngIf=\"!isSuperAdmin\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Users (Credentials)</p>\n <h2>{{this.dashboardData?.total_users}}</h2>\n </div>\n <mat-icon class=\"icon primary\">public</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\" *ngIf=\"!isSuperAdmin\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Users with Role Mappings</p>\n <h2>{{this.dashboardData?.users_with_role_mappings}}</h2>\n <p class=\"card-subtitle\">Generated atleast 1 role mapping</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Designation/Role Mappings Generated</p>\n <h2>{{this.dashboardData?.total_role_mappings}}</h2>\n </div>\n <mat-icon class=\"icon green\">description</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Role Mappings</p>\n <h2>{{this.dashboardData?.unique_role_mappings}}</h2>\n <p class=\"card-subtitle\">10,000 unique of 50,000 total</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n </div>\n </div>\n</div>", styles: [".dashboard-wrapper{background:transparent;min-height:100vh;padding:24px 10px;margin:0 30px 0 60px}.dashboard-container{max-width:auto;margin:0 auto}.section-title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:600;color:#000;margin:20px 0}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.metric-card{padding:24px;border-radius:12px;box-shadow:none;border:1px solid #e5e7eb}.card-content{display:flex;justify-content:space-between;align-items:center}.card-title{font-size:14px;color:#6b7280;margin-bottom:6px}.metric-card h2{font-size:28px;font-weight:700;color:#000;margin:0}.card-subtitle{font-size:12px;color:#9ca3af;margin-top:6px}.icon{font-size:28px;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.primary{color:#2563eb}.teal{color:#059669}.green{color:#16a34a}.purple{color:#9333ea}.orange{color:#f97316}.amber{color:#f59e0b}.red,.section-title.warning{color:#dc2626}.warning-card{background:#fdeaea;border:1px solid #f5c2c7}.filters-card{padding:20px 24px;border-radius:12px;border:1px solid #e5e7eb;box-shadow:none}.filters-header{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:16px}.filters-row{display:flex;gap:24px;flex-wrap:wrap}.filters-row mat-form-field{flex:1;min-width:220px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{color:#ccc}:host ::ng-deep .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{color:#1b4ca1;border-color:#1b4ca1!important}::ng-deep .select-search-panel .mat-option.mat-selected:not(.mat-option-disabled){background-color:#1b4ca1!important;color:#fff!important}:host ::ng-deep .mat-form-field-appearance-outline{border-radius:25px;border:1px solid #ccc}:host ::ng-deep .mat-form-field-focused .mat-form-field-appearance-outline{border-color:#1b4ca1!important}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:25px 0 0 25px;border:none!important}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-end{border-right:none!important;border:none!important;border-radius:0 25px 25px 0}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-gap{border:none!important;border-radius:25px}:host::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix{background-color:transparent!important}.dashboard-container .mat-card{background-color:#fff}.gap-title{color:#b91c1c}.gap-section{background-color:#d926621a;padding:10px;border-radius:12px;border:1px solid #f5c2c7;margin:16px 0}.gap-card{background-color:#d926621a;border:1px solid #f8d7da}.gap-card h2{color:#dc2626}@media (max-width: 1200px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.card-grid{grid-template-columns:1fr}}.mat-select-panel .search-wrapper{width:100%!important;box-sizing:border-box;padding:8px;position:sticky;top:0;z-index:2;background:#fff}.search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}.mat-select-panel mat-option{padding-top:10px}::ng-deep .mat-select-panel-wrap{overflow:visible!important;padding:0;margin-top:42px}::ng-deep .mat-select-panel{border:1px solid #ccc!important;box-sizing:border-box;max-height:250px}::ng-deep .select-with-search.mat-select-panel{padding-top:0;overflow:auto}::ng-deep .select-with-search .search-wrapper{position:sticky;top:0;z-index:10;background:#fff;padding:8px;border-bottom:1px solid #e0e0e0}::ng-deep .select-with-search .search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}::ng-deep .select-with-search mat-option:first-of-type{margin-top:4px}::ng-deep .md-drppicker.ltr{min-width:500px!important}.sub-heading p{color:#000;font-family:Montserrat;font-size:18px;font-style:normal;font-weight:600;line-height:normal}.mb-10{margin-bottom:10px}.cursor-pointer{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i7.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i11.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i12.DaterangepickerDirective, selector: "input[ngxDaterangepickerMd]", inputs: ["minDate", "maxDate", "autoApply", "alwaysShowCalendars", "showCustomRangeLabel", "linkedCalendars", "dateLimit", "singleDatePicker", "showWeekNumbers", "showISOWeekNumbers", "showDropdowns", "isInvalidDate", "isCustomDate", "isTooltipDate", "showClearButton", "customRangeDirection", "ranges", "opens", "drops", "firstMonthDayClass", "lastMonthDayClass", "emptyWeekRowClass", "emptyWeekColumnClass", "firstDayOfNextMonthClass", "lastDayOfPreviousMonthClass", "keepCalendarOpeningWithRange", "showRangeLabelOnInput", "showCancel", "lockStartDate", "timePicker", "timePicker24Hour", "timePickerIncrement", "timePickerSeconds", "closeOnAutoApply", "endKeyHolder", "startKey", "locale", "endKey"], outputs: ["change", "rangeClicked", "datesUpdated", "startDateChanged", "endDateChanged", "clearClicked"] }] }); }
|
|
260
|
+
}
|
|
261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
262
|
+
type: Component,
|
|
263
|
+
args: [{ selector: 'app-dashboard', template: "<div class=\"dashboard-wrapper\">\n <div class=\"header\">\n <div class=\"sub-heading mt-10 mb-10 cursor-pointer\">\n <p (click)=\"routeToInitial()\"><mat-icon style=\"vertical-align: middle;\">arrow_back</mat-icon><span\n class=\"pl-10\">Back to Role Mapping Generation</span></p>\n </div>\n\n </div>\n <div class=\"dashboard-container\">\n\n <!-- FILTERS SECTION -->\n <form [formGroup]=\"filtersForm\" class=\"filters-form\">\n\n <mat-card class=\"filters-card\">\n <div class=\"filters-header\">\n <mat-icon>filter_list</mat-icon>\n <span>Filters</span>\n </div>\n\n <div class=\"filters-row\">\n <div>\n <label>Centre / State </label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px; border: 1px solid #ccc;width: 100%;\">\n\n <mat-select formControlName=\"centreState\" [disabled]=\"!isSuperAdmin\"\n (selectionChange)=\"onMinistryTypeChange($event)\">\n <mat-option value=\"\">Select Center/State</mat-option>\n <mat-option value=\"ministry\">Center</mat-option>\n <mat-option value=\"state\">State</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <label>Ministry </label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px; border: 1px solid #ccc;width: 100%;\">\n <mat-select panelClass=\"select-with-search\" [disabled]=\"!isSuperAdmin\" multiple\n [placeholder]=\"selectedMinistryType === 'ministry' ? 'Select Ministry/ Department':'Select State'\"\n (selectionChange)=\"onMinistryChange($event)\" formControlName=\"ministries\"\n style=\"border-radius: 25px; background: white; width:100%\"\n (openedChange)=\"onOpened($event)\">\n <div class=\"search-wrapper\" *ngIf=\"panelOpen\">\n <input type=\"text\" placeholder=\"Search...\" (input)=\"filterData($event)\"\n class=\"search-input\" (keydown.space)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n </div>\n <mat-option [value]=\"item?.identifier\" *ngFor=\"let item of filteredList\"\n [selected]=\"selectedMinistryId === item?.identifier\">{{item?.orgName}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div>\n <label>Department</label>\n <!-- Centre / State -->\n <mat-form-field appearance=\"fill\"\n style=\"background: white; border-radius: 25px; padding: 0 12px;border: 1px solid #ccc;\">\n <mat-select panelClass=\"select-with-search\" placeholder=\"Select Department\"\n [disabled]=\"!isSuperAdmin\" multiple formControlName=\"departments\"\n style=\"border-radius: 25px; background: white;\" (selectionChange)=\"onDepartmentChange()\"\n (openedChange)=\"onOpenedDepartment($event)\">\n <div class=\"search-wrapper\" *ngIf=\"departmentPanelOpen\">\n <input type=\"text\" placeholder=\"Search...\" (input)=\"filterDepartmentData($event)\"\n class=\"search-input\" (keydown.space)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\">\n </div>\n <mat-option [value]=\"item?.identifier\"\n *ngFor=\"let item of filteredDepartmentList\">{{item?.orgName}}</mat-option>\n\n </mat-select>\n </mat-form-field>\n </div>\n\n <!-- Date Range -->\n <div>\n <label>Date Range </label>\n <mat-form-field appearance=\"outline\">\n\n <input matInput ngxDaterangepickerMd formControlName=\"dateRange\" style=\"margin:10px\"\n placeholder=\"Select date range\" [autoApply]=\"true\" [linkedCalendars]=\"true\"\n [locale]=\"{ format: 'DD MMM YYYY' }\" />\n </mat-form-field>\n </div>\n\n\n </div>\n </mat-card>\n </form>\n\n <!-- OVERVIEW METRICS -->\n <h2 class=\"section-title\">\n <mat-icon>dashboard</mat-icon>\n Overview Metrics\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">States/Ministries which generated Role Mapping</p>\n <h2>{{this.dashboardData?.ministry_count}}</h2>\n <p class=\"card-subtitle\">At least 1 designation/role mapping</p>\n </div>\n <mat-icon class=\"icon primary\">public</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Departments which generated Role Mapping</p>\n <h2>{{this.dashboardData?.department_count}}</h2>\n <p class=\"card-subtitle\">At least 1 designation/role mapping</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Capacity Building Plans Created</p>\n <h2>{{this.dashboardData?.total_cbp_plan_count}}</h2>\n </div>\n <mat-icon class=\"icon green\">description</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- COMPETENCIES -->\n <h2 class=\"section-title\">\n <mat-icon>psychology</mat-icon>\n Competencies Recommended\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Behavioral Competencies</p>\n <h2>{{this.dashboardData?.behavioral_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon purple\">psychology</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Functional Competencies</p>\n <h2>{{this.dashboardData?.functional_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon teal\">settings</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Domain Competencies</p>\n <h2>{{this.dashboardData?.domain_competencies_count}}</h2>\n </div>\n <mat-icon class=\"icon orange\">tune</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- DOCUMENTS -->\n <h2 class=\"section-title\">\n <mat-icon>menu_book</mat-icon>\n Documents & Course Recommendations\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Documents Uploaded</p>\n <h2>{{this.dashboardData?.total_documents}}</h2>\n <p class=\"card-subtitle\">Min 1, Max 10 per role mapping</p>\n </div>\n <mat-icon class=\"icon amber\">upload_file</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Role Mappings with Course Recommendations</p>\n <h2>{{this.dashboardData?.role_mappings_with_recommendations}}</h2>\n <p class=\"card-subtitle\">8500 of 50,000 role mappings</p>\n </div>\n <mat-icon class=\"icon green\">menu_book</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Course Recommendations Saved</p>\n <h2>{{this.dashboardData?.saved_recommended_courses_count}}</h2>\n <p class=\"card-subtitle\">{{this.dashboardData?.saved_recommended_courses_count}} of 8500\n recommendations</p>\n </div>\n <mat-icon class=\"icon teal\">save</mat-icon>\n </div>\n </mat-card>\n\n </div>\n\n <!-- GAP ANALYSIS -->\n <div class=\"gap-section\">\n <h2 class=\"section-title warning\">\n <mat-icon>warning</mat-icon>\n Gap Analysis\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card warning-bg\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Competencies Without Courses</p>\n <h2>{{this.dashboardData?.competencies_without_courses}}</h2>\n <p class=\"card-subtitle\">Unique competencies with no identified courses</p>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <!-- <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Manually Added Courses</p>\n <h2>-</h2>\n <p class=\"card-subtitle\">Competencies with user-added courses</p>\n </div>\n <mat-icon class=\"icon green\">add_circle</mat-icon>\n </div>\n </mat-card> -->\n\n </div>\n\n <div class=\"card-grid mt-2\">\n\n <mat-card class=\"metric-card warning-bg\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Behavioral Competencies Without Courses</p>\n <h2>{{this.dashboardData?.behavioral_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Functional Competencies Without Courses</p>\n <h2>{{this.dashboardData?.functional_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Domain Competencies Without Courses</p>\n <h2>{{this.dashboardData?.domain_without_courses}}</h2>\n </div>\n <mat-icon class=\"icon red\">cancel</mat-icon>\n </div>\n </mat-card>\n\n </div>\n </div>\n\n <!-- OVERVIEW METRICS -->\n <h2 class=\"section-title\">\n <mat-icon>dashboard</mat-icon>\n Users and Role Mapping Metrics\n </h2>\n\n <div class=\"card-grid\">\n\n <mat-card class=\"metric-card\" *ngIf=\"!isSuperAdmin\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Users (Credentials)</p>\n <h2>{{this.dashboardData?.total_users}}</h2>\n </div>\n <mat-icon class=\"icon primary\">public</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\" *ngIf=\"!isSuperAdmin\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Users with Role Mappings</p>\n <h2>{{this.dashboardData?.users_with_role_mappings}}</h2>\n <p class=\"card-subtitle\">Generated atleast 1 role mapping</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Total Designation/Role Mappings Generated</p>\n <h2>{{this.dashboardData?.total_role_mappings}}</h2>\n </div>\n <mat-icon class=\"icon green\">description</mat-icon>\n </div>\n </mat-card>\n\n <mat-card class=\"metric-card\">\n <div class=\"card-content\">\n <div>\n <p class=\"card-title\">Unique Role Mappings</p>\n <h2>{{this.dashboardData?.unique_role_mappings}}</h2>\n <p class=\"card-subtitle\">10,000 unique of 50,000 total</p>\n </div>\n <mat-icon class=\"icon teal\">apartment</mat-icon>\n </div>\n </mat-card>\n\n </div>\n </div>\n</div>", styles: [".dashboard-wrapper{background:transparent;min-height:100vh;padding:24px 10px;margin:0 30px 0 60px}.dashboard-container{max-width:auto;margin:0 auto}.section-title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:600;color:#000;margin:20px 0}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.metric-card{padding:24px;border-radius:12px;box-shadow:none;border:1px solid #e5e7eb}.card-content{display:flex;justify-content:space-between;align-items:center}.card-title{font-size:14px;color:#6b7280;margin-bottom:6px}.metric-card h2{font-size:28px;font-weight:700;color:#000;margin:0}.card-subtitle{font-size:12px;color:#9ca3af;margin-top:6px}.icon{font-size:28px;width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center}.primary{color:#2563eb}.teal{color:#059669}.green{color:#16a34a}.purple{color:#9333ea}.orange{color:#f97316}.amber{color:#f59e0b}.red,.section-title.warning{color:#dc2626}.warning-card{background:#fdeaea;border:1px solid #f5c2c7}.filters-card{padding:20px 24px;border-radius:12px;border:1px solid #e5e7eb;box-shadow:none}.filters-header{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:16px}.filters-row{display:flex;gap:24px;flex-wrap:wrap}.filters-row mat-form-field{flex:1;min-width:220px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{color:#ccc}:host ::ng-deep .mat-form-field-appearance-outline.mat-focused .mat-form-field-outline-thick{color:#1b4ca1;border-color:#1b4ca1!important}::ng-deep .select-search-panel .mat-option.mat-selected:not(.mat-option-disabled){background-color:#1b4ca1!important;color:#fff!important}:host ::ng-deep .mat-form-field-appearance-outline{border-radius:25px;border:1px solid #ccc}:host ::ng-deep .mat-form-field-focused .mat-form-field-appearance-outline{border-color:#1b4ca1!important}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-start{border-radius:25px 0 0 25px;border:none!important}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-end{border-right:none!important;border:none!important;border-radius:0 25px 25px 0}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline-gap{border:none!important;border-radius:25px}:host::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix{background-color:transparent!important}.dashboard-container .mat-card{background-color:#fff}.gap-title{color:#b91c1c}.gap-section{background-color:#d926621a;padding:10px;border-radius:12px;border:1px solid #f5c2c7;margin:16px 0}.gap-card{background-color:#d926621a;border:1px solid #f8d7da}.gap-card h2{color:#dc2626}@media (max-width: 1200px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.card-grid{grid-template-columns:1fr}}.mat-select-panel .search-wrapper{width:100%!important;box-sizing:border-box;padding:8px;position:sticky;top:0;z-index:2;background:#fff}.search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}.mat-select-panel mat-option{padding-top:10px}::ng-deep .mat-select-panel-wrap{overflow:visible!important;padding:0;margin-top:42px}::ng-deep .mat-select-panel{border:1px solid #ccc!important;box-sizing:border-box;max-height:250px}::ng-deep .select-with-search.mat-select-panel{padding-top:0;overflow:auto}::ng-deep .select-with-search .search-wrapper{position:sticky;top:0;z-index:10;background:#fff;padding:8px;border-bottom:1px solid #e0e0e0}::ng-deep .select-with-search .search-input{width:100%;padding:6px 10px;border:1px solid #ccc;border-radius:6px;outline:none;box-sizing:border-box}::ng-deep .select-with-search mat-option:first-of-type{margin-top:4px}::ng-deep .md-drppicker.ltr{min-width:500px!important}.sub-heading p{color:#000;font-family:Montserrat;font-size:18px;font-style:normal;font-weight:600;line-height:normal}.mb-10{margin-bottom:10px}.cursor-pointer{cursor:pointer}\n"] }]
|
|
264
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.SharedService }, { type: i3.MatSnackBar }, { type: i4.Router }]; } });
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9jb21wb25lbnRzL2Rhc2hib2FyZC9kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBTWxELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFNNUIsTUFBTSxPQUFPLGtCQUFrQjtJQW1DN0IsWUFBb0IsRUFBZSxFQUFVLGFBQTRCLEVBQVUsUUFBcUIsRUFBUyxNQUFjO1FBQTNHLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakMvSCxpQkFBWSxHQUFHLEtBQUssQ0FBQTtRQUNwQixhQUFRLEdBQVE7WUFDZCxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7WUFDeEMsT0FBTyxFQUFFLE1BQU0sRUFBRTtTQUNsQixDQUFDO1FBRUYsbUJBQWMsR0FBRztZQUNmLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzdCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzdCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO1NBQzlCLENBQUM7UUFFRixvQkFBZSxHQUFHO1lBQ2hC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QUNILENBQUMsQ0FBQyxDQUFBO2FBQ0g7aUJBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssT0FBTyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3BCLElBQUksSUFBSSxFQUFFLFNBQVMsS0FBSyxPQUFPLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO3FCQUM3QjtnQkFDSCxDQUFDLENBQUMsQ0FBQTthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFHSixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDOytHQS9RVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxRENaL0IscXhlQWlWTTs7NEZEclVPLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGFzaGJvYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHVzZXJQcm9maWxlOiBhbnlcbiAgaXNTdXBlckFkbWluID0gZmFsc2VcbiAgc2VsZWN0ZWQ6IGFueSA9IHtcbiAgICBzdGFydERhdGU6IG1vbWVudCgpLnN1YnRyYWN0KDMsICdtb250aCcpLFxuICAgIGVuZERhdGU6IG1vbWVudCgpXG4gIH07XG4gIGZpbHRlcnNGb3JtITogRm9ybUdyb3VwO1xuICBtaW5pc3RyaWVzTGlzdCA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAnTWluaXN0cnkgQScgfSxcbiAgICB7IGlkOiAyLCBuYW1lOiAnTWluaXN0cnkgQicgfSxcbiAgICB7IGlkOiAzLCBuYW1lOiAnTWluaXN0cnkgQycgfVxuICBdO1xuXG4gIGRlcGFydG1lbnRzTGlzdCA9IFtcbiAgICB7IGlkOiAxLCBuYW1lOiAnRGVwdCBYJyB9LFxuICAgIHsgaWQ6IDIsIG5hbWU6ICdEZXB0IFknIH0sXG4gICAgeyBpZDogMywgbmFtZTogJ0RlcHQgWicgfVxuICBdO1xuICBzZWxlY3RlZE1pbmlzdHJ5VHlwZSA9ICdtaW5pc3RyeSdcbiAgc2VsZWN0ZWRNaW5pc3RyeUlkID0gJydcbiAgcGFuZWxPcGVuID0gZmFsc2U7XG4gIGRlcGFydG1lbnRQYW5lbE9wZW4gPSBmYWxzZVxuICBmaWx0ZXJlZExpc3QgPSBbXTtcbiAgZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IFtdO1xuICBtaW5pc3RyeURhdGE6IGFueSA9IFtdXG4gIG1pbmlzdHJ5RnVsbERhdGE6IGFueSA9IFtdXG4gIGRlcGFydG1lbnREYXRhID0gW11cbiAgc2VsZWN0ZWRNaW5pc3RyeU9iaiA9IHt9XG4gIGFwaUxvYWRpbmcgPSBmYWxzZVxuICBsb2dpblVzZXJPcmdJZHMgPSBbXVxuICBkYXNoYm9hcmREYXRhOiBhbnlcbiAgZ2FwQW5hbHlzaXNEYXRhOiBhbnlcbiAgZGFzaGJvYXJkUmVzcG9uc2VPYmogPSB7fVxuICBjYnBGaW5hbE9iajogYW55ID0ge31cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZSwgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsIHB1YmxpYyByb3V0ZXI6IFJvdXRlcikgeyB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXNlclByb2ZpbGUgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2VyUHJvZmlsZScpIHx8ICd7fScpO1xuICAgIHRoaXMuaXNTdXBlckFkbWluID0gdGhpcy51c2VyUHJvZmlsZT8ucm9sZV9pbmZvPy5yb2xlX25hbWUgPT09ICdTdXBlciBBZG1pbidcbiAgICAgICYmIHRoaXMudXNlclByb2ZpbGU/LnJvbGVfaW5mbz8uaXNfYWN0aXZlO1xuICAgIHRoaXMubG9naW5Vc2VyT3JnSWRzID0gdGhpcy51c2VyUHJvZmlsZT8ub3JnYW5pemF0aW9uX2lkc1xuXG4gICAgdGhpcy5jYnBGaW5hbE9iaiA9IHRoaXMuc2hhcmVkU2VydmljZS5nZXRDQlBQbGFuTG9jYWxTdG9yYWdlKClcbiAgICBjb25zb2xlLmxvZygndGhpcy5jYnBGaW5hbE9iai0tJywgdGhpcy5jYnBGaW5hbE9iailcblxuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZm9ybSB3aXRob3V0IGRpc2FibGluZyBhbnl0aGluZ1xuICAgIHRoaXMuZmlsdGVyc0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGNlbnRyZVN0YXRlOiBbJyddLFxuICAgICAgbWluaXN0cmllczogW1tdXSxcbiAgICAgIGRlcGFydG1lbnRzOiBbW11dLFxuICAgICAgZGF0ZVJhbmdlOiBbeyBzdGFydERhdGU6IG1vbWVudCgpLnN1YnRyYWN0KDMsICdtb250aCcpLCBlbmREYXRlOiBtb21lbnQoKSB9XVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY2JwRmluYWxPYmopIHtcbiAgICAgIGxldCBldmVudCA9IHt2YWx1ZTp0aGlzLmNicEZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlfVxuICAgICAgbGV0IG1pbmlzdHJ5RXZlbnQgPSB7dmFsdWU6IHRoaXMuY2JwRmluYWxPYmo/Lm1pbmlzdHJ5Py5pZGVudGlmaWVyfVxuXG4gICAgICB0aGlzLm9uTWluaXN0cnlUeXBlQ2hhbmdlKGV2ZW50KVxuICAgICAgdGhpcy5vbk1pbmlzdHJ5Q2hhbmdlKG1pbmlzdHJ5RXZlbnQpXG4gICAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgIHRoaXMuZmlsdGVyc0Zvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgIGNlbnRyZVN0YXRlOiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlLFxuICAgICAgICBtaW5pc3RyaWVzOiBbdGhpcy5jYnBGaW5hbE9iaj8ubWluaXN0cnk/LmlkZW50aWZpZXJdLFxuICAgICAgICBkZXBhcnRtZW50czogW3RoaXMuY2JwRmluYWxPYmo/LmRlcGFydG1lbnRzXVxuICAgICAgfSk7XG4gICAgICB9LDEwMDApXG4gICAgICBcbiAgICAgIFxuICAgIH1cblxuICAgIC8vIER5bmFtaWNhbGx5IGVuYWJsZSBjb250cm9scyBpZiBzdXBlciBhZG1pblxuICAgIGlmICh0aGlzLmlzU3VwZXJBZG1pbikge1xuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5nZXQoJ2NlbnRyZVN0YXRlJyk/LmVuYWJsZSgpO1xuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5nZXQoJ21pbmlzdHJpZXMnKT8uZW5hYmxlKCk7XG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmdldCgnZGVwYXJ0bWVudHMnKT8uZW5hYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9wdGlvbmFsbHkgZGlzYWJsZSBmb3Igbm9uLXN1cGVyLWFkbWluXG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLmdldCgnY2VudHJlU3RhdGUnKT8uZGlzYWJsZSgpO1xuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5nZXQoJ21pbmlzdHJpZXMnKT8uZGlzYWJsZSgpO1xuICAgICAgdGhpcy5maWx0ZXJzRm9ybS5nZXQoJ2RlcGFydG1lbnRzJyk/LmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyIEFQSSBjYWxsIG9uIGZpbHRlciBjaGFuZ2VcbiAgICB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIHRoaXMuZ2V0RGFzaGJvYXJkRGF0YSh2YWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGFzaGJvYXJkRGF0YSh2YWwpIHtcblxuICAgIGNvbnNvbGUubG9nKCd2YWwnLCB2YWwpXG4gICAgbGV0IGRhdGVSYW5nZVBheWxvYWQgPSBudWxsO1xuICAgIGlmICh2YWwuZGF0ZVJhbmdlICYmIHZhbC5kYXRlUmFuZ2Uuc3RhcnREYXRlICYmIHZhbC5kYXRlUmFuZ2UuZW5kRGF0ZSkge1xuICAgICAgZGF0ZVJhbmdlUGF5bG9hZCA9IHtcbiAgICAgICAgZnJvbTogbW9tZW50KHZhbC5kYXRlUmFuZ2Uuc3RhcnREYXRlKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICAgICAgdG86IG1vbWVudCh2YWwuZGF0ZVJhbmdlLmVuZERhdGUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICB9O1xuICAgIH1cbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIG1pbmlzdHJpZXM6IHZhbD8ubWluaXN0cmllcyxcbiAgICAgIGRhdGVfcmFuZ2U6IGRhdGVSYW5nZVBheWxvYWRcblxuICAgIH1cbiAgICBpZiAodmFsPy5kZXBhcnRtZW50cz8ubGVuZ3RoKSB7XG4gICAgICBwYXlsb2FkWydkZXBhcnRtZW50cyddID0gdmFsPy5kZXBhcnRtZW50c1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1N1cGVyQWRtaW4pIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGF0YSA9IHt9O1xuXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGFzaGJvYXJkQWRtaW4ocGF5bG9hZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlcyBmcm9tIGFkbWluJywgcmVzKTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhc2hib2FyZERhdGEsIHJlcyk7IC8vIG1lcmdlIGRhdGFcbiAgICAgICAgY29uc29sZS5sb2coJ3RoaXMuZGFzaGJvYXJkRGF0YSBhZnRlciBhZG1pbicsIHRoaXMuZGFzaGJvYXJkRGF0YSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldERhc2hib2FyZEdhcEFuYWx5c2lzQWRtaW4ocGF5bG9hZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlcyBmcm9tIGdhcCBhbmFseXNpcycsIHJlcyk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXNoYm9hcmREYXRhLCByZXMpOyAvLyBtZXJnZSBkYXRhXG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmRhc2hib2FyZERhdGEgYWZ0ZXIgZ2FwIGFuYWx5c2lzJywgdGhpcy5kYXNoYm9hcmREYXRhKTtcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGF0YSA9IHt9O1xuXG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGFzaGJvYXJkUHVibGljKHBheWxvYWQpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXNoYm9hcmREYXRhLCByZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXREYXNoYm9hcmRHYXBBbmFseXNpc1B1YmxpYyhwYXlsb2FkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGFzaGJvYXJkRGF0YSwgcmVzKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXNoYm9hcmREYXRhJywgdGhpcy5kYXNoYm9hcmREYXRhKVxuICB9XG4gIG9uT3BlbmVkKG9wZW5lZDogYm9vbGVhbikge1xuICAgIHRoaXMucGFuZWxPcGVuID0gb3BlbmVkO1xuICB9XG5cbiAgb25PcGVuZWREZXBhcnRtZW50KG9wZW5lZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGVwYXJ0bWVudFBhbmVsT3BlbiA9IG9wZW5lZFxuICB9XG5cbiAgZmlsdGVyRGF0YShldmVudCkge1xuICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LnZhbHVlKSB7XG4gICAgICBjb25zdCBzID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gdGhpcy5taW5pc3RyeURhdGEuZmlsdGVyKHggPT5cbiAgICAgICAgeC5vcmdOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRMaXN0ID0gdGhpcy5taW5pc3RyeURhdGFcbiAgICB9XG5cbiAgfVxuXG4gIGZpbHRlckRlcGFydG1lbnREYXRhKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQudmFsdWUpIHtcbiAgICAgIGNvbnN0IHMgPSBldmVudC50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgdGhpcy5maWx0ZXJlZERlcGFydG1lbnRMaXN0ID0gdGhpcy5kZXBhcnRtZW50RGF0YS5maWx0ZXIoeCA9PlxuICAgICAgICB4Lm9yZ05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJlZERlcGFydG1lbnRMaXN0ID0gdGhpcy5kZXBhcnRtZW50RGF0YVxuICAgIH1cblxuICB9XG5cbiAgb25NaW5pc3RyeUNoYW5nZShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRNaW5pc3RyeUlkID0gZXZlbnQudmFsdWU7XG4gICAgY29uc29sZS5sb2coJ1NlbGVjdGVkIE1pbmlzdHJ5IElEOicsIHNlbGVjdGVkTWluaXN0cnlJZCk7XG4gICAgdGhpcy5kZXBhcnRtZW50RGF0YSA9IFtdXG4gICAgLy8gWW91IGNhbiBhY2Nlc3MgdGhlIHNlbGVjdGVkIG9iamVjdCBpZiBuZWVkZWRcbiAgICBjb25zdCBzZWxlY3RlZE1pbmlzdHJ5ID0gdGhpcy5taW5pc3RyeURhdGEuZmluZChpdGVtID0+IGl0ZW0uaWRlbnRpZmllciA9PT0gc2VsZWN0ZWRNaW5pc3RyeUlkKTtcbiAgICB0aGlzLnNlbGVjdGVkTWluaXN0cnlPYmogPSBzZWxlY3RlZE1pbmlzdHJ5XG4gICAgaWYgKHNlbGVjdGVkTWluaXN0cnlJZCAmJiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0RGVwYXJ0bWVudExpc3Qoc2VsZWN0ZWRNaW5pc3RyeUlkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmRlcGFydG1lbnREYXRhID0gcmVzXG4gICAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHJlc1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKHNlbGVjdGVkTWluaXN0cnlJZCAmJiB0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnbWluaXN0cnknKSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0Q2VudGVyQmFzZWREZXBhcnRtZW50KHNlbGVjdGVkTWluaXN0cnlJZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5kZXBhcnRtZW50RGF0YSA9IHJlc1xuICAgICAgICAgIHRoaXMuZmlsdGVyZWREZXBhcnRtZW50TGlzdCA9IHJlc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignTm8gRGVwYXJ0bWVudCBGb3VuZCBmb3IgU2VsZWN0ZWQgTWluaXN0cnknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBvbkRlcGFydG1lbnRDaGFuZ2UoKSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB0aGlzLmZpbHRlcnNGb3JtLnZhbHVlO1xuICAgIGNvbnN0IHNlbGVjdGVkTWluaXN0cnkgPSB0aGlzLm1pbmlzdHJ5RGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZGVudGlmaWVyID09PSBmb3JtRGF0YS5taW5pc3RyeSk7XG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9ialsnbWluaXN0cnknXSA9IHNlbGVjdGVkTWluaXN0cnlcbiAgICBjb25zdCBkZXBhcnRtZW50TmFtZSA9IHRoaXMuZGVwYXJ0bWVudERhdGEuZmluZCh1ID0+IHUuaWRlbnRpZmllciA9PT0gZm9ybURhdGEuZGVwYXJ0bWVudHMpO1xuICAgIHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmpbJ2RlcGFydG1lbnRfbmFtZSddID0gZGVwYXJ0bWVudE5hbWU/Lm9yZ05hbWVcbiAgfVxuXG4gIGFzeW5jIG9uTWluaXN0cnlUeXBlQ2hhbmdlKGV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coJ2V2ZW50JywgZXZlbnQpXG4gICAgdGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9IGV2ZW50LnZhbHVlXG4gICAgYXdhaXQgdGhpcy5nZXRNaW5pc3RyeURhdGEoKVxuICAgIHRoaXMubWluaXN0cnlEYXRhID0gW11cbiAgICBpZiAoZXZlbnQ/LnZhbHVlID09PSAnc3RhdGUnKSB7XG4gICAgICB0aGlzLmZpbHRlcnNGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjZW50cmVTdGF0ZTogdGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSxcbiAgICAgICAgbWluaXN0cmllczogW10sXG4gICAgICAgIGRlcGFydG1lbnRzOiBbXVxuICAgICAgfSk7XG4gICAgICB0aGlzLm1pbmlzdHJ5RnVsbERhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbT8udHlwZSA9PT0gJ3N0YXRlJykge1xuICAgICAgICAgIHRoaXMubWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50Py52YWx1ZSA9PT0gJ21pbmlzdHJ5Jykge1xuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0/LnR5cGUgPT09ICdjZW50cmFsJykge1xuICAgICAgICAgIHRoaXMubWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIFxuICAgIH1cbiAgICB0aGlzLmZpbHRlcnNGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjZW50cmVTdGF0ZTogdGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSxcbiAgICAgICAgbWluaXN0cmllczogW10sXG4gICAgICAgIGRlcGFydG1lbnRzOiBbXVxuICAgICAgfSk7XG4gIH1cblxuICBnZXRNaW5pc3RyeURhdGEoKSB7XG4gICAgdGhpcy5hcGlMb2FkaW5nID0gdHJ1ZVxuICAgIHRoaXMuc2hhcmVkU2VydmljZS5nZXRNaW5pc3RyeURhdGEodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSkuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdkYXRhLS0nLCBkYXRhKVxuICAgICAgdGhpcy5taW5pc3RyeUZ1bGxEYXRhID0gZGF0YVxuICAgICAgdGhpcy5hcGlMb2FkaW5nID0gZmFsc2VcbiAgICAgIHRoaXMubWluaXN0cnlEYXRhID0gW11cbiAgICAgIGxldCBmaWx0ZXJlZE1pbmlzdHJ5RGF0YSA9IFtdXG4gICAgICB0aGlzLm1pbmlzdHJ5RnVsbERhdGEubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxvZ2luVXNlck9yZ0lkcy5pbmRleE9mKGl0ZW0/LmlkZW50aWZpZXIpID4gLTEpIHtcbiAgICAgICAgICBmaWx0ZXJlZE1pbmlzdHJ5RGF0YS5wdXNoKGl0ZW0pXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWx0ZXJlZExpc3QgPSBmaWx0ZXJlZE1pbmlzdHJ5RGF0YTtcbiAgICAgIH0pXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ21pbmlzdHJ5Jykge1xuICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbT8uc2JPcmdUeXBlID09PSAnbWluaXN0cnknKSB7XG4gICAgICAgICAgICB0aGlzLm1pbmlzdHJ5RGF0YS5wdXNoKGl0ZW0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkTWluaXN0cnlUeXBlID09PSAnc3RhdGUnKSB7XG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtPy5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgICAgICAgIHRoaXMubWluaXN0cnlEYXRhLnB1c2goaXRlbSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxuXG4gIH1cblxuICByb3V0ZVRvSW5pdGlhbCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9haS9pbml0aWFsJ10pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZyBtdC0xMCBtYi0xMCBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgPHAgKGNsaWNrKT1cInJvdXRlVG9Jbml0aWFsKClcIj48bWF0LWljb24gc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1wiPmFycm93X2JhY2s8L21hdC1pY29uPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGwtMTBcIj5CYWNrIHRvIFJvbGUgTWFwcGluZyBHZW5lcmF0aW9uPC9zcGFuPjwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWNvbnRhaW5lclwiPlxuXG4gICAgICAgIDwhLS0gRklMVEVSUyBTRUNUSU9OIC0tPlxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlcnNGb3JtXCIgY2xhc3M9XCJmaWx0ZXJzLWZvcm1cIj5cblxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwiZmlsdGVycy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlcnMtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5maWx0ZXJfbGlzdDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkZpbHRlcnM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5DZW50cmUgLyBTdGF0ZSA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDZW50cmUgLyBTdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogMjVweDsgcGFkZGluZzogMCAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjO3dpZHRoOiAxMDAlO1wiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY2VudHJlU3RhdGVcIiBbZGlzYWJsZWRdPVwiIWlzU3VwZXJBZG1pblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25NaW5pc3RyeVR5cGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBDZW50ZXIvU3RhdGU8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwibWluaXN0cnlcIj5DZW50ZXI8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwic3RhdGVcIj5TdGF0ZTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5NaW5pc3RyeSA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDZW50cmUgLyBTdGF0ZSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiB3aGl0ZTsgYm9yZGVyLXJhZGl1czogMjVweDsgcGFkZGluZzogMCAxMnB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjO3dpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBhbmVsQ2xhc3M9XCJzZWxlY3Qtd2l0aC1zZWFyY2hcIiBbZGlzYWJsZWRdPVwiIWlzU3VwZXJBZG1pblwiIG11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZE1pbmlzdHJ5VHlwZSA9PT0gJ21pbmlzdHJ5JyA/ICdTZWxlY3QgTWluaXN0cnkvIERlcGFydG1lbnQnOidTZWxlY3QgU3RhdGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbk1pbmlzdHJ5Q2hhbmdlKCRldmVudClcIiBmb3JtQ29udHJvbE5hbWU9XCJtaW5pc3RyaWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBiYWNrZ3JvdW5kOiB3aGl0ZTsgd2lkdGg6MTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuZWRDaGFuZ2UpPVwib25PcGVuZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiAqbmdJZj1cInBhbmVsT3BlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAoaW5wdXQpPVwiZmlsdGVyRGF0YSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbT8uaWRlbnRpZmllclwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpbHRlcmVkTGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRNaW5pc3RyeUlkID09PSBpdGVtPy5pZGVudGlmaWVyXCI+e3tpdGVtPy5vcmdOYW1lfX08L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RGVwYXJ0bWVudDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENlbnRyZSAvIFN0YXRlIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJhY2tncm91bmQ6IHdoaXRlOyBib3JkZXItcmFkaXVzOiAyNXB4OyBwYWRkaW5nOiAwIDEycHg7Ym9yZGVyOiAxcHggc29saWQgI2NjYztcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBwYW5lbENsYXNzPVwic2VsZWN0LXdpdGgtc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3QgRGVwYXJ0bWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNTdXBlckFkbWluXCIgbXVsdGlwbGUgZm9ybUNvbnRyb2xOYW1lPVwiZGVwYXJ0bWVudHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJhY2tncm91bmQ6IHdoaXRlO1wiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25EZXBhcnRtZW50Q2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkQ2hhbmdlKT1cIm9uT3BlbmVkRGVwYXJ0bWVudCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtd3JhcHBlclwiICpuZ0lmPVwiZGVwYXJ0bWVudFBhbmVsT3BlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiAoaW5wdXQpPVwiZmlsdGVyRGVwYXJ0bWVudERhdGEoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0/LmlkZW50aWZpZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsdGVyZWREZXBhcnRtZW50TGlzdFwiPnt7aXRlbT8ub3JnTmFtZX19PC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIFJhbmdlIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkRhdGUgUmFuZ2UgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IG5neERhdGVyYW5nZXBpY2tlck1kIGZvcm1Db250cm9sTmFtZT1cImRhdGVSYW5nZVwiIHN0eWxlPVwibWFyZ2luOjEwcHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBkYXRlIHJhbmdlXCIgW2F1dG9BcHBseV09XCJ0cnVlXCIgW2xpbmtlZENhbGVuZGFyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvY2FsZV09XCJ7IGZvcm1hdDogJ0REIE1NTSBZWVlZJyB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvZm9ybT5cblxuICAgICAgICA8IS0tIE9WRVJWSUVXIE1FVFJJQ1MgLS0+XG4gICAgICAgIDxoMiBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5kYXNoYm9hcmQ8L21hdC1pY29uPlxuICAgICAgICAgICAgT3ZlcnZpZXcgTWV0cmljc1xuICAgICAgICA8L2gyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWRcIj5cblxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtdGl0bGVcIj5TdGF0ZXMvTWluaXN0cmllcyB3aGljaCBnZW5lcmF0ZWQgUm9sZSBNYXBwaW5nPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy5taW5pc3RyeV9jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZVwiPkF0IGxlYXN0IDEgZGVzaWduYXRpb24vcm9sZSBtYXBwaW5nPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBwcmltYXJ5XCI+cHVibGljPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+RGVwYXJ0bWVudHMgd2hpY2ggZ2VuZXJhdGVkIFJvbGUgTWFwcGluZzwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8uZGVwYXJ0bWVudF9jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZVwiPkF0IGxlYXN0IDEgZGVzaWduYXRpb24vcm9sZSBtYXBwaW5nPC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiB0ZWFsXCI+YXBhcnRtZW50PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VG90YWwgQ2FwYWNpdHkgQnVpbGRpbmcgUGxhbnMgQ3JlYXRlZDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8udG90YWxfY2JwX3BsYW5fY291bnR9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGdyZWVuXCI+ZGVzY3JpcHRpb248L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENPTVBFVEVOQ0lFUyAtLT5cbiAgICAgICAgPGgyIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uPnBzeWNob2xvZ3k8L21hdC1pY29uPlxuICAgICAgICAgICAgQ29tcGV0ZW5jaWVzIFJlY29tbWVuZGVkXG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZ3JpZFwiPlxuXG4gICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy5iZWhhdmlvcmFsX2NvbXBldGVuY2llc19jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gcHVycGxlXCI+cHN5Y2hvbG9neTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy5mdW5jdGlvbmFsX2NvbXBldGVuY2llc19jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gdGVhbFwiPnNldHRpbmdzPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+RG9tYWluIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8uZG9tYWluX2NvbXBldGVuY2llc19jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gb3JhbmdlXCI+dHVuZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gRE9DVU1FTlRTIC0tPlxuICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+bWVudV9ib29rPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIERvY3VtZW50cyAmIENvdXJzZSBSZWNvbW1lbmRhdGlvbnNcbiAgICAgICAgPC9oMj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ncmlkXCI+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VG90YWwgRG9jdW1lbnRzIFVwbG9hZGVkPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy50b3RhbF9kb2N1bWVudHN9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtc3VidGl0bGVcIj5NaW4gMSwgTWF4IDEwIHBlciByb2xlIG1hcHBpbmc8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGFtYmVyXCI+dXBsb2FkX2ZpbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWV0cmljLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtdGl0bGVcIj5Sb2xlIE1hcHBpbmdzIHdpdGggQ291cnNlIFJlY29tbWVuZGF0aW9uczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8ucm9sZV9tYXBwaW5nc193aXRoX3JlY29tbWVuZGF0aW9uc319PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZVwiPjg1MDAgb2YgNTAsMDAwIHJvbGUgbWFwcGluZ3M8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGdyZWVuXCI+bWVudV9ib29rPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+Q291cnNlIFJlY29tbWVuZGF0aW9ucyBTYXZlZDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8uc2F2ZWRfcmVjb21tZW5kZWRfY291cnNlc19jb3VudH19PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZVwiPnt7dGhpcy5kYXNoYm9hcmREYXRhPy5zYXZlZF9yZWNvbW1lbmRlZF9jb3Vyc2VzX2NvdW50fX0gb2YgODUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGF0aW9uczwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gdGVhbFwiPnNhdmU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEdBUCBBTkFMWVNJUyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdhcC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlIHdhcm5pbmdcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+d2FybmluZzwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgR2FwIEFuYWx5c2lzXG4gICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ncmlkXCI+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZCB3YXJuaW5nLWJnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+Q29tcGV0ZW5jaWVzIFdpdGhvdXQgQ291cnNlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+e3t0aGlzLmRhc2hib2FyZERhdGE/LmNvbXBldGVuY2llc193aXRob3V0X2NvdXJzZXN9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXN1YnRpdGxlXCI+VW5pcXVlIGNvbXBldGVuY2llcyB3aXRoIG5vIGlkZW50aWZpZWQgY291cnNlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiByZWRcIj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgICAgICAgICAgPCEtLSA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPk1hbnVhbGx5IEFkZGVkIENvdXJzZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPi08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC1zdWJ0aXRsZVwiPkNvbXBldGVuY2llcyB3aXRoIHVzZXItYWRkZWQgY291cnNlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBncmVlblwiPmFkZF9jaXJjbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkPiAtLT5cblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWQgbXQtMlwiPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWV0cmljLWNhcmQgd2FybmluZy1iZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzIFdpdGhvdXQgQ291cnNlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+e3t0aGlzLmRhc2hib2FyZERhdGE/LmJlaGF2aW9yYWxfd2l0aG91dF9jb3Vyc2VzfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIHJlZFwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzIFdpdGhvdXQgQ291cnNlczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDI+e3t0aGlzLmRhc2hib2FyZERhdGE/LmZ1bmN0aW9uYWxfd2l0aG91dF9jb3Vyc2VzfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIHJlZFwiPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPkRvbWFpbiBDb21wZXRlbmNpZXMgV2l0aG91dCBDb3Vyc2VzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8uZG9tYWluX3dpdGhvdXRfY291cnNlc319PC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiByZWRcIj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBPVkVSVklFVyBNRVRSSUNTIC0tPlxuICAgICAgICA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+ZGFzaGJvYXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIFVzZXJzIGFuZCBSb2xlIE1hcHBpbmcgTWV0cmljc1xuICAgICAgICA8L2gyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWdyaWRcIj5cblxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWV0cmljLWNhcmRcIiAqbmdJZj1cIiFpc1N1cGVyQWRtaW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtdGl0bGVcIj5VbmlxdWUgVXNlcnMgKENyZWRlbnRpYWxzKTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj57e3RoaXMuZGFzaGJvYXJkRGF0YT8udG90YWxfdXNlcnN9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIHByaW1hcnlcIj5wdWJsaWM8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibWV0cmljLWNhcmRcIiAqbmdJZj1cIiFpc1N1cGVyQWRtaW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtdGl0bGVcIj5VbmlxdWUgVXNlcnMgd2l0aCBSb2xlIE1hcHBpbmdzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy51c2Vyc193aXRoX3JvbGVfbWFwcGluZ3N9fTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImNhcmQtc3VidGl0bGVcIj5HZW5lcmF0ZWQgYXRsZWFzdCAxIHJvbGUgbWFwcGluZzwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gdGVhbFwiPmFwYXJ0bWVudDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1jYXJkPlxuXG4gICAgICAgICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtZXRyaWMtY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10aXRsZVwiPlRvdGFsIERlc2lnbmF0aW9uL1JvbGUgTWFwcGluZ3MgR2VuZXJhdGVkPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPnt7dGhpcy5kYXNoYm9hcmREYXRhPy50b3RhbF9yb2xlX21hcHBpbmdzfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbiBncmVlblwiPmRlc2NyaXB0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG5cbiAgICAgICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm1ldHJpYy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlXCI+VW5pcXVlIFJvbGUgTWFwcGluZ3M8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDI+e3t0aGlzLmRhc2hib2FyZERhdGE/LnVuaXF1ZV9yb2xlX21hcHBpbmdzfX08L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXN1YnRpdGxlXCI+MTAsMDAwIHVuaXF1ZSBvZiA1MCwwMDAgdG90YWw8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIHRlYWxcIj5hcGFydG1lbnQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
2
|
+
import { Component, Inject } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/dialog";
|
|
5
|
+
import * as i2 from "../../modules/shared/services/shared.service";
|
|
6
|
+
import * as i3 from "@angular/material/snack-bar";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "@angular/material/icon";
|
|
9
|
+
import * as i6 from "@angular/material/progress-spinner";
|
|
10
|
+
export class DeleteRoleMappingComponent {
|
|
11
|
+
constructor(dialogRef, data, sharedService, snackBar) {
|
|
12
|
+
this.dialogRef = dialogRef;
|
|
13
|
+
this.data = data;
|
|
14
|
+
this.sharedService = sharedService;
|
|
15
|
+
this.snackBar = snackBar;
|
|
16
|
+
this.loading = false;
|
|
17
|
+
this.planData = data;
|
|
18
|
+
}
|
|
19
|
+
deleteRoleMapping() {
|
|
20
|
+
// this.sharedService.deleteRoleMapping(this.planData.id).subscribe(()=>{
|
|
21
|
+
// this.dialogRef.close('saved')
|
|
22
|
+
// })
|
|
23
|
+
this.sharedService.deleteRoleMapping(this.planData.id).subscribe({
|
|
24
|
+
next: () => {
|
|
25
|
+
this.dialogRef.close('saved');
|
|
26
|
+
this.snackBar.open('Role Mapping Deleted successfully', 'X', {
|
|
27
|
+
duration: 3000,
|
|
28
|
+
panelClass: ['snackbar-success']
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
error: (error) => {
|
|
32
|
+
this.dialogRef.close();
|
|
33
|
+
this.snackBar.open(error?.error?.detail, 'X', {
|
|
34
|
+
duration: 3000,
|
|
35
|
+
panelClass: ['snackbar-error']
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
cancel() {
|
|
41
|
+
this.dialogRef.close();
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DeleteRoleMappingComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.SharedService }, { token: i3.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DeleteRoleMappingComponent, selector: "app-delete-role-mapping", ngImport: i0, template: "<div class=\"view-cbp-plan\">\n <div class=\"popup-container\">\n <div class=\"popup-header\">\n <div>\n <div class=\"heading\">Delete Role Mapping</div>\n </div>\n <div class=\"cursor-pointer\" (click)=\"cancel()\">\n <mat-icon>close</mat-icon>\n </div>\n </div>\n <div class=\"section-container mt-4\">\n <div class=\"progress-icon\">\n <img src=\"assets/icons/info.svg\" style=\"scale: 2;margin: 10px;\">\n </div>\n <div class=\"heading\">\n <div>Delete Role Mapping</div>\n </div>\n <div class=\"\">\n <div>Are You Sure to Delete Selected Role Mapping</div>\n </div>\n\n </div>\n <div class=\"popup-footer mt-4\">\n <div>\n <input class=\"btn-active\" type=\"button\" value=\"No\" (click)=\"cancel()\" />\n </div>\n <div>\n <input class=\"btn-active\" type=\"button\" value=\"Yes\" (click)=\"deleteRoleMapping()\" />\n </div>\n </div>\n </div>\n</div>\n<div class=\"overlay-loader\" *ngIf=\"loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n</div>", styles: [".container{margin:10px auto}.sub-heading p{color:#000;font-family:Montserrat;font-size:16px;font-style:normal;font-weight:600;line-height:normal}.radio-label{color:#000;font-family:Lato;font-size:16px;font-style:normal;font-weight:400;line-height:normal}.radio-btn-group{display:flex;width:32px;height:32px;padding:2px;gap:10px}.label{color:var(--Body-Text-Body-Color, #212529);font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:150%}::ng-deep mat-form-field{background-color:#fff!important;border-radius:25px!important;padding-left:12px;padding-right:12px;height:42px;width:100%}::ng-deep mat-select{border-radius:25px!important;background-color:#fff!important}::ng-deep .mat-select-panel{background-color:#fff!important}::ng-deep .mat-select-panel .mat-option{border-radius:0!important}::ng-deep mat-form-field .mat-form-field-underline{display:none!important}::ng-deep mat-select .mat-select-placeholder{color:#0006;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}::ng-deep mat-select .mat-select-value-text{color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;line-height:normal!important;padding-top:0!important;padding-bottom:0!important}::ng-deep mat-select .mat-select-value{display:flex!important;align-items:center!important;height:100%!important}.additional-details textarea{display:flex;padding:16px 16px 0;flex-direction:column;align-items:flex-start;gap:10px;flex:1 0 0;align-self:stretch;width:100%;color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;resize:none}.section-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.btn-disable{border-radius:var(--Radius-Full-Round, 9999999px);opacity:.4;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:32px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100px}.btn-group{display:flex;flex-direction:row;justify-content:space-between}.pl-2{padding-left:5px}.search-filter-section{display:flex;flex-direction:row;justify-content:space-between}.search .rsearch{position:relative}.search .search-icon{position:absolute;top:15px;font-size:20px;left:10px}.search .sinput{border-radius:32px;border:1px solid #d5d0d0;padding:15px 36px;font:400 14px Lato;width:800px}.select-map-route-container{display:flex;flex-direction:row}.selected-mapping-route p{color:#1b4ca1;font-family:Lato;font-size:20px;font-style:normal;font-weight:400;line-height:normal;text-decoration-line:underline;text-decoration-style:solid;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.edit-plan{display:flex;padding:4px;justify-content:center;align-items:center;gap:8px;border-radius:4px;background:#1b4ca129;color:#1b4ca1;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;margin-left:10px}.search-container{display:flex;flex-direction:row}.course-container{display:flex;width:100%;padding:16px;flex-direction:column;align-items:flex-start;gap:24px;grid-row:2/span 1;grid-column:1/span 1;border-radius:12px;border:1px solid var(--borders-black-border-16-black, rgba(0, 0, 0, .16));background:#fff}.course-header{display:flex;flex-direction:row;justify-content:space-between;width:100%}.course-pill{display:flex;height:24px;padding:8px;align-items:center;gap:4px;border-radius:16px;border:1px solid var(--borders-border-fill-focussed-4-light-100, #EF951E);background:#fefaf4}.ai-recommened-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #1B4CA1;background:#1b4ca129}.igot-platform-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #EF951E;background:#ef951e29}.course-title{color:var(--Primary-KB-Primary-Light, #1B4CA1);font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:30px}.course-desc{color:#0009;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.relevancy,.competencies-matched{color:var(--accessbility-shades-with-opacity-kb-greys-black-60, rgba(0, 0, 0, .6));font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;align-items:center}.percentage{color:#1d8923;font-family:Lato;font-size:14px;font-style:normal;font-weight:800;line-height:normal}.relevancy-container,.competencies-matched-container{display:flex;flex-direction:row;align-items:center}.dash{padding:0 5px}::ng-deep .mat-radio-checked .mat-radio-inner-circle{background:#1b4ca1!important}.course-list-container{display:flex;flex-wrap:wrap;gap:16px}.course-list-item{flex:0 0 48%;box-sizing:border-box;border:1px solid #ccc;padding:16px;background-color:#fff;border-radius:8px}.checked-course-container{display:flex}.ml-2{margin-left:8px}::ng-deep .mat-checkbox-checked .mat-checkbox-background{background:#1b4ca1!important}.ai-recommened-pill-text,.igot-platform-pill-text{color:#1b4ca1;font-family:Lato;font-size:12px;font-style:normal;font-weight:700;line-height:normal}.course-pill-text{color:var(--accessbility-shades-without-opacity-kb-greys-black-87, #212121);text-align:center;font-family:Poppins;font-size:12px;font-style:normal;font-weight:400;line-height:normal}.ai-loader-icon img,.igot-platform-icon img{width:15.714px;height:15.714px;flex-shrink:0}.competency-container{display:flex;justify-content:space-between;flex-direction:row}.outside-layer-total{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #1B4CA1;background:#edf1f8;width:132px}.outside-layer-functional{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #E24577;background:#f8d2de;width:132px}.outside-layer-domain{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #7B47A4;background:#dfd3e9;width:132px}.outside-layer-behavioral{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #F8B861;background:#fde8cc;width:132px}.inside-layer{color:#1b4ca1;font-family:Lato;font-size:12px;font-style:normal;font-weight:400;line-height:normal}.count{color:#1b4ca1;font-family:Montserrat;font-size:16px;font-style:normal;font-weight:600;line-height:normal}.suggest-courses-header{display:flex;flex-direction:row;justify-content:space-between}.suggest-course-control{display:flex;flex-direction:row}.course-card-container{width:172px;border-radius:3.307px;border:.827px solid var(--borders-border-8-black, rgba(0, 0, 0, .08));background-color:#fff}.highlight-ai{font-family:Montserrat;font-size:24px;font-style:normal;font-weight:600;line-height:normal;background:linear-gradient(90deg,#3b27ff,#2de3d6);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;display:inline-block}.ai-loader-icon-medium img{width:40px;height:40px;flex-shrink:0}.heading{color:#000;font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:normal;margin:10px 0}.progress-popup{display:flex;flex-direction:column;justify-content:center;align-items:center}.progress-popup .desc{color:#000000de;text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.behavioural-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #F8B861;background:linear-gradient(0deg,#f8b86152 0% 100%),#fff;margin:5px 0}.functional-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #E24577;background:linear-gradient(0deg,#e245773d 0% 100%),#fff;margin:5px 0}.domain-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #7B47A4;background:linear-gradient(0deg,#7b47a43d 0% 100%),#fff;margin:5px 0}.popup-header{display:flex;flex-direction:row;justify-content:space-between}.popup-footer{display:flex;flex-direction:row;justify-content:center}.view-cbp-plan{margin:10px;padding:10px}.view-cbp-plan-popup{padding:24px;max-height:70vh;overflow-y:auto}.section{border-radius:8px;background:#1b4ca114;padding:16px}.popup-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ddd;font-weight:700;flex-shrink:0}.popup-footer{display:flex;justify-content:center;gap:16px;padding:16px 24px;background-color:#fff;flex-shrink:0;position:sticky;bottom:0}.section-container{overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;align-items:center}.competency-list{display:flex;flex-direction:row;gap:16px}.competency-text{color:#000;font-family:Lato;font-size:10px;font-style:normal;font-weight:700;line-height:normal}.competency-sub-heading{color:#1b4ca1;font-family:Montserrat;font-size:12px;font-style:normal;font-weight:600;line-height:normal}.cursor-pointer{cursor:pointer}.btn-active{border-radius:var(--Radius-Full-Round, 9999999px);opacity:1;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:32px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100px}.custom-textarea{color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.overlay-loader{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#ffffffbf;z-index:9999;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
|
|
45
|
+
}
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DeleteRoleMappingComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ selector: 'app-delete-role-mapping', template: "<div class=\"view-cbp-plan\">\n <div class=\"popup-container\">\n <div class=\"popup-header\">\n <div>\n <div class=\"heading\">Delete Role Mapping</div>\n </div>\n <div class=\"cursor-pointer\" (click)=\"cancel()\">\n <mat-icon>close</mat-icon>\n </div>\n </div>\n <div class=\"section-container mt-4\">\n <div class=\"progress-icon\">\n <img src=\"assets/icons/info.svg\" style=\"scale: 2;margin: 10px;\">\n </div>\n <div class=\"heading\">\n <div>Delete Role Mapping</div>\n </div>\n <div class=\"\">\n <div>Are You Sure to Delete Selected Role Mapping</div>\n </div>\n\n </div>\n <div class=\"popup-footer mt-4\">\n <div>\n <input class=\"btn-active\" type=\"button\" value=\"No\" (click)=\"cancel()\" />\n </div>\n <div>\n <input class=\"btn-active\" type=\"button\" value=\"Yes\" (click)=\"deleteRoleMapping()\" />\n </div>\n </div>\n </div>\n</div>\n<div class=\"overlay-loader\" *ngIf=\"loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n</div>", styles: [".container{margin:10px auto}.sub-heading p{color:#000;font-family:Montserrat;font-size:16px;font-style:normal;font-weight:600;line-height:normal}.radio-label{color:#000;font-family:Lato;font-size:16px;font-style:normal;font-weight:400;line-height:normal}.radio-btn-group{display:flex;width:32px;height:32px;padding:2px;gap:10px}.label{color:var(--Body-Text-Body-Color, #212529);font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:150%}::ng-deep mat-form-field{background-color:#fff!important;border-radius:25px!important;padding-left:12px;padding-right:12px;height:42px;width:100%}::ng-deep mat-select{border-radius:25px!important;background-color:#fff!important}::ng-deep .mat-select-panel{background-color:#fff!important}::ng-deep .mat-select-panel .mat-option{border-radius:0!important}::ng-deep mat-form-field .mat-form-field-underline{display:none!important}::ng-deep mat-select .mat-select-placeholder{color:#0006;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}::ng-deep mat-select .mat-select-value-text{color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;line-height:normal!important;padding-top:0!important;padding-bottom:0!important}::ng-deep mat-select .mat-select-value{display:flex!important;align-items:center!important;height:100%!important}.additional-details textarea{display:flex;padding:16px 16px 0;flex-direction:column;align-items:flex-start;gap:10px;flex:1 0 0;align-self:stretch;width:100%;color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;resize:none}.section-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between}.btn-disable{border-radius:var(--Radius-Full-Round, 9999999px);opacity:.4;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:32px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100px}.btn-group{display:flex;flex-direction:row;justify-content:space-between}.pl-2{padding-left:5px}.search-filter-section{display:flex;flex-direction:row;justify-content:space-between}.search .rsearch{position:relative}.search .search-icon{position:absolute;top:15px;font-size:20px;left:10px}.search .sinput{border-radius:32px;border:1px solid #d5d0d0;padding:15px 36px;font:400 14px Lato;width:800px}.select-map-route-container{display:flex;flex-direction:row}.selected-mapping-route p{color:#1b4ca1;font-family:Lato;font-size:20px;font-style:normal;font-weight:400;line-height:normal;text-decoration-line:underline;text-decoration-style:solid;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.edit-plan{display:flex;padding:4px;justify-content:center;align-items:center;gap:8px;border-radius:4px;background:#1b4ca129;color:#1b4ca1;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;margin-left:10px}.search-container{display:flex;flex-direction:row}.course-container{display:flex;width:100%;padding:16px;flex-direction:column;align-items:flex-start;gap:24px;grid-row:2/span 1;grid-column:1/span 1;border-radius:12px;border:1px solid var(--borders-black-border-16-black, rgba(0, 0, 0, .16));background:#fff}.course-header{display:flex;flex-direction:row;justify-content:space-between;width:100%}.course-pill{display:flex;height:24px;padding:8px;align-items:center;gap:4px;border-radius:16px;border:1px solid var(--borders-border-fill-focussed-4-light-100, #EF951E);background:#fefaf4}.ai-recommened-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #1B4CA1;background:#1b4ca129}.igot-platform-pill{display:flex;padding:4px 8px;align-items:center;gap:8px;border-radius:var(--Radius-4, 4px);border:1px solid #EF951E;background:#ef951e29}.course-title{color:var(--Primary-KB-Primary-Light, #1B4CA1);font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:30px}.course-desc{color:#0009;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.relevancy,.competencies-matched{color:var(--accessbility-shades-with-opacity-kb-greys-black-60, rgba(0, 0, 0, .6));font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal;align-items:center}.percentage{color:#1d8923;font-family:Lato;font-size:14px;font-style:normal;font-weight:800;line-height:normal}.relevancy-container,.competencies-matched-container{display:flex;flex-direction:row;align-items:center}.dash{padding:0 5px}::ng-deep .mat-radio-checked .mat-radio-inner-circle{background:#1b4ca1!important}.course-list-container{display:flex;flex-wrap:wrap;gap:16px}.course-list-item{flex:0 0 48%;box-sizing:border-box;border:1px solid #ccc;padding:16px;background-color:#fff;border-radius:8px}.checked-course-container{display:flex}.ml-2{margin-left:8px}::ng-deep .mat-checkbox-checked .mat-checkbox-background{background:#1b4ca1!important}.ai-recommened-pill-text,.igot-platform-pill-text{color:#1b4ca1;font-family:Lato;font-size:12px;font-style:normal;font-weight:700;line-height:normal}.course-pill-text{color:var(--accessbility-shades-without-opacity-kb-greys-black-87, #212121);text-align:center;font-family:Poppins;font-size:12px;font-style:normal;font-weight:400;line-height:normal}.ai-loader-icon img,.igot-platform-icon img{width:15.714px;height:15.714px;flex-shrink:0}.competency-container{display:flex;justify-content:space-between;flex-direction:row}.outside-layer-total{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #1B4CA1;background:#edf1f8;width:132px}.outside-layer-functional{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #E24577;background:#f8d2de;width:132px}.outside-layer-domain{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #7B47A4;background:#dfd3e9;width:132px}.outside-layer-behavioral{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:16px;border-radius:12px 4px 4px 12px;border-left:2px solid #F8B861;background:#fde8cc;width:132px}.inside-layer{color:#1b4ca1;font-family:Lato;font-size:12px;font-style:normal;font-weight:400;line-height:normal}.count{color:#1b4ca1;font-family:Montserrat;font-size:16px;font-style:normal;font-weight:600;line-height:normal}.suggest-courses-header{display:flex;flex-direction:row;justify-content:space-between}.suggest-course-control{display:flex;flex-direction:row}.course-card-container{width:172px;border-radius:3.307px;border:.827px solid var(--borders-border-8-black, rgba(0, 0, 0, .08));background-color:#fff}.highlight-ai{font-family:Montserrat;font-size:24px;font-style:normal;font-weight:600;line-height:normal;background:linear-gradient(90deg,#3b27ff,#2de3d6);background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;display:inline-block}.ai-loader-icon-medium img{width:40px;height:40px;flex-shrink:0}.heading{color:#000;font-family:Montserrat;font-size:20px;font-style:normal;font-weight:600;line-height:normal;margin:10px 0}.progress-popup{display:flex;flex-direction:column;justify-content:center;align-items:center}.progress-popup .desc{color:#000000de;text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.behavioural-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #F8B861;background:linear-gradient(0deg,#f8b86152 0% 100%),#fff;margin:5px 0}.functional-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #E24577;background:linear-gradient(0deg,#e245773d 0% 100%),#fff;margin:5px 0}.domain-pill{display:flex;padding:0 8px;justify-content:center;align-items:center;gap:10px;border-radius:99px;border:1px solid #7B47A4;background:linear-gradient(0deg,#7b47a43d 0% 100%),#fff;margin:5px 0}.popup-header{display:flex;flex-direction:row;justify-content:space-between}.popup-footer{display:flex;flex-direction:row;justify-content:center}.view-cbp-plan{margin:10px;padding:10px}.view-cbp-plan-popup{padding:24px;max-height:70vh;overflow-y:auto}.section{border-radius:8px;background:#1b4ca114;padding:16px}.popup-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ddd;font-weight:700;flex-shrink:0}.popup-footer{display:flex;justify-content:center;gap:16px;padding:16px 24px;background-color:#fff;flex-shrink:0;position:sticky;bottom:0}.section-container{overflow-y:auto;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;align-items:center}.competency-list{display:flex;flex-direction:row;gap:16px}.competency-text{color:#000;font-family:Lato;font-size:10px;font-style:normal;font-weight:700;line-height:normal}.competency-sub-heading{color:#1b4ca1;font-family:Montserrat;font-size:12px;font-style:normal;font-weight:600;line-height:normal}.cursor-pointer{cursor:pointer}.btn-active{border-radius:var(--Radius-Full-Round, 9999999px);opacity:1;background:var(--Primary-KB-Primary-Light, #1B4CA1);color:var(--white-kb-white-100, #FFF);text-align:center;font-family:Lato;font-size:14px;font-style:normal;font-weight:700;line-height:normal;display:flex;height:32px;padding:0 16px;justify-content:center;align-items:center;gap:8px;border:none;width:100px}.custom-textarea{color:#000;font-family:Lato;font-size:14px;font-style:normal;font-weight:400;line-height:normal}.overlay-loader{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#ffffffbf;z-index:9999;display:flex;justify-content:center;align-items:center}\n"] }]
|
|
49
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
50
|
+
type: Inject,
|
|
51
|
+
args: [MAT_DIALOG_DATA]
|
|
52
|
+
}] }, { type: i2.SharedService }, { type: i3.MatSnackBar }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLXJvbGUtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy9kZWxldGUtcm9sZS1tYXBwaW5nL2RlbGV0ZS1yb2xlLW1hcHBpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGVsZXRlLXJvbGUtbWFwcGluZy9kZWxldGUtcm9sZS1tYXBwaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVU3RSxNQUFNLE9BQU8sMEJBQTBCO0lBSXJDLFlBQW9CLFNBQW1ELEVBQ3JDLElBQVMsRUFBVSxhQUE0QixFQUN2RSxRQUFvQjtRQUZWLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQ3JDLFNBQUksR0FBSixJQUFJLENBQUs7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN2RSxhQUFRLEdBQVIsUUFBUSxDQUFZO1FBSjlCLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFLWCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUN0QixDQUFDO0lBRUgsaUJBQWlCO1FBQ2YseUVBQXlFO1FBQ3pFLGtDQUFrQztRQUNsQyxLQUFLO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMvRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7b0JBQzNELFFBQVEsRUFBRSxJQUFJO29CQUNkLFVBQVUsRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUNqQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFO29CQUM1QyxRQUFRLEVBQUUsSUFBSTtvQkFDZCxVQUFVLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDL0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4QixDQUFDOytHQW5DVSwwQkFBMEIsOENBSzNCLGVBQWU7bUdBTGQsMEJBQTBCLCtEQ1h2Qyx1dkNBa0NNOzs0RkR2Qk8sMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLHlCQUF5Qjs7MEJBU2hDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtQXJyYXksIFZhbGlkYXRvcnMsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uL21vZHVsZXMvc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRlbGV0ZS1yb2xlLW1hcHBpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGVsZXRlLXJvbGUtbWFwcGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RlbGV0ZS1yb2xlLW1hcHBpbmcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEZWxldGVSb2xlTWFwcGluZ0NvbXBvbmVudCB7XG5cbiAgbG9hZGluZyA9IGZhbHNlXG4gIHBsYW5EYXRhOmFueVxuICBjb25zdHJ1Y3RvciggcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERlbGV0ZVJvbGVNYXBwaW5nQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSwgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6TWF0U25hY2tCYXIpIHtcbiAgICAgIHRoaXMucGxhbkRhdGEgPSBkYXRhXG4gICAgfVxuXG4gIGRlbGV0ZVJvbGVNYXBwaW5nKCkge1xuICAgIC8vIHRoaXMuc2hhcmVkU2VydmljZS5kZWxldGVSb2xlTWFwcGluZyh0aGlzLnBsYW5EYXRhLmlkKS5zdWJzY3JpYmUoKCk9PntcbiAgICAvLyAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdzYXZlZCcpXG4gICAgLy8gfSlcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZGVsZXRlUm9sZU1hcHBpbmcodGhpcy5wbGFuRGF0YS5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ3NhdmVkJylcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdSb2xlIE1hcHBpbmcgRGVsZXRlZCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgXG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPkRlbGV0ZSBSb2xlIE1hcHBpbmc8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNhbmNlbCgpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tY29udGFpbmVyIG10LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvaW5mby5zdmdcIiBzdHlsZT1cInNjYWxlOiAyO21hcmdpbjogMTBweDtcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2PkRlbGV0ZSBSb2xlIE1hcHBpbmc8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxkaXY+QXJlIFlvdSBTdXJlIHRvIERlbGV0ZSBTZWxlY3RlZCBSb2xlIE1hcHBpbmc8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyIG10LTRcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIk5vXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiWWVzXCIgKGNsaWNrKT1cImRlbGV0ZVJvbGVNYXBwaW5nKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj4iXX0=
|