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.
- package/esm2022/lib/components/action-centre/action-centre.component.mjs +303 -0
- package/esm2022/lib/components/activity-log/activity-log.component.mjs +94 -0
- package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +1439 -0
- package/esm2022/lib/components/checklist/checklist.component.mjs +252 -0
- package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +1954 -0
- package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +12 -0
- package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +84 -0
- package/esm2022/lib/components/create-task/create-task.component.mjs +367 -0
- package/esm2022/lib/components/create-task/create-task.data.mjs +306 -0
- package/esm2022/lib/components/create-task/create-task.interface.mjs +2 -0
- package/esm2022/lib/components/custom-select/custom-select.component.mjs +236 -0
- package/esm2022/lib/components/dashboard/dashboard.component.mjs +597 -0
- package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +635 -0
- package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +172 -0
- package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +12 -0
- package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +119 -0
- package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +12 -0
- package/esm2022/lib/components/flags/flags.component.mjs +257 -0
- package/esm2022/lib/components/flags/flags.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +388 -0
- package/esm2022/lib/components/flags-info/flags-info.interface.mjs +2 -0
- package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +71 -0
- package/esm2022/lib/components/gallery/gallery.component.mjs +1181 -0
- package/esm2022/lib/components/group-select/group-select.component.mjs +155 -0
- package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +172 -0
- package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +117 -0
- package/esm2022/lib/components/orders/orders.component.mjs +171 -0
- package/esm2022/lib/components/pagination/pagination.component.mjs +62 -0
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +105 -0
- package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +60 -0
- package/esm2022/lib/components/reports/reports.component.mjs +299 -0
- package/esm2022/lib/components/reports/reports.interface.mjs +2 -0
- package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +27 -6
- package/esm2022/lib/components/task/task.component.mjs +271 -0
- package/esm2022/lib/components/task-configure/task-configure.component.mjs +504 -0
- package/esm2022/lib/components/task-configure/task-configure.interface.mjs +2 -0
- package/esm2022/lib/components/task-info/task-info.component.mjs +300 -0
- package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +203 -0
- package/esm2022/lib/components/task-layout/task-layout.component.mjs +12 -0
- package/esm2022/lib/components/trax-store/trax-store.component.mjs +153 -0
- package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +67 -0
- package/esm2022/lib/services/trax.service.mjs +334 -0
- package/esm2022/lib/tango-analyse-trax-routing.module.mjs +124 -6
- package/esm2022/lib/tango-analyse-trax.module.mjs +144 -9
- package/fesm2022/tango-app-ui-analyse-trax.mjs +11412 -21
- package/fesm2022/tango-app-ui-analyse-trax.mjs.map +1 -1
- package/lib/components/action-centre/action-centre.component.d.ts +56 -0
- package/lib/components/activity-log/activity-log.component.d.ts +30 -0
- package/lib/components/add-checklist/add-checklist.component.d.ts +99 -0
- package/lib/components/checklist/checklist.component.d.ts +39 -0
- package/lib/components/checklist-configure/checklist-configure.component.d.ts +160 -0
- package/lib/components/checklistlayout/checklistlayout.component.d.ts +5 -0
- package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +24 -0
- package/lib/components/create-task/create-task.component.d.ts +58 -0
- package/lib/components/create-task/create-task.data.d.ts +244 -0
- package/lib/components/create-task/create-task.interface.d.ts +147 -0
- package/lib/components/custom-select/custom-select.component.d.ts +35 -0
- package/lib/components/dashboard/dashboard.component.d.ts +75 -0
- package/lib/components/dashboard-info/dashboard-info.component.d.ts +102 -0
- package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +40 -0
- package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +5 -0
- package/lib/components/export-gallery/export-gallery.component.d.ts +33 -0
- package/lib/components/flag-layout/flag-layout.component.d.ts +5 -0
- package/lib/components/flags/flags.component.d.ts +51 -0
- package/lib/components/flags/flags.interface.d.ts +64 -0
- package/lib/components/flags-info/flags-info.component.d.ts +62 -0
- package/lib/components/flags-info/flags-info.interface.d.ts +212 -0
- package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +13 -0
- package/lib/components/gallery/gallery.component.d.ts +125 -0
- package/lib/components/group-select/group-select.component.d.ts +33 -0
- package/lib/components/managechecklist/managechecklist.component.d.ts +32 -0
- package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +27 -0
- package/lib/components/orders/orders.component.d.ts +38 -0
- package/lib/components/pagination/pagination.component.d.ts +16 -0
- package/lib/components/reactive-select/reactive-select.component.d.ts +32 -0
- package/lib/components/reports/date-picker/date-picker.component.d.ts +23 -0
- package/lib/components/reports/reports.component.d.ts +55 -0
- package/lib/components/reports/reports.interface.d.ts +46 -0
- package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +10 -1
- package/lib/components/task/task.component.d.ts +59 -0
- package/lib/components/task-configure/task-configure.component.d.ts +69 -0
- package/lib/components/task-configure/task-configure.interface.d.ts +124 -0
- package/lib/components/task-info/task-info.component.d.ts +68 -0
- package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +60 -0
- package/lib/components/task-layout/task-layout.component.d.ts +5 -0
- package/lib/components/trax-store/trax-store.component.d.ts +44 -0
- package/lib/components/traxpopup/traxpopup.component.d.ts +23 -0
- package/lib/services/trax.service.d.ts +107 -0
- package/lib/tango-analyse-trax.module.d.ts +42 -3
- package/package.json +1 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject, debounceTime, takeUntil } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "tango-app-ui-global";
|
|
5
|
+
import * as i2 from "../../services/trax.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
export class ActivityLogComponent {
|
|
8
|
+
gs;
|
|
9
|
+
pageInfo;
|
|
10
|
+
TraxService;
|
|
11
|
+
changeDetector;
|
|
12
|
+
destroy$ = new Subject();
|
|
13
|
+
headerData;
|
|
14
|
+
activityLogLoading = true;
|
|
15
|
+
activityLogNoData = false;
|
|
16
|
+
itemsPerPage = 10;
|
|
17
|
+
currentPage = 1;
|
|
18
|
+
sortColumName = '';
|
|
19
|
+
sortBy = '';
|
|
20
|
+
sortDirection = '';
|
|
21
|
+
totalItems = 0;
|
|
22
|
+
paginationSizes = [];
|
|
23
|
+
pageSize = 10;
|
|
24
|
+
activityLog = [];
|
|
25
|
+
constructor(gs, pageInfo, TraxService, changeDetector) {
|
|
26
|
+
this.gs = gs;
|
|
27
|
+
this.pageInfo = pageInfo;
|
|
28
|
+
this.TraxService = TraxService;
|
|
29
|
+
this.changeDetector = changeDetector;
|
|
30
|
+
}
|
|
31
|
+
ngOnDestroy() {
|
|
32
|
+
this.destroy$.next(true);
|
|
33
|
+
this.destroy$.complete();
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() {
|
|
36
|
+
this.gs.dataRangeValue
|
|
37
|
+
.pipe(takeUntil(this.destroy$), debounceTime(300))
|
|
38
|
+
.subscribe((data) => {
|
|
39
|
+
this.headerData = data;
|
|
40
|
+
this.setPageData();
|
|
41
|
+
this.getActivityLog();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
setPageData() {
|
|
45
|
+
this.pageInfo.setTitle("Dashboard");
|
|
46
|
+
// this.pageInfo.setDescription("Dashboard");
|
|
47
|
+
this.pageInfo.setBreadcrumbs([
|
|
48
|
+
{ title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: false },
|
|
49
|
+
{ title: "Tango Trax", path: "/manage/trax/dashboard", isActive: false, isSeparator: true },
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
getActivityLog() {
|
|
53
|
+
// this.searchDisabled = true;
|
|
54
|
+
this.activityLogLoading = true;
|
|
55
|
+
this.activityLogNoData = true;
|
|
56
|
+
const requestData = {
|
|
57
|
+
fromDate: this.headerData.date.startDate,
|
|
58
|
+
toDate: this.headerData.date.endDate,
|
|
59
|
+
storeId: this.headerData.stores.filter((store) => store.checked).map((store) => store.storeId),
|
|
60
|
+
clientId: this.headerData.client,
|
|
61
|
+
};
|
|
62
|
+
this.TraxService.getActivityLog(requestData)
|
|
63
|
+
.pipe(takeUntil(this.destroy$))
|
|
64
|
+
.subscribe((response) => {
|
|
65
|
+
this.activityLogLoading = false;
|
|
66
|
+
if (response?.code === 200 && response?.status === "success") {
|
|
67
|
+
this.activityLog = response.data.activityLog || [];
|
|
68
|
+
this.totalItems = response.data.totalCount;
|
|
69
|
+
// this.setPaginationSizes()
|
|
70
|
+
this.activityLogLoading = false;
|
|
71
|
+
this.activityLogNoData = false;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log("else");
|
|
75
|
+
this.activityLog = [];
|
|
76
|
+
this.activityLogLoading = false;
|
|
77
|
+
this.activityLogNoData = true;
|
|
78
|
+
this.activityLog = [];
|
|
79
|
+
this.totalItems = 0;
|
|
80
|
+
this.changeDetector.detectChanges();
|
|
81
|
+
}
|
|
82
|
+
}, error => {
|
|
83
|
+
this.activityLog = [];
|
|
84
|
+
this.changeDetector.detectChanges();
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogComponent, deps: [{ token: i1.GlobalStateService }, { token: i1.PageInfoService }, { token: i2.TraxService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
88
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogComponent, selector: "lib-activity-log", ngImport: i0, template: "<div class=\"col-md-12\">\r\n <div class=\"row cardscroll\">\r\n <div class=\"col-6\">\r\n <div class=\"timeline-label\">\r\n <div *ngFor=\"let log of activityLog; let i = index\" class=\"timeline-item mb-6\"\r\n [ngClass]=\"{'d-none': i % 2 !== 0}\">\r\n <div class=\"timeline-badge mx-1\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\"\r\n fill=\"none\">\r\n <circle cx=\"6.5\" cy=\"7\" r=\"5\"\r\n [attr.stroke]=\"log.status === 'lapsed' ? '#F04438' : '#12B76A'\"\r\n stroke-width=\"3\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"logtextmain\">\r\n {{ log.storeName }}\r\n <span class=\"logtextsub mx-1\">{{ log.status | titlecase }}</span>\r\n <span class=\"logtextmain mx-1\">{{ log.checklistName }}</span>\r\n <span class=\"logtextsub mx-1\">at {{ log.createdAt }}</span>\r\n </div>\r\n <div *ngIf=\"log.status === 'submitted'\" class=\"mx-8 logview mx-16\">View</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"timeline-label\">\r\n <div *ngFor=\"let log of activityLog; let i = index\" class=\"timeline-item mb-6\"\r\n [ngClass]=\"{'d-none': i % 2 === 0}\">\r\n <div class=\"timeline-badge mx-1\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\"\r\n fill=\"none\">\r\n <circle cx=\"6.5\" cy=\"7\" r=\"5\"\r\n [attr.stroke]=\"log.status === 'submitted' ? '#12B76A' : '#F04438'\"\r\n stroke-width=\"3\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"logtextmain\">\r\n {{ log.storeName }}\r\n <span class=\"logtextsub mx-1\">{{ log.status | titlecase }}</span>\r\n <span class=\"logtextmain mx-1\">{{ log.checklistName }}</span>\r\n <span class=\"logtextsub mx-1\">at {{ log.createdAt }}</span>\r\n </div>\r\n <div *ngIf=\"log.status === 'submitted'\" class=\"mx-8 logview mx-16\">View</div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"activityLogLoading\">\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=\"activityLogNoData && !activityLogLoading\">\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 Performance Table\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>", styles: [".timeline-label{position:unset}.logtextmain{color:var(--Black, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:20px}.logtextsub{color:var(--Gray-400, #98A2B3);font-size:14px;font-style:normal;font-weight:400;line-height:20px}.logview{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.cardscroll{overflow-y:scroll;max-height:275px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TitleCasePipe, name: "titlecase" }] });
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{ selector: 'lib-activity-log', template: "<div class=\"col-md-12\">\r\n <div class=\"row cardscroll\">\r\n <div class=\"col-6\">\r\n <div class=\"timeline-label\">\r\n <div *ngFor=\"let log of activityLog; let i = index\" class=\"timeline-item mb-6\"\r\n [ngClass]=\"{'d-none': i % 2 !== 0}\">\r\n <div class=\"timeline-badge mx-1\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\"\r\n fill=\"none\">\r\n <circle cx=\"6.5\" cy=\"7\" r=\"5\"\r\n [attr.stroke]=\"log.status === 'lapsed' ? '#F04438' : '#12B76A'\"\r\n stroke-width=\"3\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"logtextmain\">\r\n {{ log.storeName }}\r\n <span class=\"logtextsub mx-1\">{{ log.status | titlecase }}</span>\r\n <span class=\"logtextmain mx-1\">{{ log.checklistName }}</span>\r\n <span class=\"logtextsub mx-1\">at {{ log.createdAt }}</span>\r\n </div>\r\n <div *ngIf=\"log.status === 'submitted'\" class=\"mx-8 logview mx-16\">View</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"timeline-label\">\r\n <div *ngFor=\"let log of activityLog; let i = index\" class=\"timeline-item mb-6\"\r\n [ngClass]=\"{'d-none': i % 2 === 0}\">\r\n <div class=\"timeline-badge mx-1\">\r\n <span>\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"14\" viewBox=\"0 0 13 14\"\r\n fill=\"none\">\r\n <circle cx=\"6.5\" cy=\"7\" r=\"5\"\r\n [attr.stroke]=\"log.status === 'submitted' ? '#12B76A' : '#F04438'\"\r\n stroke-width=\"3\" />\r\n </svg>\r\n </span>\r\n </div>\r\n <div class=\"logtextmain\">\r\n {{ log.storeName }}\r\n <span class=\"logtextsub mx-1\">{{ log.status | titlecase }}</span>\r\n <span class=\"logtextmain mx-1\">{{ log.checklistName }}</span>\r\n <span class=\"logtextsub mx-1\">at {{ log.createdAt }}</span>\r\n </div>\r\n <div *ngIf=\"log.status === 'submitted'\" class=\"mx-8 logview mx-16\">View</div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"activityLogLoading\">\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=\"activityLogNoData && !activityLogLoading\">\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 Performance Table\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>", styles: [".timeline-label{position:unset}.logtextmain{color:var(--Black, #101828);font-size:14px;font-style:normal;font-weight:600;line-height:20px}.logtextsub{color:var(--Gray-400, #98A2B3);font-size:14px;font-style:normal;font-weight:400;line-height:20px}.logview{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;text-decoration-line:underline;text-transform:capitalize}.cardscroll{overflow-y:scroll;max-height:275px}\n"] }]
|
|
93
|
+
}], ctorParameters: () => [{ type: i1.GlobalStateService }, { type: i1.PageInfoService }, { type: i2.TraxService }, { type: i0.ChangeDetectorRef }] });
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nL2FjdGl2aXR5LWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy9hY3Rpdml0eS1sb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWdDLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFNdEYsTUFBTSxPQUFPLG9CQUFvQjtJQWVaO0lBQStCO0lBQWtDO0lBQzFFO0lBZkYsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDakMsVUFBVSxDQUFNO0lBQ2hCLGtCQUFrQixHQUFZLElBQUksQ0FBQztJQUNuQyxpQkFBaUIsR0FBWSxLQUFLLENBQUM7SUFDbkMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtJQUNqQixXQUFXLEdBQUcsQ0FBQyxDQUFBO0lBQ2YsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUMzQixNQUFNLEdBQVEsRUFBRSxDQUFDO0lBQ2pCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFDeEIsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUNkLGVBQWUsR0FBUyxFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFHLEVBQUUsQ0FBQTtJQUNiLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFFeEIsWUFBbUIsRUFBc0IsRUFBUyxRQUF5QixFQUFTLFdBQXdCLEVBQ2xHLGNBQWlDO1FBRHhCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQVMsYUFBUSxHQUFSLFFB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QUssQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7Z0JBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFBO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFBO2FBQ3BDO1FBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUE7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBM0VVLG9CQUFvQjs0RkFBcEIsb0JBQW9CLHdEQ1RqQyxpOElBaUZNOzs0RkR4RU8sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjdGl2aXR5LWxvZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjdGl2aXR5LWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2FjdGl2aXR5LWxvZy5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGl2aXR5TG9nQ29tcG9uZW50IHtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBoZWFkZXJEYXRhOiBhbnk7XHJcbiAgYWN0aXZpdHlMb2dMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBhY3Rpdml0eUxvZ05vRGF0YTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1zUGVyUGFnZSA9IDEwXHJcbiAgY3VycmVudFBhZ2UgPSAxXHJcbiAgc29ydENvbHVtTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgc29ydEJ5OiBhbnkgPSAnJztcclxuICBzb3J0RGlyZWN0aW9uOiBhbnkgPSAnJztcclxuICB0b3RhbEl0ZW1zID0gMFxyXG4gIHBhZ2luYXRpb25TaXplczphbnlbXSA9IFtdO1xyXG4gIHBhZ2VTaXplID0gMTBcclxuICBhY3Rpdml0eUxvZzogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UscHJpdmF0ZSBwYWdlSW5mbzogUGFnZUluZm9TZXJ2aWNlLHByaXZhdGUgVHJheFNlcnZpY2U6IFRyYXhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2aXR5TG9nKClcclxufSlcclxufVxyXG4gIHNldFBhZ2VEYXRhKCkge1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRUaXRsZShcIkRhc2hib2FyZFwiKTtcclxuICAgIC8vIHRoaXMucGFnZUluZm8uc2V0RGVzY3JpcHRpb24oXCJEYXNoYm9hcmRcIik7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgeyB0aXRsZTogXCJUYW5nbyBUcmF4XCIsIHBhdGg6IFwiL21hbmFnZS90cmF4L2Rhc2hib2FyZFwiLCBpc0FjdGl2ZTogZmFsc2UsIGlzU2VwYXJhdG9yOiBmYWxzZSB9LFxyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IHRydWUgfSxcclxuICAgIF0pO1xyXG4gIH1cclxuICBnZXRBY3Rpdml0eUxvZygpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuc2VhcmNoRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5hY3Rpdml0eUxvZ0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5hY3Rpdml0eUxvZ05vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmhlYWRlckRhdGEuc3RvcmVzLmZpbHRlcigoc3RvcmU6YW55KSA9PiBzdG9yZS5jaGVja2VkKS5tYXAoKHN0b3JlOmFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIGNsaWVudElkOnRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuVHJheFNlcnZpY2UuZ2V0QWN0aXZpdHlMb2cocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWN0aXZpdHlMb2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2cgPSByZXNwb25zZS5kYXRhLmFjdGl2aXR5TG9nIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzcG9uc2UuZGF0YS50b3RhbENvdW50XHJcbiAgICAgICAgICAvLyB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpXHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ05vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImVsc2VcIik7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2cgPSBbXTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuYWN0aXZpdHlMb2cgPSBbXVxyXG4gICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gMFxyXG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgICAgICB9XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5TG9nID0gW11cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgY2FyZHNjcm9sbFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxvZyBvZiBhY3Rpdml0eUxvZzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidGltZWxpbmUtaXRlbSBtYi02XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Qtbm9uZSc6IGkgJSAyICE9PSAwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1iYWRnZSBteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxMyAxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNi41XCIgY3k9XCI3XCIgcj1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwibG9nLnN0YXR1cyA9PT0gJ2xhcHNlZCcgPyAnI0YwNDQzOCcgOiAnIzEyQjc2QSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ3RleHRtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZy5zdG9yZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2d0ZXh0c3ViIG14LTFcIj57eyBsb2cuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvZ3RleHRtYWluIG14LTFcIj57eyBsb2cuY2hlY2tsaXN0TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2d0ZXh0c3ViIG14LTFcIj5hdCB7eyBsb2cuY3JlYXRlZEF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2cuc3RhdHVzID09PSAnc3VibWl0dGVkJ1wiIGNsYXNzPVwibXgtOCBsb2d2aWV3IG14LTE2XCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxvZyBvZiBhY3Rpdml0eUxvZzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidGltZWxpbmUtaXRlbSBtYi02XCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Qtbm9uZSc6IGkgJSAyID09PSAwfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aW1lbGluZS1iYWRnZSBteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxMyAxNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNi41XCIgY3k9XCI3XCIgcj1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwibG9nLnN0YXR1cyA9PT0gJ3N1Ym1pdHRlZCcgPyAnIzEyQjc2QScgOiAnI0YwNDQzOCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIzXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ3RleHRtYWluXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGxvZy5zdG9yZU5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2d0ZXh0c3ViIG14LTFcIj57eyBsb2cuc3RhdHVzIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxvZ3RleHRtYWluIG14LTFcIj57eyBsb2cuY2hlY2tsaXN0TmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2d0ZXh0c3ViIG14LTFcIj5hdCB7eyBsb2cuY3JlYXRlZEF0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2cuc3RhdHVzID09PSAnc3VibWl0dGVkJ1wiIGNsYXNzPVwibXgtOCBsb2d2aWV3IG14LTE2XCI+VmlldzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpdml0eUxvZ0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3Rpdml0eUxvZ05vRGF0YSAmJiAhYWN0aXZpdHlMb2dMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTIgbXktNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBQZXJmb3JtYW5jZSBUYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|