ngx-techlify-checksheet 18.0.0 → 18.1.0

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 (44) hide show
  1. package/esm2022/lib/checksheet/checksheet-form/checksheet-form.component.mjs +88 -116
  2. package/esm2022/lib/checksheet/checksheet-form-button/checksheet-form-button.component.mjs +10 -12
  3. package/esm2022/lib/checksheet/checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component.mjs +56 -0
  4. package/esm2022/lib/checksheet/checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component.mjs +54 -0
  5. package/esm2022/lib/checksheet/checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component.mjs +68 -0
  6. package/esm2022/lib/checksheet/checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component.mjs +57 -0
  7. package/esm2022/lib/checksheet/checksheet-format/checksheet-format-view/checksheet-format-view.component.mjs +140 -0
  8. package/esm2022/lib/checksheet/checksheet-format-form/checksheet-format-form.component.mjs +136 -0
  9. package/esm2022/lib/checksheet/checksheet-format-list/checksheet-format-list.component.mjs +9 -67
  10. package/esm2022/lib/checksheet/checksheet-list/checksheet-list.component.mjs +28 -11
  11. package/esm2022/lib/checksheet/checksheet-list-widget/checksheet-list-widget.component.mjs +59 -0
  12. package/esm2022/lib/checksheet/checksheet-node-view/checksheet-node-view.component.mjs +24 -24
  13. package/esm2022/lib/checksheet/checksheet-question/checksheet-question.component.mjs +12 -13
  14. package/esm2022/lib/checksheet/checksheet-question-list/checksheet-question-list.component.mjs +7 -9
  15. package/esm2022/lib/checksheet/checksheet-report/checksheet-report.component.mjs +3 -3
  16. package/esm2022/lib/checksheet/checksheet-routing.module.mjs +6 -6
  17. package/esm2022/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.mjs +83 -17
  18. package/esm2022/lib/checksheet/checksheet-submission-list/checksheet-submission-list.component.mjs +5 -5
  19. package/esm2022/lib/checksheet/checksheet-submission-view/checksheet-submission-view.component.mjs +4 -4
  20. package/esm2022/lib/checksheet/checksheet.module.mjs +42 -20
  21. package/esm2022/public-api.mjs +2 -2
  22. package/fesm2022/ngx-techlify-checksheet.mjs +570 -359
  23. package/fesm2022/ngx-techlify-checksheet.mjs.map +1 -1
  24. package/lib/checksheet/checksheet-form/checksheet-form.component.d.ts +15 -34
  25. package/lib/checksheet/checksheet-form-button/checksheet-form-button.component.d.ts +3 -4
  26. package/lib/checksheet/checksheet-format/checksheet-format-copy-button/checksheet-format-copy-button.component.d.ts +16 -0
  27. package/lib/checksheet/checksheet-format/checksheet-format-delete-button/checksheet-format-delete-button.component.d.ts +16 -0
  28. package/lib/checksheet/checksheet-format/checksheet-format-publish-button/checksheet-format-publish-button.component.d.ts +18 -0
  29. package/lib/checksheet/checksheet-format/checksheet-format-unpublish-button/checksheet-format-unpublish-button.component.d.ts +16 -0
  30. package/lib/checksheet/{checksheet-view/checksheet-view.component.d.ts → checksheet-format/checksheet-format-view/checksheet-format-view.component.d.ts} +4 -4
  31. package/lib/checksheet/checksheet-format-form/checksheet-format-form.component.d.ts +45 -0
  32. package/lib/checksheet/checksheet-format-list/checksheet-format-list.component.d.ts +0 -3
  33. package/lib/checksheet/checksheet-list/checksheet-list.component.d.ts +5 -3
  34. package/lib/checksheet/checksheet-list-widget/checksheet-list-widget.component.d.ts +17 -0
  35. package/lib/checksheet/checksheet-node-view/checksheet-node-view.component.d.ts +2 -4
  36. package/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.d.ts +14 -4
  37. package/lib/checksheet/checksheet.module.d.ts +12 -7
  38. package/package.json +1 -1
  39. package/public-api.d.ts +1 -1
  40. package/esm2022/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.mjs +0 -131
  41. package/esm2022/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.mjs +0 -58
  42. package/esm2022/lib/checksheet/checksheet-view/checksheet-view.component.mjs +0 -140
  43. package/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.d.ts +0 -27
  44. package/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.d.ts +0 -29
@@ -0,0 +1,59 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { TechlifyListingControllerInterface } from 'ngx-techlify-core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../checksheet.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/router";
7
+ import * as i4 from "@angular/material/card";
8
+ import * as i5 from "@angular/material/progress-bar";
9
+ import * as i6 from "../checksheet-form-button/checksheet-form-button.component";
10
+ export class ChecksheetListWidgetComponent extends TechlifyListingControllerInterface {
11
+ service;
12
+ submittable;
13
+ submittableType;
14
+ title = 'Checksheets';
15
+ submittableTitleField = 'name';
16
+ showChecksheetButton = false;
17
+ constructor(service) {
18
+ super();
19
+ this.service = service;
20
+ this.perPage = 5;
21
+ }
22
+ ngOnInit() {
23
+ this.loadData();
24
+ }
25
+ loadData() {
26
+ const params = {
27
+ page: 1,
28
+ perPage: this.perPage,
29
+ submittable_type: this.submittableType,
30
+ submittable_ids: this.submittable?.id,
31
+ with: 'creator',
32
+ };
33
+ this.isWorking = true;
34
+ this.service.index(params).subscribe({
35
+ next: (response) => {
36
+ this.models = this.models.concat(response?.data);
37
+ this.isWorking = false;
38
+ },
39
+ error: () => { this.isWorking = false; }
40
+ });
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetListWidgetComponent, deps: [{ token: i1.ChecksheetService }], target: i0.ɵɵFactoryTarget.Component });
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetListWidgetComponent, selector: "app-checksheet-list-widget", inputs: { submittable: "submittable", submittableType: "submittableType", title: "title", submittableTitleField: "submittableTitleField", showChecksheetButton: "showChecksheetButton" }, usesInheritance: true, ngImport: i0, template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <h3 class=\"mb-0 fw-bold\">{{ title }}</h3>\n <span class=\"flex-fill\"></span>\n <app-checksheet-form-button *ngIf=\"showChecksheetButton\" [submittableType]=\"submittableType\"\n [submittableId]=\"submittable?.id\"></app-checksheet-form-button>\n </mat-card-content>\n <mat-card-content>\n <p class=\"mb-0\">Checksheets for <span class=\"badge bg-secondary\">{{ submittableType }}</span>\n # {{ submittable?.id }} : {{ submittable[submittableTitleField] }}\n </p>\n </mat-card-content>\n <mat-card-content>\n <a *ngFor=\"let model of models\" [routerLink]=\"['/checksheets/checksheets-view', model?.id]\"\n class=\"d-flex justify-content-start align-items-center gap-2 p-2 cursor-pointer text-decoration-none text-dark\">\n <span class=\"material-symbols-outlined fs-2\">\n article\n </span>\n <div class=\"d-flex flex-column gap-1\">\n <p class=\"mb-0\">on {{ model?.date | date }}</p>\n <small class=\"text-secondary\">By {{ model?.creator?.name }}</small>\n </div>\n </a>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6.ChecksheetFormButtonComponent, selector: "app-checksheet-form-button", inputs: ["submittableType", "submittableId"], outputs: ["saved"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetListWidgetComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'app-checksheet-list-widget', template: "<mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <h3 class=\"mb-0 fw-bold\">{{ title }}</h3>\n <span class=\"flex-fill\"></span>\n <app-checksheet-form-button *ngIf=\"showChecksheetButton\" [submittableType]=\"submittableType\"\n [submittableId]=\"submittable?.id\"></app-checksheet-form-button>\n </mat-card-content>\n <mat-card-content>\n <p class=\"mb-0\">Checksheets for <span class=\"badge bg-secondary\">{{ submittableType }}</span>\n # {{ submittable?.id }} : {{ submittable[submittableTitleField] }}\n </p>\n </mat-card-content>\n <mat-card-content>\n <a *ngFor=\"let model of models\" [routerLink]=\"['/checksheets/checksheets-view', model?.id]\"\n class=\"d-flex justify-content-start align-items-center gap-2 p-2 cursor-pointer text-decoration-none text-dark\">\n <span class=\"material-symbols-outlined fs-2\">\n article\n </span>\n <div class=\"d-flex flex-column gap-1\">\n <p class=\"mb-0\">on {{ model?.date | date }}</p>\n <small class=\"text-secondary\">By {{ model?.creator?.name }}</small>\n </div>\n </a>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n" }]
48
+ }], ctorParameters: () => [{ type: i1.ChecksheetService }], propDecorators: { submittable: [{
49
+ type: Input
50
+ }], submittableType: [{
51
+ type: Input
52
+ }], title: [{
53
+ type: Input
54
+ }], submittableTitleField: [{
55
+ type: Input
56
+ }], showChecksheetButton: [{
57
+ type: Input
58
+ }] } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1saXN0LXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1saXN0LXdpZGdldC9jaGVja3NoZWV0LWxpc3Qtd2lkZ2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWxpc3Qtd2lkZ2V0L2NoZWNrc2hlZXQtbGlzdC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtDQUFrQyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7O0FBUXJFLE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxrQ0FBa0M7SUFRekU7SUFQRCxXQUFXLENBQU07SUFDakIsZUFBZSxDQUFVO0lBQ3pCLEtBQUssR0FBVyxhQUFhLENBQUM7SUFDOUIscUJBQXFCLEdBQVcsTUFBTSxDQUFDO0lBQ3ZDLG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUUvQyxZQUNVLE9BQTBCO1FBRWxDLEtBQUssRUFBRSxDQUFDO1FBRkEsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFHbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVRLFFBQVE7UUFDZixNQUFNLE1BQU0sR0FBUTtZQUNsQixJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3JDLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUE7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbkMsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQWxDVSw2QkFBNkI7NEZBQTdCLDZCQUE2QixtUkNUMUMsK3hDQTBCQTs7NEZEakJhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSw0QkFBNEI7c0ZBSzdCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZX0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHtDaGVja3NoZWV0U2VydmljZX0gZnJvbSAnLi4vY2hlY2tzaGVldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrc2hlZXQtbGlzdC13aWRnZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tzaGVldC1saXN0LXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jaGVja3NoZWV0LWxpc3Qtd2lkZ2V0LmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrc2hlZXRMaXN0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgVGVjaGxpZnlMaXN0aW5nQ29udHJvbGxlckludGVyZmFjZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHN1Ym1pdHRhYmxlOiBhbnk7XG4gIEBJbnB1dCgpIHN1Ym1pdHRhYmxlVHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdDaGVja3NoZWV0cyc7XG4gIEBJbnB1dCgpIHN1Ym1pdHRhYmxlVGl0bGVGaWVsZDogc3RyaW5nID0gJ25hbWUnO1xuICBASW5wdXQoKSBzaG93Q2hlY2tzaGVldEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQ2hlY2tzaGVldFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBlclBhZ2UgPSA1O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5sb2FkRGF0YSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbG9hZERhdGEoKSB7XG4gICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyUGFnZTogdGhpcy5wZXJQYWdlLFxuICAgICAgc3VibWl0dGFibGVfdHlwZTogdGhpcy5zdWJtaXR0YWJsZVR5cGUsXG4gICAgICBzdWJtaXR0YWJsZV9pZHM6IHRoaXMuc3VibWl0dGFibGU/LmlkLFxuICAgICAgd2l0aDogJ2NyZWF0b3InLFxuICAgIH1cbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLmluZGV4KHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubW9kZWxzID0gdGhpcy5tb2RlbHMuY29uY2F0KHJlc3BvbnNlPy5kYXRhKTtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4geyB0aGlzLmlzV29ya2luZyA9IGZhbHNlOyB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxtYXQtY2FyZD5cbiAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgPGgzIGNsYXNzPVwibWItMCBmdy1ib2xkXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgIDxzcGFuIGNsYXNzPVwiZmxleC1maWxsXCI+PC9zcGFuPlxuICAgIDxhcHAtY2hlY2tzaGVldC1mb3JtLWJ1dHRvbiAqbmdJZj1cInNob3dDaGVja3NoZWV0QnV0dG9uXCIgW3N1Ym1pdHRhYmxlVHlwZV09XCJzdWJtaXR0YWJsZVR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VibWl0dGFibGVJZF09XCJzdWJtaXR0YWJsZT8uaWRcIj48L2FwcC1jaGVja3NoZWV0LWZvcm0tYnV0dG9uPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDxtYXQtY2FyZC1jb250ZW50PlxuICAgIDxwIGNsYXNzPVwibWItMFwiPkNoZWNrc2hlZXRzIGZvciA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLXNlY29uZGFyeVwiPnt7IHN1Ym1pdHRhYmxlVHlwZSB9fTwvc3Bhbj5cbiAgICAgICMge3sgc3VibWl0dGFibGU/LmlkIH19IDoge3sgc3VibWl0dGFibGVbc3VibWl0dGFibGVUaXRsZUZpZWxkXSB9fVxuICAgIDwvcD5cbiAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8bWF0LWNhcmQtY29udGVudD5cbiAgICA8YSAqbmdGb3I9XCJsZXQgbW9kZWwgb2YgbW9kZWxzXCIgW3JvdXRlckxpbmtdPVwiWycvY2hlY2tzaGVldHMvY2hlY2tzaGVldHMtdmlldycsIG1vZGVsPy5pZF1cIlxuICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcC0yIGN1cnNvci1wb2ludGVyIHRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtZGFya1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGZzLTJcIj5cbiAgICAgICAgYXJ0aWNsZVxuICAgICAgPC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMVwiPlxuICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5vbiB7eyBtb2RlbD8uZGF0ZSB8IGRhdGUgfX08L3A+XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+Qnkge3sgbW9kZWw/LmNyZWF0b3I/Lm5hbWUgfX08L3NtYWxsPlxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIG1vZGU9XCJpbmRldGVybWluYXRlXCIgKm5nSWY9XCJpc1dvcmtpbmdcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cbjwvbWF0LWNhcmQ+XG4iXX0=
@@ -1,39 +1,39 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/router";
5
- import * as i3 from "../checksheet.service";
6
- import * as i4 from "@angular/flex-layout/flex";
7
- import * as i5 from "@angular/material/card";
8
- import * as i6 from "@angular/material/progress-bar";
9
- import * as i7 from "ngx-techlify-core";
3
+ import * as i1 from "@angular/router";
4
+ import * as i2 from "../checksheet.service";
5
+ import * as i3 from "@angular/common";
6
+ import * as i4 from "@angular/material/card";
7
+ import * as i5 from "@angular/material/progress-bar";
8
+ import * as i6 from "ngx-techlify-core";
9
+ import * as i7 from "ngx-avatars";
10
10
  import * as i8 from "../checksheet-question-list/checksheet-question-list.component";
11
- import * as i9 from "../checksheet-review-button/checksheet-review-button.component";
11
+ import * as i9 from "../checksheet-list-widget/checksheet-list-widget.component";
12
12
  export class ChecksheetNodeViewComponent {
13
- location;
14
13
  route;
15
- checksheetSubmissionService;
14
+ service;
16
15
  submission;
17
16
  submissionId;
18
17
  isLoading = false;
19
- with = 'format.questions.answers,format.questions.type,creator,reviewer,status';
20
- constructor(location, route, checksheetSubmissionService) {
21
- this.location = location;
18
+ with = 'format.questions.answers,format.questions.type,creator,reviewer,status,submittable';
19
+ constructor(route, service) {
22
20
  this.route = route;
23
- this.checksheetSubmissionService = checksheetSubmissionService;
24
- this.submissionId = parseInt(this.route.snapshot.params?.['submissionId']);
21
+ this.service = service;
25
22
  }
26
23
  ngOnInit() {
27
- if (this.submissionId) {
28
- this.loadSubmission();
29
- }
24
+ this.route.params.subscribe((params) => {
25
+ this.submissionId = params['submissionId'];
26
+ if (this.submissionId) {
27
+ this.loadSubmission();
28
+ }
29
+ });
30
30
  }
31
31
  loadSubmission() {
32
32
  const params = {
33
33
  with: this.with
34
34
  };
35
35
  this.isLoading = true;
36
- this.checksheetSubmissionService.show(this.submissionId, params).subscribe({
36
+ this.service.show(this.submissionId, params).subscribe({
37
37
  next: (response) => {
38
38
  this.submission = response?.item;
39
39
  this.isLoading = false;
@@ -49,11 +49,11 @@ export class ChecksheetNodeViewComponent {
49
49
  onUpdated(model) {
50
50
  this.submission = model;
51
51
  }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetNodeViewComponent, deps: [{ token: i1.Location }, { token: i2.ActivatedRoute }, { token: i3.ChecksheetService }], target: i0.ɵɵFactoryTarget.Component });
53
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetNodeViewComponent, selector: "app-checksheet-node-view", ngImport: i0, template: "<div\n fxLayout=\"column\"\n fxLayoutGap=\"0.5rem\"\n id=\"pdfable-section\"\n *ngIf=\"submission\"\n>\n <div fxLayout fxLayoutAlign=\"start center\">\n <h2 class=\"m-auto\">Checksheet</h2>\n </div>\n\n <div fxLayout=\"column\">\n <mat-card class=\"w-100\">\n <h4>Date: {{ submission?.date | date }}</h4>\n <h4>Format: {{ submission?.format?.title }}</h4>\n <h4>Creator: {{ submission?.creator?.name }}</h4>\n <h4 *ngIf=\"submission?.reviewer\">\n Reviewer: {{ submission?.reviewer?.name }}\n </h4>\n <h4 *ngIf=\"submission?.status\">\n Status: {{ submission?.status?.title }}\n </h4>\n\n <div\n class=\"my-2 d-print-none\"\n fxLayout=\"row\"\n fxLayoutGap=\"5px\"\n fxLayoutAlign=\"center\"\n >\n <app-checksheet-review-button\n [submission]=\"submission\"\n viewType=\"button\"\n [requestParams]=\"{ with: this.with }\"\n (reviewed)=\"onUpdated($event)\"\n ></app-checksheet-review-button>\n </div>\n </mat-card>\n </div>\n\n <div fxLayout=\"column\" *ngIf=\"submission\">\n <h2>Submission</h2>\n <app-checksheet-question-list\n class=\"w-100 pt-0 pr-4\"\n [submission]=\"submission\"\n [disableInput]=\"true\"\n >\n </app-checksheet-question-list>\n </div>\n\n <app-note-list\n *ngIf=\"submission?.id\"\n [relatedModelId]=\"submission?.id\"\n modelType=\"ChecksheetSubmission\"\n ></app-note-list>\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i7.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: i8.ChecksheetQuestionListComponent, selector: "app-checksheet-question-list", inputs: ["checksheet", "submission", "disableInput"], outputs: ["checksheetChange"] }, { kind: "component", type: i9.ChecksheetReviewButtonComponent, selector: "app-checksheet-review-button", inputs: ["submission", "viewType", "requestParams"], outputs: ["reviewed"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetNodeViewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.ChecksheetService }], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetNodeViewComponent, selector: "app-checksheet-node-view", ngImport: i0, template: "<div class=\"d-flex justify-content-start gap-3 w-100\" id=\"pdfable-section\" *ngIf=\"submission\">\n <div class=\"d-flex flex-column gap-3\" style=\"width: 85%\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined fs-1\">\n list_alt_check\n </span>\n <div>\n <h2 class=\"mb-0\">{{ submission?.format?.title }}</h2>\n <p class=\"mb-0\" *ngIf=\"submission?.details\">{{ submission?.details }}</p>\n </div>\n </div>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-1\">\n <p class=\"mb-0 text-secondary\">for <span class=\"badge bg-secondary\">{{ submission?.submittable_type }}</span>\n #{{ submission?.submittable_id }} : {{ submission?.submittable?.name }}\n </p>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <p class=\"mb-0 text-secondary\">By</p> <ngx-avatars [name]=\"submission?.creator?.name\" size=\"30\"></ngx-avatars>\n <p class=\"text-dark mb-0\">{{ submission?.creator?.name }}</p>\n <p class=\"mb-0 text-secondary\">on {{ submission?.date | date }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-checksheet-question-list [submission]=\"submission\" [disableInput]=\"true\"></app-checksheet-question-list>\n\n </div>\n <div class=\"d-flex flex-column gap-3\" style=\"width: calc(15% - 1rem)\">\n <app-checksheet-list-widget title=\"Previous Checksheets\" [submittableType]=\"submission?.submittable_type\"\n [submittable]=\"submission?.submittable\"></app-checksheet-list-widget>\n <app-note-list *ngIf=\"submission?.id && !isLoading\" [relatedModelId]=\"submission?.id\" class=\"w-100\"\n modelType=\"ChecksheetSubmission\" viewMode=\"timeline\"></app-note-list>\n </div>\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i6.NoteListComponent, selector: "app-note-list", inputs: ["relatedModelId", "modelType", "readonly", "labelText", "commentsView", "viewMode"] }, { kind: "component", type: i7.AvatarComponent, selector: "ngx-avatars", inputs: ["round", "size", "textSizeRatio", "bgColor", "fgColor", "borderColor", "style", "cornerRadius", "facebookId", "twitterId", "googleId", "instagramId", "vkontakteId", "skypeId", "gravatarId", "githubId", "src", "alt", "name", "value", "referrerpolicy", "placeholder", "initialsSize"], outputs: ["clickOnAvatar"] }, { kind: "component", type: i8.ChecksheetQuestionListComponent, selector: "app-checksheet-question-list", inputs: ["checksheet", "submission", "disableInput"], outputs: ["checksheetChange"] }, { kind: "component", type: i9.ChecksheetListWidgetComponent, selector: "app-checksheet-list-widget", inputs: ["submittable", "submittableType", "title", "submittableTitleField", "showChecksheetButton"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] });
54
54
  }
55
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetNodeViewComponent, decorators: [{
56
56
  type: Component,
57
- args: [{ selector: 'app-checksheet-node-view', template: "<div\n fxLayout=\"column\"\n fxLayoutGap=\"0.5rem\"\n id=\"pdfable-section\"\n *ngIf=\"submission\"\n>\n <div fxLayout fxLayoutAlign=\"start center\">\n <h2 class=\"m-auto\">Checksheet</h2>\n </div>\n\n <div fxLayout=\"column\">\n <mat-card class=\"w-100\">\n <h4>Date: {{ submission?.date | date }}</h4>\n <h4>Format: {{ submission?.format?.title }}</h4>\n <h4>Creator: {{ submission?.creator?.name }}</h4>\n <h4 *ngIf=\"submission?.reviewer\">\n Reviewer: {{ submission?.reviewer?.name }}\n </h4>\n <h4 *ngIf=\"submission?.status\">\n Status: {{ submission?.status?.title }}\n </h4>\n\n <div\n class=\"my-2 d-print-none\"\n fxLayout=\"row\"\n fxLayoutGap=\"5px\"\n fxLayoutAlign=\"center\"\n >\n <app-checksheet-review-button\n [submission]=\"submission\"\n viewType=\"button\"\n [requestParams]=\"{ with: this.with }\"\n (reviewed)=\"onUpdated($event)\"\n ></app-checksheet-review-button>\n </div>\n </mat-card>\n </div>\n\n <div fxLayout=\"column\" *ngIf=\"submission\">\n <h2>Submission</h2>\n <app-checksheet-question-list\n class=\"w-100 pt-0 pr-4\"\n [submission]=\"submission\"\n [disableInput]=\"true\"\n >\n </app-checksheet-question-list>\n </div>\n\n <app-note-list\n *ngIf=\"submission?.id\"\n [relatedModelId]=\"submission?.id\"\n modelType=\"ChecksheetSubmission\"\n ></app-note-list>\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n" }]
58
- }], ctorParameters: () => [{ type: i1.Location }, { type: i2.ActivatedRoute }, { type: i3.ChecksheetService }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1ub2RlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNoZWNrc2hlZXQvc3JjL2xpYi9jaGVja3NoZWV0L2NoZWNrc2hlZXQtbm9kZS12aWV3L2NoZWNrc2hlZXQtbm9kZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LW5vZGUtdmlldy9jaGVja3NoZWV0LW5vZGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVNsRCxNQUFNLE9BQU8sMkJBQTJCO0lBUTdCO0lBQ0M7SUFDQTtJQVRWLFVBQVUsQ0FBTTtJQUNoQixZQUFZLENBQVU7SUFDdEIsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUMzQixJQUFJLEdBQ0Ysd0VBQXdFLENBQUM7SUFFM0UsWUFDUyxRQUFrQixFQUNqQixLQUFxQixFQUNyQiwyQkFBOEM7UUFGL0MsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQW1CO1FBRXRELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN6RSxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLEVBQUUsSUFBSSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO3dHQTNDVSwyQkFBMkI7NEZBQTNCLDJCQUEyQixnRUNWeEMsMmpEQXdEQTs7NEZEOUNhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2hlY2tzaGVldFNlcnZpY2UgfSBmcm9tICcuLi9jaGVja3NoZWV0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2tzaGVldC1ub2RlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tzaGVldC1ub2RlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja3NoZWV0LW5vZGUtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrc2hlZXROb2RlVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN1Ym1pc3Npb246IGFueTtcbiAgc3VibWlzc2lvbklkITogbnVtYmVyO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgd2l0aDogc3RyaW5nID1cbiAgICAnZm9ybWF0LnF1ZXN0aW9ucy5hbnN3ZXJzLGZvcm1hdC5xdWVzdGlvbnMudHlwZSxjcmVhdG9yLHJldmlld2VyLHN0YXR1cyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGNoZWNrc2hlZXRTdWJtaXNzaW9uU2VydmljZTogQ2hlY2tzaGVldFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJtaXNzaW9uSWQgPSBwYXJzZUludCh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcz8uWydzdWJtaXNzaW9uSWQnXSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJtaXNzaW9uSWQpIHtcbiAgICAgIHRoaXMubG9hZFN1Ym1pc3Npb24oKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvYWRTdWJtaXNzaW9uKCkge1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgd2l0aDogdGhpcy53aXRoXG4gICAgfTtcblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNoZWNrc2hlZXRTdWJtaXNzaW9uU2VydmljZS5zaG93KHRoaXMuc3VibWlzc2lvbklkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb24gPSByZXNwb25zZT8uaXRlbTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNMb2FkaW5nID0gZmFsc2UpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogT24gQ2hlY2tzaGVldCByZXZpZXdlZC5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsXG4gICAqL1xuICBvblVwZGF0ZWQobW9kZWw6IGFueSkge1xuICAgIHRoaXMuc3VibWlzc2lvbiA9IG1vZGVsO1xuICB9XG59XG4iLCI8ZGl2XG4gIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIlxuICBpZD1cInBkZmFibGUtc2VjdGlvblwiXG4gICpuZ0lmPVwic3VibWlzc2lvblwiXG4+XG4gIDxkaXYgZnhMYXlvdXQgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgIDxoMiBjbGFzcz1cIm0tYXV0b1wiPkNoZWNrc2hlZXQ8L2gyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gICAgPG1hdC1jYXJkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgIDxoND5EYXRlOiB7eyBzdWJtaXNzaW9uPy5kYXRlIHwgZGF0ZSB9fTwvaDQ+XG4gICAgICA8aDQ+Rm9ybWF0OiB7eyBzdWJtaXNzaW9uPy5mb3JtYXQ/LnRpdGxlIH19PC9oND5cbiAgICAgIDxoND5DcmVhdG9yOiB7eyBzdWJtaXNzaW9uPy5jcmVhdG9yPy5uYW1lIH19PC9oND5cbiAgICAgIDxoNCAqbmdJZj1cInN1Ym1pc3Npb24/LnJldmlld2VyXCI+XG4gICAgICAgIFJldmlld2VyOiB7eyBzdWJtaXNzaW9uPy5yZXZpZXdlcj8ubmFtZSB9fVxuICAgICAgPC9oND5cbiAgICAgIDxoNCAqbmdJZj1cInN1Ym1pc3Npb24/LnN0YXR1c1wiPlxuICAgICAgICBTdGF0dXM6IHt7IHN1Ym1pc3Npb24/LnN0YXR1cz8udGl0bGUgfX1cbiAgICAgIDwvaDQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJteS0yIGQtcHJpbnQtbm9uZVwiXG4gICAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgICAgZnhMYXlvdXRHYXA9XCI1cHhcIlxuICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPGFwcC1jaGVja3NoZWV0LXJldmlldy1idXR0b25cbiAgICAgICAgICBbc3VibWlzc2lvbl09XCJzdWJtaXNzaW9uXCJcbiAgICAgICAgICB2aWV3VHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW3JlcXVlc3RQYXJhbXNdPVwieyB3aXRoOiB0aGlzLndpdGggfVwiXG4gICAgICAgICAgKHJldmlld2VkKT1cIm9uVXBkYXRlZCgkZXZlbnQpXCJcbiAgICAgICAgPjwvYXBwLWNoZWNrc2hlZXQtcmV2aWV3LWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiAqbmdJZj1cInN1Ym1pc3Npb25cIj5cbiAgICA8aDI+U3VibWlzc2lvbjwvaDI+XG4gICAgPGFwcC1jaGVja3NoZWV0LXF1ZXN0aW9uLWxpc3RcbiAgICAgIGNsYXNzPVwidy0xMDAgcHQtMCBwci00XCJcbiAgICAgIFtzdWJtaXNzaW9uXT1cInN1Ym1pc3Npb25cIlxuICAgICAgW2Rpc2FibGVJbnB1dF09XCJ0cnVlXCJcbiAgICA+XG4gICAgPC9hcHAtY2hlY2tzaGVldC1xdWVzdGlvbi1saXN0PlxuICA8L2Rpdj5cblxuICA8YXBwLW5vdGUtbGlzdFxuICAgICpuZ0lmPVwic3VibWlzc2lvbj8uaWRcIlxuICAgIFtyZWxhdGVkTW9kZWxJZF09XCJzdWJtaXNzaW9uPy5pZFwiXG4gICAgbW9kZWxUeXBlPVwiQ2hlY2tzaGVldFN1Ym1pc3Npb25cIlxuICA+PC9hcHAtbm90ZS1saXN0PlxuPC9kaXY+XG5cbjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4iXX0=
57
+ args: [{ selector: 'app-checksheet-node-view', template: "<div class=\"d-flex justify-content-start gap-3 w-100\" id=\"pdfable-section\" *ngIf=\"submission\">\n <div class=\"d-flex flex-column gap-3\" style=\"width: 85%\">\n <mat-card>\n <mat-card-content class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined fs-1\">\n list_alt_check\n </span>\n <div>\n <h2 class=\"mb-0\">{{ submission?.format?.title }}</h2>\n <p class=\"mb-0\" *ngIf=\"submission?.details\">{{ submission?.details }}</p>\n </div>\n </div>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <div class=\"d-flex flex-column gap-1\">\n <p class=\"mb-0 text-secondary\">for <span class=\"badge bg-secondary\">{{ submission?.submittable_type }}</span>\n #{{ submission?.submittable_id }} : {{ submission?.submittable?.name }}\n </p>\n <div class=\"d-flex justify-content-end align-items-center gap-2\">\n <p class=\"mb-0 text-secondary\">By</p> <ngx-avatars [name]=\"submission?.creator?.name\" size=\"30\"></ngx-avatars>\n <p class=\"text-dark mb-0\">{{ submission?.creator?.name }}</p>\n <p class=\"mb-0 text-secondary\">on {{ submission?.date | date }}</p>\n </div>\n </div>\n </div>\n </mat-card-content>\n </mat-card>\n\n <app-checksheet-question-list [submission]=\"submission\" [disableInput]=\"true\"></app-checksheet-question-list>\n\n </div>\n <div class=\"d-flex flex-column gap-3\" style=\"width: calc(15% - 1rem)\">\n <app-checksheet-list-widget title=\"Previous Checksheets\" [submittableType]=\"submission?.submittable_type\"\n [submittable]=\"submission?.submittable\"></app-checksheet-list-widget>\n <app-note-list *ngIf=\"submission?.id && !isLoading\" [relatedModelId]=\"submission?.id\" class=\"w-100\"\n modelType=\"ChecksheetSubmission\" viewMode=\"timeline\"></app-note-list>\n </div>\n</div>\n\n<mat-progress-bar *ngIf=\"isLoading\" mode=\"indeterminate\"></mat-progress-bar>\n" }]
58
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.ChecksheetService }] });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1ub2RlLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNoZWNrc2hlZXQvc3JjL2xpYi9jaGVja3NoZWV0L2NoZWNrc2hlZXQtbm9kZS12aWV3L2NoZWNrc2hlZXQtbm9kZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LW5vZGUtdmlldy9jaGVja3NoZWV0LW5vZGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVNsRCxNQUFNLE9BQU8sMkJBQTJCO0lBTzVCO0lBQ0E7SUFQVixVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFVO0lBQ3RCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsSUFBSSxHQUFXLG9GQUFvRixDQUFDO0lBRXBHLFlBQ1UsS0FBcUIsRUFDckIsT0FBMEI7UUFEMUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7SUFDakMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sTUFBTSxHQUFRO1lBQ2xCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDckQsSUFBSSxFQUFFLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxFQUFFLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQVU7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzt3R0ExQ1UsMkJBQTJCOzRGQUEzQiwyQkFBMkIsZ0VDVHhDLHVzRUF3Q0E7OzRGRC9CYSwyQkFBMkI7a0JBTHZDLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENoZWNrc2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hlY2tzaGVldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrc2hlZXQtbm9kZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtbm9kZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2tzaGVldC1ub2RlLXZpZXcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja3NoZWV0Tm9kZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzdWJtaXNzaW9uOiBhbnk7XG4gIHN1Ym1pc3Npb25JZCE6IG51bWJlcjtcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHdpdGg6IHN0cmluZyA9ICdmb3JtYXQucXVlc3Rpb25zLmFuc3dlcnMsZm9ybWF0LnF1ZXN0aW9ucy50eXBlLGNyZWF0b3IscmV2aWV3ZXIsc3RhdHVzLHN1Ym1pdHRhYmxlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHNlcnZpY2U6IENoZWNrc2hlZXRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtczogYW55KSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pc3Npb25JZCA9IHBhcmFtc1snc3VibWlzc2lvbklkJ107XG4gICAgICBpZiAodGhpcy5zdWJtaXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5sb2FkU3VibWlzc2lvbigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkU3VibWlzc2lvbigpIHtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICAgIHdpdGg6IHRoaXMud2l0aFxuICAgIH07XG5cbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlLnNob3codGhpcy5zdWJtaXNzaW9uSWQsIHBhcmFtcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvbiA9IHJlc3BvbnNlPy5pdGVtO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiBDaGVja3NoZWV0IHJldmlld2VkLlxuICAgKlxuICAgKiBAcGFyYW0gbW9kZWxcbiAgICovXG4gIG9uVXBkYXRlZChtb2RlbDogYW55KSB7XG4gICAgdGhpcy5zdWJtaXNzaW9uID0gbW9kZWw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGdhcC0zIHctMTAwXCIgaWQ9XCJwZGZhYmxlLXNlY3Rpb25cIiAqbmdJZj1cInN1Ym1pc3Npb25cIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiIHN0eWxlPVwid2lkdGg6IDg1JVwiPlxuICAgIDxtYXQtY2FyZD5cbiAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZnMtMVwiPlxuICAgICAgICAgICAgbGlzdF9hbHRfY2hlY2tcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cIm1iLTBcIj57eyBzdWJtaXNzaW9uPy5mb3JtYXQ/LnRpdGxlIH19PC9oMj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiICpuZ0lmPVwic3VibWlzc2lvbj8uZGV0YWlsc1wiPnt7IHN1Ym1pc3Npb24/LmRldGFpbHMgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMVwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHRleHQtc2Vjb25kYXJ5XCI+Zm9yIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+e3sgc3VibWlzc2lvbj8uc3VibWl0dGFibGVfdHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgI3t7IHN1Ym1pc3Npb24/LnN1Ym1pdHRhYmxlX2lkIH19IDoge3sgc3VibWlzc2lvbj8uc3VibWl0dGFibGU/Lm5hbWUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtYi0wIHRleHQtc2Vjb25kYXJ5XCI+Qnk8L3A+IDxuZ3gtYXZhdGFycyBbbmFtZV09XCJzdWJtaXNzaW9uPy5jcmVhdG9yPy5uYW1lXCIgc2l6ZT1cIjMwXCI+PC9uZ3gtYXZhdGFycz5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRhcmsgbWItMFwiPnt7IHN1Ym1pc3Npb24/LmNyZWF0b3I/Lm5hbWUgfX08L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMCB0ZXh0LXNlY29uZGFyeVwiPm9uIHt7IHN1Ym1pc3Npb24/LmRhdGUgfCBkYXRlIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgIDwvbWF0LWNhcmQ+XG5cbiAgICA8YXBwLWNoZWNrc2hlZXQtcXVlc3Rpb24tbGlzdCBbc3VibWlzc2lvbl09XCJzdWJtaXNzaW9uXCIgW2Rpc2FibGVJbnB1dF09XCJ0cnVlXCI+PC9hcHAtY2hlY2tzaGVldC1xdWVzdGlvbi1saXN0PlxuXG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0zXCIgc3R5bGU9XCJ3aWR0aDogY2FsYygxNSUgLSAxcmVtKVwiPlxuICAgIDxhcHAtY2hlY2tzaGVldC1saXN0LXdpZGdldCB0aXRsZT1cIlByZXZpb3VzIENoZWNrc2hlZXRzXCIgW3N1Ym1pdHRhYmxlVHlwZV09XCJzdWJtaXNzaW9uPy5zdWJtaXR0YWJsZV90eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1Ym1pdHRhYmxlXT1cInN1Ym1pc3Npb24/LnN1Ym1pdHRhYmxlXCI+PC9hcHAtY2hlY2tzaGVldC1saXN0LXdpZGdldD5cbiAgICA8YXBwLW5vdGUtbGlzdCAqbmdJZj1cInN1Ym1pc3Npb24/LmlkICYmICFpc0xvYWRpbmdcIiBbcmVsYXRlZE1vZGVsSWRdPVwic3VibWlzc2lvbj8uaWRcIiBjbGFzcz1cInctMTAwXCJcbiAgICAgICAgICAgICAgICAgICBtb2RlbFR5cGU9XCJDaGVja3NoZWV0U3VibWlzc2lvblwiIHZpZXdNb2RlPVwidGltZWxpbmVcIj48L2FwcC1ub3RlLWxpc3Q+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwiaXNMb2FkaW5nXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4iXX0=
@@ -8,15 +8,15 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "../checksheet-submission-answer.service";
9
9
  import * as i2 from "@angular/common";
10
10
  import * as i3 from "@angular/flex-layout/flex";
11
- import * as i4 from "@angular/material/checkbox";
12
- import * as i5 from "@angular/material/datepicker";
13
- import * as i6 from "@angular/material/form-field";
14
- import * as i7 from "@angular/material/input";
15
- import * as i8 from "@angular/material/progress-bar";
16
- import * as i9 from "@angular/material/radio";
17
- import * as i10 from "@angular/forms";
18
- import * as i11 from "ngx-editor";
19
- import * as i12 from "../checksheet-submission-file-upload/checksheet-submisison-file-upload.component";
11
+ import * as i4 from "@angular/material/card";
12
+ import * as i5 from "@angular/material/checkbox";
13
+ import * as i6 from "@angular/material/datepicker";
14
+ import * as i7 from "@angular/material/form-field";
15
+ import * as i8 from "@angular/material/input";
16
+ import * as i9 from "@angular/material/progress-bar";
17
+ import * as i10 from "@angular/material/radio";
18
+ import * as i11 from "@angular/forms";
19
+ import * as i12 from "ngx-editor";
20
20
  import * as i13 from "../checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component";
21
21
  let ChecksheetQuestionComponent = class ChecksheetQuestionComponent {
22
22
  checksheetSubmissionAnswerService;
@@ -34,7 +34,6 @@ let ChecksheetQuestionComponent = class ChecksheetQuestionComponent {
34
34
  this.checksheetSubmissionAnswerService = checksheetSubmissionAnswerService;
35
35
  }
36
36
  ngOnInit() {
37
- console.log(this.disableInput, this.submissionView);
38
37
  this.editor = new Editor();
39
38
  this.submittedAnswer.valueChanges
40
39
  .pipe(debounceTime(1000))
@@ -147,7 +146,7 @@ let ChecksheetQuestionComponent = class ChecksheetQuestionComponent {
147
146
  });
148
147
  }
149
148
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetQuestionComponent, deps: [{ token: i1.ChecksheetSubmissionAnswerService }], target: i0.ɵɵFactoryTarget.Component });
150
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetQuestionComponent, selector: "app-checksheet-question", inputs: { questionInfo: "questionInfo", index: "index", submissionView: "submissionView", submissionId: "submissionId", disableInput: "disableInput", isWorking: "isWorking" }, outputs: { isWorkingChange: "isWorkingChange" }, ngImport: i0, template: "<div\n fxLayout=\"column\"\n fxLayoutGap=\"0.5rem\"\n class=\"mat-typography\"\n *ngIf=\"!submissionView\"\n>\n <div fxLayout=\"row\" fxLayoutGap=\"0.5rem\" class=\"font-weight-bold\">\n <div>{{ index + 1 }}.</div>\n <div [innerHTML]=\"questionInfo?.label\"></div>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"0.5rem\">\n <small>{{ questionInfo?.type?.title }}</small>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 1\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"true\">\n <mat-radio-button\n class=\"answer-radio-button\"\n *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\"\n >\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 2\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n *ngFor=\"let answer of questionInfo?.answers; let i = index\"\n >\n <mat-checkbox [disabled]=\"true\" fxFlex=\"80%\"\n >{{ i + 1 }} ) {{ answer.value }}</mat-checkbox\n >\n </div>\n </div>\n\n <div\n *ngIf=\"\n questionInfo?.type_id === 3 ||\n questionInfo?.type_id === 5 ||\n questionInfo?.type_id === 6\n \"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3 w-50 border short-answer\"\n ></div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 4\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3 w-50 border long-answer\"\n ></div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 7\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group [disabled]=\"true\" fxLayout=\"row\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"1\"\n >Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"0\"\n >No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n</div>\n\n<div *ngIf=\"submissionView\">\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <app-checksheet-submission-file-upload\n [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"\n (uploaded)=\"checksheetSubmissionFilesComponent.reload()\"\n class=\"ml-3\"\n ></app-checksheet-submission-file-upload>\n </div>\n <span class=\"badge badge-primary\">{{ questionInfo?.type?.title }}</span>\n </div>\n <div class=\"d-flex justify-content-between align-items-start gap-1\">\n <div *ngIf=\"questionInfo?.type_id === 1\" class=\"d-flex flex-column gap-2\">\n <mat-radio-group\n class=\"answer-radio-group\"\n [disabled]=\"disableInput\"\n *ngIf=\"!disableInput\"\n [formControl]=\"submittedAnswer\"\n >\n <mat-radio-button\n class=\"answer-radio-button\"\n *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\"\n >\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n <span *ngIf=\"disableInput\">\n <b>Answer:</b>\n {{\n getSubmittedMCQAnswer(\n questionInfo?.answers,\n this.submittedAnswer.value\n )\n }}\n </span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" class=\"d-flex flex-column gap-2\">\n <ng-container *ngIf=\"!disableInput\">\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n *ngFor=\"let answer of questionInfo?.answers; let i = index\"\n >\n <mat-checkbox\n (change)=\"onMultiSelectAnswerChange()\"\n [disabled]=\"disableInput\"\n [(ngModel)]=\"answer.isChecked\"\n fxFlex=\"80%\"\n >\n {{ i + 1 }}\n )\n {{ answer.value }}\n </mat-checkbox>\n </div>\n </ng-container>\n\n <span *ngIf=\"disableInput\">\n <b>Answers:</b>\n {{ getSubmittedMSQAnswer() }}\n </span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 4\">\n <div class=\"NgxEditor__Wrapper mb-2\" *ngIf=\"!disableInput\">\n <ngx-editor-menu [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"submittedAnswer\"\n ></ngx-editor>\n </div>\n <div *ngIf=\"disableInput\" [innerHtml]=\"submittedAnswer.value\"></div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 5\">\n <mat-form-field *ngIf=\"!disableInput\">\n <mat-label>Answer</mat-label>\n <input\n matInput\n type=\"number\"\n size=\"10\"\n [formControl]=\"submittedAnswer\"\n />\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 6\">\n <mat-form-field *ngIf=\"!disableInput\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n placeholder=\"Date\"\n [formControl]=\"submittedAnswer\"\n (focus)=\"picker.open()\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value | date }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 7 && !disableInput\">\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group\n fxLayout=\"row\"\n (change)=\"onMultiSelectYesNoAnswerChange($event, answer)\"\n [disabled]=\"disableInput\"\n [value]=\"answer.selectedValue\"\n >\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"true\">\n Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"false\">\n No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n\n <app-checksheet-submission-files\n class=\"w-50\"\n #checksheetSubmissionFilesComponent\n [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"\n ></app-checksheet-submission-files>\n </div>\n\n <ng-container *ngIf=\"questionInfo?.type_id === 7 && disableInput\">\n <div *ngFor=\"let answer of questionInfo?.answers\">\n {{ answer?.value }} - {{ answer?.selectedValue ? 'Yes' : 'No' }}\n </div>\n </ng-container>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n</div>\n", styles: [".answer-radio-group{display:flex;flex-direction:column;margin:15px 0}.answer-radio-button{margin:5px}:host ::ng-deep .short-answer .ck.ck-content{min-height:100px!important}:host ::ng-deep .long-answer .ck.ck-content{min-height:200px!important}.scroll-container{max-height:650px;overflow-y:auto}.small-margin{margin-top:2px}:host ::ng-deep .yes-no .mat-radio-label-content{padding-left:3px}.main{display:block;position:relative;padding-left:24px;margin-bottom:15px;cursor:pointer}input[type=checkbox]{visibility:hidden}.geekmark{position:absolute;top:2px;left:0;height:15px;width:15px;background-color:#fff}.main input:checked~.geekmark{background-color:green}.geekmark:after{content:\"\";position:absolute;display:none}.main input:checked~.geekmark:after{display:block}.main .geekmark:after{left:5px;bottom:3px;width:6px;height:10px;border:solid white;border-width:0 4px 4px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}img{max-width:500px!important;max-height:500px!important}p{margin-bottom:0!important}\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"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i10.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: i10.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i11.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "component", type: i12.ChecksheetSubmissionFileUploadComponent, selector: "app-checksheet-submission-file-upload", inputs: ["submissionId", "questionId"], outputs: ["uploaded"] }, { kind: "component", type: i13.ChecksheetSubmissionFilesComponent, selector: "app-checksheet-submission-files", inputs: ["submissionId", "questionId"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
149
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetQuestionComponent, selector: "app-checksheet-question", inputs: { questionInfo: "questionInfo", index: "index", submissionView: "submissionView", submissionId: "submissionId", disableInput: "disableInput", isWorking: "isWorking" }, outputs: { isWorkingChange: "isWorkingChange" }, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\" *ngIf=\"!submissionView\">\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <span class=\"badge bg-secondary\">{{ questionInfo?.type?.title }}</span>\n </div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 1\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\" class=\"mr-3\">\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"true\">\n <mat-radio-button class=\"answer-radio-button\" *ngFor=\"let answer of questionInfo?.answers\" [value]=\"answer.id\">\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\" class=\"mr-3\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngFor=\"let answer of questionInfo?.answers; let i = index\">\n <mat-checkbox [disabled]=\"true\" fxFlex=\"80%\">{{ i + 1 }} ) {{ answer.value }}</mat-checkbox>\n </div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 5 || questionInfo?.type_id === 6\"\n class=\"mr-3 d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">lightbulb</span>\n <p class=\"mb-0\">Answer</p>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 4\" class=\"mr-3 d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">lightbulb</span>\n <p class=\"mb-0\">Answer</p>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 7\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group [disabled]=\"true\" fxLayout=\"row\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"1\"\n >Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"0\"\n >No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n</div>\n\n<mat-card *ngIf=\"submissionView\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <span class=\"badge bg-secondary\">{{ questionInfo?.type?.title }}</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-start gap-1\">\n <div *ngIf=\"questionInfo?.type_id === 1\" class=\"d-flex flex-column gap-2\">\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"disableInput\" [formControl]=\"submittedAnswer\">\n <mat-radio-button class=\"answer-radio-button\" *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\" [disabled]=\"disableInput\">\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" class=\"d-flex flex-column gap-2\">\n <ng-container>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngFor=\"let answer of questionInfo?.answers; let i = index\">\n <mat-checkbox (change)=\"onMultiSelectAnswerChange()\" [disabled]=\"disableInput\" [(ngModel)]=\"answer.isChecked\"\n fxFlex=\"80%\">\n {{ i + 1 }} ) {{ answer.value }}\n </mat-checkbox>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 4\">\n <div class=\"NgxEditor__Wrapper mb-2\" *ngIf=\"!disableInput\">\n <ngx-editor-menu [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"submittedAnswer\"\n ></ngx-editor>\n </div>\n <div *ngIf=\"disableInput\" [innerHtml]=\"submittedAnswer.value\"></div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 5\">\n <mat-form-field *ngIf=\"!disableInput\">\n <mat-label>Answer</mat-label>\n <input matInput type=\"number\" size=\"10\" [formControl]=\"submittedAnswer\"/>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 6\">\n <mat-form-field *ngIf=\"!disableInput\">\n <input matInput [matDatepicker]=\"picker\" placeholder=\"Date\" [formControl]=\"submittedAnswer\"\n (focus)=\"picker.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value | date }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 7\">\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group fxLayout=\"row\" (change)=\"onMultiSelectYesNoAnswerChange($event, answer)\"\n [disabled]=\"disableInput\" [value]=\"answer.selectedValue\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"true\" [disabled]=\"disableInput\">\n Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"false\" [disabled]=\"disableInput\">\n No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n\n <span class=\"flex-fill\"></span>\n\n <app-checksheet-submission-files style=\"width: calc(33.33%)\" [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"></app-checksheet-submission-files>\n </div>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [".answer-radio-group{display:flex;flex-direction:column;margin:15px 0}.answer-radio-button{margin:5px}:host ::ng-deep .short-answer .ck.ck-content{min-height:100px!important}:host ::ng-deep .long-answer .ck.ck-content{min-height:200px!important}.scroll-container{max-height:650px;overflow-y:auto}.small-margin{margin-top:2px}:host ::ng-deep .yes-no .mat-radio-label-content{padding-left:3px}.main{display:block;position:relative;padding-left:24px;margin-bottom:15px;cursor:pointer}input[type=checkbox]{visibility:hidden}.geekmark{position:absolute;top:2px;left:0;height:15px;width:15px;background-color:#fff}.main input:checked~.geekmark{background-color:green}.geekmark:after{content:\"\";position:absolute;display:none}.main input:checked~.geekmark:after{display:block}.main .geekmark:after{left:5px;bottom:3px;width:6px;height:10px;border:solid white;border-width:0 4px 4px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}img{max-width:500px!important;max-height:500px!important}p{margin-bottom:0!important}\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"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i10.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i10.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i11.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: i11.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i12.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i12.MenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "component", type: i13.ChecksheetSubmissionFilesComponent, selector: "app-checksheet-submission-files", inputs: ["submissionId", "questionId", "viewMode", "fileDropperHeight", "allowMultipleFiles"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
151
150
  };
152
151
  ChecksheetQuestionComponent = __decorate([
153
152
  UntilDestroy()
@@ -155,7 +154,7 @@ ChecksheetQuestionComponent = __decorate([
155
154
  export { ChecksheetQuestionComponent };
156
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetQuestionComponent, decorators: [{
157
156
  type: Component,
158
- args: [{ selector: 'app-checksheet-question', encapsulation: ViewEncapsulation.None, template: "<div\n fxLayout=\"column\"\n fxLayoutGap=\"0.5rem\"\n class=\"mat-typography\"\n *ngIf=\"!submissionView\"\n>\n <div fxLayout=\"row\" fxLayoutGap=\"0.5rem\" class=\"font-weight-bold\">\n <div>{{ index + 1 }}.</div>\n <div [innerHTML]=\"questionInfo?.label\"></div>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"0.5rem\">\n <small>{{ questionInfo?.type?.title }}</small>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 1\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"true\">\n <mat-radio-button\n class=\"answer-radio-button\"\n *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\"\n >\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 2\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n *ngFor=\"let answer of questionInfo?.answers; let i = index\"\n >\n <mat-checkbox [disabled]=\"true\" fxFlex=\"80%\"\n >{{ i + 1 }} ) {{ answer.value }}</mat-checkbox\n >\n </div>\n </div>\n\n <div\n *ngIf=\"\n questionInfo?.type_id === 3 ||\n questionInfo?.type_id === 5 ||\n questionInfo?.type_id === 6\n \"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3 w-50 border short-answer\"\n ></div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 4\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3 w-50 border long-answer\"\n ></div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 7\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group [disabled]=\"true\" fxLayout=\"row\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"1\"\n >Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"0\"\n >No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n</div>\n\n<div *ngIf=\"submissionView\">\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <app-checksheet-submission-file-upload\n [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"\n (uploaded)=\"checksheetSubmissionFilesComponent.reload()\"\n class=\"ml-3\"\n ></app-checksheet-submission-file-upload>\n </div>\n <span class=\"badge badge-primary\">{{ questionInfo?.type?.title }}</span>\n </div>\n <div class=\"d-flex justify-content-between align-items-start gap-1\">\n <div *ngIf=\"questionInfo?.type_id === 1\" class=\"d-flex flex-column gap-2\">\n <mat-radio-group\n class=\"answer-radio-group\"\n [disabled]=\"disableInput\"\n *ngIf=\"!disableInput\"\n [formControl]=\"submittedAnswer\"\n >\n <mat-radio-button\n class=\"answer-radio-button\"\n *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\"\n >\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n <span *ngIf=\"disableInput\">\n <b>Answer:</b>\n {{\n getSubmittedMCQAnswer(\n questionInfo?.answers,\n this.submittedAnswer.value\n )\n }}\n </span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" class=\"d-flex flex-column gap-2\">\n <ng-container *ngIf=\"!disableInput\">\n <div\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n *ngFor=\"let answer of questionInfo?.answers; let i = index\"\n >\n <mat-checkbox\n (change)=\"onMultiSelectAnswerChange()\"\n [disabled]=\"disableInput\"\n [(ngModel)]=\"answer.isChecked\"\n fxFlex=\"80%\"\n >\n {{ i + 1 }}\n )\n {{ answer.value }}\n </mat-checkbox>\n </div>\n </ng-container>\n\n <span *ngIf=\"disableInput\">\n <b>Answers:</b>\n {{ getSubmittedMSQAnswer() }}\n </span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 4\">\n <div class=\"NgxEditor__Wrapper mb-2\" *ngIf=\"!disableInput\">\n <ngx-editor-menu [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"submittedAnswer\"\n ></ngx-editor>\n </div>\n <div *ngIf=\"disableInput\" [innerHtml]=\"submittedAnswer.value\"></div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 5\">\n <mat-form-field *ngIf=\"!disableInput\">\n <mat-label>Answer</mat-label>\n <input\n matInput\n type=\"number\"\n size=\"10\"\n [formControl]=\"submittedAnswer\"\n />\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 6\">\n <mat-form-field *ngIf=\"!disableInput\">\n <input\n matInput\n [matDatepicker]=\"picker\"\n placeholder=\"Date\"\n [formControl]=\"submittedAnswer\"\n (focus)=\"picker.open()\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value | date }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 7 && !disableInput\">\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group\n fxLayout=\"row\"\n (change)=\"onMultiSelectYesNoAnswerChange($event, answer)\"\n [disabled]=\"disableInput\"\n [value]=\"answer.selectedValue\"\n >\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"true\">\n Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"false\">\n No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n\n <app-checksheet-submission-files\n class=\"w-50\"\n #checksheetSubmissionFilesComponent\n [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"\n ></app-checksheet-submission-files>\n </div>\n\n <ng-container *ngIf=\"questionInfo?.type_id === 7 && disableInput\">\n <div *ngFor=\"let answer of questionInfo?.answers\">\n {{ answer?.value }} - {{ answer?.selectedValue ? 'Yes' : 'No' }}\n </div>\n </ng-container>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n</div>\n", styles: [".answer-radio-group{display:flex;flex-direction:column;margin:15px 0}.answer-radio-button{margin:5px}:host ::ng-deep .short-answer .ck.ck-content{min-height:100px!important}:host ::ng-deep .long-answer .ck.ck-content{min-height:200px!important}.scroll-container{max-height:650px;overflow-y:auto}.small-margin{margin-top:2px}:host ::ng-deep .yes-no .mat-radio-label-content{padding-left:3px}.main{display:block;position:relative;padding-left:24px;margin-bottom:15px;cursor:pointer}input[type=checkbox]{visibility:hidden}.geekmark{position:absolute;top:2px;left:0;height:15px;width:15px;background-color:#fff}.main input:checked~.geekmark{background-color:green}.geekmark:after{content:\"\";position:absolute;display:none}.main input:checked~.geekmark:after{display:block}.main .geekmark:after{left:5px;bottom:3px;width:6px;height:10px;border:solid white;border-width:0 4px 4px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}img{max-width:500px!important;max-height:500px!important}p{margin-bottom:0!important}\n"] }]
157
+ args: [{ selector: 'app-checksheet-question', encapsulation: ViewEncapsulation.None, template: "<div class=\"d-flex flex-column gap-2\" *ngIf=\"!submissionView\">\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <span class=\"badge bg-secondary\">{{ questionInfo?.type?.title }}</span>\n </div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 1\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\" class=\"mr-3\">\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"true\">\n <mat-radio-button class=\"answer-radio-button\" *ngFor=\"let answer of questionInfo?.answers\" [value]=\"answer.id\">\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" fxLayout=\"column\" fxLayoutGap=\"0.25rem\" class=\"mr-3\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngFor=\"let answer of questionInfo?.answers; let i = index\">\n <mat-checkbox [disabled]=\"true\" fxFlex=\"80%\">{{ i + 1 }} ) {{ answer.value }}</mat-checkbox>\n </div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 5 || questionInfo?.type_id === 6\"\n class=\"mr-3 d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">lightbulb</span>\n <p class=\"mb-0\">Answer</p>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 4\" class=\"mr-3 d-flex justify-content-start align-items-center gap-2\">\n <span class=\"material-symbols-outlined\">lightbulb</span>\n <p class=\"mb-0\">Answer</p>\n </div>\n\n <div\n *ngIf=\"questionInfo?.type_id === 7\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n class=\"mr-3\"\n >\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group [disabled]=\"true\" fxLayout=\"row\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"1\"\n >Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" value=\"0\"\n >No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n</div>\n\n<mat-card *ngIf=\"submissionView\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3 mb-2\">\n <div class=\"d-flex align-items-center gap-2\">\n <strong>{{ index + 1 }}.</strong>\n <strong [innerHTML]=\"questionInfo?.label\"></strong>\n <span class=\"badge bg-secondary\">{{ questionInfo?.type?.title }}</span>\n </div>\n </div>\n <div class=\"d-flex justify-content-between align-items-start gap-1\">\n <div *ngIf=\"questionInfo?.type_id === 1\" class=\"d-flex flex-column gap-2\">\n <mat-radio-group class=\"answer-radio-group\" [disabled]=\"disableInput\" [formControl]=\"submittedAnswer\">\n <mat-radio-button class=\"answer-radio-button\" *ngFor=\"let answer of questionInfo?.answers\"\n [value]=\"answer.id\" [disabled]=\"disableInput\">\n {{ answer.value }}\n </mat-radio-button>\n </mat-radio-group>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 2\" class=\"d-flex flex-column gap-2\">\n <ng-container>\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" *ngFor=\"let answer of questionInfo?.answers; let i = index\">\n <mat-checkbox (change)=\"onMultiSelectAnswerChange()\" [disabled]=\"disableInput\" [(ngModel)]=\"answer.isChecked\"\n fxFlex=\"80%\">\n {{ i + 1 }} ) {{ answer.value }}\n </mat-checkbox>\n </div>\n </ng-container>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 3 || questionInfo?.type_id === 4\">\n <div class=\"NgxEditor__Wrapper mb-2\" *ngIf=\"!disableInput\">\n <ngx-editor-menu [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor\n [editor]=\"editor\"\n [formControl]=\"submittedAnswer\"\n ></ngx-editor>\n </div>\n <div *ngIf=\"disableInput\" [innerHtml]=\"submittedAnswer.value\"></div>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 5\">\n <mat-form-field *ngIf=\"!disableInput\">\n <mat-label>Answer</mat-label>\n <input matInput type=\"number\" size=\"10\" [formControl]=\"submittedAnswer\"/>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 6\">\n <mat-form-field *ngIf=\"!disableInput\">\n <input matInput [matDatepicker]=\"picker\" placeholder=\"Date\" [formControl]=\"submittedAnswer\"\n (focus)=\"picker.open()\"/>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <span *ngIf=\"disableInput\">{{ submittedAnswer.value | date }}</span>\n </div>\n\n <div *ngIf=\"questionInfo?.type_id === 7\">\n <ol>\n <li *ngFor=\"let answer of questionInfo?.answers\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <div>{{ answer?.value }} -</div>\n <mat-radio-group fxLayout=\"row\" (change)=\"onMultiSelectYesNoAnswerChange($event, answer)\"\n [disabled]=\"disableInput\" [value]=\"answer.selectedValue\">\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"true\" [disabled]=\"disableInput\">\n Yes\n </mat-radio-button>\n <mat-radio-button class=\"mt-1 ml-2 yes-no\" [value]=\"false\" [disabled]=\"disableInput\">\n No\n </mat-radio-button>\n </mat-radio-group>\n </div>\n </li>\n </ol>\n </div>\n\n <span class=\"flex-fill\"></span>\n\n <app-checksheet-submission-files style=\"width: calc(33.33%)\" [submissionId]=\"submissionId\"\n [questionId]=\"questionInfo?.id\"></app-checksheet-submission-files>\n </div>\n\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: [".answer-radio-group{display:flex;flex-direction:column;margin:15px 0}.answer-radio-button{margin:5px}:host ::ng-deep .short-answer .ck.ck-content{min-height:100px!important}:host ::ng-deep .long-answer .ck.ck-content{min-height:200px!important}.scroll-container{max-height:650px;overflow-y:auto}.small-margin{margin-top:2px}:host ::ng-deep .yes-no .mat-radio-label-content{padding-left:3px}.main{display:block;position:relative;padding-left:24px;margin-bottom:15px;cursor:pointer}input[type=checkbox]{visibility:hidden}.geekmark{position:absolute;top:2px;left:0;height:15px;width:15px;background-color:#fff}.main input:checked~.geekmark{background-color:green}.geekmark:after{content:\"\";position:absolute;display:none}.main input:checked~.geekmark:after{display:block}.main .geekmark:after{left:5px;bottom:3px;width:6px;height:10px;border:solid white;border-width:0 4px 4px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}img{max-width:500px!important;max-height:500px!important}p{margin-bottom:0!important}\n"] }]
159
158
  }], ctorParameters: () => [{ type: i1.ChecksheetSubmissionAnswerService }], propDecorators: { questionInfo: [{
160
159
  type: Input
161
160
  }], index: [{
@@ -171,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
171
170
  }], isWorkingChange: [{
172
171
  type: Output
173
172
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1xdWVzdGlvbi9jaGVja3NoZWV0LXF1ZXN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LXF1ZXN0aW9uL2NoZWNrc2hlZXQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN0QyxJQUFNLDJCQUEyQixHQUFqQyxNQUFNLDJCQUEyQjtJQW1CNUI7SUFsQkQsWUFBWSxDQUFNO0lBRWxCLEtBQUssQ0FBTztJQUVaLGNBQWMsQ0FBVztJQUV6QixZQUFZLENBQVU7SUFFdEIsWUFBWSxDQUFXO0lBRWhDLFlBQVksQ0FBVTtJQUN0QixNQUFNLENBQVU7SUFFUCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzFCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3hELGVBQWUsR0FBZ0IsSUFBSSxXQUFXLENBQU0sRUFBRSxDQUFDLENBQUM7SUFFeEQsWUFDVSxp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VyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUNsQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDaEMsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTO1lBQ2hDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU87WUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPO1NBQzdCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsaUNBQWlDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUMzRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTFKVSwyQkFBMkI7NEZBQTNCLDJCQUEyQixnU0NyQnhDLDB4T0EyT0E7O0FEdE5hLDJCQUEyQjtJQVB2QyxZQUFZLEVBQUU7R0FPRiwyQkFBMkIsQ0EySnZDOzs0RkEzSlksMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHlCQUF5QixpQkFFcEIsaUJBQWlCLENBQUMsSUFBSTtzR0FJNUIsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3kgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnbmd4LWVkaXRvcic7XG5pbXBvcnQgeyBDaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2UgfSBmcm9tICcuLi9jaGVja3NoZWV0LXN1Ym1pc3Npb24tYW5zd2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrc2hlZXQtcXVlc3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tzaGVldC1xdWVzdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsIC8vIExldHMgdXMgc3R5bGUgdGhlIGlubmVySFRNTCBjb2RlXG4gIHN0eWxlVXJsczogWycuL2NoZWNrc2hlZXQtcXVlc3Rpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja3NoZWV0UXVlc3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBxdWVzdGlvbkluZm86IGFueTtcblxuICBASW5wdXQoKSBpbmRleCE6IGFueTtcblxuICBASW5wdXQoKSBzdWJtaXNzaW9uVmlldyE6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc3VibWlzc2lvbklkITogbnVtYmVyO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVJbnB1dCE6IGJvb2xlYW47XG5cbiAgZmlsZUVudGl0eUlkITogbnVtYmVyO1xuICBlZGl0b3IhOiBFZGl0b3I7XG5cbiAgQElucHV0KCkgaXNXb3JraW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBpc1dvcmtpbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHN1Ym1pdHRlZEFuc3dlcjogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8YW55PignJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2U6IENoZWNrc2hlZXRTdWJtaXNzaW9uQW5zd2VyU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2codGhpcy5kaXNhYmxlSW5wdXQsIHRoaXMuc3VibWlzc2lvblZpZXcpO1xuICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvcigpO1xuXG4gICAgdGhpcy5zdWJtaXR0ZWRBbnN3ZXIudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLnNhdmVBbnN3ZXIoeyBhbnN3ZXJfaWQ6IHZhbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNhdmVBbnN3ZXIoeyBkZXRhaWxzOiB2YWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc3VibWlzc2lvblZpZXcpIHtcbiAgICAgIC8vIGxvYWQgdGhlIGFuc3dlciBmb3IgY3VycmVudCBzdWJtaXNzaW9uIHF1ZXN0aW9uXG4gICAgICB0aGlzLmxvYWRBbnN3ZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVFbnRpdHlJZCA9IHRoaXMucXVlc3Rpb25JbmZvLmlkO1xuICB9XG5cbiAgb25NdWx0aVNlbGVjdEFuc3dlckNoYW5nZSgpIHtcbiAgICBjb25zdCBhbnN3ZXJJZHM6IG51bWJlcltdID0gKHRoaXMucXVlc3Rpb25JbmZvLmFuc3dlcnMgYXMgW10pXG4gICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uaXNDaGVja2VkKVxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcblxuICAgIHRoaXMuc2F2ZUFuc3dlcih7IGFuc3dlcl9pZHM6IGFuc3dlcklkcyB9KTtcbiAgfVxuXG4gIG9uTXVsdGlTZWxlY3RZZXNOb0Fuc3dlckNoYW5nZShldmVudDogYW55LCBhbnN3ZXI6IGFueSkge1xuICAgIHRoaXMuc2F2ZUFuc3dlcih7IGFuc3dlcl9pZDogYW5zd2VyPy5pZCwgZGV0YWlsczogZXZlbnQudmFsdWUgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRNQ1FBbnN3ZXIoYW5zd2VyczogYW55W10gPSBbXSwgYW5zd2VyX2lkOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKGFuc3dlcl9pZCkge1xuICAgICAgY29uc3Qgc3VibWl0dGVkQW5zd2VyID0gYW5zd2Vycy5maW5kKCh4KSA9PiB4LmlkID09PSBhbnN3ZXJfaWQpO1xuICAgICAgaWYgKHN1Ym1pdHRlZEFuc3dlcikge1xuICAgICAgICByZXR1cm4gc3VibWl0dGVkQW5zd2VyPy52YWx1ZSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0U3VibWl0dGVkTVNRQW5zd2VyKCkge1xuICAgIHJldHVybiAodGhpcy5xdWVzdGlvbkluZm8/LmFuc3dlcnMgYXMgW10pXG4gICAgICAuZmlsdGVyKChhbnN3ZXI6IGFueSkgPT4gYW5zd2VyPy5pc0NoZWNrZWQpXG4gICAgICA/Lm1hcCgoYW5zd2VyOiBhbnkpID0+IGFuc3dlci52YWx1ZSlcbiAgICAgID8uam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFuc3dlcigpIHtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICAgIHN1Ym1pc3Npb25faWRzOiB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgIHF1ZXN0aW9uX2lkczogdGhpcy5xdWVzdGlvbkluZm8/LmlkXG4gICAgfTtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2UuaW5kZXgocGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgYW5zd2VyczogYW55W10gPSByZXNwb25zZT8uZGF0YTtcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAxICYmIGFuc3dlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRlZEFuc3dlci5zZXRWYWx1ZShhbnN3ZXJzWzBdPy5hbnN3ZXJfaWQsIHtcbiAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMikge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGVkQW5zd2VyLnNldFZhbHVlKGFuc3dlcnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uSW5mby5hbnN3ZXJzID0gKHRoaXMucXVlc3Rpb25JbmZvPy5hbnN3ZXJzIGFzIFtdKS5tYXAoXG4gICAgICAgICAgICAoYW5zd2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgaXNDaGVja2VkOiBhbnN3ZXJzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLmFuc3dlcl9pZCA9PT0gYW5zd2VyLmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgKHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAzIHx8XG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gNCB8fFxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDUgfHxcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA2KSAmJlxuICAgICAgICAgIGFuc3dlcnM/Lmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0ZWRBbnN3ZXIuc2V0VmFsdWUoYW5zd2Vyc1swXS5kZXRhaWxzIHx8ICcnLCB7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDcpIHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRlZEFuc3dlci5zZXRWYWx1ZShhbnN3ZXJzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5xdWVzdGlvbkluZm8uYW5zd2VycyA9ICh0aGlzLnF1ZXN0aW9uSW5mbz8uYW5zd2VycyBhcyBbXSkubWFwKFxuICAgICAgICAgICAgKGFuc3dlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYW5zd2Vycy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uYW5zd2VyX2lkID09PSBhbnN3ZXIuaWRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZTogcmVzdWx0ID8gQm9vbGVhbihOdW1iZXIocmVzdWx0Py5kZXRhaWxzKSkgOiBudWxsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHJlcXVlc3QgdG8gc2F2ZSB0aGUgcXVlc3Rpb24gYW5zd2Vycy5cbiAgICpcbiAgICogQHBhcmFtIGFuc3dlckRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2F2ZUFuc3dlcihhbnN3ZXJEYXRhOiB7XG4gICAgYW5zd2VyX2lkPzogbnVtYmVyO1xuICAgIGFuc3dlcl9pZHM/OiBudW1iZXJbXTtcbiAgICBkZXRhaWxzPzogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgcXVlc3Rpb25faWQ6IHRoaXMucXVlc3Rpb25JbmZvPy5pZCxcbiAgICAgIHN1Ym1pc3Npb25faWQ6IHRoaXMuc3VibWlzc2lvbklkLFxuICAgICAgYW5zd2VyX2lkOiBhbnN3ZXJEYXRhPy5hbnN3ZXJfaWQsXG4gICAgICBhbnN3ZXJfaWRzOiBhbnN3ZXJEYXRhPy5hbnN3ZXJfaWRzLFxuICAgICAgcXVlc3Rpb25fdHlwZV9pZDogdGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQsXG4gICAgICBkZXRhaWxzOiBhbnN3ZXJEYXRhPy5kZXRhaWxzXG4gICAgfTtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2Uuc3RvcmUoZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNXb3JraW5nID0gZmFsc2UpXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICBmeExheW91dEdhcD1cIjAuNXJlbVwiXG4gIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIlxuICAqbmdJZj1cIiFzdWJtaXNzaW9uVmlld1wiXG4+XG4gIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjAuNXJlbVwiIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgIDxkaXY+e3sgaW5kZXggKyAxIH19LjwvZGl2PlxuICAgIDxkaXYgW2lubmVySFRNTF09XCJxdWVzdGlvbkluZm8/LmxhYmVsXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIj5cbiAgICA8c21hbGw+e3sgcXVlc3Rpb25JbmZvPy50eXBlPy50aXRsZSB9fTwvc21hbGw+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMVwiXG4gICAgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgIGZ4TGF5b3V0R2FwPVwiMC4yNXJlbVwiXG4gICAgY2xhc3M9XCJtci0zXCJcbiAgPlxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgY2xhc3M9XCJhbnN3ZXItcmFkaW8tZ3JvdXBcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxuICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgY2xhc3M9XCJhbnN3ZXItcmFkaW8tYnV0dG9uXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnNcIlxuICAgICAgICBbdmFsdWVdPVwiYW5zd2VyLmlkXCJcbiAgICAgID5cbiAgICAgICAge3sgYW5zd2VyLnZhbHVlIH19XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICAqbmdJZj1cInF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMlwiXG4gICAgZnhMYXlvdXQ9XCJjb2x1bW5cIlxuICAgIGZ4TGF5b3V0R2FwPVwiMC4yNXJlbVwiXG4gICAgY2xhc3M9XCJtci0zXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGZ4TGF5b3V0PVwicm93XCJcbiAgICAgIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIlxuICAgICAgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnM7IGxldCBpID0gaW5kZXhcIlxuICAgID5cbiAgICAgIDxtYXQtY2hlY2tib3ggW2Rpc2FibGVkXT1cInRydWVcIiBmeEZsZXg9XCI4MCVcIlxuICAgICAgICA+e3sgaSArIDEgfX0gKSB7eyBhbnN3ZXIudmFsdWUgfX08L21hdC1jaGVja2JveFxuICAgICAgPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJcbiAgICAgIHF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMyB8fFxuICAgICAgcXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA1IHx8XG4gICAgICBxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDZcbiAgICBcIlxuICAgIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICBmeExheW91dEdhcD1cIjAuMjVyZW1cIlxuICAgIGNsYXNzPVwibXItMyB3LTUwIGJvcmRlciBzaG9ydC1hbnN3ZXJcIlxuICA+PC9kaXY+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA0XCJcbiAgICBmeExheW91dD1cImNvbHVtblwiXG4gICAgZnhMYXlvdXRHYXA9XCIwLjI1cmVtXCJcbiAgICBjbGFzcz1cIm1yLTMgdy01MCBib3JkZXIgbG9uZy1hbnN3ZXJcIlxuICA+PC9kaXY+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA3XCJcbiAgICBmeExheW91dD1cImNvbHVtblwiXG4gICAgZnhMYXlvdXRHYXA9XCIwLjI1cmVtXCJcbiAgICBjbGFzcz1cIm1yLTNcIlxuICA+XG4gICAgPG9sPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb25JbmZvPy5hbnN3ZXJzXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG4gICAgICAgICAgPGRpdj57eyBhbnN3ZXI/LnZhbHVlIH19IC08L2Rpdj5cbiAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFtkaXNhYmxlZF09XCJ0cnVlXCIgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibXQtMSBtbC0yIHllcy1ub1wiIHZhbHVlPVwiMVwiXG4gICAgICAgICAgICAgID5ZZXNcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibXQtMSBtbC0yIHllcy1ub1wiIHZhbHVlPVwiMFwiXG4gICAgICAgICAgICAgID5Ob1xuICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbGk+XG4gICAgPC9vbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInN1Ym1pc3Npb25WaWV3XCI+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG1iLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPHN0cm9uZz57eyBpbmRleCArIDEgfX0uPC9zdHJvbmc+XG4gICAgICA8c3Ryb25nIFtpbm5lckhUTUxdPVwicXVlc3Rpb25JbmZvPy5sYWJlbFwiPjwvc3Ryb25nPlxuICAgICAgPGFwcC1jaGVja3NoZWV0LXN1Ym1pc3Npb24tZmlsZS11cGxvYWRcbiAgICAgICAgW3N1Ym1pc3Npb25JZF09XCJzdWJtaXNzaW9uSWRcIlxuICAgICAgICBbcXVlc3Rpb25JZF09XCJxdWVzdGlvbkluZm8/LmlkXCJcbiAgICAgICAgKHVwbG9hZGVkKT1cImNoZWNrc2hlZXRTdWJtaXNzaW9uRmlsZXNDb21wb25lbnQucmVsb2FkKClcIlxuICAgICAgICBjbGFzcz1cIm1sLTNcIlxuICAgICAgPjwvYXBwLWNoZWNrc2hlZXQtc3VibWlzc2lvbi1maWxlLXVwbG9hZD5cbiAgICA8L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXByaW1hcnlcIj57eyBxdWVzdGlvbkluZm8/LnR5cGU/LnRpdGxlIH19PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMVwiPlxuICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDFcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICAgICAgPG1hdC1yYWRpby1ncm91cFxuICAgICAgICBjbGFzcz1cImFuc3dlci1yYWRpby1ncm91cFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlSW5wdXRcIlxuICAgICAgICAqbmdJZj1cIiFkaXNhYmxlSW5wdXRcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3VibWl0dGVkQW5zd2VyXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgICBjbGFzcz1cImFuc3dlci1yYWRpby1idXR0b25cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb25JbmZvPy5hbnN3ZXJzXCJcbiAgICAgICAgICBbdmFsdWVdPVwiYW5zd2VyLmlkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGFuc3dlci52YWx1ZSB9fVxuICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxiPkFuc3dlcjo8L2I+XG4gICAgICAgIHt7XG4gICAgICAgICAgZ2V0U3VibWl0dGVkTUNRQW5zd2VyKFxuICAgICAgICAgICAgcXVlc3Rpb25JbmZvPy5hbnN3ZXJzLFxuICAgICAgICAgICAgdGhpcy5zdWJtaXR0ZWRBbnN3ZXIudmFsdWVcbiAgICAgICAgICApXG4gICAgICAgIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAyXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBmeExheW91dD1cInJvd1wiXG4gICAgICAgICAgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk11bHRpU2VsZWN0QW5zd2VyQ2hhbmdlKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVJbnB1dFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImFuc3dlci5pc0NoZWNrZWRcIlxuICAgICAgICAgICAgZnhGbGV4PVwiODAlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBpICsgMSB9fVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAge3sgYW5zd2VyLnZhbHVlIH19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxiPkFuc3dlcnM6PC9iPlxuICAgICAgICB7eyBnZXRTdWJtaXR0ZWRNU1FBbnN3ZXIoKSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMyB8fCBxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJOZ3hFZGl0b3JfX1dyYXBwZXIgbWItMlwiICpuZ0lmPVwiIWRpc2FibGVJbnB1dFwiPlxuICAgICAgICA8bmd4LWVkaXRvci1tZW51IFtlZGl0b3JdPVwiZWRpdG9yXCI+IDwvbmd4LWVkaXRvci1tZW51PlxuICAgICAgICA8bmd4LWVkaXRvclxuICAgICAgICAgIFtlZGl0b3JdPVwiZWRpdG9yXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3VibWl0dGVkQW5zd2VyXCJcbiAgICAgICAgPjwvbmd4LWVkaXRvcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImRpc2FibGVJbnB1dFwiIFtpbm5lckh0bWxdPVwic3VibWl0dGVkQW5zd2VyLnZhbHVlXCI+PC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA1XCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxtYXQtbGFiZWw+QW5zd2VyPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgc2l6ZT1cIjEwXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3VibWl0dGVkQW5zd2VyXCJcbiAgICAgICAgLz5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImRpc2FibGVJbnB1dFwiPnt7IHN1Ym1pdHRlZEFuc3dlci52YWx1ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDZcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFkaXNhYmxlSW5wdXRcIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGF0ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN1Ym1pdHRlZEFuc3dlclwiXG4gICAgICAgICAgKGZvY3VzKT1cInBpY2tlci5vcGVuKClcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiZGlzYWJsZUlucHV0XCI+e3sgc3VibWl0dGVkQW5zd2VyLnZhbHVlIHwgZGF0ZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDcgJiYgIWRpc2FibGVJbnB1dFwiPlxuICAgICAgPG9sPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnNcIj5cbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdj57eyBhbnN3ZXI/LnZhbHVlIH19IC08L2Rpdj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcbiAgICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTXVsdGlTZWxlY3RZZXNOb0Fuc3dlckNoYW5nZSgkZXZlbnQsIGFuc3dlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImFuc3dlci5zZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJtdC0xIG1sLTIgeWVzLW5vXCIgW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICBZZXNcbiAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cIm10LTEgbWwtMiB5ZXMtbm9cIiBbdmFsdWVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICBOb1xuICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvb2w+XG4gICAgPC9kaXY+XG5cbiAgICA8YXBwLWNoZWNrc2hlZXQtc3VibWlzc2lvbi1maWxlc1xuICAgICAgY2xhc3M9XCJ3LTUwXCJcbiAgICAgICNjaGVja3NoZWV0U3VibWlzc2lvbkZpbGVzQ29tcG9uZW50XG4gICAgICBbc3VibWlzc2lvbklkXT1cInN1Ym1pc3Npb25JZFwiXG4gICAgICBbcXVlc3Rpb25JZF09XCJxdWVzdGlvbkluZm8/LmlkXCJcbiAgICA+PC9hcHAtY2hlY2tzaGVldC1zdWJtaXNzaW9uLWZpbGVzPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA3ICYmIGRpc2FibGVJbnB1dFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnNcIj5cbiAgICAgIHt7IGFuc3dlcj8udmFsdWUgfX0gLSB7eyBhbnN3ZXI/LnNlbGVjdGVkVmFsdWUgPyAnWWVzJyA6ICdObycgfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgKm5nSWY9XCJpc1dvcmtpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1xdWVzdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1xdWVzdGlvbi9jaGVja3NoZWV0LXF1ZXN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LXF1ZXN0aW9uL2NoZWNrc2hlZXQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVN0QyxJQUFNLDJCQUEyQixHQUFqQyxNQUFNLDJCQUEyQjtJQW1CNUI7SUFsQkQsWUFBWSxDQUFNO0lBRWxCLEtBQUssQ0FBTztJQUVaLGNBQWMsQ0FBVztJQUV6QixZQUFZLENBQVU7SUFFdEIsWUFBWSxDQUFXO0lBRWhDLFlBQVksQ0FBVTtJQUN0QixNQUFNLENBQVU7SUFFUCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzFCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBQ3hELGVBQWUsR0FBZ0IsSUFBSSxXQUFXLENBQU0sRUFBRSxDQUFDLENBQUM7SUFFeEQsWUFDVSxp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QVMsRUFBRSxVQUFVLEVBQUUsU0FBUztZQUNoQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7WUFDbEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPO1lBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTztTQUM3QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0F6SlUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsZ1NDckJ4Qyx3M01BaUpBOztBRDVIYSwyQkFBMkI7SUFQdkMsWUFBWSxFQUFFO0dBT0YsMkJBQTJCLENBMEp2Qzs7NEZBMUpZLDJCQUEyQjtrQkFOdkMsU0FBUzsrQkFDRSx5QkFBeUIsaUJBRXBCLGlCQUFpQixDQUFDLElBQUk7c0dBSTVCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95IH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ25neC1lZGl0b3InO1xuaW1wb3J0IHsgQ2hlY2tzaGVldFN1Ym1pc3Npb25BbnN3ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2hlY2tzaGVldC1zdWJtaXNzaW9uLWFuc3dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVja3NoZWV0LXF1ZXN0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtcXVlc3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLCAvLyBMZXRzIHVzIHN0eWxlIHRoZSBpbm5lckhUTUwgY29kZVxuICBzdHlsZVVybHM6IFsnLi9jaGVja3NoZWV0LXF1ZXN0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tzaGVldFF1ZXN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcXVlc3Rpb25JbmZvOiBhbnk7XG5cbiAgQElucHV0KCkgaW5kZXghOiBhbnk7XG5cbiAgQElucHV0KCkgc3VibWlzc2lvblZpZXchOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JZCE6IG51bWJlcjtcblxuICBASW5wdXQoKSBkaXNhYmxlSW5wdXQhOiBib29sZWFuO1xuXG4gIGZpbGVFbnRpdHlJZCE6IG51bWJlcjtcbiAgZWRpdG9yITogRWRpdG9yO1xuXG4gIEBJbnB1dCgpIGlzV29ya2luZzogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgaXNXb3JraW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBzdWJtaXR0ZWRBbnN3ZXI6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sPGFueT4oJycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hlY2tzaGVldFN1Ym1pc3Npb25BbnN3ZXJTZXJ2aWNlOiBDaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdG9yID0gbmV3IEVkaXRvcigpO1xuXG4gICAgdGhpcy5zdWJtaXR0ZWRBbnN3ZXIudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDEpIHtcbiAgICAgICAgICB0aGlzLnNhdmVBbnN3ZXIoeyBhbnN3ZXJfaWQ6IHZhbCB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNhdmVBbnN3ZXIoeyBkZXRhaWxzOiB2YWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc3VibWlzc2lvblZpZXcpIHtcbiAgICAgIC8vIGxvYWQgdGhlIGFuc3dlciBmb3IgY3VycmVudCBzdWJtaXNzaW9uIHF1ZXN0aW9uXG4gICAgICB0aGlzLmxvYWRBbnN3ZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGVFbnRpdHlJZCA9IHRoaXMucXVlc3Rpb25JbmZvLmlkO1xuICB9XG5cbiAgb25NdWx0aVNlbGVjdEFuc3dlckNoYW5nZSgpIHtcbiAgICBjb25zdCBhbnN3ZXJJZHM6IG51bWJlcltdID0gKHRoaXMucXVlc3Rpb25JbmZvLmFuc3dlcnMgYXMgW10pXG4gICAgICAuZmlsdGVyKChpdGVtOiBhbnkpID0+IGl0ZW0uaXNDaGVja2VkKVxuICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcblxuICAgIHRoaXMuc2F2ZUFuc3dlcih7IGFuc3dlcl9pZHM6IGFuc3dlcklkcyB9KTtcbiAgfVxuXG4gIG9uTXVsdGlTZWxlY3RZZXNOb0Fuc3dlckNoYW5nZShldmVudDogYW55LCBhbnN3ZXI6IGFueSkge1xuICAgIHRoaXMuc2F2ZUFuc3dlcih7IGFuc3dlcl9pZDogYW5zd2VyPy5pZCwgZGV0YWlsczogZXZlbnQudmFsdWUgfSk7XG4gIH1cblxuICBnZXRTdWJtaXR0ZWRNQ1FBbnN3ZXIoYW5zd2VyczogYW55W10gPSBbXSwgYW5zd2VyX2lkOiBhbnkgPSBudWxsKSB7XG4gICAgaWYgKGFuc3dlcl9pZCkge1xuICAgICAgY29uc3Qgc3VibWl0dGVkQW5zd2VyID0gYW5zd2Vycy5maW5kKCh4KSA9PiB4LmlkID09PSBhbnN3ZXJfaWQpO1xuICAgICAgaWYgKHN1Ym1pdHRlZEFuc3dlcikge1xuICAgICAgICByZXR1cm4gc3VibWl0dGVkQW5zd2VyPy52YWx1ZSB8fCAnJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZ2V0U3VibWl0dGVkTVNRQW5zd2VyKCkge1xuICAgIHJldHVybiAodGhpcy5xdWVzdGlvbkluZm8/LmFuc3dlcnMgYXMgW10pXG4gICAgICAuZmlsdGVyKChhbnN3ZXI6IGFueSkgPT4gYW5zd2VyPy5pc0NoZWNrZWQpXG4gICAgICA/Lm1hcCgoYW5zd2VyOiBhbnkpID0+IGFuc3dlci52YWx1ZSlcbiAgICAgID8uam9pbignLCAnKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFuc3dlcigpIHtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHtcbiAgICAgIHN1Ym1pc3Npb25faWRzOiB0aGlzLnN1Ym1pc3Npb25JZCxcbiAgICAgIHF1ZXN0aW9uX2lkczogdGhpcy5xdWVzdGlvbkluZm8/LmlkXG4gICAgfTtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2UuaW5kZXgocGFyYW1zKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgYW5zd2VyczogYW55W10gPSByZXNwb25zZT8uZGF0YTtcbiAgICAgICAgaWYgKHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAxICYmIGFuc3dlcnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRlZEFuc3dlci5zZXRWYWx1ZShhbnN3ZXJzWzBdPy5hbnN3ZXJfaWQsIHtcbiAgICAgICAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMikge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGVkQW5zd2VyLnNldFZhbHVlKGFuc3dlcnMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uSW5mby5hbnN3ZXJzID0gKHRoaXMucXVlc3Rpb25JbmZvPy5hbnN3ZXJzIGFzIFtdKS5tYXAoXG4gICAgICAgICAgICAoYW5zd2VyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgaXNDaGVja2VkOiBhbnN3ZXJzLnNvbWUoXG4gICAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtLmFuc3dlcl9pZCA9PT0gYW5zd2VyLmlkXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgKHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAzIHx8XG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gNCB8fFxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDUgfHxcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA2KSAmJlxuICAgICAgICAgIGFuc3dlcnM/Lmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0ZWRBbnN3ZXIuc2V0VmFsdWUoYW5zd2Vyc1swXS5kZXRhaWxzIHx8ICcnLCB7XG4gICAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDcpIHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRlZEFuc3dlci5zZXRWYWx1ZShhbnN3ZXJzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgICAgdGhpcy5xdWVzdGlvbkluZm8uYW5zd2VycyA9ICh0aGlzLnF1ZXN0aW9uSW5mbz8uYW5zd2VycyBhcyBbXSkubWFwKFxuICAgICAgICAgICAgKGFuc3dlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYW5zd2Vycy5maW5kKFxuICAgICAgICAgICAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0uYW5zd2VyX2lkID09PSBhbnN3ZXIuaWRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5hbnN3ZXIsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZTogcmVzdWx0ID8gQm9vbGVhbihOdW1iZXIocmVzdWx0Py5kZXRhaWxzKSkgOiBudWxsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiAodGhpcy5pc1dvcmtpbmcgPSBmYWxzZSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHJlcXVlc3QgdG8gc2F2ZSB0aGUgcXVlc3Rpb24gYW5zd2Vycy5cbiAgICpcbiAgICogQHBhcmFtIGFuc3dlckRhdGFcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc2F2ZUFuc3dlcihhbnN3ZXJEYXRhOiB7XG4gICAgYW5zd2VyX2lkPzogbnVtYmVyO1xuICAgIGFuc3dlcl9pZHM/OiBudW1iZXJbXTtcbiAgICBkZXRhaWxzPzogc3RyaW5nO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgcXVlc3Rpb25faWQ6IHRoaXMucXVlc3Rpb25JbmZvPy5pZCxcbiAgICAgIHN1Ym1pc3Npb25faWQ6IHRoaXMuc3VibWlzc2lvbklkLFxuICAgICAgYW5zd2VyX2lkOiBhbnN3ZXJEYXRhPy5hbnN3ZXJfaWQsXG4gICAgICBhbnN3ZXJfaWRzOiBhbnN3ZXJEYXRhPy5hbnN3ZXJfaWRzLFxuICAgICAgcXVlc3Rpb25fdHlwZV9pZDogdGhpcy5xdWVzdGlvbkluZm8/LnR5cGVfaWQsXG4gICAgICBkZXRhaWxzOiBhbnN3ZXJEYXRhPy5kZXRhaWxzXG4gICAgfTtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG4gICAgdGhpcy5jaGVja3NoZWV0U3VibWlzc2lvbkFuc3dlclNlcnZpY2Uuc3RvcmUoZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4gKHRoaXMuaXNXb3JraW5nID0gZmFsc2UpXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIiAqbmdJZj1cIiFzdWJtaXNzaW9uVmlld1wiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBtYi0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgIDxzdHJvbmc+e3sgaW5kZXggKyAxIH19Ljwvc3Ryb25nPlxuICAgICAgPHN0cm9uZyBbaW5uZXJIVE1MXT1cInF1ZXN0aW9uSW5mbz8ubGFiZWxcIj48L3N0cm9uZz5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmctc2Vjb25kYXJ5XCI+e3sgcXVlc3Rpb25JbmZvPy50eXBlPy50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjI1cmVtXCIgY2xhc3M9XCJtci0zXCI+XG4gICAgPG1hdC1yYWRpby1ncm91cCBjbGFzcz1cImFuc3dlci1yYWRpby1ncm91cFwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImFuc3dlci1yYWRpby1idXR0b25cIiAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uSW5mbz8uYW5zd2Vyc1wiIFt2YWx1ZV09XCJhbnN3ZXIuaWRcIj5cbiAgICAgICAge3sgYW5zd2VyLnZhbHVlIH19XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDJcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0R2FwPVwiMC4yNXJlbVwiIGNsYXNzPVwibXItM1wiPlxuICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxtYXQtY2hlY2tib3ggW2Rpc2FibGVkXT1cInRydWVcIiBmeEZsZXg9XCI4MCVcIj57eyBpICsgMSB9fSApIHt7IGFuc3dlci52YWx1ZSB9fTwvbWF0LWNoZWNrYm94PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAzIHx8IHF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gNSB8fCBxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDZcIlxuICAgICAgIGNsYXNzPVwibXItMyBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmxpZ2h0YnVsYjwvc3Bhbj5cbiAgICA8cCBjbGFzcz1cIm1iLTBcIj5BbnN3ZXI8L3A+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDRcIiBjbGFzcz1cIm1yLTMgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5saWdodGJ1bGI8L3NwYW4+XG4gICAgPHAgY2xhc3M9XCJtYi0wXCI+QW5zd2VyPC9wPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDdcIlxuICAgIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICBmeExheW91dEdhcD1cIjAuMjVyZW1cIlxuICAgIGNsYXNzPVwibXItM1wiXG4gID5cbiAgICA8b2w+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnNcIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2Pnt7IGFuc3dlcj8udmFsdWUgfX0gLTwvZGl2PlxuICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Rpc2FibGVkXT1cInRydWVcIiBmeExheW91dD1cInJvd1wiPlxuICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJtdC0xIG1sLTIgeWVzLW5vXCIgdmFsdWU9XCIxXCJcbiAgICAgICAgICAgID5ZZXNcbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibXQtMSBtbC0yIHllcy1ub1wiIHZhbHVlPVwiMFwiXG4gICAgICAgICAgICA+Tm9cbiAgICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxtYXQtY2FyZCAqbmdJZj1cInN1Ym1pc3Npb25WaWV3XCI+XG4gIDxtYXQtY2FyZC1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIG1iLTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxzdHJvbmc+e3sgaW5kZXggKyAxIH19Ljwvc3Ryb25nPlxuICAgICAgICA8c3Ryb25nIFtpbm5lckhUTUxdPVwicXVlc3Rpb25JbmZvPy5sYWJlbFwiPjwvc3Ryb25nPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJnLXNlY29uZGFyeVwiPnt7IHF1ZXN0aW9uSW5mbz8udHlwZT8udGl0bGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0xXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSAxXCIgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTJcIj5cbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBjbGFzcz1cImFuc3dlci1yYWRpby1ncm91cFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlSW5wdXRcIiBbZm9ybUNvbnRyb2xdPVwic3VibWl0dGVkQW5zd2VyXCI+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gY2xhc3M9XCJhbnN3ZXItcmFkaW8tYnV0dG9uXCIgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhbnN3ZXIuaWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUlucHV0XCI+XG4gICAgICAgICAgICB7eyBhbnN3ZXIudmFsdWUgfX1cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDJcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbkluZm8/LmFuc3dlcnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCJvbk11bHRpU2VsZWN0QW5zd2VyQ2hhbmdlKClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUlucHV0XCIgWyhuZ01vZGVsKV09XCJhbnN3ZXIuaXNDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnhGbGV4PVwiODAlXCI+XG4gICAgICAgICAgICAgIHt7IGkgKyAxIH19ICkge3sgYW5zd2VyLnZhbHVlIH19XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uSW5mbz8udHlwZV9pZCA9PT0gMyB8fCBxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIk5neEVkaXRvcl9fV3JhcHBlciBtYi0yXCIgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCI+XG4gICAgICAgICAgPG5neC1lZGl0b3ItbWVudSBbZWRpdG9yXT1cImVkaXRvclwiPiA8L25neC1lZGl0b3ItbWVudT5cbiAgICAgICAgICA8bmd4LWVkaXRvclxuICAgICAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN1Ym1pdHRlZEFuc3dlclwiXG4gICAgICAgICAgPjwvbmd4LWVkaXRvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNhYmxlSW5wdXRcIiBbaW5uZXJIdG1sXT1cInN1Ym1pdHRlZEFuc3dlci52YWx1ZVwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDVcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiIWRpc2FibGVJbnB1dFwiPlxuICAgICAgICAgIDxtYXQtbGFiZWw+QW5zd2VyPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJudW1iZXJcIiBzaXplPVwiMTBcIiBbZm9ybUNvbnRyb2xdPVwic3VibWl0dGVkQW5zd2VyXCIvPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8c3BhbiAqbmdJZj1cImRpc2FibGVJbnB1dFwiPnt7IHN1Ym1pdHRlZEFuc3dlci52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb25JbmZvPy50eXBlX2lkID09PSA2XCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cIiFkaXNhYmxlSW5wdXRcIj5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgcGxhY2Vob2xkZXI9XCJEYXRlXCIgW2Zvcm1Db250cm9sXT1cInN1Ym1pdHRlZEFuc3dlclwiXG4gICAgICAgICAgICAgICAgIChmb2N1cyk9XCJwaWNrZXIub3BlbigpXCIvPlxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJkaXNhYmxlSW5wdXRcIj57eyBzdWJtaXR0ZWRBbnN3ZXIudmFsdWUgfCBkYXRlIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJxdWVzdGlvbkluZm8/LnR5cGVfaWQgPT09IDdcIj5cbiAgICAgICAgPG9sPlxuICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uSW5mbz8uYW5zd2Vyc1wiPlxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdj57eyBhbnN3ZXI/LnZhbHVlIH19IC08L2Rpdj5cbiAgICAgICAgICAgICAgPG1hdC1yYWRpby1ncm91cCBmeExheW91dD1cInJvd1wiIChjaGFuZ2UpPVwib25NdWx0aVNlbGVjdFllc05vQW5zd2VyQ2hhbmdlKCRldmVudCwgYW5zd2VyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVJbnB1dFwiIFt2YWx1ZV09XCJhbnN3ZXIuc2VsZWN0ZWRWYWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibXQtMSBtbC0yIHllcy1ub1wiIFt2YWx1ZV09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVJbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgWWVzXG4gICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIGNsYXNzPVwibXQtMSBtbC0yIHllcy1ub1wiIFt2YWx1ZV09XCJmYWxzZVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlSW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgIE5vXG4gICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LWZpbGxcIj48L3NwYW4+XG5cbiAgICAgIDxhcHAtY2hlY2tzaGVldC1zdWJtaXNzaW9uLWZpbGVzIHN0eWxlPVwid2lkdGg6IGNhbGMoMzMuMzMlKVwiIFtzdWJtaXNzaW9uSWRdPVwic3VibWlzc2lvbklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbklkXT1cInF1ZXN0aW9uSW5mbz8uaWRcIj48L2FwcC1jaGVja3NoZWV0LXN1Ym1pc3Npb24tZmlsZXM+XG4gICAgPC9kaXY+XG5cbiAgICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImlzV29ya2luZ1wiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuIl19