tango-app-ui-analyse-trax 3.0.0-dev → 3.3.1-alpha-task.62

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.
Files changed (90) hide show
  1. package/esm2022/lib/components/action-centre/action-centre.component.mjs +303 -0
  2. package/esm2022/lib/components/activity-log/activity-log.component.mjs +94 -0
  3. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +1439 -0
  4. package/esm2022/lib/components/checklist/checklist.component.mjs +252 -0
  5. package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +1954 -0
  6. package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +12 -0
  7. package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +84 -0
  8. package/esm2022/lib/components/create-task/create-task.component.mjs +367 -0
  9. package/esm2022/lib/components/create-task/create-task.data.mjs +306 -0
  10. package/esm2022/lib/components/create-task/create-task.interface.mjs +2 -0
  11. package/esm2022/lib/components/custom-select/custom-select.component.mjs +236 -0
  12. package/esm2022/lib/components/dashboard/dashboard.component.mjs +597 -0
  13. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +635 -0
  14. package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +172 -0
  15. package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
  16. package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +119 -0
  17. package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
  18. package/esm2022/lib/components/flags/flags.component.mjs +257 -0
  19. package/esm2022/lib/components/flags/flags.interface.mjs +2 -0
  20. package/esm2022/lib/components/flags-info/flags-info.component.mjs +388 -0
  21. package/esm2022/lib/components/flags-info/flags-info.interface.mjs +2 -0
  22. package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +71 -0
  23. package/esm2022/lib/components/gallery/gallery.component.mjs +1181 -0
  24. package/esm2022/lib/components/group-select/group-select.component.mjs +155 -0
  25. package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +172 -0
  26. package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +117 -0
  27. package/esm2022/lib/components/orders/orders.component.mjs +171 -0
  28. package/esm2022/lib/components/pagination/pagination.component.mjs +62 -0
  29. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +105 -0
  30. package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +60 -0
  31. package/esm2022/lib/components/reports/reports.component.mjs +299 -0
  32. package/esm2022/lib/components/reports/reports.interface.mjs +2 -0
  33. package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +27 -6
  34. package/esm2022/lib/components/task/task.component.mjs +271 -0
  35. package/esm2022/lib/components/task-configure/task-configure.component.mjs +504 -0
  36. package/esm2022/lib/components/task-configure/task-configure.interface.mjs +2 -0
  37. package/esm2022/lib/components/task-info/task-info.component.mjs +300 -0
  38. package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +203 -0
  39. package/esm2022/lib/components/task-layout/task-layout.component.mjs +12 -0
  40. package/esm2022/lib/components/trax-store/trax-store.component.mjs +153 -0
  41. package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +67 -0
  42. package/esm2022/lib/services/trax.service.mjs +334 -0
  43. package/esm2022/lib/tango-analyse-trax-routing.module.mjs +124 -6
  44. package/esm2022/lib/tango-analyse-trax.module.mjs +144 -9
  45. package/fesm2022/tango-app-ui-analyse-trax.mjs +11412 -21
  46. package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
  47. package/lib/components/action-centre/action-centre.component.d.ts +56 -0
  48. package/lib/components/activity-log/activity-log.component.d.ts +30 -0
  49. package/lib/components/add-checklist/add-checklist.component.d.ts +99 -0
  50. package/lib/components/checklist/checklist.component.d.ts +39 -0
  51. package/lib/components/checklist-configure/checklist-configure.component.d.ts +160 -0
  52. package/lib/components/checklistlayout/checklistlayout.component.d.ts +5 -0
  53. package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +24 -0
  54. package/lib/components/create-task/create-task.component.d.ts +58 -0
  55. package/lib/components/create-task/create-task.data.d.ts +244 -0
  56. package/lib/components/create-task/create-task.interface.d.ts +147 -0
  57. package/lib/components/custom-select/custom-select.component.d.ts +35 -0
  58. package/lib/components/dashboard/dashboard.component.d.ts +75 -0
  59. package/lib/components/dashboard-info/dashboard-info.component.d.ts +102 -0
  60. package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +40 -0
  61. package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
  62. package/lib/components/export-gallery/export-gallery.component.d.ts +33 -0
  63. package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
  64. package/lib/components/flags/flags.component.d.ts +51 -0
  65. package/lib/components/flags/flags.interface.d.ts +64 -0
  66. package/lib/components/flags-info/flags-info.component.d.ts +62 -0
  67. package/lib/components/flags-info/flags-info.interface.d.ts +212 -0
  68. package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +13 -0
  69. package/lib/components/gallery/gallery.component.d.ts +125 -0
  70. package/lib/components/group-select/group-select.component.d.ts +33 -0
  71. package/lib/components/managechecklist/managechecklist.component.d.ts +32 -0
  72. package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +27 -0
  73. package/lib/components/orders/orders.component.d.ts +38 -0
  74. package/lib/components/pagination/pagination.component.d.ts +16 -0
  75. package/lib/components/reactive-select/reactive-select.component.d.ts +32 -0
  76. package/lib/components/reports/date-picker/date-picker.component.d.ts +23 -0
  77. package/lib/components/reports/reports.component.d.ts +55 -0
  78. package/lib/components/reports/reports.interface.d.ts +46 -0
  79. package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +10 -1
  80. package/lib/components/task/task.component.d.ts +59 -0
  81. package/lib/components/task-configure/task-configure.component.d.ts +69 -0
  82. package/lib/components/task-configure/task-configure.interface.d.ts +124 -0
  83. package/lib/components/task-info/task-info.component.d.ts +68 -0
  84. package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +60 -0
  85. package/lib/components/task-layout/task-layout.component.d.ts +5 -0
  86. package/lib/components/trax-store/trax-store.component.d.ts +44 -0
  87. package/lib/components/traxpopup/traxpopup.component.d.ts +23 -0
  88. package/lib/services/trax.service.d.ts +107 -0
  89. package/lib/tango-analyse-trax.module.d.ts +42 -3
  90. package/package.json +1 -1
@@ -0,0 +1,299 @@
1
+ import { Component } from '@angular/core';
2
+ import { BehaviorSubject, debounceTime, distinctUntilChanged, Subject, takeUntil } from "rxjs";
3
+ import { FormControl } from '@angular/forms';
4
+ import dayjs from "dayjs";
5
+ import utc from 'dayjs/plugin/utc';
6
+ import { DatePickerComponent } from './date-picker/date-picker.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/router";
9
+ import * as i2 from "tango-app-ui-global";
10
+ import * as i3 from "../../services/trax.service";
11
+ import * as i4 from "tango-app-ui-shared";
12
+ import * as i5 from "@ng-bootstrap/ng-bootstrap";
13
+ import * as i6 from "@angular/common";
14
+ import * as i7 from "@angular/forms";
15
+ dayjs.extend(utc);
16
+ export class ReportsComponent {
17
+ route;
18
+ gs;
19
+ traxService;
20
+ router;
21
+ pageInfo;
22
+ toastService;
23
+ modalService;
24
+ dayjs = dayjs;
25
+ destroy$ = new Subject();
26
+ itemsPerPage = 10;
27
+ currentPage = 0;
28
+ totalItems = 0;
29
+ paginationSizes = [10, 20, 30];
30
+ pageSize = 10;
31
+ sortColumName = '';
32
+ sortDirection = 1;
33
+ headerData;
34
+ checklistSelectControl = new FormControl('');
35
+ searchInput = new FormControl('');
36
+ checkLists = [];
37
+ checkListsApiState = new BehaviorSubject('initial');
38
+ currentChecklist;
39
+ checklistReports = [];
40
+ reportsTableApiState = new BehaviorSubject('initial');
41
+ selectAllControl = new FormControl(false);
42
+ constructor(route, gs, traxService, router, pageInfo, toastService, modalService) {
43
+ this.route = route;
44
+ this.gs = gs;
45
+ this.traxService = traxService;
46
+ this.router = router;
47
+ this.pageInfo = pageInfo;
48
+ this.toastService = toastService;
49
+ this.modalService = modalService;
50
+ this.checklistSelectControl.valueChanges.subscribe((val) => {
51
+ if (val) {
52
+ this.router.navigate([], {
53
+ relativeTo: this.route,
54
+ queryParams: { id: val },
55
+ queryParamsHandling: 'merge'
56
+ });
57
+ this.currentChecklist = this.checkLists?.filter((item) => item.sourceCheckList_id === val)[0];
58
+ this.getFlagsTable();
59
+ }
60
+ });
61
+ this.searchInput.valueChanges.pipe(takeUntil(this.destroy$)).pipe(debounceTime(1000), distinctUntilChanged()).subscribe((val) => {
62
+ if (val === null || val === undefined) {
63
+ return;
64
+ }
65
+ this.getFlagsTable();
66
+ });
67
+ this.selectAllControl.valueChanges.subscribe((val) => {
68
+ if (val) {
69
+ this.checklistReports.forEach((element) => {
70
+ element['isSelected'] = true;
71
+ });
72
+ }
73
+ else {
74
+ this.checklistReports.forEach((element) => {
75
+ element['isSelected'] = false;
76
+ });
77
+ }
78
+ });
79
+ }
80
+ ngOnDestroy() {
81
+ this.destroy$.next();
82
+ this.destroy$.complete();
83
+ }
84
+ ngOnInit() {
85
+ this.setPageData();
86
+ this.gs.dataRangeValue
87
+ .pipe(takeUntil(this.destroy$))
88
+ .pipe(debounceTime(1000))
89
+ .subscribe((data) => {
90
+ if (data?.client) {
91
+ this.headerData = data;
92
+ if (this.headerData?.stores?.length) {
93
+ this.headerData.stores = this.headerData.stores.filter((data) => data?.checked);
94
+ }
95
+ this.getChecklists();
96
+ }
97
+ });
98
+ this.route.queryParams
99
+ .pipe(takeUntil(this.destroy$))
100
+ .subscribe((params) => {
101
+ if (params?.id) {
102
+ this.checklistSelectControl.setValue(params?.id, { emitEvent: false });
103
+ }
104
+ });
105
+ }
106
+ setPageData() {
107
+ this.pageInfo.setTitle("Reports");
108
+ this.pageInfo.setDescription("");
109
+ this.pageInfo.setBreadcrumbs([
110
+ // { title: "Analyze", path: "/manage/traffic", isActive: false, isSeparator: false },
111
+ // { title: "Analyze", path: "/manage/traffic", isActive: false, isSeparator: true },
112
+ { title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: false },
113
+ { title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: true },
114
+ ]);
115
+ }
116
+ getChecklists() {
117
+ this.checkListsApiState.next('loading');
118
+ const data = {
119
+ "clientId": this.headerData?.client,
120
+ "storeId": this.headerData?.stores.map((val) => val.storeId),
121
+ "fromDate": this.headerData?.date.startDate,
122
+ "toDate": this.headerData?.date.endDate,
123
+ };
124
+ this.traxService.getChecklistDropdownDashboardData(data).pipe(takeUntil(this.destroy$)).subscribe({
125
+ next: (res) => {
126
+ this.checkListsApiState.next('loaded');
127
+ if (res?.data?.checklistData) {
128
+ this.checkLists = res.data.checklistData;
129
+ this.currentChecklist = this.checkLists?.filter((item) => item.sourceCheckList_id === this.checklistSelectControl.value)[0];
130
+ if (!this.currentChecklist) {
131
+ this.currentChecklist = this.checkLists[0];
132
+ }
133
+ setTimeout(() => {
134
+ this.checklistSelectControl.setValue(this.currentChecklist?.sourceCheckList_id);
135
+ }, 1000);
136
+ }
137
+ else {
138
+ this.checkLists = [];
139
+ this.checklistReports = [];
140
+ this.checklistSelectControl.setValue('', { emitEvent: false });
141
+ }
142
+ },
143
+ error: (e) => {
144
+ console.log(e);
145
+ }
146
+ });
147
+ }
148
+ getFlagsTable() {
149
+ this.reportsTableApiState.next('loading');
150
+ const data = {
151
+ "clientId": this.headerData?.client,
152
+ "storeId": this.headerData?.stores.map((val) => val.storeId),
153
+ "fromDate": this.headerData?.date.startDate,
154
+ "toDate": this.headerData?.date.endDate,
155
+ "limit": this.pageSize,
156
+ "offset": this.currentPage > 0 ? this.currentPage - 1 : 0,
157
+ "sortColumnName": this.sortColumName,
158
+ "sortBy": this.sortDirection,
159
+ "checklistType": this.currentChecklist?.checkListType,
160
+ "sourceCheckList_id": this.currentChecklist?.sourceCheckList_id,
161
+ "searchValue": this.searchInput.value,
162
+ "sort": this.sortColumName,
163
+ };
164
+ this.traxService.reportTable(data).pipe(takeUntil(this.destroy$)).subscribe({
165
+ next: (res) => {
166
+ this.reportsTableApiState.next('loaded');
167
+ if (res?.data?.totalCount) {
168
+ this.totalItems = res.data.totalCount;
169
+ }
170
+ else {
171
+ this.totalItems = 0;
172
+ }
173
+ if (res?.data) {
174
+ this.checklistReports = res.data.reportChecklistTableData;
175
+ if (this.selectAllControl.value) {
176
+ this.checklistReports.forEach((element) => {
177
+ element['isSelected'] = true;
178
+ });
179
+ }
180
+ else {
181
+ this.checklistReports.forEach((element) => {
182
+ element['isSelected'] = false;
183
+ });
184
+ }
185
+ }
186
+ else {
187
+ this.checklistReports = [];
188
+ }
189
+ },
190
+ error: (e) => {
191
+ this.reportsTableApiState.next('loaded');
192
+ }
193
+ });
194
+ }
195
+ sortData(column) {
196
+ if (this.sortColumName === column) {
197
+ this.sortDirection = this.sortDirection === 1 ? -1 : 1;
198
+ }
199
+ else {
200
+ this.sortColumName = column;
201
+ this.sortDirection = 1;
202
+ }
203
+ this.getFlagsTable();
204
+ }
205
+ onPageSizeChange(pageSize) {
206
+ this.currentPage = 1;
207
+ this.itemsPerPage = pageSize;
208
+ this.pageSize = pageSize;
209
+ this.getFlagsTable();
210
+ }
211
+ onPageChange(pageOffset) {
212
+ this.currentPage = pageOffset;
213
+ this.getFlagsTable();
214
+ }
215
+ onView(reportData) {
216
+ this.router.navigate(['/manage/trax/gallery'], {
217
+ queryParams: {
218
+ ChecklistDate: reportData?.submittedDate,
219
+ storeId: reportData?.store_id,
220
+ checklistType: this.currentChecklist?.checkListType,
221
+ checklistId: this.currentChecklist?.sourceCheckList_id,
222
+ }
223
+ });
224
+ }
225
+ onExport(type) {
226
+ const d1 = dayjs(this.headerData?.date?.startDate);
227
+ const d2 = dayjs(this.headerData?.date?.endDate);
228
+ const diffInDays = d2.diff(d1, 'day') + 1;
229
+ if ((type === 'pdf') && diffInDays < 3) {
230
+ return this.exportData(this.headerData?.date?.startDate, this.headerData?.date?.endDate, type);
231
+ }
232
+ if ((type === 'csv') && !this.selectAllControl.value) {
233
+ return this.exportData(this.headerData?.date?.startDate, this.headerData?.date?.endDate, type);
234
+ }
235
+ const modalRef = this.modalService.open(DatePickerComponent, {
236
+ centered: true,
237
+ size: "lg",
238
+ scrollable: true,
239
+ });
240
+ modalRef.componentInstance.fileType = type;
241
+ modalRef.result.then((result) => {
242
+ if (result.validated) {
243
+ this.exportData(result.startDate, result.endDate, type);
244
+ }
245
+ });
246
+ }
247
+ exportData(startDate, endDate, downloadType) {
248
+ const user = JSON.parse(localStorage.getItem('user-info'));
249
+ const payload = {
250
+ "fromDate": startDate,
251
+ "toDate": endDate,
252
+ "checklistId": this.selectAllControl.value ? [] : this.checklistReports.filter((checklist) => checklist.isSelected).map((checklist) => checklist._id),
253
+ "sourceCheckList_id": this.selectAllControl.value ? this.currentChecklist?.sourceCheckList_id : '',
254
+ "checklistName": this.currentChecklist?.checkListName,
255
+ "fileType": downloadType,
256
+ "storeIds": this.headerData?.stores.map((val) => val.storeId),
257
+ "userId": user?._id,
258
+ "clientId": this.headerData?.client,
259
+ "downloadInsertFrom": "report",
260
+ "searchValue": this.searchInput.value,
261
+ };
262
+ if (this.selectAllControl.value)
263
+ payload.answerType = 'all';
264
+ this.traxService.reportTableExport(payload).subscribe({
265
+ next: (res) => {
266
+ if (res.code === 200) {
267
+ this.toastService.getSuccessToast(`<div><span class="me-8" >Downloading your reports</span><a href="/notifications/alerts?tab=download" style="color:#99c3ff; text-decoration:underline; cursor:pointer" >View</a></div>`);
268
+ }
269
+ },
270
+ error: (err) => {
271
+ this.toastService.getErrorToast(`No data found`);
272
+ }
273
+ });
274
+ }
275
+ get atleastOneSelected() {
276
+ return this.checklistReports?.some((item) => item.isSelected);
277
+ }
278
+ onChecklistSelect(event) {
279
+ this.router.navigate([], {
280
+ relativeTo: this.route,
281
+ queryParams: { id: event.sourceCheckList_id },
282
+ queryParamsHandling: 'merge'
283
+ });
284
+ this.currentChecklist = this.checkLists?.filter((item) => item.sourceCheckList_id === event.sourceCheckList_id)[0];
285
+ this.getFlagsTable();
286
+ }
287
+ onCheckboxChecked(event) {
288
+ if (!event && this.selectAllControl.value) {
289
+ this.selectAllControl.setValue(false, { emitEvent: false });
290
+ }
291
+ }
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.GlobalStateService }, { token: i3.TraxService }, { token: i1.Router }, { token: i2.PageInfoService }, { token: i4.ToastService }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
293
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ReportsComponent, selector: "lib-reports", ngImport: i0, template: "<div class=\"row\">\r\n <div class=\"col-md-12 my-2\">\r\n <div class=\" card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Checklist Data</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div style=\"min-width: 350px;\" class=\"d-flex align-items-center position-relative me-4\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n \r\n </div>\r\n <div style=\"min-width: 200px;\" class=\"me-4\" >\r\n <lib-select [items]=\"checkLists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'sourceCheckList_id'\"\r\n (selected)=\"onChecklistSelect($event)\" [selectedValues]=\"[this.currentChecklist]\"></lib-select> \r\n </div>\r\n <!-- <lib-reactive-select [formControl]=\"checklistSelectControl\"\r\n [idField]=\"'sourceCheckList_id'\" [nameField]=\"'checkListName'\"\r\n [data]=\"checkLists\" class=\"w-100 \"\r\n style=\"border: none !important; box-shadow: none !important;\">\r\n <ng-template let-item>\r\n <div\r\n class=\"d-flex justify-content-between align-items-center no-border-custom-select\">\r\n <span>{{ item.label }}</span>\r\n <span class=\"d-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M4 6L8 10L12 6\" stroke=\"#101828\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </lib-reactive-select> -->\r\n \r\n <button [disabled]=\"!atleastOneSelected\" (click)=\"onExport('pdf')\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader me-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export as PDF\r\n </button>\r\n\r\n <button [disabled]=\"!atleastOneSelected\" (click)=\"onExport('csv')\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader \">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export as CSV\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container>\r\n <ng-container\r\n *ngIf=\"(reportsTableApiState | async) === 'loaded' && checklistReports?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" >\r\n <input [formControl] = 'selectAllControl' \r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\">\r\n Submitted Date<svg (click)=\"sortData('submittedDate')\"\r\n [ngClass]=\"sortColumName === 'submittedDate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'submittedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Checklist Name<svg (click)=\"sortData('checkListName')\"\r\n [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Store Name<svg (click)=\"sortData('storeName')\"\r\n [ngClass]=\"sortColumName === 'storeName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Submitted By<svg (click)=\"sortData('submittedBy')\"\r\n [ngClass]=\"sortColumName === 'submittedBy' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'submittedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Submitted Time</th>\r\n <th>Flags Raised</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let flagData of checklistReports\">\r\n\r\n <td>\r\n <input [(ngModel)]=\"flagData.isSelected\" (ngModelChange)=\"onCheckboxChecked($event)\" \r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\">\r\n <span class=\"data\">{{flagData?.submittedDate}}</span>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.checkListName}}</div>\r\n </td>\r\n <td>\r\n <div class=\"data-dark\">{{flagData?.storeName}}</div>\r\n </td>\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{flagData?.submittedByChar }} </span>\r\n </div><span\r\n class=\"data\">{{flagData?.submittedBy ? flagData?.submittedBy : '--'}}</span> \r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.submittedTime}}</div>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.flagCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div (click)=\"onView(flagData)\" class=\"table-title d-flex\">\r\n <span class=\"view me-4 cursor-pointer\">View Answers</span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div\r\n *ngIf=\"(reportsTableApiState | async) === 'loaded' && checklistReports?.length\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(reportsTableApiState | async) === 'loading' || (reportsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(reportsTableApiState | async) === 'loaded' && !checklistReports?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Checklist Reports Table\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".data{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.data-dark{color:var(--Gray-900, #101828);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.view{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.rotate{rotate:180deg;transition:1s}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i4.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] });
294
+ }
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ReportsComponent, decorators: [{
296
+ type: Component,
297
+ args: [{ selector: 'lib-reports', template: "<div class=\"row\">\r\n <div class=\"col-md-12 my-2\">\r\n <div class=\" card\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-header border-0 pt-4 px-4\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Checklist Data</span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div style=\"min-width: 350px;\" class=\"d-flex align-items-center position-relative me-4\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\"\r\n rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"form-control ps-14 footfallsearch\" placeholder=\"Search\"\r\n autocomplete=\"off\" />\r\n \r\n </div>\r\n <div style=\"min-width: 200px;\" class=\"me-4\" >\r\n <lib-select [items]=\"checkLists\" [multi]=\"false\" [searchField]=\"'checkListName'\" [idField]=\"'sourceCheckList_id'\"\r\n (selected)=\"onChecklistSelect($event)\" [selectedValues]=\"[this.currentChecklist]\"></lib-select> \r\n </div>\r\n <!-- <lib-reactive-select [formControl]=\"checklistSelectControl\"\r\n [idField]=\"'sourceCheckList_id'\" [nameField]=\"'checkListName'\"\r\n [data]=\"checkLists\" class=\"w-100 \"\r\n style=\"border: none !important; box-shadow: none !important;\">\r\n <ng-template let-item>\r\n <div\r\n class=\"d-flex justify-content-between align-items-center no-border-custom-select\">\r\n <span>{{ item.label }}</span>\r\n <span class=\"d-flex align-items-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path d=\"M4 6L8 10L12 6\" stroke=\"#101828\" stroke-width=\"2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </lib-reactive-select> -->\r\n \r\n <button [disabled]=\"!atleastOneSelected\" (click)=\"onExport('pdf')\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader me-4\">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export as PDF\r\n </button>\r\n\r\n <button [disabled]=\"!atleastOneSelected\" (click)=\"onExport('csv')\" type=\"button\"\r\n class=\"btn-outline btn align-items-end text-nowrap invheader \">\r\n <!-- Export Icon -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\"\r\n stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"></path>\r\n </svg>\r\n <span class=\"ms-2\"></span> Export as CSV\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <ng-container>\r\n <ng-container\r\n *ngIf=\"(reportsTableApiState | async) === 'loaded' && checklistReports?.length\">\r\n <div class=\"table-responsive px-4\">\r\n <table class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" >\r\n <input [formControl] = 'selectAllControl' \r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\">\r\n Submitted Date<svg (click)=\"sortData('submittedDate')\"\r\n [ngClass]=\"sortColumName === 'submittedDate' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'submittedDate' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Checklist Name<svg (click)=\"sortData('checkListName')\"\r\n [ngClass]=\"sortColumName === 'checkListName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'checkListName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Store Name<svg (click)=\"sortData('storeName')\"\r\n [ngClass]=\"sortColumName === 'storeName' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'storeName' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th class=\"cursor-pointer\" >Submitted By<svg (click)=\"sortData('submittedBy')\"\r\n [ngClass]=\"sortColumName === 'submittedBy' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'submittedBy' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg></th>\r\n <th>Submitted Time</th>\r\n <th>Flags Raised</th>\r\n <th>Action</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let flagData of checklistReports\">\r\n\r\n <td>\r\n <input [(ngModel)]=\"flagData.isSelected\" (ngModelChange)=\"onCheckboxChecked($event)\" \r\n class=\"form-check-input cursor-pointer me-4\" type=\"checkbox\">\r\n <span class=\"data\">{{flagData?.submittedDate}}</span>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.checkListName}}</div>\r\n </td>\r\n <td>\r\n <div class=\"data-dark\">{{flagData?.storeName}}</div>\r\n </td>\r\n <td>\r\n <div>\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n {{flagData?.submittedByChar }} </span>\r\n </div><span\r\n class=\"data\">{{flagData?.submittedBy ? flagData?.submittedBy : '--'}}</span> \r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.submittedTime}}</div>\r\n </td>\r\n <td>\r\n <div class=\"data\">{{flagData?.flagCount}}</div>\r\n </td>\r\n\r\n <td>\r\n <div (click)=\"onView(flagData)\" class=\"table-title d-flex\">\r\n <span class=\"view me-4 cursor-pointer\">View Answers</span>\r\n </div>\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n </div>\r\n <div\r\n *ngIf=\"(reportsTableApiState | async) === 'loaded' && checklistReports?.length\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\"\r\n [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"(reportsTableApiState | async) === 'loading' || (reportsTableApiState | async) === 'initial'\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"(reportsTableApiState | async) === 'loaded' && !checklistReports?.length\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Checklist Reports Table\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n</div>", styles: [".data{color:var(--Gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.data-dark{color:var(--Gray-900, #101828);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.view{color:var(--Primary-700, #009BF3);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.rotate{rotate:180deg;transition:1s}input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}\n"] }]
298
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.GlobalStateService }, { type: i3.TraxService }, { type: i1.Router }, { type: i2.PageInfoService }, { type: i4.ToastService }, { type: i5.NgbModal }] });
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvcmVwb3J0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvcmVwb3J0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QyxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUs3QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7QUFDbkMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztBQUMxRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBU2xCLE1BQU0sT0FBTyxnQkFBZ0I7SUFzQlA7SUFBOEI7SUFBZ0M7SUFDeEU7SUFBd0I7SUFBbUM7SUFBb0M7SUF0QnpHLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDTCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUN2QyxZQUFZLEdBQUcsRUFBRSxDQUFBO0lBQ2pCLFdBQVcsR0FBRyxDQUFDLENBQUE7SUFDZixVQUFVLEdBQUcsQ0FBQyxDQUFBO0lBQ2QsZUFBZSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5QixRQUFRLEdBQUcsRUFBRSxDQUFBO0lB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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IENoZWNrbGlzdCwgY2hlY2tMaXN0UmVwb3J0LCBIZWFkZXJGaWx0ZXIgfSBmcm9tICcuL3JlcG9ydHMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLXNoYXJlZCc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1yZXBvcnRzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JlcG9ydHMuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBvcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIGRheWpzID0gZGF5anNcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBpdGVtc1BlclBhZ2UgPSAxMFxyXG4gIGN1cnJlbnRQYWdlID0gMFxyXG4gIHRvdGFsSXRlbXMgPSAwXHJcbiAgcGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdXHJcbiAgcGFnZVNpemUgPSAxMFxyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNvcnREaXJlY3Rpb246IG51bWJlciA9IDE7XHJcbiAgaGVhZGVyRGF0YTogSGVhZGVyRmlsdGVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBjaGVja2xpc3RTZWxlY3RDb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgc2VhcmNoSW5wdXQ6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBjaGVja0xpc3RzOiBDaGVja2xpc3RbXSA9IFtdO1xyXG4gIGNoZWNrTGlzdHNBcGlTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8J2luaXRpYWwnIHwgJ2xvYWRpbmcnIHwgJ2xvYWRlZCc+KCdpbml0aWFsJylcclxuICBjdXJyZW50Q2hlY2tsaXN0OiBDaGVja2xpc3QgfCBudWxsIHwgdW5kZWZpbmVkXHJcbiAgY2hlY2tsaXN0UmVwb3J0czogY2hlY2tMaXN0UmVwb3J0W10gPSBbXVxyXG4gIHJlcG9ydHNUYWJsZUFwaVN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnaW5pdGlhbCcgfCAnbG9hZGluZycgfCAnbG9hZGVkJz4oJ2luaXRpYWwnKVxyXG4gIHNlbGVjdEFsbENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpXHJcblxyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLCBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgcGFnZUluZm86IFBhZ2VJbmZvU2VydmljZSwgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7XHJcbiAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdENvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyBpZDogdmFsIH0sXHJcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2hlY2tsaXN0ID0gdGhpcy5jaGVja0xpc3RzPy5maWx0ZXIoKGl0ZW06IENoZWNrbGlzdCkgPT4gaXRlbS5zb3VyY2VDaGVja0xpc3RfaWQgPT09IHZhbClbMF1cclxuICAgICAgICB0aGlzLmdldEZsYWdzVGFibGUoKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0RmxhZ3NUYWJsZSgpXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tsaXN0UmVwb3J0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGVsZW1lbnRbJ2lzU2VsZWN0ZWQnXSA9IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoZWNrbGlzdFJlcG9ydHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGVtZW50Wydpc1NlbGVjdGVkJ10gPSBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFBhZ2VEYXRhKClcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhPy5jbGllbnQpIHtcclxuICAgICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmhlYWRlckRhdGEuc3RvcmVzID0gdGhpcy5oZWFkZXJEYXRhLnN0b3Jlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YT8uY2hlY2tlZClcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLmdldENoZWNrbGlzdHMoKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0pXHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXM/LmlkKSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrbGlzdFNlbGVjdENvbnRyb2wuc2V0VmFsdWUocGFyYW1zPy5pZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIlJlcG9ydHNcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldERlc2NyaXB0aW9uKFwiXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIC8vIHsgdGl0bGU6IFwiQW5hbHl6ZVwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJhZmZpY1wiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICAvLyB7IHRpdGxlOiBcIkFuYWx5emVcIiwgcGF0aDogXCIvbWFuYWdlL3RyYWZmaWNcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tsaXN0cygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tMaXN0c0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKVxyXG4gICAgY29uc3QgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJzdG9yZUlkXCI6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzLm1hcCgodmFsOiB7IHN0b3JlSWQ6IHN0cmluZywgc3RvcmVOYW1lOiBzdHJpbmcgfSkgPT4gdmFsLnN0b3JlSWQpLFxyXG4gICAgICBcImZyb21EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIFwidG9EYXRlXCI6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZS5lbmREYXRlLFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmdldENoZWNrbGlzdERyb3Bkb3duRGFzaGJvYXJkRGF0YShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tMaXN0c0FwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8uY2hlY2tsaXN0RGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja0xpc3RzID0gcmVzLmRhdGEuY2hlY2tsaXN0RGF0YVxyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Q2hlY2tsaXN0ID0gdGhpcy5jaGVja0xpc3RzPy5maWx0ZXIoKGl0ZW06IENoZWNrbGlzdCkgPT4gaXRlbS5zb3VyY2VDaGVja0xpc3RfaWQgPT09IHRoaXMuY2hlY2tsaXN0U2VsZWN0Q29udHJvbC52YWx1ZSlbMF1cclxuICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50Q2hlY2tsaXN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudENoZWNrbGlzdCA9IHRoaXMuY2hlY2tMaXN0c1swXVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0Q29udHJvbC5zZXRWYWx1ZSh0aGlzLmN1cnJlbnRDaGVja2xpc3Q/LnNvdXJjZUNoZWNrTGlzdF9pZClcclxuICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmNoZWNrTGlzdHMgPSBbXVxyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RSZXBvcnRzID0gW11cclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0U2VsZWN0Q29udHJvbC5zZXRWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRGbGFnc1RhYmxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXBvcnRzVGFibGVBcGlTdGF0ZS5uZXh0KCdsb2FkaW5nJylcclxuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XHJcbiAgICAgIFwiY2xpZW50SWRcIjogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXHJcbiAgICAgIFwic3RvcmVJZFwiOiB0aGlzLmhlYWRlckRhdGE/LnN0b3Jlcy5tYXAoKHZhbDogeyBzdG9yZUlkOiBzdHJpbmcsIHN0b3JlTmFtZTogc3RyaW5nIH0pID0+IHZhbC5zdG9yZUlkKSxcclxuICAgICAgXCJmcm9tRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuc3RhcnREYXRlLFxyXG4gICAgICBcInRvRGF0ZVwiOiB0aGlzLmhlYWRlckRhdGE/LmRhdGUuZW5kRGF0ZSxcclxuICAgICAgXCJsaW1pdFwiOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICBcIm9mZnNldFwiOiB0aGlzLmN1cnJlbnRQYWdlID4gMCA/IHRoaXMuY3VycmVudFBhZ2UgLSAxIDogMCxcclxuICAgICAgXCJzb3J0Q29sdW1uTmFtZVwiOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIFwic29ydEJ5XCI6IHRoaXMuc29ydERpcmVjdGlvbixcclxuICAgICAgXCJjaGVja2xpc3RUeXBlXCI6IHRoaXMuY3VycmVudENoZWNrbGlzdD8uY2hlY2tMaXN0VHlwZSxcclxuICAgICAgXCJzb3VyY2VDaGVja0xpc3RfaWRcIjogdGhpcy5jdXJyZW50Q2hlY2tsaXN0Py5zb3VyY2VDaGVja0xpc3RfaWQsXHJcbiAgICAgIFwic2VhcmNoVmFsdWVcIjogdGhpcy5zZWFyY2hJbnB1dC52YWx1ZSxcclxuICAgICAgXCJzb3J0XCI6IHRoaXMuc29ydENvbHVtTmFtZSxcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5yZXBvcnRUYWJsZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMucmVwb3J0c1RhYmxlQXBpU3RhdGUubmV4dCgnbG9hZGVkJylcclxuICAgICAgICBpZiAocmVzPy5kYXRhPy50b3RhbENvdW50KSB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXMuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xyXG4gICAgICAgICAgdGhpcy5jaGVja2xpc3RSZXBvcnRzID0gcmVzLmRhdGEucmVwb3J0Q2hlY2tsaXN0VGFibGVEYXRhXHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrbGlzdFJlcG9ydHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudFsnaXNTZWxlY3RlZCddID0gdHJ1ZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0UmVwb3J0cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBlbGVtZW50Wydpc1NlbGVjdGVkJ10gPSBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0UmVwb3J0cyA9IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLnJlcG9ydHNUYWJsZUFwaVN0YXRlLm5leHQoJ2xvYWRlZCcpXHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcblxyXG4gIHNvcnREYXRhKGNvbHVtbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zb3J0Q29sdW1OYW1lID09PSBjb2x1bW4pIHtcclxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zb3J0Q29sdW1OYW1lID0gY29sdW1uO1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAxO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIG9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemU6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLml0ZW1zUGVyUGFnZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuXHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UocGFnZU9mZnNldDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZU9mZnNldFxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIG9uVmlldyhyZXBvcnREYXRhOiBjaGVja0xpc3RSZXBvcnQpIHtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvdHJheC9nYWxsZXJ5J10sXHJcbiAgICAgIHtcclxuICAgICAgICBxdWVyeVBhcmFtczoge1xyXG4gICAgICAgICAgQ2hlY2tsaXN0RGF0ZTogcmVwb3J0RGF0YT8uc3VibWl0dGVkRGF0ZSxcclxuICAgICAgICAgIHN0b3JlSWQ6IHJlcG9ydERhdGE/LnN0b3JlX2lkLFxyXG4gICAgICAgICAgY2hlY2tsaXN0VHlwZTogdGhpcy5jdXJyZW50Q2hlY2tsaXN0Py5jaGVja0xpc3RUeXBlLFxyXG4gICAgICAgICAgY2hlY2tsaXN0SWQ6IHRoaXMuY3VycmVudENoZWNrbGlzdD8uc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgb25FeHBvcnQodHlwZTogJ2NzdicgfCAncGRmJykge1xyXG5cclxuICAgIGNvbnN0IGQxID0gZGF5anModGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUpO1xyXG4gICAgY29uc3QgZDIgPSBkYXlqcyh0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUpO1xyXG5cclxuICAgIGNvbnN0IGRpZmZJbkRheXMgPSBkMi5kaWZmKGQxLCAnZGF5JykgKyAxXHJcblxyXG4gICAgaWYoKHR5cGUgPT09ICdwZGYnICkgJiYgZGlmZkluRGF5cyA8MyApe1xyXG4gICAgICByZXR1cm4gdGhpcy5leHBvcnREYXRhKHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlISwgdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlISwgdHlwZSlcclxuICAgIH1cclxuXHJcbiAgICBpZigodHlwZSA9PT0gJ2NzdicgKSAmJiAhdGhpcy5zZWxlY3RBbGxDb250cm9sLnZhbHVlICl7XHJcbiAgICAgIHJldHVybiB0aGlzLmV4cG9ydERhdGEodGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUhLCB0aGlzLmhlYWRlckRhdGE/LmRhdGU/LmVuZERhdGUhLCB0eXBlKVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRGF0ZVBpY2tlckNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJsZ1wiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5maWxlVHlwZSA9IHR5cGVcclxuICAgIG1vZGFsUmVmLnJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgaWYgKHJlc3VsdC52YWxpZGF0ZWQpIHtcclxuICAgICAgIHRoaXMuZXhwb3J0RGF0YShyZXN1bHQuc3RhcnREYXRlLCByZXN1bHQuZW5kRGF0ZSwgdHlwZSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICBleHBvcnREYXRhKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGRvd25sb2FkVHlwZTogJ2NzdicgfCAncGRmJykge1xyXG4gICAgY29uc3QgdXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXItaW5mbycpIGFzIHN0cmluZylcclxuICAgIGNvbnN0IHBheWxvYWQ6e1trZXk6IHN0cmluZ106IGFueTt9ID0ge1xyXG4gICAgICBcImZyb21EYXRlXCI6IHN0YXJ0RGF0ZSxcclxuICAgICAgXCJ0b0RhdGVcIjogZW5kRGF0ZSxcclxuICAgICAgXCJjaGVja2xpc3RJZFwiOiB0aGlzLnNlbGVjdEFsbENvbnRyb2wudmFsdWUgPyBbXSA6IHRoaXMuY2hlY2tsaXN0UmVwb3J0cy5maWx0ZXIoKGNoZWNrbGlzdCkgPT4gY2hlY2tsaXN0LmlzU2VsZWN0ZWQpLm1hcCgoY2hlY2tsaXN0KSA9PiBjaGVja2xpc3QuX2lkKSxcclxuICAgICAgXCJzb3VyY2VDaGVja0xpc3RfaWRcIjogdGhpcy5zZWxlY3RBbGxDb250cm9sLnZhbHVlID8gdGhpcy5jdXJyZW50Q2hlY2tsaXN0Py5zb3VyY2VDaGVja0xpc3RfaWQgOiAnJyxcclxuICAgICAgXCJjaGVja2xpc3ROYW1lXCI6IHRoaXMuY3VycmVudENoZWNrbGlzdD8uY2hlY2tMaXN0TmFtZSxcclxuICAgICAgXCJmaWxlVHlwZVwiOiBkb3dubG9hZFR5cGUsXHJcbiAgICAgIFwic3RvcmVJZHNcIjogdGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMubWFwKCh2YWw6IHsgc3RvcmVJZDogc3RyaW5nLCBzdG9yZU5hbWU6IHN0cmluZyB9KSA9PiB2YWwuc3RvcmVJZCksXHJcbiAgICAgIFwidXNlcklkXCI6IHVzZXI/Ll9pZCxcclxuICAgICAgXCJjbGllbnRJZFwiOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgXCJkb3dubG9hZEluc2VydEZyb21cIjogXCJyZXBvcnRcIixcclxuICAgICAgXCJzZWFyY2hWYWx1ZVwiOiB0aGlzLnNlYXJjaElucHV0LnZhbHVlLFxyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuc2VsZWN0QWxsQ29udHJvbC52YWx1ZSkgcGF5bG9hZC5hbnN3ZXJUeXBlID0gJ2FsbCc7XHJcblxyXG4gICAgdGhpcy50cmF4U2VydmljZS5yZXBvcnRUYWJsZUV4cG9ydChwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFN1Y2Nlc3NUb2FzdChgPGRpdj48c3BhbiBjbGFzcz1cIm1lLThcIiA+RG93bmxvYWRpbmcgeW91ciByZXBvcnRzPC9zcGFuPjxhIGhyZWY9XCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWRvd25sb2FkXCIgc3R5bGU9XCJjb2xvcjojOTljM2ZmOyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyBjdXJzb3I6cG9pbnRlclwiID5WaWV3PC9hPjwvZGl2PmApXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoYE5vIGRhdGEgZm91bmRgKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGF0bGVhc3RPbmVTZWxlY3RlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrbGlzdFJlcG9ydHM/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNTZWxlY3RlZClcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tsaXN0U2VsZWN0KGV2ZW50OiBDaGVja2xpc3QpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLFxyXG4gICAgICB7XHJcbiAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgICBxdWVyeVBhcmFtczogeyBpZDogZXZlbnQuc291cmNlQ2hlY2tMaXN0X2lkIH0sXHJcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xyXG4gICAgICB9XHJcbiAgICApXHJcbiAgICB0aGlzLmN1cnJlbnRDaGVja2xpc3QgPSB0aGlzLmNoZWNrTGlzdHM/LmZpbHRlcigoaXRlbTogQ2hlY2tsaXN0KSA9PiBpdGVtLnNvdXJjZUNoZWNrTGlzdF9pZCA9PT0gZXZlbnQuc291cmNlQ2hlY2tMaXN0X2lkKVswXVxyXG4gICAgdGhpcy5nZXRGbGFnc1RhYmxlKClcclxuICB9XHJcblxyXG4gIG9uQ2hlY2tib3hDaGVja2VkKGV2ZW50OmJvb2xlYW4pe1xyXG4gICAgaWYoIWV2ZW50ICYmIHRoaXMuc2VsZWN0QWxsQ29udHJvbC52YWx1ZSl7XHJcbiAgICAgIHRoaXMuc2VsZWN0QWxsQ29udHJvbC5zZXRWYWx1ZShmYWxzZSwge2VtaXRFdmVudDpmYWxzZX0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG15LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiIGNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC00IHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5DaGVja2xpc3QgRGF0YTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDM1MHB4O1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbWUtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIGZvb3RmYWxsc2VhcmNoIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgMTcuMDM2NSAxNS4xMjIzKVwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMSAxOUM2LjU1NTU2IDE5IDMgMTUuNDQ0NCAzIDExQzMgNi41NTU1NiA2LjU1NTU2IDMgMTEgM0MxNS40NDQ0IDMgMTkgNi41NTU1NiAxOSAxMUMxOSAxNS40NDQ0IDE1LjQ0NDQgMTkgMTEgMTlaTTExIDVDNy41MzMzMyA1IDUgNy41MzMzMyA1IDExQzUgMTQuNDY2NyA3LjUzMzMzIDE3IDExIDE3QzE0LjQ2NjcgMTcgMTcgMTQuNDY2NyAxNyAxMUMxNyA3LjUzMzMzIDE0LjQ2NjcgNSAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2Zvcm1Db250cm9sXT1cInNlYXJjaElucHV0XCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgZm9vdGZhbGxzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtaW4td2lkdGg6IDIwMHB4O1wiIGNsYXNzPVwibWUtNFwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1zZWxlY3QgW2l0ZW1zXT1cImNoZWNrTGlzdHNcIiAgW211bHRpXT1cImZhbHNlXCIgW3NlYXJjaEZpZWxkXT1cIidjaGVja0xpc3ROYW1lJ1wiIFtpZEZpZWxkXT1cIidzb3VyY2VDaGVja0xpc3RfaWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25DaGVja2xpc3RTZWxlY3QoJGV2ZW50KVwiIFtzZWxlY3RlZFZhbHVlc109XCJbdGhpcy5jdXJyZW50Q2hlY2tsaXN0XVwiPjwvbGliLXNlbGVjdD4gICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxsaWItcmVhY3RpdmUtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjaGVja2xpc3RTZWxlY3RDb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIidzb3VyY2VDaGVja0xpc3RfaWQnXCIgW25hbWVGaWVsZF09XCInY2hlY2tMaXN0TmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiY2hlY2tMaXN0c1wiIGNsYXNzPVwidy0xMDAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7IGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBuby1ib3JkZXItY3VzdG9tLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00IDZMOCAxMEwxMiA2XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhYXRsZWFzdE9uZVNlbGVjdGVkXCIgKGNsaWNrKT1cIm9uRXhwb3J0KCdwZGYnKVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgdGV4dC1ub3dyYXAgaW52aGVhZGVyIG1lLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBFeHBvcnQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0yXCI+PC9zcGFuPiBFeHBvcnQgYXMgUERGXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cIiFhdGxlYXN0T25lU2VsZWN0ZWRcIiAoY2xpY2spPVwib25FeHBvcnQoJ2NzdicpXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLW91dGxpbmUgYnRuIGFsaWduLWl0ZW1zLWVuZCB0ZXh0LW5vd3JhcCBpbnZoZWFkZXIgXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRXhwb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMlwiPjwvc3Bhbj4gRXhwb3J0IGFzIENTVlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIocmVwb3J0c1RhYmxlQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkZWQnICYmIGNoZWNrbGlzdFJlcG9ydHM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlIHB4LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGV4dC1ub3dyYXAgYm90dG9tLWJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgIFtmb3JtQ29udHJvbF0gPSAnc2VsZWN0QWxsQ29udHJvbCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyIG1lLTRcIiB0eXBlPVwiY2hlY2tib3hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1Ym1pdHRlZCBEYXRlPHN2ZyAoY2xpY2spPVwic29ydERhdGEoJ3N1Ym1pdHRlZERhdGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N1Ym1pdHRlZERhdGUnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdWJtaXR0ZWREYXRlJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiA+Q2hlY2tsaXN0IE5hbWU8c3ZnIChjbGljayk9XCJzb3J0RGF0YSgnY2hlY2tMaXN0TmFtZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnY2hlY2tMaXN0TmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2NoZWNrTGlzdE5hbWUnID8gJyMwMEEzRkYnIDogJyM2NjcwODUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiID5TdG9yZSBOYW1lPHN2ZyAoY2xpY2spPVwic29ydERhdGEoJ3N0b3JlTmFtZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk04LjAwMDE2IDMuMzMzMzdWMTIuNjY2N004LjAwMDE2IDEyLjY2NjdMMTIuNjY2OCA4LjAwMDA0TTguMDAwMTYgMTIuNjY2N0wzLjMzMzUgOC4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzb3J0Q29sdW1OYW1lID09PSAnc3RvcmVOYW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiA+U3VibWl0dGVkIEJ5PHN2ZyAoY2xpY2spPVwic29ydERhdGEoJ3N1Ym1pdHRlZEJ5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRDb2x1bU5hbWUgPT09ICdzdWJtaXR0ZWRCeScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ3N1Ym1pdHRlZEJ5JyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN1Ym1pdHRlZCBUaW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkZsYWdzIFJhaXNlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgZmxhZ0RhdGEgb2YgY2hlY2tsaXN0UmVwb3J0c1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZmxhZ0RhdGEuaXNTZWxlY3RlZFwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hlY2tib3hDaGVja2VkKCRldmVudClcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGFcIj57e2ZsYWdEYXRhPy5zdWJtaXR0ZWREYXRlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhXCI+e3tmbGFnRGF0YT8uY2hlY2tMaXN0TmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLWRhcmtcIj57e2ZsYWdEYXRhPy5zdG9yZU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsYWdEYXRhPy5zdWJtaXR0ZWRCeUNoYXIgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YVwiPnt7ZmxhZ0RhdGE/LnN1Ym1pdHRlZEJ5ID8gZmxhZ0RhdGE/LnN1Ym1pdHRlZEJ5IDogJy0tJ319PC9zcGFuPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YVwiPnt7ZmxhZ0RhdGE/LnN1Ym1pdHRlZFRpbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YVwiPnt7ZmxhZ0RhdGE/LmZsYWdDb3VudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblZpZXcoZmxhZ0RhdGEpXCIgY2xhc3M9XCJ0YWJsZS10aXRsZSBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpZXcgbWUtNCBjdXJzb3ItcG9pbnRlclwiPlZpZXcgQW5zd2Vyczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihyZXBvcnRzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRlZCcgJiYgY2hlY2tsaXN0UmVwb3J0cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBjbGFzcz1cInRleHQtc3RhcnRcIiBbaXRlbXNQZXJQYWdlXT1cIml0ZW1zUGVyUGFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIiBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihyZXBvcnRzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnIHx8IChyZXBvcnRzVGFibGVBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2luaXRpYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHJlcG9ydHNUYWJsZUFwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJyAmJiAhY2hlY2tsaXN0UmVwb3J0cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBteS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyY1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBDaGVja2xpc3QgUmVwb3J0cyBUYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPC9kaXY+Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0cy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvcmVwb3J0cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tsaXN0IHtcclxuICBjaGVja0xpc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBzb3VyY2VDaGVja0xpc3RfaWQ6IHN0cmluZztcclxuICAgIGNoZWNrTGlzdFR5cGU6IFwic3RvcmVvcGVuYW5kY2xvc2VcIiB8IFwibW9iaWxldXNhZ2VkZXRlY3Rpb25cIiB8IFwidW5pZm9ybWRldGVjdGlvblwiIHwgXCJjdXN0b21cIiB8IFwiY3VzdG9tZXJ1bmF0dGVuZGVkXCIgfCBcInN0YWZmbGVmdGludGhlbWlkZGxlXCI7XHJcbiAgICBjcmVhdGVkQnlOYW1lOiBzdHJpbmc7XHJcbiAgICBzdG9yZUNvdW50OiBudW1iZXI7XHJcbiAgICBzY2hlZHVsZVJlcGVhdGVkVHlwZTogc3RyaW5nO1xyXG4gICAgc2NoZWR1bGVTdGFydFRpbWU6IHN0cmluZztcclxuICAgIHNjaGVkdWxlRW5kVGltZTogc3RyaW5nO1xyXG4gICAgcHVibGlzaDogYm9vbGVhbjtcclxuICB9XHJcblxyXG4gIGludGVyZmFjZSBEYXRlUmFuZ2Uge1xyXG4gICAgc3RhcnREYXRlOiBzdHJpbmc7XHJcbiAgICBlbmREYXRlOiBzdHJpbmc7XHJcbiAgfVxyXG4gIFxyXG4gIGludGVyZmFjZSBTdG9yZSB7XHJcbiAgICBzdG9yZUlkOiBzdHJpbmc7XHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZztcclxuICAgIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgfVxyXG4gIFxyXG4gIGludGVyZmFjZSBHcm91cCB7XHJcbiAgICBjaXR5OiBzdHJpbmc7XHJcbiAgICBjaGVja2VkOiBib29sZWFuO1xyXG4gIH1cclxuICBcclxuIGV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyRmlsdGVyIHtcclxuICAgIGNsaWVudDogc3RyaW5nO1xyXG4gICAgY2xpZW50TmFtZTogc3RyaW5nO1xyXG4gICAgY2xpZW50czogc3RyaW5nW107XHJcbiAgICBzdG9yZTogbnVsbCB8IHN0cmluZztcclxuICAgIGRhdGU6IERhdGVSYW5nZTtcclxuICAgIHN0b3JlczogU3RvcmVbXTtcclxuICAgIGdyb3VwOiBHcm91cFtdO1xyXG4gIH1cclxuXHJcbiBleHBvcnQgaW50ZXJmYWNlIGNoZWNrTGlzdFJlcG9ydCB7XHJcbiAgICBzdWJtaXR0ZWREYXRlOiBzdHJpbmc7XHJcbiAgICBjaGVja0xpc3ROYW1lOiBzdHJpbmc7XHJcbiAgICBzdG9yZU5hbWU6IHN0cmluZztcclxuICAgIHN1Ym1pdHRlZEJ5OiBzdHJpbmc7XHJcbiAgICBzdWJtaXR0ZWRCeUNoYXI6IHN0cmluZztcclxuICAgIHN1Ym1pdHRlZFRpbWU6IHN0cmluZztcclxuICAgIGZsYWdDb3VudDogbnVtYmVyO1xyXG4gICAgaXNTZWxlY3RlZDpib29sZWFuO1xyXG4gICAgc3RvcmVfaWQ6c3RyaW5nO1xyXG4gICAgX2lkOnN0cmluZ1xyXG4gIH0iXX0=
@@ -1,11 +1,32 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/router";
4
+ import * as i2 from "tango-app-ui-global";
3
5
  export class TangoAnalyseTraxComponent {
4
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TangoAnalyseTraxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: TangoAnalyseTraxComponent, selector: "lib-tango-analyse-trax", ngImport: i0, template: "<p>tango-analyse-trax works!</p>\r\n", styles: [""] });
6
+ router;
7
+ pageInfo;
8
+ url;
9
+ constructor(router, pageInfo) {
10
+ this.router = router;
11
+ this.pageInfo = pageInfo;
12
+ this.url = this.router.url.split('/');
13
+ console.log(this.url, 'url');
14
+ }
15
+ ngOnInit() {
16
+ this.setPageData();
17
+ }
18
+ setPageData() {
19
+ this.pageInfo.setTitle("Tango Trax");
20
+ this.pageInfo.setDescription("Automate or create checklists to improve operational efficiency");
21
+ this.pageInfo.setBreadcrumbs([
22
+ { title: "", path: "/manage", isActive: false, isSeparator: false },
23
+ ]);
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoAnalyseTraxComponent, deps: [{ token: i1.Router }, { token: i2.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TangoAnalyseTraxComponent, selector: "lib-tango-analyse-trax", ngImport: i0, template: "<p>tango-analyse-trax works!</p>\r\n", styles: [".nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"] });
6
27
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: TangoAnalyseTraxComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoAnalyseTraxComponent, decorators: [{
8
29
  type: Component,
9
- args: [{ selector: 'lib-tango-analyse-trax', template: "<p>tango-analyse-trax works!</p>\r\n" }]
10
- }] });
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYW5hbHlzZS10cmF4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYW5hbHlzZS10cmF4L3RhbmdvLWFuYWx5c2UtdHJheC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLWFuYWx5c2UtdHJheC90YW5nby1hbmFseXNlLXRyYXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPMUMsTUFBTSxPQUFPLHlCQUF5Qjt3R0FBekIseUJBQXlCOzRGQUF6Qix5QkFBeUIsOERDUHRDLHNDQUNBOzs0RkRNYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YW5nby1hbmFseXNlLXRyYXgnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90YW5nby1hbmFseXNlLXRyYXguY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi90YW5nby1hbmFseXNlLXRyYXguY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYW5nb0FuYWx5c2VUcmF4Q29tcG9uZW50IHtcclxuXHJcbn1cclxuIiwiPHA+dGFuZ28tYW5hbHlzZS10cmF4IHdvcmtzITwvcD5cclxuIl19
30
+ args: [{ selector: 'lib-tango-analyse-trax', template: "<p>tango-analyse-trax works!</p>\r\n", styles: [".nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}\n"] }]
31
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.PageInfoService }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYW5hbHlzZS10cmF4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvdGFuZ28tYW5hbHlzZS10cmF4L3RhbmdvLWFuYWx5c2UtdHJheC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLWFuYWx5c2UtdHJheC90YW5nby1hbmFseXNlLXRyYXguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7OztBQVNsRCxNQUFNLE9BQU8seUJBQXlCO0lBR2hCO0lBQXNCO0lBRjFDLEdBQUcsQ0FBTTtJQUVULFlBQW9CLE1BQWEsRUFBUyxRQUF3QjtRQUE5QyxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDaEUsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFQyxXQUFXO1FBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUVBQWlFLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUMzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7U0FDcEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FuQlUseUJBQXlCOzRGQUF6Qix5QkFBeUIsOERDVHRDLHNDQUNBOzs0RkRRYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhbmdvLWFuYWx5c2UtdHJheCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhbmdvLWFuYWx5c2UtdHJheC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3RhbmdvLWFuYWx5c2UtdHJheC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhbmdvQW5hbHlzZVRyYXhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgdXJsOmFueSA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIHBhZ2VJbmZvOlBhZ2VJbmZvU2VydmljZSl7XHJcbiAgICB0aGlzLnVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xyXG4gICAgY29uc29sZS5sb2codGhpcy51cmwsJ3VybCcpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICB9XHJcblxyXG4gICAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiVGFuZ28gVHJheFwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJBdXRvbWF0ZSBvciBjcmVhdGUgY2hlY2tsaXN0cyB0byBpbXByb3ZlIG9wZXJhdGlvbmFsIGVmZmljaWVuY3lcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgeyB0aXRsZTogXCJcIiwgcGF0aDogXCIvbWFuYWdlXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxwPnRhbmdvLWFuYWx5c2UtdHJheCB3b3JrcyE8L3A+XHJcbiJdfQ==