tango-app-ui-analyse-report 3.3.1-alpha.3 → 3.3.1-alpha.4

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 (40) hide show
  1. package/esm2022/lib/components/get-download-report/get-download-report.component.mjs +61 -0
  2. package/esm2022/lib/components/tango-analyse-report/tango-analyse-report.component.mjs +28 -0
  3. package/esm2022/lib/components/user-report/user-report.component.mjs +306 -0
  4. package/esm2022/lib/service/analysereport.service.mjs +68 -0
  5. package/esm2022/lib/tango-analyse-report-routing.module.mjs +24 -0
  6. package/esm2022/lib/tango-analyse-report.module.mjs +43 -0
  7. package/esm2022/public-api.mjs +6 -0
  8. package/esm2022/tango-app-ui-analyse-report.mjs +5 -0
  9. package/fesm2022/tango-app-ui-analyse-report.mjs +520 -0
  10. package/fesm2022/tango-app-ui-analyse-report.mjs.map +1 -0
  11. package/index.d.ts +5 -0
  12. package/lib/components/get-download-report/get-download-report.component.d.ts +17 -0
  13. package/lib/components/tango-analyse-report/tango-analyse-report.component.d.ts +11 -0
  14. package/lib/components/user-report/user-report.component.d.ts +61 -0
  15. package/lib/service/analysereport.service.d.ts +24 -0
  16. package/lib/tango-analyse-report-routing.module.d.ts +7 -0
  17. package/lib/tango-analyse-report.module.d.ts +14 -0
  18. package/package.json +25 -12
  19. package/{src/public-api.ts → public-api.d.ts} +2 -6
  20. package/.eslintrc.json +0 -37
  21. package/ng-package.json +0 -7
  22. package/src/lib/components/get-download-report/get-download-report.component.html +0 -15
  23. package/src/lib/components/get-download-report/get-download-report.component.scss +0 -6
  24. package/src/lib/components/get-download-report/get-download-report.component.spec.ts +0 -23
  25. package/src/lib/components/get-download-report/get-download-report.component.ts +0 -61
  26. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.html +0 -1
  27. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.scss +0 -0
  28. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.spec.ts +0 -23
  29. package/src/lib/components/tango-analyse-report/tango-analyse-report.component.ts +0 -26
  30. package/src/lib/components/user-report/user-report.component.html +0 -241
  31. package/src/lib/components/user-report/user-report.component.scss +0 -196
  32. package/src/lib/components/user-report/user-report.component.spec.ts +0 -23
  33. package/src/lib/components/user-report/user-report.component.ts +0 -296
  34. package/src/lib/service/analysereport.service.spec.ts +0 -16
  35. package/src/lib/service/analysereport.service.ts +0 -74
  36. package/src/lib/tango-analyse-report-routing.module.ts +0 -16
  37. package/src/lib/tango-analyse-report.module.ts +0 -28
  38. package/tsconfig.lib.json +0 -14
  39. package/tsconfig.lib.prod.json +0 -10
  40. package/tsconfig.spec.json +0 -14
@@ -0,0 +1,61 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../service/analysereport.service";
4
+ import * as i2 from "@angular/common";
5
+ export class GetDownloadReportComponent {
6
+ service;
7
+ data;
8
+ activeData;
9
+ reportList;
10
+ noData = false;
11
+ constructor(service) {
12
+ this.service = service;
13
+ }
14
+ ngOnInit() {
15
+ this.getReportList();
16
+ }
17
+ getReportList() {
18
+ let payload = {
19
+ fileDate: this.data?.fileDate,
20
+ clientId: this.data?.clientId
21
+ };
22
+ this.service.getReportList(payload).subscribe({
23
+ next: (res) => {
24
+ if (res && res.code === 200) {
25
+ this.reportList = res?.data?.result;
26
+ }
27
+ else {
28
+ this.noData = true;
29
+ }
30
+ },
31
+ complete: () => {
32
+ },
33
+ error: (err) => {
34
+ this.noData = true;
35
+ },
36
+ });
37
+ }
38
+ downLoadData(type) {
39
+ this.service.downloadReport(type).subscribe((res) => {
40
+ this.saveFile(res, type.split('/').pop());
41
+ });
42
+ }
43
+ saveFile(buffer, filename) {
44
+ const blob = new Blob([buffer], { type: 'application/octet-stream' });
45
+ const url = window.URL.createObjectURL(blob);
46
+ const anchor = document.createElement('a');
47
+ anchor.href = url;
48
+ anchor.download = filename;
49
+ anchor.click();
50
+ window.URL.revokeObjectURL(url);
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetDownloadReportComponent, deps: [{ token: i1.AnalysereportService }], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GetDownloadReportComponent, selector: "lib-get-download-report", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"card border-0\">\r\n <div class=\"card-header\">\r\n <span class=\"card-title\">Report History</span>\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"card-body\">\r\n <div *ngFor=\"let list of reportList\">\r\n <div class=\"DownloadReport mb-5 cursor-pointer\" (click)=\"downLoadData(list?.Key)\">{{list?.Key.split('/').splice(1).join('/')}}||{{list?.LastModified}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"card-body border-0\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div> \r\n </div>\r\n</div> \r\n", styles: [".DownloadReport{font-size:16px;font-weight:600;text-decoration:underline;color:#00a3ff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GetDownloadReportComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'lib-get-download-report', template: "<div class=\"card border-0\">\r\n <div class=\"card-header\">\r\n <span class=\"card-title\">Report History</span>\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"card-body\">\r\n <div *ngFor=\"let list of reportList\">\r\n <div class=\"DownloadReport mb-5 cursor-pointer\" (click)=\"downLoadData(list?.Key)\">{{list?.Key.split('/').splice(1).join('/')}}||{{list?.LastModified}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"card-body border-0\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div> \r\n </div>\r\n</div> \r\n", styles: [".DownloadReport{font-size:16px;font-weight:600;text-decoration:underline;color:#00a3ff}\n"] }]
58
+ }], ctorParameters: () => [{ type: i1.AnalysereportService }], propDecorators: { data: [{
59
+ type: Input
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWRvd25sb2FkLXJlcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXJlcG9ydC9zcmMvbGliL2NvbXBvbmVudHMvZ2V0LWRvd25sb2FkLXJlcG9ydC9nZXQtZG93bmxvYWQtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtcmVwb3J0L3NyYy9saWIvY29tcG9uZW50cy9nZXQtZG93bmxvYWQtcmVwb3J0L2dldC1kb3dubG9hZC1yZXBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFReEQsTUFBTSxPQUFPLDBCQUEwQjtJQU1uQjtJQUxULElBQUksQ0FBSztJQUNsQixVQUFVLENBQU07SUFDaEIsVUFBVSxDQUFNO0lBQ2hCLE1BQU0sR0FBVyxLQUFLLENBQUM7SUFFekIsWUFBb0IsT0FBNEI7UUFBNUIsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7SUFFaEQsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLE9BQU8sR0FBRztZQUNaLFFBQVEsRUFBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVE7WUFDOUIsUUFBUSxFQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUTtTQUMvQixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzVDLElBQUksRUFBQyxDQUFDLEdBQU8sRUFBRSxFQUFFO2dCQUNmLElBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO2lCQUNyQztxQkFBSTtvQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztpQkFDcEI7WUFDSCxDQUFDO1lBQ0QsUUFBUSxFQUFDLEdBQUUsRUFBRTtZQUViLENBQUM7WUFDRCxLQUFLLEVBQUMsQ0FBQyxHQUFHLEVBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFRO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFQSxRQUFRLENBQUMsTUFBbUIsRUFBRSxRQUFnQjtRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztRQUN0RSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7d0dBbERZLDBCQUEwQjs0RkFBMUIsMEJBQTBCLHlGQ1J2Qyw0dUJBZUE7OzRGRFBhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUI7eUZBSzFCLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCxJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5c2VyZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hbmFseXNlcmVwb3J0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZ2V0LWRvd25sb2FkLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dldC1kb3dubG9hZC1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9nZXQtZG93bmxvYWQtcmVwb3J0LmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR2V0RG93bmxvYWRSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGRhdGE6YW55O1xyXG4gIGFjdGl2ZURhdGE6IGFueTtcclxuICByZXBvcnRMaXN0OiBhbnk7XHJcbiAgbm9EYXRhOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbmNvbnN0cnVjdG9yKHByaXZhdGUgc2VydmljZTpBbmFseXNlcmVwb3J0U2VydmljZSl7XHJcblxyXG59XHJcblxyXG5uZ09uSW5pdCgpe1xyXG4gIHRoaXMuZ2V0UmVwb3J0TGlzdCgpO1xyXG59XHJcblxyXG5nZXRSZXBvcnRMaXN0KCl7XHJcbiAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICBmaWxlRGF0ZSA6IHRoaXMuZGF0YT8uZmlsZURhdGUsXHJcbiAgICBjbGllbnRJZCA6IHRoaXMuZGF0YT8uY2xpZW50SWRcclxuICB9XHJcbiAgdGhpcy5zZXJ2aWNlLmdldFJlcG9ydExpc3QocGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgIG5leHQ6KHJlczphbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcy5jb2RlID09PSAyMDApe1xyXG4gICAgICAgIHRoaXMucmVwb3J0TGlzdCA9IHJlcz8uZGF0YT8ucmVzdWx0O1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjb21wbGV0ZTooKT0+e1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIGVycm9yOihlcnIpPT57XHJcbiAgICAgIHRoaXMubm9EYXRhID0gdHJ1ZTtcclxuICAgIH0sXHJcbiAgfSlcclxufVxyXG5cclxuZG93bkxvYWREYXRhKHR5cGU6YW55KXtcclxuICB0aGlzLnNlcnZpY2UuZG93bmxvYWRSZXBvcnQodHlwZSkuc3Vic2NyaWJlKChyZXMpPT57XHJcbiAgICB0aGlzLnNhdmVGaWxlKHJlcywgdHlwZS5zcGxpdCgnLycpLnBvcCgpKVxyXG4gIH0pXHJcbn1cclxuXHJcbiBzYXZlRmlsZShidWZmZXI6IEFycmF5QnVmZmVyLCBmaWxlbmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xyXG4gIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gIGNvbnN0IGFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBhbmNob3IuaHJlZiA9IHVybDtcclxuICBhbmNob3IuZG93bmxvYWQgPSBmaWxlbmFtZTtcclxuICBhbmNob3IuY2xpY2soKTtcclxuICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG59XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmQtdGl0bGVcIj5SZXBvcnQgSGlzdG9yeTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGxpc3Qgb2YgcmVwb3J0TGlzdFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiRG93bmxvYWRSZXBvcnQgbWItNSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJkb3duTG9hZERhdGEobGlzdD8uS2V5KVwiPnt7bGlzdD8uS2V5LnNwbGl0KCcvJykuc3BsaWNlKDEpLmpvaW4oJy8nKX19fHx7e2xpc3Q/Lkxhc3RNb2RpZmllZH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJub0RhdGFcIiBjbGFzcz1cImNhcmQtYm9keSBib3JkZXItMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjIHctMjVcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+IFxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiBcclxuIl19
@@ -0,0 +1,28 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "tango-app-ui-global";
4
+ import * as i2 from "../user-report/user-report.component";
5
+ export class TangoAnalyseReportComponent {
6
+ pageInfo;
7
+ constructor(pageInfo) {
8
+ this.pageInfo = pageInfo;
9
+ }
10
+ ngOnInit() {
11
+ this.setPageData();
12
+ }
13
+ setPageData() {
14
+ this.pageInfo.setTitle('Reports');
15
+ this.pageInfo.setDescription('Reports');
16
+ this.pageInfo.setBreadcrumbs([
17
+ { title: 'Analyze', path: '/manage/traffic', isActive: false, isSeparator: false },
18
+ { title: 'Analyze', path: '/manage/traffic', isActive: false, isSeparator: true },
19
+ ]);
20
+ }
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoAnalyseReportComponent, deps: [{ token: i1.PageInfoService }], target: i0.ɵɵFactoryTarget.Component });
22
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TangoAnalyseReportComponent, selector: "lib-tango-analyse-report", ngImport: i0, template: "<lib-user-report></lib-user-report>", styles: [""], dependencies: [{ kind: "component", type: i2.UserReportComponent, selector: "lib-user-report" }] });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TangoAnalyseReportComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'lib-tango-analyse-report', template: "<lib-user-report></lib-user-report>" }]
27
+ }], ctorParameters: () => [{ type: i1.PageInfoService }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFuZ28tYW5hbHlzZS1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS1yZXBvcnQvc3JjL2xpYi9jb21wb25lbnRzL3RhbmdvLWFuYWx5c2UtcmVwb3J0L3RhbmdvLWFuYWx5c2UtcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtcmVwb3J0L3NyYy9saWIvY29tcG9uZW50cy90YW5nby1hbmFseXNlLXJlcG9ydC90YW5nby1hbmFseXNlLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7O0FBUWxELE1BQU0sT0FBTywyQkFBMkI7SUFFbkI7SUFBbkIsWUFBbUIsUUFBd0I7UUFBeEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7SUFBRyxDQUFDO0lBRS9DLFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVBLFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUMzQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTtZQUNsRixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtTQUNsRixDQUFDLENBQUE7SUFDSixDQUFDO3dHQWZVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLGdFQ1J4QyxxQ0FBbUM7OzRGRFF0QiwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10YW5nby1hbmFseXNlLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhbmdvLWFuYWx5c2UtcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vdGFuZ28tYW5hbHlzZS1yZXBvcnQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYW5nb0FuYWx5c2VSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFnZUluZm86UGFnZUluZm9TZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICB9XHJcblxyXG4gICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoJ1JlcG9ydHMnKVxyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbignUmVwb3J0cycpXHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldEJyZWFkY3J1bWJzKFtcclxuICAgICAgeyB0aXRsZTogJ0FuYWx5emUnLCBwYXRoOiAnL21hbmFnZS90cmFmZmljJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJ0FuYWx5emUnLCBwYXRoOiAnL21hbmFnZS90cmFmZmljJywgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9LFxyXG4gICAgXSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxsaWItdXNlci1yZXBvcnQ+PC9saWItdXNlci1yZXBvcnQ+Il19