tango-app-ui-manage-tickets 3.7.0-beta.28 → 3.7.0-beta.29

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 (23) hide show
  1. package/esm2022/lib/components/audit-mapping-list/audit-mapping-list.component.mjs +498 -0
  2. package/esm2022/lib/components/remove-audit/remove-audit.component.mjs +80 -0
  3. package/esm2022/lib/components/start-audit/start-audit.component.mjs +738 -0
  4. package/esm2022/lib/components/ticket-footfall-new/ticket-footfall-new.component.mjs +200 -53
  5. package/esm2022/lib/components/tickets/tickets.component.mjs +3 -3
  6. package/esm2022/lib/components/viewcategory/viewcategory.component.mjs +89 -0
  7. package/esm2022/lib/services/audit.service.mjs +85 -0
  8. package/esm2022/lib/services/ticket.service.mjs +4 -1
  9. package/esm2022/lib/services/timer.service.mjs +84 -0
  10. package/esm2022/lib/tango-manage-tickets-routing.module.mjs +11 -1
  11. package/esm2022/lib/tango-manage-tickets.module.mjs +23 -3
  12. package/fesm2022/tango-app-ui-manage-tickets.mjs +1759 -56
  13. package/fesm2022/tango-app-ui-manage-tickets.mjs.map +1 -1
  14. package/lib/components/audit-mapping-list/audit-mapping-list.component.d.ts +72 -0
  15. package/lib/components/remove-audit/remove-audit.component.d.ts +16 -0
  16. package/lib/components/start-audit/start-audit.component.d.ts +86 -0
  17. package/lib/components/ticket-footfall-new/ticket-footfall-new.component.d.ts +18 -7
  18. package/lib/components/viewcategory/viewcategory.component.d.ts +16 -0
  19. package/lib/services/audit.service.d.ts +34 -0
  20. package/lib/services/ticket.service.d.ts +1 -0
  21. package/lib/services/timer.service.d.ts +22 -0
  22. package/lib/tango-manage-tickets.module.d.ts +15 -9
  23. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as LZString from 'lz-string';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
5
+ import * as i2 from "@angular/common";
6
+ export class RemoveAuditComponent {
7
+ modalService;
8
+ activeModal;
9
+ imagelist = [];
10
+ maindata;
11
+ data;
12
+ constructor(modalService, activeModal) {
13
+ this.modalService = modalService;
14
+ this.activeModal = activeModal;
15
+ }
16
+ ngOnInit() {
17
+ if (this.data) {
18
+ this.maindata = this.data;
19
+ this.imagelist = this.data.mappedid;
20
+ }
21
+ }
22
+ removeimage(data) {
23
+ this.imagelist.splice(this.imagelist.findIndex(({ img_name }) => img_name == data.img_name), 1);
24
+ this.maindata.mappedid = this.imagelist;
25
+ this.maindata.count = this.maindata.count - 1;
26
+ var framedobj = {};
27
+ framedobj.img_name = data.img_name;
28
+ framedobj.img_id = data.img_id;
29
+ framedobj.img_path = data.img_path;
30
+ framedobj.mappedid = [{
31
+ img_name: data.img_name,
32
+ img_id: data.img_id,
33
+ img_path: data.img_path
34
+ }];
35
+ framedobj.count = 1;
36
+ framedobj.selected = false;
37
+ framedobj.demographic = "";
38
+ framedobj.dropped = false;
39
+ let stringifydata = sessionStorage.getItem('audit') || '{}';
40
+ const decompressedData = LZString.decompress(stringifydata);
41
+ var customer = JSON.parse(decompressedData || '{}');
42
+ var foundIndex = customer.findIndex((x) => x.img_id == this.maindata.img_id);
43
+ if (foundIndex == -1) {
44
+ var retag = JSON.parse(sessionStorage.getItem('retag') || '{}');
45
+ var newindex = retag.findIndex((x) => x.img_id == this.maindata.img_id);
46
+ retag[newindex] = this.maindata;
47
+ retag.push(framedobj);
48
+ sessionStorage.setItem('retag', JSON.stringify(retag));
49
+ }
50
+ else {
51
+ customer[foundIndex] = this.maindata;
52
+ customer.push(framedobj);
53
+ const jsonString = JSON.stringify(customer);
54
+ const compressedData = LZString.compress(jsonString);
55
+ sessionStorage.setItem('audit', compressedData);
56
+ }
57
+ console.log(this.maindata);
58
+ if ('duplicate' in sessionStorage) {
59
+ let filedata = JSON.parse(sessionStorage.getItem('duplicate') || '{}');
60
+ let filterData = filedata.filter((x) => x.img_id == this.maindata.img_id);
61
+ console.log(filterData);
62
+ sessionStorage.setItem('duplicate', JSON.stringify(filterData));
63
+ }
64
+ if (this.imagelist.length == 1) {
65
+ this.activeModal.close({ reload: true });
66
+ }
67
+ }
68
+ closepopup() {
69
+ this.activeModal.close({ reload: true });
70
+ }
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RemoveAuditComponent, deps: [{ token: i1.NgbModal }, { token: i1.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RemoveAuditComponent, selector: "lib-remove-audit", inputs: { data: "data" }, ngImport: i0, template: "<div class=\"modal-body mt-5\">\r\n <div class=\" d-flex\">\r\n <div class=\"d-flex justify-content-between w-100\">\r\n <div class=\"d-flex flex-column\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n <div class=\"fs-2 text-dark fw-bolder my-3 mx-7\"> <span class=\"card-label fw-bold text-dark\">\r\n {{maindata?.detectionType ? maindata?.detectionType : 'Customer' }} Files -\r\n <span>{{maindata?.count}}</span></span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-sm btn-icon btn-active-color-primary me-5\" (click)=\"closepopup()\" data-bs-dismiss=\"modal\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"6\" y=\"17.3137\" width=\"16\" height=\"2\" rx=\"1\" transform=\"rotate(-45 6 17.3137)\"\r\n fill=\"black\"></rect>\r\n <rect x=\"7.41422\" y=\"6\" width=\"16\" height=\"2\" rx=\"1\" transform=\"rotate(45 7.41422 6)\" fill=\"black\">\r\n </rect>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row mx-3\">\r\n <div class=\"col-md-12 item scroll-y\">\r\n <div class=\"item\" *ngFor=\"let item of imagelist;let i=index\" style=\"padding: 10px;\">\r\n\r\n <img class=\"mx-3 mb-3 img\" [src]=\"item.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span *ngIf=\"i\" class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".img{width:95px;height:200px}.item{position:relative;padding-top:20px;display:inline-block;max-height:595px}.scroll-y{overflow-y:auto!important;position:relative!important}.notify-badge1{position:absolute;right:14px;top:5px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 8px;font-size:20px}\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"] }] });
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RemoveAuditComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'lib-remove-audit', template: "<div class=\"modal-body mt-5\">\r\n <div class=\" d-flex\">\r\n <div class=\"d-flex justify-content-between w-100\">\r\n <div class=\"d-flex flex-column\">\r\n <div class=\"d-flex align-items-center mb-2\">\r\n <div class=\"fs-2 text-dark fw-bolder my-3 mx-7\"> <span class=\"card-label fw-bold text-dark\">\r\n {{maindata?.detectionType ? maindata?.detectionType : 'Customer' }} Files -\r\n <span>{{maindata?.count}}</span></span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"btn btn-sm btn-icon btn-active-color-primary me-5\" (click)=\"closepopup()\" data-bs-dismiss=\"modal\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"6\" y=\"17.3137\" width=\"16\" height=\"2\" rx=\"1\" transform=\"rotate(-45 6 17.3137)\"\r\n fill=\"black\"></rect>\r\n <rect x=\"7.41422\" y=\"6\" width=\"16\" height=\"2\" rx=\"1\" transform=\"rotate(45 7.41422 6)\" fill=\"black\">\r\n </rect>\r\n </svg>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"card-body\">\r\n <div class=\"row mx-3\">\r\n <div class=\"col-md-12 item scroll-y\">\r\n <div class=\"item\" *ngFor=\"let item of imagelist;let i=index\" style=\"padding: 10px;\">\r\n\r\n <img class=\"mx-3 mb-3 img\" [src]=\"item.img_path\">\r\n <div class=\"text-center m-0 fs-7 fw-bold\">{{item.img_name}}</div>\r\n <span *ngIf=\"i\" class=\"notify-badge1 cursor-pointer\" (click)=\"removeimage(item)\"><i class=\"fa fa-close\" aria-hidden=\"true\"\r\n style=\"font-size:15px;color:#00A3FF\"></i>\r\n </span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".img{width:95px;height:200px}.item{position:relative;padding-top:20px;display:inline-block;max-height:595px}.scroll-y{overflow-y:auto!important;position:relative!important}.notify-badge1{position:absolute;right:14px;top:5px;background:var(--Primary-50, #EAF8FF);text-align:center;border-radius:6px;color:#00a3ff;border:2px solid var(--Primary-600, #00A3FF);padding:0 8px;font-size:20px}\n"] }]
77
+ }], ctorParameters: () => [{ type: i1.NgbModal }, { type: i1.NgbActiveModal }], propDecorators: { data: [{
78
+ type: Input
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWF1ZGl0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9yZW1vdmUtYXVkaXQvcmVtb3ZlLWF1ZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS10aWNrZXRzL3NyYy9saWIvY29tcG9uZW50cy9yZW1vdmUtYXVkaXQvcmVtb3ZlLWF1ZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDOzs7O0FBT3RDLE1BQU0sT0FBTyxvQkFBb0I7SUFNWDtJQUErQjtJQUpuRCxTQUFTLEdBQVEsRUFBRSxDQUFBO0lBQ25CLFFBQVEsQ0FBTTtJQUNMLElBQUksQ0FBTTtJQUVuQixZQUFvQixZQUFzQixFQUFTLFdBQTJCO1FBQTFELGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO0lBQzlFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQVM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBd0IsRUFBRSxFQUFFLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMs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UUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzlFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDdkIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1NBQ2hFO1FBR0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUMxQztJQUNILENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO3dHQWxFVSxvQkFBb0I7NEZBQXBCLG9CQUFvQixrRkNUakMsK2tFQXFDTTs7NEZENUJPLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEdBUW5CLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCAqIGFzIExaU3RyaW5nIGZyb20gJ2x6LXN0cmluZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1yZW1vdmUtYXVkaXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZW1vdmUtYXVkaXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9yZW1vdmUtYXVkaXQuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZW1vdmVBdWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGltYWdlbGlzdDogYW55ID0gW11cclxuICBtYWluZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGRhdGE6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLCBwdWJsaWMgYWN0aXZlTW9kYWw6IE5nYkFjdGl2ZU1vZGFsKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5tYWluZGF0YSA9IHRoaXMuZGF0YVxyXG4gICAgICB0aGlzLmltYWdlbGlzdCA9IHRoaXMuZGF0YS5tYXBwZWRpZFxyXG4gICAgfVxyXG4gIH1cclxuICByZW1vdmVpbWFnZShkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuaW1hZ2VsaXN0LnNwbGljZSh0aGlzLmltYWdlbGlzdC5maW5kSW5kZXgoKHsgaW1nX25hbWUgfTogeyBpbWdfbmFtZTogc3RyaW5nIH0pID0+IGltZ19uYW1lID09IGRhdGEuaW1nX25hbWUpLCAxKTtcclxuICAgIHRoaXMubWFpbmRhdGEubWFwcGVkaWQgPSB0aGlzLmltYWdlbGlzdFxyXG4gICAgdGhpcy5tYWluZGF0YS5jb3VudCA9IHRoaXMubWFpbmRhdGEuY291bnQgLSAxXHJcbiAgICB2YXIgZnJhbWVkb2JqOiBhbnkgPSB7fVxyXG4gICAgZnJhbWVkb2JqLmltZ19uYW1lID0gZGF0YS5pbWdfbmFtZVxyXG4gICAgZnJhbWVkb2JqLmltZ19pZCA9IGRhdGEuaW1nX2lkXHJcbiAgICBmcmFtZWRvYmouaW1nX3BhdGggPSBkYXRhLmltZ19wYXRoXHJcbiAgICBmcmFtZWRvYmoubWFwcGVkaWQgPSBbe1xyXG4gICAgICBpbWdfbmFtZTogZGF0YS5pbWdfbmFtZSxcclxuICAgICAgaW1nX2lkOiBkYXRhLmltZ19pZCxcclxuICAgICAgaW1nX3BhdGg6IGRhdGEuaW1nX3BhdGhcclxuICAgIH1dXHJcbiAgICBmcmFtZWRvYmouY291bnQgPSAxXHJcbiAgICBmcmFtZWRvYmouc2VsZWN0ZWQgPSBmYWxzZVxyXG4gICAgZnJhbWVkb2JqLmRlbW9ncmFwaGljID0gXCJcIlxyXG4gICAgZnJhbWVkb2JqLmRyb3BwZWQgPSBmYWxzZVxyXG4gICAgbGV0IHN0cmluZ2lmeWRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhdWRpdCcpIHx8ICd7fSdcclxuICAgIGNvbnN0IGRlY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5kZWNvbXByZXNzKHN0cmluZ2lmeWRhdGEpO1xyXG4gICAgdmFyIGN1c3RvbWVyID0gSlNPTi5wYXJzZShkZWNvbXByZXNzZWREYXRhIHx8ICd7fScpXHJcbiAgICB2YXIgZm91bmRJbmRleCA9IGN1c3RvbWVyLmZpbmRJbmRleCgoeDogYW55KSA9PiB4LmltZ19pZCA9PSB0aGlzLm1haW5kYXRhLmltZ19pZCk7XHJcbiAgICBpZiAoZm91bmRJbmRleCA9PSAtMSkge1xyXG4gICAgICB2YXIgcmV0YWcgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ3JldGFnJykgfHwgJ3t9JylcclxuICAgICAgdmFyIG5ld2luZGV4ID0gcmV0YWcuZmluZEluZGV4KCh4OiBhbnkpID0+IHguaW1nX2lkID09IHRoaXMubWFpbmRhdGEuaW1nX2lkKTtcclxuICAgICAgcmV0YWdbbmV3aW5kZXhdID0gdGhpcy5tYWluZGF0YTtcclxuICAgICAgcmV0YWcucHVzaChmcmFtZWRvYmopXHJcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3JldGFnJywgSlNPTi5zdHJpbmdpZnkocmV0YWcpKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY3VzdG9tZXJbZm91bmRJbmRleF0gPSB0aGlzLm1haW5kYXRhO1xyXG4gICAgICBjdXN0b21lci5wdXNoKGZyYW1lZG9iailcclxuICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGN1c3RvbWVyKTtcclxuICAgICAgY29uc3QgY29tcHJlc3NlZERhdGEgPSBMWlN0cmluZy5jb21wcmVzcyhqc29uU3RyaW5nKTtcclxuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYXVkaXQnLCBjb21wcmVzc2VkRGF0YSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5tYWluZGF0YSlcclxuICAgIGlmICgnZHVwbGljYXRlJyBpbiBzZXNzaW9uU3RvcmFnZSkge1xyXG4gICAgICBsZXQgZmlsZWRhdGEgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2R1cGxpY2F0ZScpIHx8ICd7fScpXHJcbiAgICAgIGxldCBmaWx0ZXJEYXRhID0gZmlsZWRhdGEuZmlsdGVyKCh4OiBhbnkpID0+IHguaW1nX2lkID09IHRoaXMubWFpbmRhdGEuaW1nX2lkKVxyXG4gICAgICBjb25zb2xlLmxvZyhmaWx0ZXJEYXRhKVxyXG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdkdXBsaWNhdGUnLCBKU09OLnN0cmluZ2lmeShmaWx0ZXJEYXRhKSlcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWYgKHRoaXMuaW1hZ2VsaXN0Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTW9kYWwuY2xvc2UoeyByZWxvYWQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNsb3NlcG9wdXAoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU1vZGFsLmNsb3NlKHsgcmVsb2FkOiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbXQtNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIiBkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMiB0ZXh0LWRhcmsgZnctYm9sZGVyIG15LTMgbXgtN1wiPiA8c3BhbiBjbGFzcz1cImNhcmQtbGFiZWwgZnctYm9sZCB0ZXh0LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e21haW5kYXRhPy5kZXRlY3Rpb25UeXBlID8gbWFpbmRhdGE/LmRldGVjdGlvblR5cGUgOiAnQ3VzdG9tZXInIH19IEZpbGVzIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7bWFpbmRhdGE/LmNvdW50fX08L3NwYW4+PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeSBtZS01XCIgKGNsaWNrKT1cImNsb3NlcG9wdXAoKVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHJlY3Qgb3BhY2l0eT1cIjAuNVwiIHg9XCI2XCIgeT1cIjE3LjMxMzdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiIHRyYW5zZm9ybT1cInJvdGF0ZSgtNDUgNiAxNy4zMTM3KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJibGFja1wiPjwvcmVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8cmVjdCB4PVwiNy40MTQyMlwiIHk9XCI2XCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgNy40MTQyMiA2KVwiIGZpbGw9XCJibGFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcmVjdD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG14LTNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBpdGVtIHNjcm9sbC15XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGltYWdlbGlzdDtsZXQgaT1pbmRleFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIm14LTMgbWItMyBpbWdcIiBbc3JjXT1cIml0ZW0uaW1nX3BhdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbS0wIGZzLTcgZnctYm9sZFwiPnt7aXRlbS5pbWdfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpXCIgY2xhc3M9XCJub3RpZnktYmFkZ2UxIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInJlbW92ZWltYWdlKGl0ZW0pXCI+PGkgY2xhc3M9XCJmYSBmYS1jbG9zZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2NvbG9yOiMwMEEzRkZcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==