ng-kinintel 0.0.397 → 20.0.2

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 (184) hide show
  1. package/fesm2022/ng-kinintel.mjs +11874 -0
  2. package/fesm2022/ng-kinintel.mjs.map +1 -0
  3. package/index.d.ts +2818 -5
  4. package/package.json +6 -14
  5. package/esm2020/lib/components/alert-groups/alert-groups.component.mjs +0 -76
  6. package/esm2020/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.mjs +0 -83
  7. package/esm2020/lib/components/dashboard-editor/configure-item/configure-item.component.mjs +0 -853
  8. package/esm2020/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.mjs +0 -56
  9. package/esm2020/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.mjs +0 -114
  10. package/esm2020/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.mjs +0 -163
  11. package/esm2020/lib/components/dashboard-editor/configure-item/vis-network-options.json +0 -135
  12. package/esm2020/lib/components/dashboard-editor/dashboard-editor.component.mjs +0 -580
  13. package/esm2020/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.mjs +0 -15
  14. package/esm2020/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.mjs +0 -50
  15. package/esm2020/lib/components/dashboard-editor/item-component/item-component.component.mjs +0 -1226
  16. package/esm2020/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.mjs +0 -111
  17. package/esm2020/lib/components/dashboards/dashboards.component.mjs +0 -163
  18. package/esm2020/lib/components/dashboards/view-dashboard/view-dashboard.component.mjs +0 -429
  19. package/esm2020/lib/components/data-explorer/change-source-warning/change-source-warning.component.mjs +0 -20
  20. package/esm2020/lib/components/data-explorer/data-explorer.component.mjs +0 -243
  21. package/esm2020/lib/components/data-explorer/export-data/export-data.component.mjs +0 -62
  22. package/esm2020/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.mjs +0 -70
  23. package/esm2020/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.mjs +0 -190
  24. package/esm2020/lib/components/data-picker/data-picker.component.mjs +0 -79
  25. package/esm2020/lib/components/data-search/data-search.component.mjs +0 -11
  26. package/esm2020/lib/components/data-sharing-invite/data-sharing-invite.component.mjs +0 -52
  27. package/esm2020/lib/components/dataset/create-dataset/create-dataset.component.mjs +0 -47
  28. package/esm2020/lib/components/dataset/dataset-editor/available-columns/available-columns.component.mjs +0 -28
  29. package/esm2020/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.mjs +0 -344
  30. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.mjs +0 -80
  31. package/esm2020/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.mjs +0 -54
  32. package/esm2020/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.mjs +0 -67
  33. package/esm2020/lib/components/dataset/dataset-editor/dataset-editor.component.mjs +0 -1134
  34. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.mjs +0 -201
  35. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.mjs +0 -25
  36. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.mjs +0 -72
  37. package/esm2020/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.mjs +0 -62
  38. package/esm2020/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.mjs +0 -41
  39. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.mjs +0 -78
  40. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.mjs +0 -39
  41. package/esm2020/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.mjs +0 -75
  42. package/esm2020/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.mjs +0 -107
  43. package/esm2020/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.mjs +0 -20
  44. package/esm2020/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.mjs +0 -20
  45. package/esm2020/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.mjs +0 -58
  46. package/esm2020/lib/components/dataset/dataset-editor/share-query/share-query.component.mjs +0 -110
  47. package/esm2020/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.mjs +0 -20
  48. package/esm2020/lib/components/dataset/dataset.component.mjs +0 -294
  49. package/esm2020/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.mjs +0 -130
  50. package/esm2020/lib/components/datasource/create-datasource/api-access/api-access.component.mjs +0 -132
  51. package/esm2020/lib/components/datasource/create-datasource/create-datasource.component.mjs +0 -729
  52. package/esm2020/lib/components/datasource/create-datasource/import-data/import-data.component.mjs +0 -146
  53. package/esm2020/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.mjs +0 -165
  54. package/esm2020/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.mjs +0 -145
  55. package/esm2020/lib/components/datasource/datasource.component.mjs +0 -162
  56. package/esm2020/lib/components/datasource/document-datasource/document-datasource.component.mjs +0 -297
  57. package/esm2020/lib/components/export-project/export-project.component.mjs +0 -29
  58. package/esm2020/lib/components/feeds/feed/feed.component.mjs +0 -92
  59. package/esm2020/lib/components/feeds/feeds.component.mjs +0 -145
  60. package/esm2020/lib/components/job-tasks/job-tasks.component.mjs +0 -25
  61. package/esm2020/lib/components/marketplace/marketplace.component.mjs +0 -65
  62. package/esm2020/lib/components/metadata/metadata.component.mjs +0 -65
  63. package/esm2020/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.mjs +0 -113
  64. package/esm2020/lib/components/notification-groups/notification-groups.component.mjs +0 -86
  65. package/esm2020/lib/components/project-picker/project-picker.component.mjs +0 -118
  66. package/esm2020/lib/components/project-settings/project-link-selection/project-link-selection.component.mjs +0 -104
  67. package/esm2020/lib/components/project-settings/project-settings.component.mjs +0 -155
  68. package/esm2020/lib/components/query-caching/edit-query-cache/edit-query-cache.component.mjs +0 -51
  69. package/esm2020/lib/components/query-caching/query-cache-view/query-cache-view.component.mjs +0 -121
  70. package/esm2020/lib/components/query-caching/query-caching.component.mjs +0 -162
  71. package/esm2020/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.mjs +0 -45
  72. package/esm2020/lib/components/shared-with-me/shared-with-me.component.mjs +0 -174
  73. package/esm2020/lib/components/snapshots/snapshots.component.mjs +0 -244
  74. package/esm2020/lib/components/tag-picker/tag-picker.component.mjs +0 -74
  75. package/esm2020/lib/components/task-time-periods/task-time-periods.component.mjs +0 -55
  76. package/esm2020/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.mjs +0 -40
  77. package/esm2020/lib/guards/dashboard-changes.guard.mjs +0 -22
  78. package/esm2020/lib/kinintel-config.mjs +0 -3
  79. package/esm2020/lib/ng-kinintel.module.mjs +0 -437
  80. package/esm2020/lib/objects/action-event.mjs +0 -16
  81. package/esm2020/lib/services/alert.service.mjs +0 -52
  82. package/esm2020/lib/services/dashboard.service.mjs +0 -75
  83. package/esm2020/lib/services/data-processor.service.mjs +0 -56
  84. package/esm2020/lib/services/data-search.service.mjs +0 -36
  85. package/esm2020/lib/services/dataset.service.mjs +0 -187
  86. package/esm2020/lib/services/datasource.service.mjs +0 -93
  87. package/esm2020/lib/services/external.service.mjs +0 -33
  88. package/esm2020/lib/services/feed.service.mjs +0 -50
  89. package/esm2020/lib/services/notification.service.mjs +0 -41
  90. package/esm2020/lib/services/project.service.mjs +0 -130
  91. package/esm2020/lib/services/tag.service.mjs +0 -63
  92. package/esm2020/ng-kinintel.mjs +0 -5
  93. package/esm2020/public-api.mjs +0 -43
  94. package/fesm2015/ng-kinintel.mjs +0 -12182
  95. package/fesm2015/ng-kinintel.mjs.map +0 -1
  96. package/fesm2020/ng-kinintel.mjs +0 -11872
  97. package/fesm2020/ng-kinintel.mjs.map +0 -1
  98. package/lib/components/alert-groups/alert-groups.component.d.ts +0 -30
  99. package/lib/components/alert-groups/edit-alert-group/edit-alert-group.component.d.ts +0 -28
  100. package/lib/components/dashboard-editor/configure-item/configure-item.component.d.ts +0 -256
  101. package/lib/components/dashboard-editor/configure-item/edit-dashboard-alert/edit-dashboard-alert.component.d.ts +0 -16
  102. package/lib/components/dashboard-editor/configure-item/html-documentation/html-documentation.component.d.ts +0 -59
  103. package/lib/components/dashboard-editor/configure-item/table-cell-formatter/table-cell-formatter.component.d.ts +0 -26
  104. package/lib/components/dashboard-editor/dashboard-editor.component.d.ts +0 -85
  105. package/lib/components/dashboard-editor/dashboard-parameter/dashboard-parameter.component.d.ts +0 -8
  106. package/lib/components/dashboard-editor/dashboard-settings/dashboard-settings.component.d.ts +0 -22
  107. package/lib/components/dashboard-editor/item-component/item-component.component.d.ts +0 -264
  108. package/lib/components/dashboard-editor/source-selector-dialog/source-selector-dialog.component.d.ts +0 -30
  109. package/lib/components/dashboards/dashboards.component.d.ts +0 -56
  110. package/lib/components/dashboards/view-dashboard/view-dashboard.component.d.ts +0 -81
  111. package/lib/components/data-explorer/change-source-warning/change-source-warning.component.d.ts +0 -11
  112. package/lib/components/data-explorer/data-explorer.component.d.ts +0 -61
  113. package/lib/components/data-explorer/export-data/export-data.component.d.ts +0 -17
  114. package/lib/components/data-explorer/snapshot-api-access/snapshot-api-access.component.d.ts +0 -25
  115. package/lib/components/data-explorer/snapshot-profile-dialog/snapshot-profile-dialog.component.d.ts +0 -44
  116. package/lib/components/data-picker/data-picker.component.d.ts +0 -32
  117. package/lib/components/data-search/data-search.component.d.ts +0 -5
  118. package/lib/components/data-sharing-invite/data-sharing-invite.component.d.ts +0 -21
  119. package/lib/components/dataset/create-dataset/create-dataset.component.d.ts +0 -17
  120. package/lib/components/dataset/dataset-editor/available-columns/available-columns.component.d.ts +0 -12
  121. package/lib/components/dataset/dataset-editor/dataset-add-join/dataset-add-join.component.d.ts +0 -61
  122. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-editor/dataset-column-editor.component.d.ts +0 -21
  123. package/lib/components/dataset/dataset-editor/dataset-column-settings/dataset-column-settings.component.d.ts +0 -20
  124. package/lib/components/dataset/dataset-editor/dataset-create-formula/dataset-create-formula.component.d.ts +0 -19
  125. package/lib/components/dataset/dataset-editor/dataset-editor.component.d.ts +0 -131
  126. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter/dataset-filter.component.d.ts +0 -63
  127. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-inclusion/dataset-filter-inclusion.component.d.ts +0 -11
  128. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filter-junction/dataset-filter-junction.component.d.ts +0 -20
  129. package/lib/components/dataset/dataset-editor/dataset-filters/dataset-filters.component.d.ts +0 -16
  130. package/lib/components/dataset/dataset-editor/dataset-name-dialog/dataset-name-dialog.component.d.ts +0 -18
  131. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-add-parameter/dataset-add-parameter.component.d.ts +0 -23
  132. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-type/dataset-parameter-type.component.d.ts +0 -13
  133. package/lib/components/dataset/dataset-editor/dataset-parameter-values/dataset-parameter-values.component.d.ts +0 -22
  134. package/lib/components/dataset/dataset-editor/dataset-summarise/dataset-summarise.component.d.ts +0 -27
  135. package/lib/components/dataset/dataset-editor/move-transformation-confirmation/move-transformation-confirmation.component.d.ts +0 -11
  136. package/lib/components/dataset/dataset-editor/remove-transformation-warning/remove-transformation-warning.component.d.ts +0 -11
  137. package/lib/components/dataset/dataset-editor/save-as-query/save-as-query.component.d.ts +0 -25
  138. package/lib/components/dataset/dataset-editor/share-query/share-query.component.d.ts +0 -41
  139. package/lib/components/dataset/dataset-editor/upstream-changes-confirmation/upstream-changes-confirmation.component.d.ts +0 -11
  140. package/lib/components/dataset/dataset.component.d.ts +0 -74
  141. package/lib/components/datasource/create-datasource/advanced-settings/advanced-settings.component.d.ts +0 -26
  142. package/lib/components/datasource/create-datasource/api-access/api-access.component.d.ts +0 -31
  143. package/lib/components/datasource/create-datasource/create-datasource.component.d.ts +0 -112
  144. package/lib/components/datasource/create-datasource/import-data/import-data.component.d.ts +0 -28
  145. package/lib/components/datasource/create-datasource/import-data/import-wizard/import-wizard.component.d.ts +0 -40
  146. package/lib/components/datasource/create-datasource/tabular-datasource/tabular-datasource.component.d.ts +0 -34
  147. package/lib/components/datasource/datasource.component.d.ts +0 -46
  148. package/lib/components/datasource/document-datasource/document-datasource.component.d.ts +0 -64
  149. package/lib/components/export-project/export-project.component.d.ts +0 -9
  150. package/lib/components/feeds/feed/feed.component.d.ts +0 -30
  151. package/lib/components/feeds/feeds.component.d.ts +0 -47
  152. package/lib/components/job-tasks/job-tasks.component.d.ts +0 -11
  153. package/lib/components/marketplace/marketplace.component.d.ts +0 -42
  154. package/lib/components/metadata/metadata.component.d.ts +0 -24
  155. package/lib/components/notification-groups/edit-notification-group/edit-notification-group.component.d.ts +0 -37
  156. package/lib/components/notification-groups/notification-groups.component.d.ts +0 -28
  157. package/lib/components/project-picker/project-picker.component.d.ts +0 -37
  158. package/lib/components/project-settings/project-link-selection/project-link-selection.component.d.ts +0 -32
  159. package/lib/components/project-settings/project-settings.component.d.ts +0 -40
  160. package/lib/components/query-caching/edit-query-cache/edit-query-cache.component.d.ts +0 -17
  161. package/lib/components/query-caching/query-cache-view/query-cache-view.component.d.ts +0 -35
  162. package/lib/components/query-caching/query-caching.component.d.ts +0 -38
  163. package/lib/components/shared-with-me/feed-api-modal/feed-api-modal.component.d.ts +0 -21
  164. package/lib/components/shared-with-me/shared-with-me.component.d.ts +0 -43
  165. package/lib/components/snapshots/snapshots.component.d.ts +0 -52
  166. package/lib/components/tag-picker/tag-picker.component.d.ts +0 -27
  167. package/lib/components/task-time-periods/task-time-periods.component.d.ts +0 -20
  168. package/lib/components/whitelisted-sql-functions/whitelisted-sql-functions.component.d.ts +0 -17
  169. package/lib/guards/dashboard-changes.guard.d.ts +0 -11
  170. package/lib/kinintel-config.d.ts +0 -10
  171. package/lib/ng-kinintel.module.d.ts +0 -116
  172. package/lib/objects/action-event.d.ts +0 -12
  173. package/lib/services/alert.service.d.ts +0 -17
  174. package/lib/services/dashboard.service.d.ts +0 -25
  175. package/lib/services/data-processor.service.d.ts +0 -18
  176. package/lib/services/data-search.service.d.ts +0 -14
  177. package/lib/services/dataset.service.d.ts +0 -56
  178. package/lib/services/datasource.service.d.ts +0 -34
  179. package/lib/services/external.service.d.ts +0 -12
  180. package/lib/services/feed.service.d.ts +0 -19
  181. package/lib/services/notification.service.d.ts +0 -16
  182. package/lib/services/project.service.d.ts +0 -27
  183. package/lib/services/tag.service.d.ts +0 -19
  184. package/public-api.d.ts +0 -38
@@ -1,62 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import * as fileSaver from 'file-saver';
4
- import * as lodash from 'lodash';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/material/legacy-dialog";
7
- import * as i2 from "../../../services/dataset.service";
8
- import * as i3 from "@angular/material/legacy-snack-bar";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "@angular/material/legacy-button";
11
- import * as i6 from "@angular/material/icon";
12
- import * as i7 from "@angular/cdk/drag-drop";
13
- import * as i8 from "@angular/forms";
14
- import * as i9 from "@angular/material/legacy-checkbox";
15
- const _ = lodash.default;
16
- export class ExportDataComponent {
17
- constructor(dialogRef, data, datasetService, snackBar) {
18
- this.dialogRef = dialogRef;
19
- this.data = data;
20
- this.datasetService = datasetService;
21
- this.snackBar = snackBar;
22
- this.exportDataset = {};
23
- }
24
- ngOnInit() {
25
- this.exportDataset.dataSetInstanceSummary = this.data.datasetInstanceSummary;
26
- this.exportDataset.transformationInstances = [];
27
- this.exportDataset.parameterValues = [];
28
- this.exportDataset.limit = '100';
29
- this.exportDataset.offset = '0';
30
- this.exportDataset.exporterKey = 'sv';
31
- this.exportDataset.exporterConfiguration = { includeHeaderRow: true, separator: ',' };
32
- }
33
- exportData() {
34
- this.datasetService.exportDataset(this.exportDataset).then(res => {
35
- let fileType = 'txt';
36
- if (this.exportDataset.exporterKey === 'json') {
37
- fileType = 'json';
38
- }
39
- else if (this.exportDataset.exporterKey === 'sv' &&
40
- this.exportDataset.exporterConfiguration.separator === ',') {
41
- fileType = 'csv';
42
- }
43
- const filename = _.kebabCase(this.exportDataset.dataSetInstanceSummary.title) + '-' + Date.now();
44
- fileSaver.saveAs(res, filename + '.' + fileType);
45
- this.dialogRef.close();
46
- this.snackBar.open('Data Exported Successfully.', 'Close', {
47
- duration: 3000,
48
- verticalPosition: 'top'
49
- });
50
- });
51
- }
52
- }
53
- ExportDataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.DatasetService }, { token: i3.MatLegacySnackBar }], target: i0.ɵɵFactoryTarget.Component });
54
- ExportDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ExportDataComponent, selector: "ki-export-data", host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>\n Export Data\n </h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n <label class=\"mb-4\">\n Export Type\n <select [(ngModel)]=\"exportDataset.exporterKey\">\n <option value=\"sv\">Separated Value</option>\n <option value=\"json\">JSON</option>\n </select>\n </label>\n\n <ng-template [ngIf]=\"exportDataset.exporterKey === 'sv'\">\n <mat-checkbox class=\"mb-2\"\n [(ngModel)]=\"exportDataset.exporterConfiguration.includeHeaderRow\">\n Include header row\n </mat-checkbox>\n <label class=\"mb-2\">\n Separator\n <input type=\"text\" [(ngModel)]=\"exportDataset.exporterConfiguration.separator\">\n <small class=\"font-normal\">Enter the character used to separate the values.</small>\n </label>\n </ng-template>\n\n <label class=\"mb-4\">\n Limit Results\n <select [(ngModel)]=\"exportDataset.limit\">\n <option value=\"1\">1</option>\n <option value=\"5\">5</option>\n <option value=\"10\">10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n <option value=\"100\">100</option>\n <option value=\"250\">250</option>\n <option value=\"500\">500</option>\n <option value=\"1000\">1000</option>\n <option value=\"5000\">5000</option>\n <option value=\"10000\">10000</option>\n </select>\n </label>\n\n <label class=\"mb-4\">\n Offset Results\n <input type=\"number\" [(ngModel)]=\"exportDataset.offset\">\n </label>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n\n <button mat-button mat-flat-button color=\"primary\" type=\"button\"\n (click)=\"exportData()\"\n [disabled]=\"!exportDataset.exporterKey\">Export Data\n </button>\n </div>\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.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: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] });
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ExportDataComponent, decorators: [{
56
- type: Component,
57
- args: [{ selector: 'ki-export-data', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>\n Export Data\n </h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n <label class=\"mb-4\">\n Export Type\n <select [(ngModel)]=\"exportDataset.exporterKey\">\n <option value=\"sv\">Separated Value</option>\n <option value=\"json\">JSON</option>\n </select>\n </label>\n\n <ng-template [ngIf]=\"exportDataset.exporterKey === 'sv'\">\n <mat-checkbox class=\"mb-2\"\n [(ngModel)]=\"exportDataset.exporterConfiguration.includeHeaderRow\">\n Include header row\n </mat-checkbox>\n <label class=\"mb-2\">\n Separator\n <input type=\"text\" [(ngModel)]=\"exportDataset.exporterConfiguration.separator\">\n <small class=\"font-normal\">Enter the character used to separate the values.</small>\n </label>\n </ng-template>\n\n <label class=\"mb-4\">\n Limit Results\n <select [(ngModel)]=\"exportDataset.limit\">\n <option value=\"1\">1</option>\n <option value=\"5\">5</option>\n <option value=\"10\">10</option>\n <option value=\"25\">25</option>\n <option value=\"50\">50</option>\n <option value=\"100\">100</option>\n <option value=\"250\">250</option>\n <option value=\"500\">500</option>\n <option value=\"1000\">1000</option>\n <option value=\"5000\">5000</option>\n <option value=\"10000\">10000</option>\n </select>\n </label>\n\n <label class=\"mb-4\">\n Offset Results\n <input type=\"number\" [(ngModel)]=\"exportDataset.offset\">\n </label>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n\n <button mat-button mat-flat-button color=\"primary\" type=\"button\"\n (click)=\"exportData()\"\n [disabled]=\"!exportDataset.exporterKey\">Export Data\n </button>\n </div>\n\n</div>\n\n\n" }]
58
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
59
- type: Inject,
60
- args: [MAT_DIALOG_DATA]
61
- }] }, { type: i2.DatasetService }, { type: i3.MatLegacySnackBar }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWRhdGEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwbG9yZXIvZXhwb3J0LWRhdGEvZXhwb3J0LWRhdGEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwbG9yZXIvZXhwb3J0LWRhdGEvZXhwb3J0LWRhdGEuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDeEQsT0FBTyxFQUFDLHNCQUFzQixJQUFJLGVBQWUsRUFBcUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5SCxPQUFPLEtBQUssU0FBUyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7QUFHakMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQVF6QixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQW1CLFNBQTRDLEVBQ25CLElBQVMsRUFDakMsY0FBOEIsRUFDOUIsUUFBcUI7UUFIdEIsY0FBUyxHQUFULFNBQVMsQ0FBbUM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUxsQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztJQU0vQixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUM3RSxJQUFJLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxFQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVNLFVBQVU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzdELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLE1BQU0sRUFBRTtnQkFDM0MsUUFBUSxHQUFHLE1BQU0sQ0FBQzthQUNyQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLElBQUk7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsU0FBUyxLQUFLLEdBQUcsRUFBRTtnQkFDNUQsUUFBUSxHQUFHLEtBQUssQ0FBQzthQUNwQjtZQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFFBQVEsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLEVBQUU7Z0JBQ3ZELFFBQVEsRUFBRSxJQUFJO2dCQUNkLGdCQUFnQixFQUFFLEtBQUs7YUFDMUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztpSEF0Q1EsbUJBQW1CLG9EQUtSLGVBQWU7cUdBTDFCLG1CQUFtQixrR0NmaEMseTdFQXFFQTs0RkR0RGEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGdCQUFnQixRQUdwQixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQzs7MEJBT2xCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLCBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7RGF0YXNldFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2RhdGFzZXQuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBmaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XG5pbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXJ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1zbmFjay1iYXInO1xuXG5jb25zdCBfID0gbG9kYXNoLmRlZmF1bHQ7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2ktZXhwb3J0LWRhdGEnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9leHBvcnQtZGF0YS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZXhwb3J0LWRhdGEuY29tcG9uZW50LnNhc3MnXSxcbiAgICBob3N0OiB7Y2xhc3M6ICdkaWFsb2ctd3JhcHBlcid9XG59KVxuZXhwb3J0IGNsYXNzIEV4cG9ydERhdGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgcHVibGljIGV4cG9ydERhdGFzZXQ6IGFueSA9IHt9O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEV4cG9ydERhdGFDb21wb25lbnQ+LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZGF0YXNldFNlcnZpY2U6IERhdGFzZXRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXhwb3J0RGF0YXNldC5kYXRhU2V0SW5zdGFuY2VTdW1tYXJ5ID0gdGhpcy5kYXRhLmRhdGFzZXRJbnN0YW5jZVN1bW1hcnk7XG4gICAgICAgIHRoaXMuZXhwb3J0RGF0YXNldC50cmFuc2Zvcm1hdGlvbkluc3RhbmNlcyA9IFtdO1xuICAgICAgICB0aGlzLmV4cG9ydERhdGFzZXQucGFyYW1ldGVyVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuZXhwb3J0RGF0YXNldC5saW1pdCA9ICcxMDAnO1xuICAgICAgICB0aGlzLmV4cG9ydERhdGFzZXQub2Zmc2V0ID0gJzAnO1xuICAgICAgICB0aGlzLmV4cG9ydERhdGFzZXQuZXhwb3J0ZXJLZXkgPSAnc3YnO1xuICAgICAgICB0aGlzLmV4cG9ydERhdGFzZXQuZXhwb3J0ZXJDb25maWd1cmF0aW9uID0ge2luY2x1ZGVIZWFkZXJSb3c6IHRydWUsIHNlcGFyYXRvcjogJywnfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXhwb3J0RGF0YSgpIHtcbiAgICAgICAgdGhpcy5kYXRhc2V0U2VydmljZS5leHBvcnREYXRhc2V0KHRoaXMuZXhwb3J0RGF0YXNldCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbGVUeXBlID0gJ3R4dCc7XG4gICAgICAgICAgICBpZiAodGhpcy5leHBvcnREYXRhc2V0LmV4cG9ydGVyS2V5ID09PSAnanNvbicpIHtcbiAgICAgICAgICAgICAgICBmaWxlVHlwZSA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5leHBvcnREYXRhc2V0LmV4cG9ydGVyS2V5ID09PSAnc3YnICYmXG4gICAgICAgICAgICAgICAgdGhpcy5leHBvcnREYXRhc2V0LmV4cG9ydGVyQ29uZmlndXJhdGlvbi5zZXBhcmF0b3IgPT09ICcsJykge1xuICAgICAgICAgICAgICAgIGZpbGVUeXBlID0gJ2Nzdic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gXy5rZWJhYkNhc2UodGhpcy5leHBvcnREYXRhc2V0LmRhdGFTZXRJbnN0YW5jZVN1bW1hcnkudGl0bGUpICsgJy0nICsgRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGZpbGVTYXZlci5zYXZlQXMocmVzLCBmaWxlbmFtZSArICcuJyArIGZpbGVUeXBlKTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0RhdGEgRXhwb3J0ZWQgU3VjY2Vzc2Z1bGx5LicsICdDbG9zZScsIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZ1wiIGNka0RyYWcgY2RrRHJhZ1Jvb3RFbGVtZW50PVwiLmNkay1vdmVybGF5LXBhbmVcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctdGl0bGVcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICA8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgICAgICAgIEV4cG9ydCBEYXRhXG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIm1iLTRcIj5cbiAgICAgICAgICAgIEV4cG9ydCBUeXBlXG4gICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwiZXhwb3J0RGF0YXNldC5leHBvcnRlcktleVwiPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzdlwiPlNlcGFyYXRlZCBWYWx1ZTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJqc29uXCI+SlNPTjwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImV4cG9ydERhdGFzZXQuZXhwb3J0ZXJLZXkgPT09ICdzdidcIj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggY2xhc3M9XCJtYi0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJleHBvcnREYXRhc2V0LmV4cG9ydGVyQ29uZmlndXJhdGlvbi5pbmNsdWRlSGVhZGVyUm93XCI+XG4gICAgICAgICAgICAgICAgSW5jbHVkZSBoZWFkZXIgcm93XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICBTZXBhcmF0b3JcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImV4cG9ydERhdGFzZXQuZXhwb3J0ZXJDb25maWd1cmF0aW9uLnNlcGFyYXRvclwiPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvbnQtbm9ybWFsXCI+RW50ZXIgdGhlIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIHRoZSB2YWx1ZXMuPC9zbWFsbD5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgTGltaXQgUmVzdWx0c1xuICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cImV4cG9ydERhdGFzZXQubGltaXRcIj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMVwiPjE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNVwiPjU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTBcIj4xMDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIyNVwiPjI1PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjUwXCI+NTA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwXCI+MTAwPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjI1MFwiPjI1MDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MDBcIj41MDA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwMFwiPjEwMDA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNTAwMFwiPjUwMDA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMTAwMDBcIj4xMDAwMDwvb3B0aW9uPlxuICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgT2Zmc2V0IFJlc3VsdHNcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJleHBvcnREYXRhc2V0Lm9mZnNldFwiPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0LWRpYWxvZy1jbG9zZSBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiPkNsb3NlPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0RGF0YSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWV4cG9ydERhdGFzZXQuZXhwb3J0ZXJLZXlcIj5FeHBvcnQgRGF0YVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cblxuIl19
@@ -1,70 +0,0 @@
1
- import { Component, Inject, Input } from '@angular/core';
2
- import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/legacy-dialog";
5
- import * as i2 from "@angular/material/legacy-snack-bar";
6
- import * as i3 from "../../../services/dataset.service";
7
- import * as i4 from "@angular/common/http";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/material/legacy-button";
10
- import * as i7 from "@angular/material/icon";
11
- import * as i8 from "@angular/cdk/drag-drop";
12
- import * as i9 from "@angular/forms";
13
- import * as i10 from "@angular/cdk/clipboard";
14
- export class SnapshotApiAccessComponent {
15
- constructor(dialogRef, data, snackBar, datasetService, http) {
16
- this.dialogRef = dialogRef;
17
- this.data = data;
18
- this.snackBar = snackBar;
19
- this.datasetService = datasetService;
20
- this.http = http;
21
- this.showApiAccessDetails = false;
22
- }
23
- async ngOnInit() {
24
- this.backendURL = this.data.backendUrl;
25
- this.datasetInstance = this.data.datasetInstanceSummary;
26
- this.showApiAccessDetails = !!this.datasetInstance.managementKey;
27
- this.apiKeys = await this.http.get('/account/apikey/first/dataprocessormanage').toPromise();
28
- }
29
- copied() {
30
- this.snackBar.open('Copied to Clipboard', null, {
31
- duration: 2000,
32
- verticalPosition: 'top'
33
- });
34
- }
35
- examplePayload() {
36
- let payload = '{"title": "New Snapshot"';
37
- if (this.datasetInstance.parameters?.length) {
38
- let params = [];
39
- this.datasetInstance.parameters.forEach(parameter => {
40
- params.push('"' + parameter.name + '": "' + parameter.type + '"');
41
- });
42
- payload += ', "parameterValues": {' + params.join(", ") + '}';
43
- }
44
- payload += "}";
45
- return payload;
46
- }
47
- exampleResults() {
48
- let results = [];
49
- for (let i = 0; i < 3; i++) {
50
- results.push('{"column1": "value1", "column2": "value2"}');
51
- }
52
- return '[' + results.join(',') + ']';
53
- }
54
- async saveDataset() {
55
- await this.datasetService.saveDataset(this.datasetInstance);
56
- this.showApiAccessDetails = !!this.datasetInstance.managementKey;
57
- }
58
- }
59
- SnapshotApiAccessComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SnapshotApiAccessComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.MatLegacySnackBar }, { token: i3.DatasetService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Component });
60
- SnapshotApiAccessComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SnapshotApiAccessComponent, selector: "ki-snapshot-api-access", inputs: { apiKeys: "apiKeys" }, host: { classAttribute: "dialog-wrapper" }, ngImport: i0, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>\n API Access\n </h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"text-lg font-semibold mb-4\">\n Management Key\n </div>\n\n <div class=\"mb-4\">\n <input class=\"mt-2 w-full\" type=\"text\" [(ngModel)]=\"datasetInstance.managementKey\">\n <small class=\"font-normal\">This will be used as part of API requests</small>\n </div>\n\n <ng-template [ngIf]=\"showApiAccessDetails\">\n <div class=\"text-lg font-semibold mb-4\">\n Example API Usage\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">List Snapshots</div>\n <div class=\"text-sm mb-2\">\n List all snapshots associated with this query using the management key.\n </div>\n <div #listSnapshots class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span> -X <b>GET</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"listSnapshots.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'[{\"key\":\"snapshot_1\",\"title\":\"Snapshot 1\",\"type\":\"STANDARD\",\"config\":{\"parameterValues\":[],\"keyFieldNames\":[],\"indexes\":[],\"timeLapsedFields\":[],\"createHistory\":false,\"createLatest\":true,\"readChunkSize\":null},\"trigger\":\"adhoc\",\"datasetManagementKey\":\"managementkey\",\"datasetTitle\":\"Test Query\",\"status\":\"COMPLETED\",\"lastRunTime\":\"22\\\\/03\\\\/2024 14:50:20\",\"nextRunTime\":null}]'}}\n </pre>\n </div>\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Get Single Snapshot</div>\n <div class=\"text-sm mb-2\">\n Get a single snapshot associated with this query using the management key and snapshot key as returned from a list or create operation.\n </div>\n <div #getSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>GET</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"getSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"key\":\"snapshot_1\",\"title\":\"Snapshot 1\",\"type\":\"STANDARD\",\"config\":{\"parameterValues\":[],\"keyFieldNames\":[],\"indexes\":[],\"timeLapsedFields\":[],\"createHistory\":false,\"createLatest\":true,\"readChunkSize\":null},\"trigger\":\"adhoc\",\"datasetManagementKey\":\"managementkey\",\"datasetTitle\":\"Test Query\",\"status\":\"COMPLETED\",\"lastRunTime\":\"22\\\\/03\\\\/2024 14:50:20\",\"nextRunTime\":null}'}}\n </pre>\n </div>\n\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Get data for snapshot</div>\n <div class=\"text-sm mb-2\">\n Return data for a snapshot for this query identified by management key and snapshot key. Optionally supply an offset and limit for paging the data.\n </div>\n <div #getSnapshotData class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>GET</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY/data?limit=25&offset=0\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"getSnapshotData.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{exampleResults()}}\n </pre>\n </div>\n\n\n <div class=\"relative w-full mb-8\">\n <div class=\"text-base font-semibold\">Run a snapshot</div>\n <div class=\"text-sm mb-2\">\n Run a snapshot immediately - the results can be checked by calling the methods above.\n </div>\n <div #runSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>PATCH</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"runSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Create New Snapshot</div>\n <div class=\"text-sm mb-2\">\n Create a new snapshot for this query using the passed management key.\n </div>\n <div #createSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>POST</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"createSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Payload</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">\n {{examplePayload()}}\n </pre>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"snapshotKey\": \"NEW_SNAPSHOT_KEY\"}'}}\n </pre>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Update Existing Snapshot</div>\n <div class=\"text-sm mb-2\">\n Update an existing snapshot for this query using the passed management key and snapshot key.\n </div>\n <div #updateSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>PUT</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"updateSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Payload</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">\n {{examplePayload()}}\n </pre>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"snapshotKey\": \"NEW_SNAPSHOT_KEY\"}'}}\n </pre>\n </div>\n\n <div class=\"relative w-full mb-8\">\n <div class=\"text-base font-semibold\">Remove snapshot</div>\n <div class=\"text-sm mb-2\">\n Delete a snapshot for a management key and snapshot key.\n </div>\n <div #removeSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>DELETE</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"removeSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n\n\n\n\n </ng-template>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n <button mat-flat-button color=\"primary\" (click)=\"saveDataset()\">\n Save\n </button>\n </div>\n\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] });
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SnapshotApiAccessComponent, decorators: [{
62
- type: Component,
63
- args: [{ selector: 'ki-snapshot-api-access', host: { class: 'dialog-wrapper' }, template: "<div class=\"dialog\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\">\n\n <div class=\"dialog-title\" cdkDragHandle>\n <h2 mat-dialog-title>\n API Access\n </h2>\n\n <button mat-icon-button mat-dialog-close>\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n\n <div class=\"dialog-content\">\n\n <div class=\"text-lg font-semibold mb-4\">\n Management Key\n </div>\n\n <div class=\"mb-4\">\n <input class=\"mt-2 w-full\" type=\"text\" [(ngModel)]=\"datasetInstance.managementKey\">\n <small class=\"font-normal\">This will be used as part of API requests</small>\n </div>\n\n <ng-template [ngIf]=\"showApiAccessDetails\">\n <div class=\"text-lg font-semibold mb-4\">\n Example API Usage\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">List Snapshots</div>\n <div class=\"text-sm mb-2\">\n List all snapshots associated with this query using the management key.\n </div>\n <div #listSnapshots class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span> -X <b>GET</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"listSnapshots.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'[{\"key\":\"snapshot_1\",\"title\":\"Snapshot 1\",\"type\":\"STANDARD\",\"config\":{\"parameterValues\":[],\"keyFieldNames\":[],\"indexes\":[],\"timeLapsedFields\":[],\"createHistory\":false,\"createLatest\":true,\"readChunkSize\":null},\"trigger\":\"adhoc\",\"datasetManagementKey\":\"managementkey\",\"datasetTitle\":\"Test Query\",\"status\":\"COMPLETED\",\"lastRunTime\":\"22\\\\/03\\\\/2024 14:50:20\",\"nextRunTime\":null}]'}}\n </pre>\n </div>\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Get Single Snapshot</div>\n <div class=\"text-sm mb-2\">\n Get a single snapshot associated with this query using the management key and snapshot key as returned from a list or create operation.\n </div>\n <div #getSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>GET</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"getSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"key\":\"snapshot_1\",\"title\":\"Snapshot 1\",\"type\":\"STANDARD\",\"config\":{\"parameterValues\":[],\"keyFieldNames\":[],\"indexes\":[],\"timeLapsedFields\":[],\"createHistory\":false,\"createLatest\":true,\"readChunkSize\":null},\"trigger\":\"adhoc\",\"datasetManagementKey\":\"managementkey\",\"datasetTitle\":\"Test Query\",\"status\":\"COMPLETED\",\"lastRunTime\":\"22\\\\/03\\\\/2024 14:50:20\",\"nextRunTime\":null}'}}\n </pre>\n </div>\n\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Get data for snapshot</div>\n <div class=\"text-sm mb-2\">\n Return data for a snapshot for this query identified by management key and snapshot key. Optionally supply an offset and limit for paging the data.\n </div>\n <div #getSnapshotData class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>GET</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY/data?limit=25&offset=0\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"getSnapshotData.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{exampleResults()}}\n </pre>\n </div>\n\n\n <div class=\"relative w-full mb-8\">\n <div class=\"text-base font-semibold\">Run a snapshot</div>\n <div class=\"text-sm mb-2\">\n Run a snapshot immediately - the results can be checked by calling the methods above.\n </div>\n <div #runSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>PATCH</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"runSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Create New Snapshot</div>\n <div class=\"text-sm mb-2\">\n Create a new snapshot for this query using the passed management key.\n </div>\n <div #createSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>POST</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"createSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Payload</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">\n {{examplePayload()}}\n </pre>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"snapshotKey\": \"NEW_SNAPSHOT_KEY\"}'}}\n </pre>\n </div>\n\n <div class=\"relative w-full\">\n <div class=\"text-base font-semibold\">Update Existing Snapshot</div>\n <div class=\"text-sm mb-2\">\n Update an existing snapshot for this query using the passed management key and snapshot key.\n </div>\n <div #updateSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>PUT</b> <span class=\"text-secondary\">{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"updateSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n <div class=\"font-semibold text-sm my-1\">Example Payload</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">\n {{examplePayload()}}\n </pre>\n </div>\n <div class=\"font-semibold text-sm my-1\">Example Response</div>\n <div class=\"relative bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4 mb-8\">\n <pre class=\"whitespace-normal\">\n {{'{\"snapshotKey\": \"NEW_SNAPSHOT_KEY\"}'}}\n </pre>\n </div>\n\n <div class=\"relative w-full mb-8\">\n <div class=\"text-base font-semibold\">Remove snapshot</div>\n <div class=\"text-sm mb-2\">\n Delete a snapshot for a management key and snapshot key.\n </div>\n <div #removeSnapshot class=\" bg-gray-800 border-2 border-gray-900 text-white rounded-md p-4\">\n <pre class=\"whitespace-normal\">curl -H <span class=\"text-secondary\">\"API-KEY:<b>{{apiKeys ? apiKeys.apiKey : '[[apiKey]]'}}</b>\"</span> -H <span class=\"text-secondary\">\"API-SECRET:<b>{{apiKeys ? apiKeys.apiSecret : '[[apiSecret]]'}}</b>\"</span></pre><pre class=\"whitespace-normal\"> -X <b>DELETE</b> <span class=\"text-secondary\">\"{{backendURL}}/api/snapshot/{{datasetInstance.managementKey}}/SNAPSHOT_KEY\"</span></pre>\n </div>\n <button mat-icon-button [cdkCopyToClipboard]=\"removeSnapshot.textContent\" (cdkCopyToClipboardCopied)=\"copied()\"\n class=\"text-white absolute bottom-0 right-0\">\n <mat-icon>content_copy</mat-icon>\n </button>\n </div>\n\n\n\n\n\n\n </ng-template>\n\n </div>\n\n <div class=\"dialog-footer\">\n <button mat-button mat-dialog-close mat-stroked-button type=\"button\">Close</button>\n <button mat-flat-button color=\"primary\" (click)=\"saveDataset()\">\n Save\n </button>\n </div>\n\n</div>\n\n\n" }]
64
- }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
65
- type: Inject,
66
- args: [MAT_DIALOG_DATA]
67
- }] }, { type: i2.MatLegacySnackBar }, { type: i3.DatasetService }, { type: i4.HttpClient }]; }, propDecorators: { apiKeys: [{
68
- type: Input
69
- }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3QtYXBpLWFjY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1raW5pbnRlbC9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1leHBsb3Jlci9zbmFwc2hvdC1hcGktYWNjZXNzL3NuYXBzaG90LWFwaS1hY2Nlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmcta2luaW50ZWwvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXhwbG9yZXIvc25hcHNob3QtYXBpLWFjY2Vzcy9zbmFwc2hvdC1hcGktYWNjZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsc0JBQXNCLElBQUksZUFBZSxFQUU1QyxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFXekMsTUFBTSxPQUFPLDBCQUEwQjtJQVNuQyxZQUFtQixTQUFtRCxFQUMxQixJQUFTLEVBQ2pDLFFBQXFCLEVBQ3JCLGNBQThCLEVBQzlCLElBQWdCO1FBSmpCLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBQzFCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU43Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7SUFPcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDeEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsMkNBQTJDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoRyxDQUFDO0lBRU0sTUFBTTtRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRTtZQUM1QyxRQUFRLEVBQUUsSUFBSTtZQUNkLGdCQUFnQixFQUFFLEtBQUs7U0FDMUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxPQUFPLEdBQUcsMEJBQTBCLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUU7WUFDekMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNqRTtRQUVELE9BQU8sSUFBSSxHQUFHLENBQUM7UUFFZixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBR00sY0FBYztRQUVqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QixPQUFPLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxPQUFPLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN6QyxDQUFDO0lBR00sS0FBSyxDQUFDLFdBQVc7UUFDcEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQztJQUNyRSxDQUFDOzt3SEE5RFEsMEJBQTBCLG9EQVVmLGVBQWU7NEdBVjFCLDBCQUEwQiwwSUNmdkMsbThZQW1NQTs0RkRwTGEsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLHdCQUF3QixRQUc1QixFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQzs7MEJBWWxCLE1BQU07MkJBQUMsZUFBZTtrSUFSMUIsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBLFxuICAgIE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQge0RhdGFzZXRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9kYXRhc2V0LnNlcnZpY2UnO1xuaW1wb3J0IHtNYXRMZWdhY3lTbmFja0JhciBhcyBNYXRTbmFja0Jhcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1zbmFjay1iYXJcIjtcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAna2ktc25hcHNob3QtYXBpLWFjY2VzcycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NuYXBzaG90LWFwaS1hY2Nlc3MuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3NuYXBzaG90LWFwaS1hY2Nlc3MuY29tcG9uZW50LnNhc3MnXSxcbiAgICBob3N0OiB7Y2xhc3M6ICdkaWFsb2ctd3JhcHBlcid9XG59KVxuZXhwb3J0IGNsYXNzIFNuYXBzaG90QXBpQWNjZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIEBJbnB1dCgpIGFwaUtleXM6IGFueTtcblxuICAgIHB1YmxpYyBiYWNrZW5kVVJMOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGF0YXNldEluc3RhbmNlOiBhbnk7XG4gICAgcHVibGljIHNob3dBcGlBY2Nlc3NEZXRhaWxzID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U25hcHNob3RBcGlBY2Nlc3NDb21wb25lbnQ+LFxuICAgICAgICAgICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgICAgICAgICAgICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgZGF0YXNldFNlcnZpY2U6IERhdGFzZXRTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuICAgIH1cblxuICAgIGFzeW5jIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmJhY2tlbmRVUkwgPSB0aGlzLmRhdGEuYmFja2VuZFVybDtcbiAgICAgICAgdGhpcy5kYXRhc2V0SW5zdGFuY2UgPSB0aGlzLmRhdGEuZGF0YXNldEluc3RhbmNlU3VtbWFyeTtcbiAgICAgICAgdGhpcy5zaG93QXBpQWNjZXNzRGV0YWlscyA9ICEhdGhpcy5kYXRhc2V0SW5zdGFuY2UubWFuYWdlbWVudEtleTtcbiAgICAgICAgdGhpcy5hcGlLZXlzID0gYXdhaXQgdGhpcy5odHRwLmdldCgnL2FjY291bnQvYXBpa2V5L2ZpcnN0L2RhdGFwcm9jZXNzb3JtYW5hZ2UnKS50b1Byb21pc2UoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29waWVkKCkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ0NvcGllZCB0byBDbGlwYm9hcmQnLCBudWxsLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb246ICd0b3AnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBleGFtcGxlUGF5bG9hZCgpOiBhbnkge1xuICAgICAgICBsZXQgcGF5bG9hZCA9ICd7XCJ0aXRsZVwiOiBcIk5ldyBTbmFwc2hvdFwiJztcblxuICAgICAgICBpZiAodGhpcy5kYXRhc2V0SW5zdGFuY2UucGFyYW1ldGVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgcGFyYW1zID0gW107XG4gICAgICAgICAgICB0aGlzLmRhdGFzZXRJbnN0YW5jZS5wYXJhbWV0ZXJzLmZvckVhY2gocGFyYW1ldGVyID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCgnXCInICsgcGFyYW1ldGVyLm5hbWUgKyAnXCI6IFwiJyArIHBhcmFtZXRlci50eXBlICsgJ1wiJyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcGF5bG9hZCArPSAnLCBcInBhcmFtZXRlclZhbHVlc1wiOiB7JyArIHBhcmFtcy5qb2luKFwiLCBcIikgKyAnfSc7XG4gICAgICAgIH1cblxuICAgICAgICBwYXlsb2FkICs9IFwifVwiO1xuXG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cblxuXG4gICAgcHVibGljIGV4YW1wbGVSZXN1bHRzKCkge1xuXG4gICAgICAgIGxldCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgICAgICByZXN1bHRzLnB1c2goJ3tcImNvbHVtbjFcIjogXCJ2YWx1ZTFcIiwgXCJjb2x1bW4yXCI6IFwidmFsdWUyXCJ9Jyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ1snICsgcmVzdWx0cy5qb2luKCcsJykgKyAnXSc7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgc2F2ZURhdGFzZXQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGF0YXNldFNlcnZpY2Uuc2F2ZURhdGFzZXQodGhpcy5kYXRhc2V0SW5zdGFuY2UpO1xuICAgICAgICB0aGlzLnNob3dBcGlBY2Nlc3NEZXRhaWxzID0gISF0aGlzLmRhdGFzZXRJbnN0YW5jZS5tYW5hZ2VtZW50S2V5O1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkaWFsb2dcIiBjZGtEcmFnIGNka0RyYWdSb290RWxlbWVudD1cIi5jZGstb3ZlcmxheS1wYW5lXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZGlhbG9nLXRpdGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICAgICAgICBBUEkgQWNjZXNzXG4gICAgICAgIDwvaDI+XG5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gbWF0LWRpYWxvZy1jbG9zZT5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi00XCI+XG4gICAgICAgICAgICBNYW5hZ2VtZW50IEtleVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItNFwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibXQtMiB3LWZ1bGxcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZGF0YXNldEluc3RhbmNlLm1hbmFnZW1lbnRLZXlcIj5cbiAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvbnQtbm9ybWFsXCI+VGhpcyB3aWxsIGJlIHVzZWQgYXMgcGFydCBvZiBBUEkgcmVxdWVzdHM8L3NtYWxsPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2hvd0FwaUFjY2Vzc0RldGFpbHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgbWItNFwiPlxuICAgICAgICAgICAgICAgIEV4YW1wbGUgQVBJIFVzYWdlXG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPkxpc3QgU25hcHNob3RzPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBMaXN0IGFsbCBzbmFwc2hvdHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcXVlcnkgdXNpbmcgdGhlIG1hbmFnZW1lbnQga2V5LlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgI2xpc3RTbmFwc2hvdHMgY2xhc3M9XCIgYmctZ3JheS04MDAgYm9yZGVyLTIgYm9yZGVyLWdyYXktOTAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHByZSBjbGFzcz1cIndoaXRlc3BhY2Utbm9ybWFsXCI+Y3VybCAtSCA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+XCJBUEktS0VZOjxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpS2V5IDogJ1tbYXBpS2V5XV0nfX08L2I+XCI8L3NwYW4+IC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1TRUNSRVQ6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlTZWNyZXQgOiAnW1thcGlTZWNyZXRdXSd9fTwvYj5cIjwvc3Bhbj4gLVggPGI+R0VUPC9iPiA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3tiYWNrZW5kVVJMfX0vYXBpL3NuYXBzaG90L3t7ZGF0YXNldEluc3RhbmNlLm1hbmFnZW1lbnRLZXl9fTwvc3Bhbj48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cImxpc3RTbmFwc2hvdHMudGV4dENvbnRlbnRcIiAoY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkKT1cImNvcGllZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG15LTFcIj5FeGFtcGxlIFJlc3BvbnNlPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYmctZ3JheS04MDAgYm9yZGVyLTIgYm9yZGVyLWdyYXktOTAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBwLTQgbWItOFwiPlxuICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eydbe1wia2V5XCI6XCJzbmFwc2hvdF8xXCIsXCJ0aXRsZVwiOlwiU25hcHNob3QgMVwiLFwidHlwZVwiOlwiU1RBTkRBUkRcIixcImNvbmZpZ1wiOntcInBhcmFtZXRlclZhbHVlc1wiOltdLFwia2V5RmllbGROYW1lc1wiOltdLFwiaW5kZXhlc1wiOltdLFwidGltZUxhcHNlZEZpZWxkc1wiOltdLFwiY3JlYXRlSGlzdG9yeVwiOmZhbHNlLFwiY3JlYXRlTGF0ZXN0XCI6dHJ1ZSxcInJlYWRDaHVua1NpemVcIjpudWxsfSxcInRyaWdnZXJcIjpcImFkaG9jXCIsXCJkYXRhc2V0TWFuYWdlbWVudEtleVwiOlwibWFuYWdlbWVudGtleVwiLFwiZGF0YXNldFRpdGxlXCI6XCJUZXN0IFF1ZXJ5XCIsXCJzdGF0dXNcIjpcIkNPTVBMRVRFRFwiLFwibGFzdFJ1blRpbWVcIjpcIjIyXFxcXC8wM1xcXFwvMjAyNCAxNDo1MDoyMFwiLFwibmV4dFJ1blRpbWVcIjpudWxsfV0nfX1cbiAgICAgICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5HZXQgU2luZ2xlIFNuYXBzaG90PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBHZXQgYSBzaW5nbGUgc25hcHNob3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcXVlcnkgdXNpbmcgdGhlIG1hbmFnZW1lbnQga2V5IGFuZCBzbmFwc2hvdCBrZXkgYXMgcmV0dXJuZWQgZnJvbSBhIGxpc3Qgb3IgY3JlYXRlIG9wZXJhdGlvbi5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNnZXRTbmFwc2hvdCBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5jdXJsIC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1LRVk6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlLZXkgOiAnW1thcGlLZXldXSd9fTwvYj5cIjwvc3Bhbj4gLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLVNFQ1JFVDo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPlwiPC9zcGFuPjwvcHJlPjxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPiAtWCA8Yj5HRVQ8L2I+IDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj57e2JhY2tlbmRVUkx9fS9hcGkvc25hcHNob3Qve3tkYXRhc2V0SW5zdGFuY2UubWFuYWdlbWVudEtleX19L1NOQVBTSE9UX0tFWTwvc3Bhbj48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cImdldFNuYXBzaG90LnRleHRDb250ZW50XCIgKGNka0NvcHlUb0NsaXBib2FyZENvcGllZCk9XCJjb3BpZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSBteS0xXCI+RXhhbXBsZSBSZXNwb25zZTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGJnLWdyYXktODAwIGJvcmRlci0yIGJvcmRlci1ncmF5LTkwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgcC00IG1iLThcIj5cbiAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sne1wia2V5XCI6XCJzbmFwc2hvdF8xXCIsXCJ0aXRsZVwiOlwiU25hcHNob3QgMVwiLFwidHlwZVwiOlwiU1RBTkRBUkRcIixcImNvbmZpZ1wiOntcInBhcmFtZXRlclZhbHVlc1wiOltdLFwia2V5RmllbGROYW1lc1wiOltdLFwiaW5kZXhlc1wiOltdLFwidGltZUxhcHNlZEZpZWxkc1wiOltdLFwiY3JlYXRlSGlzdG9yeVwiOmZhbHNlLFwiY3JlYXRlTGF0ZXN0XCI6dHJ1ZSxcInJlYWRDaHVua1NpemVcIjpudWxsfSxcInRyaWdnZXJcIjpcImFkaG9jXCIsXCJkYXRhc2V0TWFuYWdlbWVudEtleVwiOlwibWFuYWdlbWVudGtleVwiLFwiZGF0YXNldFRpdGxlXCI6XCJUZXN0IFF1ZXJ5XCIsXCJzdGF0dXNcIjpcIkNPTVBMRVRFRFwiLFwibGFzdFJ1blRpbWVcIjpcIjIyXFxcXC8wM1xcXFwvMjAyNCAxNDo1MDoyMFwiLFwibmV4dFJ1blRpbWVcIjpudWxsfSd9fVxuICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LXNlbWlib2xkXCI+R2V0IGRhdGEgZm9yIHNuYXBzaG90PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBSZXR1cm4gZGF0YSBmb3IgYSBzbmFwc2hvdCBmb3IgdGhpcyBxdWVyeSBpZGVudGlmaWVkIGJ5IG1hbmFnZW1lbnQga2V5IGFuZCBzbmFwc2hvdCBrZXkuICBPcHRpb25hbGx5IHN1cHBseSBhbiBvZmZzZXQgYW5kIGxpbWl0IGZvciBwYWdpbmcgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAjZ2V0U25hcHNob3REYXRhIGNsYXNzPVwiIGJnLWdyYXktODAwIGJvcmRlci0yIGJvcmRlci1ncmF5LTkwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPmN1cmwgLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLUtFWTo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaUtleSA6ICdbW2FwaUtleV1dJ319PC9iPlwiPC9zcGFuPiAtSCA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+XCJBUEktU0VDUkVUOjxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpU2VjcmV0IDogJ1tbYXBpU2VjcmV0XV0nfX08L2I+XCI8L3NwYW4+PC9wcmU+PHByZSBjbGFzcz1cIndoaXRlc3BhY2Utbm9ybWFsXCI+IC1YIDxiPkdFVDwvYj4gPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwie3tiYWNrZW5kVVJMfX0vYXBpL3NuYXBzaG90L3t7ZGF0YXNldEluc3RhbmNlLm1hbmFnZW1lbnRLZXl9fS9TTkFQU0hPVF9LRVkvZGF0YT9saW1pdD0yNSZvZmZzZXQ9MFwiPC9zcGFuPjwvcHJlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtjZGtDb3B5VG9DbGlwYm9hcmRdPVwiZ2V0U25hcHNob3REYXRhLnRleHRDb250ZW50XCIgKGNka0NvcHlUb0NsaXBib2FyZENvcGllZCk9XCJjb3BpZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG15LTFcIj5FeGFtcGxlIFJlc3BvbnNlPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYmctZ3JheS04MDAgYm9yZGVyLTIgYm9yZGVyLWdyYXktOTAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBwLTQgbWItOFwiPlxuICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e2V4YW1wbGVSZXN1bHRzKCl9fVxuICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbCBtYi04XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LXNlbWlib2xkXCI+UnVuIGEgc25hcHNob3Q8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFJ1biBhIHNuYXBzaG90IGltbWVkaWF0ZWx5IC0gdGhlIHJlc3VsdHMgY2FuIGJlIGNoZWNrZWQgYnkgY2FsbGluZyB0aGUgbWV0aG9kcyBhYm92ZS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNydW5TbmFwc2hvdCBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5jdXJsIC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1LRVk6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlLZXkgOiAnW1thcGlLZXldXSd9fTwvYj5cIjwvc3Bhbj4gLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLVNFQ1JFVDo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPlwiPC9zcGFuPjwvcHJlPjxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPiAtWCA8Yj5QQVRDSDwvYj4gPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwie3tiYWNrZW5kVVJMfX0vYXBpL3NuYXBzaG90L3t7ZGF0YXNldEluc3RhbmNlLm1hbmFnZW1lbnRLZXl9fS9TTkFQU0hPVF9LRVlcIjwvc3Bhbj48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cInJ1blNuYXBzaG90LnRleHRDb250ZW50XCIgKGNka0NvcHlUb0NsaXBib2FyZENvcGllZCk9XCJjb3BpZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj5DcmVhdGUgTmV3IFNuYXBzaG90PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBuZXcgc25hcHNob3QgZm9yIHRoaXMgcXVlcnkgdXNpbmcgdGhlIHBhc3NlZCBtYW5hZ2VtZW50IGtleS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNjcmVhdGVTbmFwc2hvdCBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5jdXJsIC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1LRVk6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlLZXkgOiAnW1thcGlLZXldXSd9fTwvYj5cIjwvc3Bhbj4gLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLVNFQ1JFVDo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPlwiPC9zcGFuPjwvcHJlPjxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPiAtWCA8Yj5QT1NUPC9iPiA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+e3tiYWNrZW5kVVJMfX0vYXBpL3NuYXBzaG90L3t7ZGF0YXNldEluc3RhbmNlLm1hbmFnZW1lbnRLZXl9fTwvc3Bhbj48L3ByZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbY2RrQ29weVRvQ2xpcGJvYXJkXT1cImNyZWF0ZVNuYXBzaG90LnRleHRDb250ZW50XCIgKGNka0NvcHlUb0NsaXBib2FyZENvcGllZCk9XCJjb3BpZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y29udGVudF9jb3B5PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG15LTFcIj5FeGFtcGxlIFBheWxvYWQ8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPlxuICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICB7e2V4YW1wbGVQYXlsb2FkKCl9fVxuICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtIG15LTFcIj5FeGFtcGxlIFJlc3BvbnNlPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgYmctZ3JheS04MDAgYm9yZGVyLTIgYm9yZGVyLWdyYXktOTAwIHRleHQtd2hpdGUgcm91bmRlZC1tZCBwLTQgbWItOFwiPlxuICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyd7XCJzbmFwc2hvdEtleVwiOiBcIk5FV19TTkFQU0hPVF9LRVlcIn0nfX1cbiAgICAgICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LXNlbWlib2xkXCI+VXBkYXRlIEV4aXN0aW5nIFNuYXBzaG90PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICBVcGRhdGUgYW4gZXhpc3Rpbmcgc25hcHNob3QgZm9yIHRoaXMgcXVlcnkgdXNpbmcgdGhlIHBhc3NlZCBtYW5hZ2VtZW50IGtleSBhbmQgc25hcHNob3Qga2V5LlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgI3VwZGF0ZVNuYXBzaG90IGNsYXNzPVwiIGJnLWdyYXktODAwIGJvcmRlci0yIGJvcmRlci1ncmF5LTkwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPmN1cmwgLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLUtFWTo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaUtleSA6ICdbW2FwaUtleV1dJ319PC9iPlwiPC9zcGFuPiAtSCA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCI+XCJBUEktU0VDUkVUOjxiPnt7YXBpS2V5cyA/IGFwaUtleXMuYXBpU2VjcmV0IDogJ1tbYXBpU2VjcmV0XV0nfX08L2I+XCI8L3NwYW4+PC9wcmU+PHByZSBjbGFzcz1cIndoaXRlc3BhY2Utbm9ybWFsXCI+IC1YIDxiPlBVVDwvYj4gPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPnt7YmFja2VuZFVSTH19L2FwaS9zbmFwc2hvdC97e2RhdGFzZXRJbnN0YW5jZS5tYW5hZ2VtZW50S2V5fX0vU05BUFNIT1RfS0VZPC9zcGFuPjwvcHJlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIFtjZGtDb3B5VG9DbGlwYm9hcmRdPVwidXBkYXRlU25hcHNob3QudGV4dENvbnRlbnRcIiAoY2RrQ29weVRvQ2xpcGJvYXJkQ29waWVkKT1cImNvcGllZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBhYnNvbHV0ZSBib3R0b20tMCByaWdodC0wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jb250ZW50X2NvcHk8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbXktMVwiPkV4YW1wbGUgUGF5bG9hZDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGJnLWdyYXktODAwIGJvcmRlci0yIGJvcmRlci1ncmF5LTkwMCB0ZXh0LXdoaXRlIHJvdW5kZWQtbWQgcC00XCI+XG4gICAgICAgICAgICAgICAgPHByZSBjbGFzcz1cIndoaXRlc3BhY2Utbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ZXhhbXBsZVBheWxvYWQoKX19XG4gICAgICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc20gbXktMVwiPkV4YW1wbGUgUmVzcG9uc2U8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNCBtYi04XCI+XG4gICAgICAgICAgICAgICAgPHByZSBjbGFzcz1cIndoaXRlc3BhY2Utbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7J3tcInNuYXBzaG90S2V5XCI6IFwiTkVXX1NOQVBTSE9UX0tFWVwifSd9fVxuICAgICAgICAgICAgICAgIDwvcHJlPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LWZ1bGwgbWItOFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPlJlbW92ZSBzbmFwc2hvdDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgRGVsZXRlIGEgc25hcHNob3QgZm9yIGEgbWFuYWdlbWVudCBrZXkgYW5kIHNuYXBzaG90IGtleS5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICNyZW1vdmVTbmFwc2hvdCBjbGFzcz1cIiBiZy1ncmF5LTgwMCBib3JkZXItMiBib3JkZXItZ3JheS05MDAgdGV4dC13aGl0ZSByb3VuZGVkLW1kIHAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cHJlIGNsYXNzPVwid2hpdGVzcGFjZS1ub3JtYWxcIj5jdXJsIC1IIDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cIkFQSS1LRVk6PGI+e3thcGlLZXlzID8gYXBpS2V5cy5hcGlLZXkgOiAnW1thcGlLZXldXSd9fTwvYj5cIjwvc3Bhbj4gLUggPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeVwiPlwiQVBJLVNFQ1JFVDo8Yj57e2FwaUtleXMgPyBhcGlLZXlzLmFwaVNlY3JldCA6ICdbW2FwaVNlY3JldF1dJ319PC9iPlwiPC9zcGFuPjwvcHJlPjxwcmUgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vcm1hbFwiPiAtWCA8Yj5ERUxFVEU8L2I+IDxzcGFuIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIj5cInt7YmFja2VuZFVSTH19L2FwaS9zbmFwc2hvdC97e2RhdGFzZXRJbnN0YW5jZS5tYW5hZ2VtZW50S2V5fX0vU05BUFNIT1RfS0VZXCI8L3NwYW4+PC9wcmU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gW2Nka0NvcHlUb0NsaXBib2FyZF09XCJyZW1vdmVTbmFwc2hvdC50ZXh0Q29udGVudFwiIChjZGtDb3B5VG9DbGlwYm9hcmRDb3BpZWQpPVwiY29waWVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIGFic29sdXRlIGJvdHRvbS0wIHJpZ2h0LTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNvbnRlbnRfY29weTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuXG5cblxuXG5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2UgbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIj5DbG9zZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZURhdGFzZXQoKVwiPlxuICAgICAgICAgICAgU2F2ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cblxuIl19