geonetwork-ui 2.5.0-dev.77e75b46a → 2.5.0-dev.80a8304dd

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 (95) hide show
  1. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +31 -16
  2. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +2 -2
  3. package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +18 -16
  4. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +3 -1
  5. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +12 -17
  6. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
  7. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +6 -7
  8. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +46 -1
  9. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +3 -2
  10. package/esm2022/libs/ui/dataviz/src/index.mjs +3 -3
  11. package/esm2022/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.mjs +51 -0
  12. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +133 -0
  13. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.data.source.mjs +24 -0
  14. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.mjs +82 -0
  15. package/esm2022/libs/util/data-fetcher/src/index.mjs +3 -1
  16. package/esm2022/libs/util/data-fetcher/src/lib/model.mjs +7 -3
  17. package/esm2022/libs/util/data-fetcher/src/lib/readers/wfs.mjs +20 -2
  18. package/esm2022/libs/util/data-fetcher/src/lib/utils.mjs +3 -3
  19. package/esm2022/translations/de.json +7 -0
  20. package/esm2022/translations/en.json +7 -0
  21. package/esm2022/translations/es.json +7 -0
  22. package/esm2022/translations/fr.json +7 -0
  23. package/esm2022/translations/it.json +7 -0
  24. package/esm2022/translations/nl.json +7 -0
  25. package/esm2022/translations/pt.json +7 -0
  26. package/fesm2022/geonetwork-ui.mjs +431 -127
  27. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  28. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +2 -1
  29. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  30. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  31. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +7 -9
  32. package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
  33. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  34. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -6
  35. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  36. package/libs/feature/record/src/lib/feature-record.module.d.ts +2 -2
  37. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  38. package/libs/feature/search/src/lib/utils/service/fields.d.ts +10 -0
  39. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  40. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  41. package/libs/ui/dataviz/src/index.d.ts +2 -2
  42. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  43. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts +14 -0
  44. package/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.d.ts.map +1 -0
  45. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +45 -0
  46. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -0
  47. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts +12 -0
  48. package/libs/ui/dataviz/src/lib/data-table/data-table.data.source.d.ts.map +1 -0
  49. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts +10 -0
  50. package/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.d.ts.map +1 -0
  51. package/libs/util/data-fetcher/src/index.d.ts +3 -1
  52. package/libs/util/data-fetcher/src/index.d.ts.map +1 -1
  53. package/libs/util/data-fetcher/src/lib/model.d.ts +1 -1
  54. package/libs/util/data-fetcher/src/lib/model.d.ts.map +1 -1
  55. package/libs/util/data-fetcher/src/lib/readers/wfs.d.ts.map +1 -1
  56. package/package.json +1 -1
  57. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +33 -16
  58. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +1 -5
  59. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +3 -3
  60. package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +17 -15
  61. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +2 -0
  62. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +4 -3
  63. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +9 -18
  64. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  65. package/src/libs/feature/record/src/lib/feature-record.module.ts +6 -4
  66. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -0
  67. package/src/libs/feature/search/src/lib/utils/service/fields.ts +55 -0
  68. package/src/libs/ui/dataviz/src/index.ts +2 -2
  69. package/src/libs/ui/dataviz/src/lib/data-table/custom.mat.paginator.intl.ts +52 -0
  70. package/src/libs/ui/dataviz/src/lib/{table/table.component.css → data-table/data-table.component.css} +4 -0
  71. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +67 -0
  72. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +173 -0
  73. package/src/libs/ui/dataviz/src/lib/data-table/data-table.data.source.ts +33 -0
  74. package/src/libs/ui/dataviz/src/lib/data-table/data-table.fixtures.ts +84 -0
  75. package/src/libs/util/data-fetcher/src/index.ts +3 -0
  76. package/src/libs/util/data-fetcher/src/lib/model.ts +6 -2
  77. package/src/libs/util/data-fetcher/src/lib/readers/wfs.ts +23 -1
  78. package/src/libs/util/data-fetcher/src/lib/utils.ts +2 -2
  79. package/translations/de.json +7 -0
  80. package/translations/en.json +7 -0
  81. package/translations/es.json +7 -0
  82. package/translations/fr.json +7 -0
  83. package/translations/it.json +7 -0
  84. package/translations/nl.json +7 -0
  85. package/translations/pt.json +7 -0
  86. package/translations/sk.json +7 -0
  87. package/esm2022/libs/ui/dataviz/src/lib/table/table.component.mjs +0 -61
  88. package/esm2022/libs/ui/dataviz/src/lib/table/table.fixtures.mjs +0 -40
  89. package/libs/ui/dataviz/src/lib/table/table.component.d.ts +0 -29
  90. package/libs/ui/dataviz/src/lib/table/table.component.d.ts.map +0 -1
  91. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts +0 -11
  92. package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +0 -1
  93. package/src/libs/ui/dataviz/src/lib/table/table.component.html +0 -40
  94. package/src/libs/ui/dataviz/src/lib/table/table.component.ts +0 -80
  95. package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +0 -40
@@ -98,6 +98,7 @@ export class DataService {
98
98
  // Pour DL toutes les données
99
99
  return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map((urls) => urls.all), map((urls) => Object.keys(urls).map((format) => ({
100
100
  ...wfsLink,
101
+ name: wfsLink.name,
101
102
  type: 'download',
102
103
  url: new URL(urls[format]),
103
104
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
@@ -108,6 +109,7 @@ export class DataService {
108
109
  return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
109
110
  return {
110
111
  ...ogcApiLink,
112
+ name: collectionInfo.id,
111
113
  type: 'download',
112
114
  url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
113
115
  mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
@@ -191,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
191
193
  providedIn: 'root',
192
194
  }]
193
195
  }], ctorParameters: () => [{ type: i1.ProxyService }] });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsR0FFWixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFHTCxXQUFXLEVBRVgsY0FBYyxHQUNmLE1BQU0sOENBQThDLENBQUE7QUFDckQsT0FBTyxFQUNMLGFBQWEsRUFDYiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLFlBQVksR0FDYixNQUFNLHdDQUF3QyxDQUFBO0FBRS9DLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBTWhFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBQy9CLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBQzVCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBQzdCLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0FBQ3ZDLE1B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U0FBUyxDQUFDLENBQUE7WUFDM0MsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtnQkFDaEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUNuRCxDQUFDOytHQTNPVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHtcbiAgT2djQXBpQ29sbGVjdGlvbkluZm8sXG4gIE9nY0FwaUVuZHBvaW50LFxuICBPZ2NBcGlSZWNvcmQsXG4gIFdmc0VuZHBvaW50LFxuICBXZnNWZXJzaW9uLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHtcbiAgQmFzZVJlYWRlcixcbiAgRmV0Y2hFcnJvcixcbiAgb3BlbkRhdGFzZXQsXG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dCxcbiAgZ2V0TWltZVR5cGVGb3JGb3JtYXQsXG4gIFByb3h5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS5jb3JzJylcbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLmh0dHAnKVxubWFya2VyKCd3ZnMudW5yZWFjaGFibGUudW5rbm93bicpXG5tYXJrZXIoJ3dmcy5mZWF0dXJldHlwZS5ub3Rmb3VuZCcpXG5tYXJrZXIoJ3dmcy5nZW9qc29uZ21sLm5vdHN1cHBvcnRlZCcpXG5tYXJrZXIoJ29nYy51bnJlYWNoYWJsZS51bmtub3duJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5uZXR3b3JrJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5odHRwJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5wYXJzZScpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IudW5zdXBwb3J0ZWRUeXBlJylcbm1hcmtlcignZGF0YXNldC5lcnJvci51bmtub3duJylcblxuaW50ZXJmYWNlIFdmc0Rvd25sb2FkVXJscyB7XG4gIGFsbDogeyBbZm9ybWF0OiBzdHJpbmddOiBzdHJpbmcgfVxuICBnZW9qc29uOiBzdHJpbmdcbiAgZ21sOiB7IGZlYXR1cmVVcmw6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmc7IHdmc1ZlcnNpb246IFdmc1ZlcnNpb24gfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb3h5OiBQcm94eVNlcnZpY2UpIHt9XG5cbiAgZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdmc0VuZHBvaW50PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBuZXcgV2ZzRW5kcG9pbnQodGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKHdmc1VybCkpLmlzUmVhZHkoKVxuICAgICkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBGZXRjaEVycm9yIHwgRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ25ldHdvcmsnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5jb3JzYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUuaHR0cGApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAncGFyc2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5wYXJzZWApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAndW5zdXBwb3J0ZWRUeXBlJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5zdXBwb3J0ZWRUeXBlYClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsc0Zyb21XZnMoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxXZnNEb3dubG9hZFVybHM+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBtYXAoKGVuZHBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGVuZHBvaW50LmdldEZlYXR1cmVUeXBlcygpXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlID0gZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVTdW1tYXJ5KFxuICAgICAgICAgIGZlYXR1cmVUeXBlcy5sZW5ndGggPT09IDEgJiYgIWZlYXR1cmVUeXBlTmFtZVxuICAgICAgICAgICAgPyBmZWF0dXJlVHlwZXNbMF0ubmFtZVxuICAgICAgICAgICAgOiBmZWF0dXJlVHlwZU5hbWVcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWxsOiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBbY3Vycl06IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgIG91dHB1dEZvcm1hdDogY3VycixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBnZW9qc29uOiBlbmRwb2ludC5zdXBwb3J0c0pzb24oZmVhdHVyZVR5cGUubmFtZSlcbiAgICAgICAgICAgID8gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgYXNKc29uOiB0cnVlLFxuICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZ21sOlxuICAgICAgICAgICAgZmVhdHVyZVR5cGUub3V0cHV0Rm9ybWF0cy5maW5kKChmKSA9PlxuICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAoZmVhdHVyZVR5cGUuZGVmYXVsdENycyA9PT0gJ0VQU0c6NDMyNicgfHxcbiAgICAgICAgICAgICAgZmVhdHVyZVR5cGUub3RoZXJDcnM/LmluY2x1ZGVzKCdFUFNHOjQzMjYnKSlcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBmZWF0dXJlVXJsOiBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjQzMjYnLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IGZlYXR1cmVUeXBlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB3ZnNWZXJzaW9uOiBlbmRwb2ludC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0V2ZzRmVhdHVyZUNvdW50KFxuICAgIHdmc1VybDogc3RyaW5nLFxuICAgIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChlbmRwb2ludCkgPT5cbiAgICAgICAgZnJvbShlbmRwb2ludC5nZXRGZWF0dXJlVHlwZUZ1bGwoZmVhdHVyZVR5cGVOYW1lKSkucGlwZShcbiAgICAgICAgICBtYXAoKGZlYXR1cmVUeXBlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVHlwZS5vYmplY3RDb3VudFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZFVybEZyb21Fc3JpUmVzdChhcGlVcmw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwoXG4gICAgICBgJHthcGlVcmx9L3F1ZXJ5P2Y9JHtmb3JtYXR9JndoZXJlPTE9MSZvdXRGaWVsZHM9KmBcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbVdmcyhcbiAgICB3ZnNMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBPYnNlcnZhYmxlPERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdPiB7XG4gICAgLy8gUG91ciBETCB0b3V0ZXMgbGVzIGRvbm7DqWVzXG4gICAgcmV0dXJuIHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbVdmcyhcbiAgICAgIHdmc0xpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICB3ZnNMaW5rLm5hbWVcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHVybHMpID0+IHVybHMuYWxsKSxcbiAgICAgIG1hcCgodXJscykgPT5cbiAgICAgICAgT2JqZWN0LmtleXModXJscykubWFwKChmb3JtYXQpID0+ICh7XG4gICAgICAgICAgLi4ud2ZzTGluayxcbiAgICAgICAgICB0eXBlOiAnZG93bmxvYWQnLFxuICAgICAgICAgIHVybDogbmV3IFVSTCh1cmxzW2Zvcm1hdF0pLFxuICAgICAgICAgIG1pbWVUeXBlOiBnZXRNaW1lVHlwZUZvckZvcm1hdChcbiAgICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgYXN5bmMgZ2V0RG93bmxvYWRMaW5rc0Zyb21PZ2NBcGlGZWF0dXJlcyhcbiAgICBvZ2NBcGlMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBQcm9taXNlPERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdPiB7XG4gICAgY29uc3QgY29sbGVjdGlvbkluZm8gPSBhd2FpdCB0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkoXG4gICAgICBvZ2NBcGlMaW5rLnVybC5ocmVmXG4gICAgKVxuICAgIHJldHVybiBPYmplY3Qua2V5cyhjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rcykubWFwKChkb3dubG9hZExpbmspID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm9nY0FwaUxpbmssXG4gICAgICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgICAgIHVybDogbmV3IFVSTChjb2xsZWN0aW9uSW5mby5idWxrRG93bmxvYWRMaW5rc1tkb3dubG9hZExpbmtdKSxcbiAgICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KFxuICAgICAgICAgIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChkb3dubG9hZExpbmspXG4gICAgICAgICksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaUNvbGxlY3Rpb25JbmZvPiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBuZXcgT2djQXBpRW5kcG9pbnQodXJsKVxuICAgIHJldHVybiBhd2FpdCBlbmRwb2ludC5hbGxDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBlbmRwb2ludC5nZXRDb2xsZWN0aW9uSW5mbyhjb2xsZWN0aW9uc1swXS5uYW1lKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBvZ2MudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SXRlbXNGcm9tT2djQXBpKHVybDogc3RyaW5nKTogUHJvbWlzZTxPZ2NBcGlSZWNvcmQ+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpXG4gICAgcmV0dXJuIGF3YWl0IGVuZHBvaW50LmZlYXR1cmVDb2xsZWN0aW9uc1xuICAgICAgLnRoZW4oKGNvbGxlY3Rpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5sZW5ndGhcbiAgICAgICAgICA/IGVuZHBvaW50LmdldENvbGxlY3Rpb25JdGVtKGNvbGxlY3Rpb25zWzBdLCAnMScpXG4gICAgICAgICAgOiBudWxsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgIH0pXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbUVzcmlSZXN0KFxuICAgIGVzcmlSZXN0TGluazogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgKTogRGF0YXNldE9ubGluZVJlc291cmNlW10ge1xuICAgIHJldHVybiBbJ2pzb24nLCAnZ2VvanNvbiddLm1hcCgoZm9ybWF0KSA9PiAoe1xuICAgICAgLi4uZXNyaVJlc3RMaW5rLFxuICAgICAgdXJsOiBuZXcgVVJMKFxuICAgICAgICB0aGlzLmdldERvd25sb2FkVXJsRnJvbUVzcmlSZXN0KGVzcmlSZXN0TGluay51cmwudG9TdHJpbmcoKSwgZm9ybWF0KVxuICAgICAgKSxcbiAgICAgIG1pbWVUeXBlOiBnZXRNaW1lVHlwZUZvckZvcm1hdChnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZm9ybWF0KSksXG4gICAgfSkpXG4gIH1cblxuICByZWFkQXNHZW9Kc29uKGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSk6IE9ic2VydmFibGU8RmVhdHVyZUNvbGxlY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRhc2V0KGxpbmspLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGRhdGFzZXQpID0+IGRhdGFzZXQuc2VsZWN0QWxsKCkucmVhZCgpKSxcbiAgICAgIG1hcCgoZmVhdHVyZXMpID0+ICh7XG4gICAgICAgIHR5cGU6ICdGZWF0dXJlQ29sbGVjdGlvbicsXG4gICAgICAgIGZlYXR1cmVzLFxuICAgICAgfSkpXG4gICAgKVxuICB9XG5cbiAgZ2V0RGF0YXNldChsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpOiBPYnNlcnZhYmxlPEJhc2VSZWFkZXI+IHtcbiAgICBpZiAobGluay50eXBlID09PSAnc2VydmljZScgJiYgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICd3ZnMnKSB7XG4gICAgICBjb25zdCB3ZnNVcmxFbmRwb2ludCA9IHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsaW5rLnVybC50b1N0cmluZygpKVxuICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgIG9wZW5EYXRhc2V0KHdmc1VybEVuZHBvaW50LCAnd2ZzJywge1xuICAgICAgICAgIHdmc0ZlYXR1cmVUeXBlOiBsaW5rLm5hbWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChsaW5rLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICAgIGNvbnN0IGxpbmtQcm94aWZpZWRVcmwgPSB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwobGluay51cmwudG9TdHJpbmcoKSlcbiAgICAgIGNvbnN0IGZvcm1hdCA9IGdldEZpbGVGb3JtYXQobGluaylcbiAgICAgIGNvbnN0IHN1cHBvcnRlZFR5cGUgPVxuICAgICAgICBTdXBwb3J0ZWRUeXBlcy5pbmRleE9mKGZvcm1hdCBhcyBhbnkpID4gLTFcbiAgICAgICAgICA/IChmb3JtYXQgYXMgU3VwcG9ydGVkVHlwZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFzZXQobGlua1Byb3hpZmllZFVybCwgc3VwcG9ydGVkVHlwZSkpLnBpcGUoKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdlc3JpUmVzdCdcbiAgICApIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoXG4gICAgICAgIGxpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICAgICdnZW9qc29uJ1xuICAgICAgKVxuICAgICAgcmV0dXJuIGZyb20ob3BlbkRhdGFzZXQodXJsLCAnZ2VvanNvbicpKS5waXBlKClcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbGluay50eXBlID09PSAnc2VydmljZScgJiZcbiAgICAgIGxpbmsuYWNjZXNzU2VydmljZVByb3RvY29sID09PSAnb2djRmVhdHVyZXMnXG4gICAgKSB7XG4gICAgICByZXR1cm4gZnJvbSh0aGlzLmdldERvd25sb2FkVXJsc0Zyb21PZ2NBcGkobGluay51cmwuaHJlZikpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoY29sbGVjdGlvbkluZm8pID0+IHtcbiAgICAgICAgICBjb25zdCBnZW9qc29uVXJsID0gY29sbGVjdGlvbkluZm8uanNvbkRvd25sb2FkTGlua1xuICAgICAgICAgIHJldHVybiBvcGVuRGF0YXNldChnZW9qc29uVXJsLCAnZ2VvanNvbicpXG4gICAgICAgIH0pLFxuICAgICAgICB0YXAoKHVybCkgPT4ge1xuICAgICAgICAgIGlmICh1cmwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmdlb2pzb25nbWwubm90c3VwcG9ydGVkJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+ICdwcm90b2NvbCBub3Qgc3VwcG9ydGVkJylcbiAgfVxufVxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2RhdGF2aXovc3JjL2xpYi9zZXJ2aWNlL2RhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBRUwsY0FBYyxFQUVkLFdBQVcsR0FFWixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFHTCxXQUFXLEVBRVgsY0FBYyxHQUNmLE1BQU0sOENBQThDLENBQUE7QUFDckQsT0FBTyxFQUNMLGFBQWEsRUFDYiw4QkFBOEIsRUFDOUIsb0JBQW9CLEVBQ3BCLFlBQVksR0FDYixNQUFNLHdDQUF3QyxDQUFBO0FBRS9DLE9BQU8sRUFBRSxJQUFJLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7O0FBTWhFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0FBQzlCLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0FBQ2xDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0FBQ3JDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBQy9CLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FBQzVCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0FBQzdCLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0FBQ3ZDLE1B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QUFVLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFBO2dCQUNsRCxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDM0MsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1YsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtnQkFDaEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUNILENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUNuRCxDQUFDOytHQTdPVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHtcbiAgT2djQXBpQ29sbGVjdGlvbkluZm8sXG4gIE9nY0FwaUVuZHBvaW50LFxuICBPZ2NBcGlSZWNvcmQsXG4gIFdmc0VuZHBvaW50LFxuICBXZnNWZXJzaW9uLFxufSBmcm9tICdAY2FtcHRvY2FtcC9vZ2MtY2xpZW50J1xuaW1wb3J0IHtcbiAgQmFzZVJlYWRlcixcbiAgRmV0Y2hFcnJvcixcbiAgb3BlbkRhdGFzZXQsXG4gIFN1cHBvcnRlZFR5cGUsXG4gIFN1cHBvcnRlZFR5cGVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7XG4gIGdldEZpbGVGb3JtYXQsXG4gIGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dCxcbiAgZ2V0TWltZVR5cGVGb3JGb3JtYXQsXG4gIFByb3h5U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgdHlwZSB7IEZlYXR1cmVDb2xsZWN0aW9uIH0gZnJvbSAnZ2VvanNvbidcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgRGF0YXNldE9ubGluZVJlc291cmNlLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5tYXJrZXIoJ3dmcy51bnJlYWNoYWJsZS5jb3JzJylcbm1hcmtlcignd2ZzLnVucmVhY2hhYmxlLmh0dHAnKVxubWFya2VyKCd3ZnMudW5yZWFjaGFibGUudW5rbm93bicpXG5tYXJrZXIoJ3dmcy5mZWF0dXJldHlwZS5ub3Rmb3VuZCcpXG5tYXJrZXIoJ3dmcy5nZW9qc29uZ21sLm5vdHN1cHBvcnRlZCcpXG5tYXJrZXIoJ29nYy51bnJlYWNoYWJsZS51bmtub3duJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5uZXR3b3JrJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5odHRwJylcbm1hcmtlcignZGF0YXNldC5lcnJvci5wYXJzZScpXG5tYXJrZXIoJ2RhdGFzZXQuZXJyb3IudW5zdXBwb3J0ZWRUeXBlJylcbm1hcmtlcignZGF0YXNldC5lcnJvci51bmtub3duJylcblxuaW50ZXJmYWNlIFdmc0Rvd25sb2FkVXJscyB7XG4gIGFsbDogeyBbZm9ybWF0OiBzdHJpbmddOiBzdHJpbmcgfVxuICBnZW9qc29uOiBzdHJpbmdcbiAgZ21sOiB7IGZlYXR1cmVVcmw6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmc7IHdmc1ZlcnNpb246IFdmc1ZlcnNpb24gfVxufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByb3h5OiBQcm94eVNlcnZpY2UpIHt9XG5cbiAgZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdmc0VuZHBvaW50PiB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBuZXcgV2ZzRW5kcG9pbnQodGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKHdmc1VybCkpLmlzUmVhZHkoKVxuICAgICkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBGZXRjaEVycm9yIHwgRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXJyb3IudHlwZSA9PT0gJ25ldHdvcmsnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5jb3JzYClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVycm9yLnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUuaHR0cGApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAncGFyc2UnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHdmcy51bnJlYWNoYWJsZS5wYXJzZWApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnJvci50eXBlID09PSAndW5zdXBwb3J0ZWRUeXBlJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5zdXBwb3J0ZWRUeXBlYClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB3ZnMudW5yZWFjaGFibGUudW5rbm93bmApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIGdldERvd25sb2FkVXJsc0Zyb21XZnMoXG4gICAgd2ZzVXJsOiBzdHJpbmcsXG4gICAgZmVhdHVyZVR5cGVOYW1lOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxXZnNEb3dubG9hZFVybHM+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRXZnNFbmRwb2ludCh3ZnNVcmwpLnBpcGUoXG4gICAgICBtYXAoKGVuZHBvaW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlcyA9IGVuZHBvaW50LmdldEZlYXR1cmVUeXBlcygpXG4gICAgICAgIGNvbnN0IGZlYXR1cmVUeXBlID0gZW5kcG9pbnQuZ2V0RmVhdHVyZVR5cGVTdW1tYXJ5KFxuICAgICAgICAgIGZlYXR1cmVUeXBlcy5sZW5ndGggPT09IDEgJiYgIWZlYXR1cmVUeXBlTmFtZVxuICAgICAgICAgICAgPyBmZWF0dXJlVHlwZXNbMF0ubmFtZVxuICAgICAgICAgICAgOiBmZWF0dXJlVHlwZU5hbWVcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZmVhdHVyZXR5cGUubm90Zm91bmQnKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWxsOiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgICAgICBbY3Vycl06IGVuZHBvaW50LmdldEZlYXR1cmVVcmwoZmVhdHVyZVR5cGUubmFtZSwge1xuICAgICAgICAgICAgICAgIG91dHB1dEZvcm1hdDogY3VycixcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBnZW9qc29uOiBlbmRwb2ludC5zdXBwb3J0c0pzb24oZmVhdHVyZVR5cGUubmFtZSlcbiAgICAgICAgICAgID8gZW5kcG9pbnQuZ2V0RmVhdHVyZVVybChmZWF0dXJlVHlwZS5uYW1lLCB7XG4gICAgICAgICAgICAgICAgYXNKc29uOiB0cnVlLFxuICAgICAgICAgICAgICAgIG91dHB1dENyczogJ0VQU0c6NDMyNicsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgZ21sOlxuICAgICAgICAgICAgZmVhdHVyZVR5cGUub3V0cHV0Rm9ybWF0cy5maW5kKChmKSA9PlxuICAgICAgICAgICAgICBmLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2dtbCcpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAoZmVhdHVyZVR5cGUuZGVmYXVsdENycyA9PT0gJ0VQU0c6NDMyNicgfHxcbiAgICAgICAgICAgICAgZmVhdHVyZVR5cGUub3RoZXJDcnM/LmluY2x1ZGVzKCdFUFNHOjQzMjYnKSlcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBmZWF0dXJlVXJsOiBlbmRwb2ludC5nZXRGZWF0dXJlVXJsKGZlYXR1cmVUeXBlLm5hbWUsIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0Rm9ybWF0OiBmZWF0dXJlVHlwZS5vdXRwdXRGb3JtYXRzLmZpbmQoKGYpID0+XG4gICAgICAgICAgICAgICAgICAgICAgZi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdnbWwnKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRDcnM6ICdFUFNHOjQzMjYnLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IGZlYXR1cmVUeXBlLm5hbWUsXG4gICAgICAgICAgICAgICAgICB3ZnNWZXJzaW9uOiBlbmRwb2ludC5nZXRWZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgZ2V0V2ZzRmVhdHVyZUNvdW50KFxuICAgIHdmc1VybDogc3RyaW5nLFxuICAgIGZlYXR1cmVUeXBlTmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2ZzRW5kcG9pbnQod2ZzVXJsKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChlbmRwb2ludCkgPT5cbiAgICAgICAgZnJvbShlbmRwb2ludC5nZXRGZWF0dXJlVHlwZUZ1bGwoZmVhdHVyZVR5cGVOYW1lKSkucGlwZShcbiAgICAgICAgICBtYXAoKGZlYXR1cmVUeXBlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZlYXR1cmVUeXBlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignd2ZzLmZlYXR1cmV0eXBlLm5vdGZvdW5kJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmZWF0dXJlVHlwZS5vYmplY3RDb3VudFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZFVybEZyb21Fc3JpUmVzdChhcGlVcmw6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmdldFByb3hpZWRVcmwoXG4gICAgICBgJHthcGlVcmx9L3F1ZXJ5P2Y9JHtmb3JtYXR9JndoZXJlPTE9MSZvdXRGaWVsZHM9KmBcbiAgICApXG4gIH1cblxuICBnZXREb3dubG9hZExpbmtzRnJvbVdmcyhcbiAgICB3ZnNMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBPYnNlcnZhYmxlPERhdGFzZXRPbmxpbmVSZXNvdXJjZVtdPiB7XG4gICAgLy8gUG91ciBETCB0b3V0ZXMgbGVzIGRvbm7DqWVzXG4gICAgcmV0dXJuIHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbVdmcyhcbiAgICAgIHdmc0xpbmsudXJsLnRvU3RyaW5nKCksXG4gICAgICB3ZnNMaW5rLm5hbWVcbiAgICApLnBpcGUoXG4gICAgICBtYXAoKHVybHMpID0+IHVybHMuYWxsKSxcbiAgICAgIG1hcCgodXJscykgPT5cbiAgICAgICAgT2JqZWN0LmtleXModXJscykubWFwKChmb3JtYXQpID0+ICh7XG4gICAgICAgICAgLi4ud2ZzTGluayxcbiAgICAgICAgICBuYW1lOiB3ZnNMaW5rLm5hbWUsXG4gICAgICAgICAgdHlwZTogJ2Rvd25sb2FkJyxcbiAgICAgICAgICB1cmw6IG5ldyBVUkwodXJsc1tmb3JtYXRdKSxcbiAgICAgICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoXG4gICAgICAgICAgICBnZXRGaWxlRm9ybWF0RnJvbVNlcnZpY2VPdXRwdXQoZm9ybWF0KVxuICAgICAgICAgICksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGFzeW5jIGdldERvd25sb2FkTGlua3NGcm9tT2djQXBpRmVhdHVyZXMoXG4gICAgb2djQXBpTGluazogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgKTogUHJvbWlzZTxEYXRhc2V0T25saW5lUmVzb3VyY2VbXT4ge1xuICAgIGNvbnN0IGNvbGxlY3Rpb25JbmZvID0gYXdhaXQgdGhpcy5nZXREb3dubG9hZFVybHNGcm9tT2djQXBpKFxuICAgICAgb2djQXBpTGluay51cmwuaHJlZlxuICAgIClcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY29sbGVjdGlvbkluZm8uYnVsa0Rvd25sb2FkTGlua3MpLm1hcCgoZG93bmxvYWRMaW5rKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vZ2NBcGlMaW5rLFxuICAgICAgICBuYW1lOiBjb2xsZWN0aW9uSW5mby5pZCxcbiAgICAgICAgdHlwZTogJ2Rvd25sb2FkJyxcbiAgICAgICAgdXJsOiBuZXcgVVJMKGNvbGxlY3Rpb25JbmZvLmJ1bGtEb3dubG9hZExpbmtzW2Rvd25sb2FkTGlua10pLFxuICAgICAgICBtaW1lVHlwZTogZ2V0TWltZVR5cGVGb3JGb3JtYXQoXG4gICAgICAgICAgZ2V0RmlsZUZvcm1hdEZyb21TZXJ2aWNlT3V0cHV0KGRvd25sb2FkTGluaylcbiAgICAgICAgKSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0RG93bmxvYWRVcmxzRnJvbU9nY0FwaSh1cmw6IHN0cmluZyk6IFByb21pc2U8T2djQXBpQ29sbGVjdGlvbkluZm8+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IG5ldyBPZ2NBcGlFbmRwb2ludCh1cmwpXG4gICAgcmV0dXJuIGF3YWl0IGVuZHBvaW50LmFsbENvbGxlY3Rpb25zXG4gICAgICAudGhlbigoY29sbGVjdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGVuZHBvaW50LmdldENvbGxlY3Rpb25JbmZvKGNvbGxlY3Rpb25zWzBdLm5hbWUpXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYG9nYy51bnJlYWNoYWJsZS51bmtub3duYClcbiAgICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRJdGVtc0Zyb21PZ2NBcGkodXJsOiBzdHJpbmcpOiBQcm9taXNlPE9nY0FwaVJlY29yZD4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gbmV3IE9nY0FwaUVuZHBvaW50KHVybClcbiAgICByZXR1cm4gYXdhaXQgZW5kcG9pbnQuZmVhdHVyZUNvbGxlY3Rpb25zXG4gICAgICAudGhlbigoY29sbGVjdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLmxlbmd0aFxuICAgICAgICAgID8gZW5kcG9pbnQuZ2V0Q29sbGVjdGlvbkl0ZW0oY29sbGVjdGlvbnNbMF0sICcxJylcbiAgICAgICAgICA6IG51bGxcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgb2djLnVucmVhY2hhYmxlLnVua25vd25gKVxuICAgICAgfSlcbiAgfVxuXG4gIGdldERvd25sb2FkTGlua3NGcm9tRXNyaVJlc3QoXG4gICAgZXNyaVJlc3RMaW5rOiBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvblxuICApOiBEYXRhc2V0T25saW5lUmVzb3VyY2VbXSB7XG4gICAgcmV0dXJuIFsnanNvbicsICdnZW9qc29uJ10ubWFwKChmb3JtYXQpID0+ICh7XG4gICAgICAuLi5lc3JpUmVzdExpbmssXG4gICAgICB1cmw6IG5ldyBVUkwoXG4gICAgICAgIHRoaXMuZ2V0RG93bmxvYWRVcmxGcm9tRXNyaVJlc3QoZXNyaVJlc3RMaW5rLnVybC50b1N0cmluZygpLCBmb3JtYXQpXG4gICAgICApLFxuICAgICAgbWltZVR5cGU6IGdldE1pbWVUeXBlRm9yRm9ybWF0KGdldEZpbGVGb3JtYXRGcm9tU2VydmljZU91dHB1dChmb3JtYXQpKSxcbiAgICB9KSlcbiAgfVxuXG4gIHJlYWRBc0dlb0pzb24obGluazogRGF0YXNldE9ubGluZVJlc291cmNlKTogT2JzZXJ2YWJsZTxGZWF0dXJlQ29sbGVjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldERhdGFzZXQobGluaykucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZGF0YXNldCkgPT4gZGF0YXNldC5zZWxlY3RBbGwoKS5yZWFkKCkpLFxuICAgICAgbWFwKChmZWF0dXJlcykgPT4gKHtcbiAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICB9KSlcbiAgICApXG4gIH1cblxuICBnZXREYXRhc2V0KGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSk6IE9ic2VydmFibGU8QmFzZVJlYWRlcj4ge1xuICAgIGlmIChsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJiBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ3dmcycpIHtcbiAgICAgIGNvbnN0IHdmc1VybEVuZHBvaW50ID0gdGhpcy5wcm94eS5nZXRQcm94aWVkVXJsKGxpbmsudXJsLnRvU3RyaW5nKCkpXG4gICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgb3BlbkRhdGFzZXQod2ZzVXJsRW5kcG9pbnQsICd3ZnMnLCB7XG4gICAgICAgICAgd2ZzRmVhdHVyZVR5cGU6IGxpbmsubmFtZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGxpbmsudHlwZSA9PT0gJ2Rvd25sb2FkJykge1xuICAgICAgY29uc3QgbGlua1Byb3hpZmllZFVybCA9IHRoaXMucHJveHkuZ2V0UHJveGllZFVybChsaW5rLnVybC50b1N0cmluZygpKVxuICAgICAgY29uc3QgZm9ybWF0ID0gZ2V0RmlsZUZvcm1hdChsaW5rKVxuICAgICAgY29uc3Qgc3VwcG9ydGVkVHlwZSA9XG4gICAgICAgIFN1cHBvcnRlZFR5cGVzLmluZGV4T2YoZm9ybWF0IGFzIGFueSkgPiAtMVxuICAgICAgICAgID8gKGZvcm1hdCBhcyBTdXBwb3J0ZWRUeXBlKVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICByZXR1cm4gZnJvbShvcGVuRGF0YXNldChsaW5rUHJveGlmaWVkVXJsLCBzdXBwb3J0ZWRUeXBlKSkucGlwZSgpXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGxpbmsudHlwZSA9PT0gJ3NlcnZpY2UnICYmXG4gICAgICBsaW5rLmFjY2Vzc1NlcnZpY2VQcm90b2NvbCA9PT0gJ2VzcmlSZXN0J1xuICAgICkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXREb3dubG9hZFVybEZyb21Fc3JpUmVzdChcbiAgICAgICAgbGluay51cmwudG9TdHJpbmcoKSxcbiAgICAgICAgJ2dlb2pzb24nXG4gICAgICApXG4gICAgICByZXR1cm4gZnJvbShvcGVuRGF0YXNldCh1cmwsICdnZW9qc29uJykpLnBpcGUoKVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBsaW5rLnR5cGUgPT09ICdzZXJ2aWNlJyAmJlxuICAgICAgbGluay5hY2Nlc3NTZXJ2aWNlUHJvdG9jb2wgPT09ICdvZ2NGZWF0dXJlcydcbiAgICApIHtcbiAgICAgIHJldHVybiBmcm9tKHRoaXMuZ2V0RG93bmxvYWRVcmxzRnJvbU9nY0FwaShsaW5rLnVybC5ocmVmKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChjb2xsZWN0aW9uSW5mbykgPT4ge1xuICAgICAgICAgIGNvbnN0IGdlb2pzb25VcmwgPSBjb2xsZWN0aW9uSW5mby5qc29uRG93bmxvYWRMaW5rXG4gICAgICAgICAgcmV0dXJuIG9wZW5EYXRhc2V0KGdlb2pzb25VcmwsICdnZW9qc29uJylcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgodXJsKSA9PiB7XG4gICAgICAgICAgaWYgKHVybCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZnMuZ2VvanNvbmdtbC5ub3RzdXBwb3J0ZWQnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gJ3Byb3RvY29sIG5vdCBzdXBwb3J0ZWQnKVxuICB9XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import { BehaviorSubject, of } from 'rxjs';
3
- import { catchError, finalize, map, shareReplay, startWith, switchMap, } from 'rxjs/operators';
3
+ import { catchError, finalize, shareReplay, startWith, switchMap, } from 'rxjs/operators';
4
4
  import { FetchError } from '../../../../../../libs/util/data-fetcher/src';
5
5
  import { DataService } from '../service/data.service';
6
- import { TableComponent } from '../../../../../../libs/ui/dataviz/src';
6
+ import { DataTableComponent } from '../../../../../../libs/ui/dataviz/src';
7
7
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
8
8
  import { LoadingMaskComponent, PopupAlertComponent, } from '../../../../../../libs/ui/widgets/src';
9
9
  import { CommonModule } from '@angular/common';
@@ -24,23 +24,18 @@ export class TableViewComponent {
24
24
  this.tableData$ = this.currentLink$.pipe(switchMap((link) => {
25
25
  this.error = null;
26
26
  if (!link)
27
- return of([]);
27
+ return of(undefined);
28
28
  this.loading = true;
29
- return this.fetchData(link).pipe(map((items) => items.map((item) => ({
30
- id: item.id,
31
- ...item.properties,
32
- }))), catchError((error) => {
29
+ return this.getDatasetReader(link).pipe(catchError((error) => {
33
30
  this.handleError(error);
34
- return of([]);
31
+ return of(undefined);
35
32
  }), finalize(() => {
36
33
  this.loading = false;
37
34
  }));
38
- }), startWith([]), shareReplay(1));
35
+ }), startWith(undefined), shareReplay(1));
39
36
  }
40
- fetchData(link) {
41
- return this.dataService
42
- .getDataset(link)
43
- .pipe(switchMap((dataset) => dataset.read()));
37
+ getDatasetReader(link) {
38
+ return this.dataService.getDataset(link);
44
39
  }
45
40
  onTableSelect(event) {
46
41
  console.log(event);
@@ -63,18 +58,18 @@ export class TableViewComponent {
63
58
  this.loading = false;
64
59
  }
65
60
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: i1.DataService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: TableComponent, selector: "gn-ui-table", inputs: ["data", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
61
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
62
  }
68
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
69
64
  type: Component,
70
65
  args: [{ selector: 'gn-ui-table-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
71
66
  CommonModule,
72
- TableComponent,
67
+ DataTableComponent,
73
68
  LoadingMaskComponent,
74
69
  PopupAlertComponent,
75
70
  TranslateModule,
76
- ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-table\n class=\"overflow-auto grow\"\n [data]=\"tableData$ | async\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
71
+ ], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
77
72
  }], ctorParameters: () => [{ type: i1.DataService }, { type: i2.TranslateService }], propDecorators: { link: [{
78
73
  type: Input
79
74
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL3RhYmxlLXZpZXcvdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL3RhYmxlLXZpZXcvdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFDUixHQUFHLEVBQ0gsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQWtCLE1BQU0sdUNBQXVDLENBQUE7QUFFdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUNBQXVDLENBQUE7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7OztBQWdCOUMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixJQUFhLElBQUksQ0FBQyxLQUE0QjtRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBK0JELFlBQ1Us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a0JBQWtCLHNHQ25DL0IscW9CQXNCQSx5RERLSSxZQUFZLHdMQUNaLGNBQWMsNkdBQ2Qsb0JBQW9CLG9GQUNwQixtQkFBbUIsbUdBQ25CLGVBQWU7OzRGQUlOLGtCQUFrQjtrQkFkOUIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLGVBQWU7cUJBQ2hCLGNBQ1csSUFBSTsrR0FHSCxJQUFJO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnXG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBmaW5hbGl6ZSxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgRGF0YUl0ZW0sIEZldGNoRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvZGF0YS1mZXRjaGVyL3NyYydcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnXG5pbXBvcnQgeyBUYWJsZUNvbXBvbmVudCwgVGFibGVJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2RhdGF2aXovc3JjJ1xuaW1wb3J0IHsgRGF0YXNldE9ubGluZVJlc291cmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIExvYWRpbmdNYXNrQ29tcG9uZW50LFxuICBQb3B1cEFsZXJ0Q29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS10YWJsZS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS12aWV3LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFibGVDb21wb25lbnQsXG4gICAgTG9hZGluZ01hc2tDb21wb25lbnQsXG4gICAgUG9wdXBBbGVydENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNldCBsaW5rKHZhbHVlOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpIHtcbiAgICB0aGlzLmN1cnJlbnRMaW5rJC5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgY3VycmVudExpbmskID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhc2V0T25saW5lUmVzb3VyY2U+KG51bGwpXG5cbiAgbG9hZGluZyA9IGZhbHNlXG4gIGVycm9yID0gbnVsbFxuXG4gIHRhYmxlRGF0YSQgPSB0aGlzLmN1cnJlbnRMaW5rJC5waXBlKFxuICAgIHN3aXRjaE1hcCgobGluaykgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIGlmICghbGluaykgcmV0dXJuIG9mKFtdIGFzIFRhYmxlSXRlbU1vZGVsW10pXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICByZXR1cm4gdGhpcy5mZXRjaERhdGEobGluaykucGlwZShcbiAgICAgICAgbWFwKChpdGVtcykgPT5cbiAgICAgICAgICBpdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcGVydGllcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgICAgIHJldHVybiBvZihbXSBhcyBUYWJsZUl0ZW1Nb2RlbFtdKVxuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfSksXG4gICAgc3RhcnRXaXRoKFtdIGFzIFRhYmxlSXRlbU1vZGVsW10pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gIClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGZldGNoRGF0YShsaW5rOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpOiBPYnNlcnZhYmxlPERhdGFJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZVxuICAgICAgLmdldERhdGFzZXQobGluaylcbiAgICAgIC5waXBlKHN3aXRjaE1hcCgoZGF0YXNldCkgPT4gZGF0YXNldC5yZWFkKCkpKVxuICB9XG5cbiAgb25UYWJsZVNlbGVjdChldmVudCkge1xuICAgIGNvbnNvbGUubG9nKGV2ZW50KVxuICB9XG5cbiAgaGFuZGxlRXJyb3IoZXJyb3I6IEZldGNoRXJyb3IgfCBFcnJvciB8IHN0cmluZykge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEZldGNoRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgYGRhdGFzZXQuZXJyb3IuJHtlcnJvci50eXBlfWAsXG4gICAgICAgIHtcbiAgICAgICAgICBpbmZvOiBlcnJvci5pbmZvLFxuICAgICAgICB9XG4gICAgICApXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IubWVzc2FnZSlcbiAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChlcnJvci5tZXNzYWdlKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLnN0YWNrIHx8IGVycm9yKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IpXG4gICAgICBjb25zb2xlLndhcm4oZXJyb3IpXG4gICAgfVxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2xcIj5cbiAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbFwiPlxuICAgIDxnbi11aS10YWJsZVxuICAgICAgY2xhc3M9XCJvdmVyZmxvdy1hdXRvIGdyb3dcIlxuICAgICAgW2RhdGFdPVwidGFibGVEYXRhJCB8IGFzeW5jXCJcbiAgICAgIChzZWxlY3RlZCk9XCJvblRhYmxlU2VsZWN0KCRldmVudClcIlxuICAgID48L2duLXVpLXRhYmxlPlxuICAgIDxnbi11aS1sb2FkaW5nLW1hc2tcbiAgICAgICpuZ0lmPVwibG9hZGluZ1wiXG4gICAgICBjbGFzcz1cImFic29sdXRlIGluc2V0LTBcIlxuICAgICAgW21lc3NhZ2VdPVwiJ3RhYmxlLmxvYWRpbmcuZGF0YScgfCB0cmFuc2xhdGVcIlxuICAgID48L2duLXVpLWxvYWRpbmctbWFzaz5cbiAgICA8Z24tdWktcG9wdXAtYWxlcnRcbiAgICAgICpuZ0lmPVwiZXJyb3JcIlxuICAgICAgdHlwZT1cIndhcm5pbmdcIlxuICAgICAgaWNvbj1cIm1hdEVycm9yT3V0bGluZU91dGxpbmVcIlxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBtLTIgaW5zZXQtMFwiXG4gICAgPlxuICAgICAgPHNwYW4gdHJhbnNsYXRlPnt7IGVycm9yIH19PC9zcGFuPlxuICAgIDwvZ24tdWktcG9wdXAtYWxlcnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL3RhYmxlLXZpZXcvdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZGF0YXZpei9zcmMvbGliL3RhYmxlLXZpZXcvdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGdCQUFnQixDQUFBO0FBQ3ZCLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQTtBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFFMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBQ3BCLE1BQU0sdUNBQXVDLENBQUE7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7OztBQWdCOUMsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixJQUFhLElBQUksQ0FBQyxLQUE0QjtRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBeUJELFlBQ1UsV0FBd0IsRUFD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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIGZpbmFsaXplLFxuICBzaGFyZVJlcGxheSxcbiAgc3RhcnRXaXRoLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgQmFzZVJlYWRlciwgRmV0Y2hFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9kYXRhLWZldGNoZXIvc3JjJ1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2RhdGEuc2VydmljZSdcbmltcG9ydCB7IERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZGF0YXZpei9zcmMnXG5pbXBvcnQgeyBEYXRhc2V0T25saW5lUmVzb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHtcbiAgTG9hZGluZ01hc2tDb21wb25lbnQsXG4gIFBvcHVwQWxlcnRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvd2lkZ2V0cy9zcmMnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLXRhYmxlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXG4gICAgTG9hZGluZ01hc2tDb21wb25lbnQsXG4gICAgUG9wdXBBbGVydENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHNldCBsaW5rKHZhbHVlOiBEYXRhc2V0T25saW5lUmVzb3VyY2UpIHtcbiAgICB0aGlzLmN1cnJlbnRMaW5rJC5uZXh0KHZhbHVlKVxuICB9XG4gIHByaXZhdGUgY3VycmVudExpbmskID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRhc2V0T25saW5lUmVzb3VyY2U+KG51bGwpXG5cbiAgbG9hZGluZyA9IGZhbHNlXG4gIGVycm9yID0gbnVsbFxuXG4gIHRhYmxlRGF0YSQgPSB0aGlzLmN1cnJlbnRMaW5rJC5waXBlKFxuICAgIHN3aXRjaE1hcCgobGluaykgPT4ge1xuICAgICAgdGhpcy5lcnJvciA9IG51bGxcbiAgICAgIGlmICghbGluaykgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIHJldHVybiB0aGlzLmdldERhdGFzZXRSZWFkZXIobGluaykucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9KSxcbiAgICBzdGFydFdpdGgodW5kZWZpbmVkKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBnZXREYXRhc2V0UmVhZGVyKGxpbms6IERhdGFzZXRPbmxpbmVSZXNvdXJjZSk6IE9ic2VydmFibGU8QmFzZVJlYWRlcj4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldERhdGFzZXQobGluaylcbiAgfVxuXG4gIG9uVGFibGVTZWxlY3QoZXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhldmVudClcbiAgfVxuXG4gIGhhbmRsZUVycm9yKGVycm9yOiBGZXRjaEVycm9yIHwgRXJyb3IgfCBzdHJpbmcpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBGZXRjaEVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGBkYXRhc2V0LmVycm9yLiR7ZXJyb3IudHlwZX1gLFxuICAgICAgICB7XG4gICAgICAgICAgaW5mbzogZXJyb3IuaW5mbyxcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yLm1lc3NhZ2UpXG4gICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aGlzLmVycm9yID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZXJyb3IubWVzc2FnZSlcbiAgICAgIGNvbnNvbGUud2FybihlcnJvci5zdGFjayB8fCBlcnJvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lcnJvciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGVycm9yKVxuICAgICAgY29uc29sZS53YXJuKGVycm9yKVxuICAgIH1cbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidy1mdWxsIGgtZnVsbCBmbGV4IGZsZXgtY29sXCI+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGxcIj5cbiAgICA8Z24tdWktZGF0YS10YWJsZVxuICAgICAgKm5nSWY9XCJ0YWJsZURhdGEkIHwgYXN5bmMgYXMgZGF0YXNldFwiXG4gICAgICBjbGFzcz1cIm92ZXJmbG93LWF1dG8gZ3Jvd1wiXG4gICAgICBbZGF0YXNldF09XCJkYXRhc2V0XCJcbiAgICAgIChzZWxlY3RlZCk9XCJvblRhYmxlU2VsZWN0KCRldmVudClcIlxuICAgID48L2duLXVpLWRhdGEtdGFibGU+XG4gICAgPGduLXVpLWxvYWRpbmctbWFza1xuICAgICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMFwiXG4gICAgICBbbWVzc2FnZV09XCIndGFibGUubG9hZGluZy5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgPjwvZ24tdWktbG9hZGluZy1tYXNrPlxuICAgIDxnbi11aS1wb3B1cC1hbGVydFxuICAgICAgKm5nSWY9XCJlcnJvclwiXG4gICAgICB0eXBlPVwid2FybmluZ1wiXG4gICAgICBpY29uPVwibWF0RXJyb3JPdXRsaW5lT3V0bGluZVwiXG4gICAgICBjbGFzcz1cImFic29sdXRlIG0tMiBpbnNldC0wXCJcbiAgICA+XG4gICAgICA8c3BhbiB0cmFuc2xhdGU+e3sgZXJyb3IgfX08L3NwYW4+XG4gICAgPC9nbi11aS1wb3B1cC1hbGVydD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -43,7 +43,7 @@ export class DataViewComponent {
43
43
  this.selectedLink$.next(link);
44
44
  }
45
45
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: i1.MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
47
47
  }
48
48
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
49
49
  type: Component,
@@ -53,7 +53,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
53
53
  TableViewComponent,
54
54
  TranslateModule,
55
55
  ChartViewComponent,
56
- ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
56
+ ], template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1 self-end mb-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n" }]
57
57
  }], ctorParameters: () => [{ type: i1.MdViewFacade }], propDecorators: { mode: [{
58
58
  type: Input
59
59
  }], displaySource: [{
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
61
61
  }], chartConfig$: [{
62
62
  type: Output
63
63
  }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDaEYsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7OztBQWdCckQsTUFBTSxPQUFPLGlCQUFpQjtJQTZCNUIsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUEzQnJDLGtCQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFBO1FBQzdFLHlCQUFvQixHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN6RCxPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQTtRQUNELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFBO0lBRWYsQ0FBQztJQUVsRCxjQUFjLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFvQjtRQUM3QixNQUFNLElBQUksR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDOytHQXZDVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnTENsQzlCLCt3QkFzQkEseURES0ksWUFBWSxzUkFDWix5QkFBeUIscU5BQ3pCLGtCQUFrQiw4RUFDbEIsZUFBZSw0RkFDZixrQkFBa0I7OzRGQUdULGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixrQkFBa0I7cUJBQ25CO2lGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGlua0xhYmVsLCBnZXRMaW5rUHJpb3JpdHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQgeyBEYXRhc2V0T25saW5lUmVzb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgQ2hhcnRWaWV3Q29tcG9uZW50LFxuICBUYWJsZVZpZXdDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9kYXRhdml6L3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFRhYmxlVmlld0NvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ2hhcnRWaWV3Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGU6ICd0YWJsZScgfCAnY2hhcnQnXG4gIEBJbnB1dCgpIGRpc3BsYXlTb3VyY2UgPSB0cnVlXG4gIEBPdXRwdXQoKSBjaGFydENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGF2aXpDb25maWd1cmF0aW9uTW9kZWw+KG51bGwpXG4gIGNvbXBhdGlibGVEYXRhTGlua3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuZGF0YUxpbmtzJCxcbiAgICB0aGlzLm1kVmlld0ZhY2FkZS5nZW9EYXRhTGlua3MkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RhdGFMaW5rcywgZ2VvRGF0YUxpbmtzXSkgPT4ge1xuICAgICAgY29uc3QgYSA9IFsuLi5kYXRhTGlua3MsIC4uLmdlb0RhdGFMaW5rc11cbiAgICAgIGEuc29ydCgoYSwgYikgPT4gZ2V0TGlua1ByaW9yaXR5KGIpIC0gZ2V0TGlua1ByaW9yaXR5KGEpKVxuICAgICAgcmV0dXJuIGFcbiAgICB9KVxuICApXG4gIGRyb3Bkb3duQ2hvaWNlcyQgPSB0aGlzLmNvbXBhdGlibGVEYXRhTGlua3MkLnBpcGUoXG4gICAgdGFwKChsaW5rcykgPT4ge1xuICAgICAgaWYgKGxpbmtzLmluZGV4T2YodGhpcy5zZWxlY3RlZExpbmskLnZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmskLm5leHQobGlua3NbMF0pXG4gICAgICB9XG4gICAgfSksXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLm1hcCgobGluaykgPT4gKHtcbiAgICAgICAgbGFiZWw6IGdldExpbmtMYWJlbChsaW5rKSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGxpbmspLFxuICAgICAgfSkpXG4gICAgKVxuICApXG4gIHNlbGVjdGVkTGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFzZXRPbmxpbmVSZXNvdXJjZT4obnVsbClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1kVmlld0ZhY2FkZTogTWRWaWV3RmFjYWRlKSB7fVxuXG4gIHNldENoYXJ0Q29uZmlnKGV2ZW50OiBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuc2V0Q2hhcnRDb25maWcoZXZlbnQpXG4gIH1cblxuICBzZWxlY3RMaW5rKGxpbmtBc1N0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlID0gSlNPTi5wYXJzZShsaW5rQXNTdHJpbmcpXG4gICAgbGluay51cmwgPSBuZXcgVVJMKGxpbmsudXJsKVxuICAgIHRoaXMuc2VsZWN0ZWRMaW5rJC5uZXh0KGxpbmspXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgcC0xXCI+XG4gIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICpuZ0lmPVwiZHJvcGRvd25DaG9pY2VzJCB8IGFzeW5jIGFzIGNob2ljZXNcIlxuICAgIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhZGlzcGxheVNvdXJjZSB9XCJcbiAgICBbdGl0bGVdPVwiJ3RhYmxlLnNlbGVjdC5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ0cnVuY2F0ZSBwLTEgLW14LTEgc2VsZi1lbmQgbWItMVwiXG4gICAgZXh0cmFCdG5DbGFzcz1cIiF0ZXh0LXByaW1hcnkgZm9udC1zYW5zIGZvbnQtbWVkaXVtXCJcbiAgICBbY2hvaWNlc109XCJjaG9pY2VzXCJcbiAgICAoc2VsZWN0VmFsdWUpPVwic2VsZWN0TGluaygkZXZlbnQpXCJcbiAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLVs0MjBweF1cIj5cbiAgICA8Z24tdWktdGFibGUtdmlld1xuICAgICAgKm5nSWY9XCJtb2RlID09PSAndGFibGUnXCJcbiAgICAgIFtsaW5rXT1cInNlbGVjdGVkTGluayQgfCBhc3luY1wiXG4gICAgPjwvZ24tdWktdGFibGUtdmlldz5cbiAgICA8Z24tdWktY2hhcnQtdmlld1xuICAgICAgKm5nSWY9XCJtb2RlID09PSAnY2hhcnQnXCJcbiAgICAgIChjaGFydENvbmZpZyQpPVwic2V0Q2hhcnRDb25maWcoJGV2ZW50KVwiXG4gICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgID48L2duLXVpLWNoYXJ0LXZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9yZWNvcmQvc3JjL2xpYi9kYXRhLXZpZXcvZGF0YS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDaEYsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsR0FDbkIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBOzs7OztBQWdCckQsTUFBTSxPQUFPLGlCQUFpQjtJQTZCNUIsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUEzQnJDLGtCQUFhLEdBQUcsSUFBSSxDQUFBO1FBQ25CLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFBO1FBQzdFLHlCQUFvQixHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVU7WUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNoQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7WUFDekMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN6RCxPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUNILENBQUE7UUFDRCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUMvQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ25DLENBQUM7UUFDSCxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkIsS0FBSyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQTtRQUNELGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFBO0lBRWYsQ0FBQztJQUVsRCxjQUFjLENBQUMsS0FBZ0M7UUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELFVBQVUsQ0FBQyxZQUFvQjtRQUM3QixNQUFNLElBQUksR0FBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM1RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixDQUFDOytHQXZDVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixnTENsQzlCLCt3QkFzQkEseURES0ksWUFBWSxzUkFDWix5QkFBeUIscU5BQ3pCLGtCQUFrQiw4RUFDbEIsZUFBZSw0RkFDZixrQkFBa0I7OzRGQUdULGlCQUFpQjtrQkFkN0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixrQkFBa0I7cUJBQ25CO2lGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgZ2V0TGlua0xhYmVsLCBnZXRMaW5rUHJpb3JpdHkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi4vc3RhdGUnXG5pbXBvcnQgeyBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvZGF0YXZpei9kYXRhdml6LWNvbmZpZ3VyYXRpb24ubW9kZWwnXG5pbXBvcnQgeyBEYXRhc2V0T25saW5lUmVzb3VyY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHtcbiAgQ2hhcnRWaWV3Q29tcG9uZW50LFxuICBUYWJsZVZpZXdDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9kYXRhdml6L3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFRhYmxlVmlld0NvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ2hhcnRWaWV3Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGU6ICd0YWJsZScgfCAnY2hhcnQnXG4gIEBJbnB1dCgpIGRpc3BsYXlTb3VyY2UgPSB0cnVlXG4gIEBPdXRwdXQoKSBjaGFydENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGF2aXpDb25maWd1cmF0aW9uTW9kZWw+KG51bGwpXG4gIGNvbXBhdGlibGVEYXRhTGlua3MkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuZGF0YUxpbmtzJCxcbiAgICB0aGlzLm1kVmlld0ZhY2FkZS5nZW9EYXRhTGlua3MkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RhdGFMaW5rcywgZ2VvRGF0YUxpbmtzXSkgPT4ge1xuICAgICAgY29uc3QgYSA9IFsuLi5kYXRhTGlua3MsIC4uLmdlb0RhdGFMaW5rc11cbiAgICAgIGEuc29ydCgoYSwgYikgPT4gZ2V0TGlua1ByaW9yaXR5KGIpIC0gZ2V0TGlua1ByaW9yaXR5KGEpKVxuICAgICAgcmV0dXJuIGFcbiAgICB9KVxuICApXG4gIGRyb3Bkb3duQ2hvaWNlcyQgPSB0aGlzLmNvbXBhdGlibGVEYXRhTGlua3MkLnBpcGUoXG4gICAgdGFwKChsaW5rcykgPT4ge1xuICAgICAgaWYgKGxpbmtzLmluZGV4T2YodGhpcy5zZWxlY3RlZExpbmskLnZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExpbmskLm5leHQobGlua3NbMF0pXG4gICAgICB9XG4gICAgfSksXG4gICAgbWFwKChsaW5rcykgPT5cbiAgICAgIGxpbmtzLm1hcCgobGluaykgPT4gKHtcbiAgICAgICAgbGFiZWw6IGdldExpbmtMYWJlbChsaW5rKSxcbiAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGxpbmspLFxuICAgICAgfSkpXG4gICAgKVxuICApXG4gIHNlbGVjdGVkTGluayQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFzZXRPbmxpbmVSZXNvdXJjZT4obnVsbClcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1kVmlld0ZhY2FkZTogTWRWaWV3RmFjYWRlKSB7fVxuXG4gIHNldENoYXJ0Q29uZmlnKGV2ZW50OiBEYXRhdml6Q29uZmlndXJhdGlvbk1vZGVsKSB7XG4gICAgdGhpcy5tZFZpZXdGYWNhZGUuc2V0Q2hhcnRDb25maWcoZXZlbnQpXG4gIH1cblxuICBzZWxlY3RMaW5rKGxpbmtBc1N0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgbGluazogRGF0YXNldE9ubGluZVJlc291cmNlID0gSlNPTi5wYXJzZShsaW5rQXNTdHJpbmcpXG4gICAgbGluay51cmwgPSBuZXcgVVJMKGxpbmsudXJsKVxuICAgIHRoaXMuc2VsZWN0ZWRMaW5rJC5uZXh0KGxpbmspXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggZmxleC1jb2wgcC0xXCI+XG4gIDxnbi11aS1kcm9wZG93bi1zZWxlY3RvclxuICAgICpuZ0lmPVwiZHJvcGRvd25DaG9pY2VzJCB8IGFzeW5jIGFzIGNob2ljZXNcIlxuICAgIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhZGlzcGxheVNvdXJjZSB9XCJcbiAgICBbdGl0bGVdPVwiJ3RhYmxlLnNlbGVjdC5kYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgY2xhc3M9XCJ0cnVuY2F0ZSBwLTEgLW14LTEgc2VsZi1lbmQgbWItMVwiXG4gICAgZXh0cmFCdG5DbGFzcz1cIiF0ZXh0LXByaW1hcnkgZm9udC1zYW5zIGZvbnQtbWVkaXVtXCJcbiAgICBbY2hvaWNlc109XCJjaG9pY2VzXCJcbiAgICAoc2VsZWN0VmFsdWUpPVwic2VsZWN0TGluaygkZXZlbnQpXCJcbiAgPjwvZ24tdWktZHJvcGRvd24tc2VsZWN0b3I+XG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBoLVs0NjBweF1cIj5cbiAgICA8Z24tdWktdGFibGUtdmlld1xuICAgICAgKm5nSWY9XCJtb2RlID09PSAndGFibGUnXCJcbiAgICAgIFtsaW5rXT1cInNlbGVjdGVkTGluayQgfCBhc3luY1wiXG4gICAgPjwvZ24tdWktdGFibGUtdmlldz5cbiAgICA8Z24tdWktY2hhcnQtdmlld1xuICAgICAgKm5nSWY9XCJtb2RlID09PSAnY2hhcnQnXCJcbiAgICAgIChjaGFydENvbmZpZyQpPVwic2V0Q2hhcnRDb25maWcoJGV2ZW50KVwiXG4gICAgICBbbGlua109XCJzZWxlY3RlZExpbmskIHwgYXN5bmNcIlxuICAgID48L2duLXVpLWNoYXJ0LXZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -4,7 +4,7 @@ import { StoreModule } from '@ngrx/store';
4
4
  import { EffectsModule } from '@ngrx/effects';
5
5
  import { UiLayoutModule } from '../../../../../libs/ui/layout/src';
6
6
  import { FeatureMapModule } from '../../../../../libs/feature/map/src';
7
- import { UiInputsModule } from '../../../../../libs/ui/inputs/src';
7
+ import { DropdownSelectorComponent, UiInputsModule, } from '../../../../../libs/ui/inputs/src';
8
8
  import { UiElementsModule } from '../../../../../libs/ui/elements/src';
9
9
  import { MdViewFacade } from './state';
10
10
  import { MdViewEffects } from './state/mdview.effects';
@@ -13,9 +13,8 @@ import { MatTabsModule } from '@angular/material/tabs';
13
13
  import { UiWidgetsModule } from '../../../../../libs/ui/widgets/src';
14
14
  import { TranslateModule } from '@ngx-translate/core';
15
15
  import { FeatureCatalogModule } from '../../../../../libs/feature/catalog/src';
16
- import { TableComponent } from '../../../../../libs/ui/dataviz/src';
16
+ import { DataTableComponent } from '../../../../../libs/ui/dataviz/src';
17
17
  import { NgIconsModule, provideNgIconsConfig } from '@ng-icons/core';
18
- import { DropdownSelectorComponent } from '../../../../../libs/ui/inputs/src';
19
18
  import * as i0 from "@angular/core";
20
19
  import * as i1 from "@ngrx/store";
21
20
  import * as i2 from "@ngrx/effects";
@@ -29,7 +28,7 @@ export class FeatureRecordModule {
29
28
  MatTabsModule,
30
29
  UiWidgetsModule,
31
30
  TranslateModule,
32
- TableComponent,
31
+ DataTableComponent,
33
32
  NgIconsModule,
34
33
  DropdownSelectorComponent] }); }
35
34
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, providers: [
@@ -48,7 +47,7 @@ export class FeatureRecordModule {
48
47
  MatTabsModule,
49
48
  UiWidgetsModule,
50
49
  TranslateModule,
51
- TableComponent,
50
+ DataTableComponent,
52
51
  NgIconsModule,
53
52
  DropdownSelectorComponent] }); }
54
53
  }
@@ -67,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
67
66
  MatTabsModule,
68
67
  UiWidgetsModule,
69
68
  TranslateModule,
70
- TableComponent,
69
+ DataTableComponent,
71
70
  NgIconsModule,
72
71
  DropdownSelectorComponent,
73
72
  ],
@@ -79,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
79
78
  ],
80
79
  }]
81
80
  }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1yZWNvcmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMvbGliL2ZlYXR1cmUtcmVjb3JkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLE9BQU8sR0FDUixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUE7Ozs7QUEwQjdFLE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLFlBdEI1QixZQUFZLGtEQUdaLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGVBQWU7WUFDZixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYix5QkFBeUI7Z0hBU2hCLG1CQUFtQixhQVBuQjtZQUNULFlBQVk7WUFDWixvQkFBb0IsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDO1NBQ0gsWUFwQkMsWUFBWTtZQUNaLFdBQVcsQ0FBQyxVQUFVLENBQUMsK0JBQStCLEVBQUUsT0FBTyxDQUFDO1lBQ2hFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IseUJBQXlCOzs0RkFTaEIsbUJBQW1CO2tCQXhCL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXLENBQUMsVUFBVSxDQUFDLCtCQUErQixFQUFFLE9BQU8sQ0FBQzt3QkFDaEUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN6QyxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLHlCQUF5QjtxQkFDMUI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULFlBQVk7d0JBQ1osb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxPQUFPO3lCQUNkLENBQUM7cUJBQ0g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnXG5pbXBvcnQgeyBVaUxheW91dE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IEZlYXR1cmVNYXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYydcbmltcG9ydCB7IFVpSW5wdXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVWlFbGVtZW50c01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjJ1xuaW1wb3J0IHsgTWRWaWV3RmFjYWRlIH0gZnJvbSAnLi9zdGF0ZSdcbmltcG9ydCB7IE1kVmlld0VmZmVjdHMgfSBmcm9tICcuL3N0YXRlL21kdmlldy5lZmZlY3RzJ1xuaW1wb3J0IHtcbiAgTUVUQURBVEFfVklFV19GRUFUVVJFX1NUQVRFX0tFWSxcbiAgcmVkdWNlcixcbn0gZnJvbSAnLi9zdGF0ZS9tZHZpZXcucmVkdWNlcidcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJ1xuaW1wb3J0IHsgVWlXaWRnZXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBGZWF0dXJlQ2F0YWxvZ01vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9jYXRhbG9nL3NyYydcbmltcG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9kYXRhdml6L3NyYydcbmltcG9ydCB7IE5nSWNvbnNNb2R1bGUsIHByb3ZpZGVOZ0ljb25zQ29uZmlnIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoTUVUQURBVEFfVklFV19GRUFUVVJFX1NUQVRFX0tFWSwgcmVkdWNlciksXG4gICAgRWZmZWN0c01vZHVsZS5mb3JGZWF0dXJlKFtNZFZpZXdFZmZlY3RzXSksXG4gICAgVWlMYXlvdXRNb2R1bGUsXG4gICAgRmVhdHVyZU1hcE1vZHVsZSxcbiAgICBGZWF0dXJlQ2F0YWxvZ01vZHVsZSxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBVaUVsZW1lbnRzTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgVWlXaWRnZXRzTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBUYWJsZUNvbXBvbmVudCxcbiAgICBOZ0ljb25zTW9kdWxlLFxuICAgIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIE1kVmlld0ZhY2FkZSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41ZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlUmVjb3JkTW9kdWxlIHt9XG4iXX0=
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1yZWNvcmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3JlY29yZC9zcmMvbGliL2ZlYXR1cmUtcmVjb3JkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3RFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsY0FBYyxHQUNmLE1BQU0sbUNBQW1DLENBQUE7QUFDMUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUNMLCtCQUErQixFQUMvQixPQUFPLEdBQ1IsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7Ozs7QUEwQnBFLE1BQU0sT0FBTyxtQkFBbUI7K0dBQW5CLG1CQUFtQjtnSEFBbkIsbUJBQW1CLFlBdEI1QixZQUFZLGtEQUdaLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsb0JBQW9CO1lBQ3BCLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsYUFBYTtZQUNiLGVBQWU7WUFDZixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGFBQWE7WUFDYix5QkFBeUI7Z0hBU2hCLG1CQUFtQixhQVBuQjtZQUNULFlBQVk7WUFDWixvQkFBb0IsQ0FBQztnQkFDbkIsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDO1NBQ0gsWUFwQkMsWUFBWTtZQUNaLFdBQVcsQ0FBQyxVQUFVLENBQUMsK0JBQStCLEVBQUUsT0FBTyxDQUFDO1lBQ2hFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN6QyxjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLG9CQUFvQjtZQUNwQixjQUFjO1lBQ2QsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixhQUFhO1lBQ2IseUJBQXlCOzs0RkFTaEIsbUJBQW1CO2tCQXhCL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXLENBQUMsVUFBVSxDQUFDLCtCQUErQixFQUFFLE9BQU8sQ0FBQzt3QkFDaEUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3dCQUN6QyxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLHlCQUF5QjtxQkFDMUI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULFlBQVk7d0JBQ1osb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxPQUFPO3lCQUNkLENBQUM7cUJBQ0g7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJ1xuaW1wb3J0IHsgRWZmZWN0c01vZHVsZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnXG5pbXBvcnQgeyBVaUxheW91dE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IEZlYXR1cmVNYXBNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvbWFwL3NyYydcbmltcG9ydCB7XG4gIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gIFVpSW5wdXRzTW9kdWxlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBVaUVsZW1lbnRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9lbGVtZW50cy9zcmMnXG5pbXBvcnQgeyBNZFZpZXdGYWNhZGUgfSBmcm9tICcuL3N0YXRlJ1xuaW1wb3J0IHsgTWRWaWV3RWZmZWN0cyB9IGZyb20gJy4vc3RhdGUvbWR2aWV3LmVmZmVjdHMnXG5pbXBvcnQge1xuICBNRVRBREFUQV9WSUVXX0ZFQVRVUkVfU1RBVEVfS0VZLFxuICByZWR1Y2VyLFxufSBmcm9tICcuL3N0YXRlL21kdmlldy5yZWR1Y2VyJ1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnXG5pbXBvcnQgeyBVaVdpZGdldHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEZlYXR1cmVDYXRhbG9nTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2NhdGFsb2cvc3JjJ1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vbGlicy91aS9kYXRhdml6L3NyYydcbmltcG9ydCB7IE5nSWNvbnNNb2R1bGUsIHByb3ZpZGVOZ0ljb25zQ29uZmlnIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgU3RvcmVNb2R1bGUuZm9yRmVhdHVyZShNRVRBREFUQV9WSUVXX0ZFQVRVUkVfU1RBVEVfS0VZLCByZWR1Y2VyKSxcbiAgICBFZmZlY3RzTW9kdWxlLmZvckZlYXR1cmUoW01kVmlld0VmZmVjdHNdKSxcbiAgICBVaUxheW91dE1vZHVsZSxcbiAgICBGZWF0dXJlTWFwTW9kdWxlLFxuICAgIEZlYXR1cmVDYXRhbG9nTW9kdWxlLFxuICAgIFVpSW5wdXRzTW9kdWxlLFxuICAgIFVpRWxlbWVudHNNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBVaVdpZGdldHNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBOZ0ljb25zTW9kdWxlLFxuICAgIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIE1kVmlld0ZhY2FkZSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41ZW0nLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGZWF0dXJlUmVjb3JkTW9kdWxlIHt9XG4iXX0=
@@ -318,4 +318,49 @@ export class DateRangeSearchField extends SimpleSearchField {
318
318
  return 'dateRange';
319
319
  }
320
320
  }
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlGQUFpRixDQUFBO0FBQy9ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlGQUF5RixDQUFBO0FBQ3BJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBUXJILE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFVMUUsTUFBTSxPQUFnQixtQkFBbUI7Q0FTeEM7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQ1ksV0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsUUFBd0IsS0FBSyxFQUM3QixZQUE2QixLQUFLO1FBSGxDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFUcEMsZUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENB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QUs7UUFFNUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBTHBDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBeUI7SUFHOUMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixvRkFBb0Y7UUFDcEYsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDZixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgQWdncmVnYXRpb25CdWNrZXRzLFxuICBBZ2dyZWdhdGlvbnNQYXJhbXMsXG4gIEZpZWxkRmlsdGVyQnlFeHByZXNzaW9uLFxuICBGaWVsZEZpbHRlcnMsXG4gIFRlcm1CdWNrZXQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7XG4gIERhdGVSYW5nZSxcbiAgRWxhc3RpY3NlYXJjaFNlcnZpY2UsXG4gIGlzRGF0ZVJhbmdlLFxuICBNRVRBREFUQV9MQU5HVUFHRSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvcmVwb3NpdG9yeS9zcmMnXG5pbXBvcnQgeyBMYW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9pMThuL3NyYydcbmltcG9ydCB7IGZvcm1hdFVzZXJJbmZvIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5cbmV4cG9ydCB0eXBlIEZpZWxkVHlwZSA9ICd2YWx1ZXMnIHwgJ2RhdGVSYW5nZSdcblxuZXhwb3J0IHR5cGUgRmllbGRWYWx1ZSA9IHN0cmluZyB8IG51bWJlclxuZXhwb3J0IGludGVyZmFjZSBGaWVsZEF2YWlsYWJsZVZhbHVlIHtcbiAgdmFsdWU6IEZpZWxkVmFsdWVcbiAgbGFiZWw6IHN0cmluZ1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTZWFyY2hGaWVsZCB7XG4gIGFic3RyYWN0IGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXSB8IERhdGVSYW5nZVtdPlxuICBhYnN0cmFjdCBnZXRGaWx0ZXJzRm9yVmFsdWVzKFxuICAgIHZhbHVlczogRmllbGRWYWx1ZVtdIHwgRGF0ZVJhbmdlW11cbiAgKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+XG4gIGFic3RyYWN0IGdldFZhbHVlc0ZvckZpbHRlcihcbiAgICBmaWx0ZXJzOiBGaWVsZEZpbHRlcnNcbiAgKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10gfCBGaWVsZFZhbHVlIHwgRGF0ZVJhbmdlPlxuICBhYnN0cmFjdCBnZXRUeXBlKCk6IEZpZWxkVHlwZVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJvdGVjdGVkIHJlcG9zaXRvcnkgPSB0aGlzLmluamVjdG9yLmdldChSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSlcblxuICAvLyBGSVhNRTogdGhpcyBpcyByZXF1aXJlZCB0byByZWdpc3RlciBydW50aW1lIGZpZWxkczsgYWJzdHJhY3QgdGhpcyBhcyB3ZWxsXG4gIHByb3RlY3RlZCBlc1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChFbGFzdGljc2VhcmNoU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHt9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgZmllbGQ6IHRoaXMuZXNGaWVsZE5hbWUsXG4gICAgICAgIGxpbWl0OiAxMDAwLFxuICAgICAgICBzb3J0OiBbdGhpcy5vcmRlciwgdGhpcy5vcmRlclR5cGVdLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYnVja2V0LnRlcm0udG9TdHJpbmcoKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5hZ2dyZWdhdGUodGhpcy5nZXRBZ2dyZWdhdGlvbnMoKSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKHJlc3BvbnNlKSA9PlxuICAgICAgICAgIChyZXNwb25zZVt0aGlzLmVzRmllbGROYW1lXSBhcyBBZ2dyZWdhdGlvbkJ1Y2tldHMpLmJ1Y2tldHMgfHwgW11cbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKGJ1Y2tldHM6IFRlcm1CdWNrZXRbXSkgPT4ge1xuICAgICAgICBjb25zdCBidWNrZXRQcm9taXNlcyA9IGJ1Y2tldHMubWFwKGFzeW5jIChidWNrZXQpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGAke2F3YWl0IHRoaXMuZ2V0QnVja2V0TGFiZWwoYnVja2V0KX0gKCR7YnVja2V0LmNvdW50fSlgLFxuICAgICAgICAgIHZhbHVlOiBidWNrZXQudGVybS50b1N0cmluZygpLFxuICAgICAgICB9KSlcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGJ1Y2tldFByb21pc2VzKVxuICAgICAgfSlcbiAgICApXG4gIH1cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyhcbiAgICB2YWx1ZXM6IEZpZWxkVmFsdWVbXSB8IERhdGVSYW5nZVtdXG4gICk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgLy8gRmllbGRWYWx1ZVtdXG4gICAgaWYgKHRoaXMuZ2V0VHlwZSgpID09PSAndmFsdWVzJykge1xuICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgW3RoaXMuZXNGaWVsZE5hbWVdOiAodmFsdWVzIGFzIEZpZWxkVmFsdWVbXSkucmVkdWNlKChhY2MsIHZhbCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdmFsLnRvU3RyaW5nKClcbiAgICAgICAgICBpZiAodmFsdWUgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFt2YWx1ZV06IHRydWUgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjXG4gICAgICAgIH0sIHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICAgIC8vIERhdGVSYW5nZVxuICAgIHJldHVybiBvZih7XG4gICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06IHZhbHVlc1swXSAhPT0gJycgPyB2YWx1ZXNbMF0gOiB7fSxcbiAgICB9KVxuICB9XG4gIGdldFZhbHVlc0ZvckZpbHRlcihcbiAgICBmaWx0ZXJzOiBGaWVsZEZpbHRlcnNcbiAgKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10gfCBGaWVsZFZhbHVlIHwgRGF0ZVJhbmdlPiB7XG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVyc1t0aGlzLmVzRmllbGROYW1lXVxuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb2YoW10pXG4gICAgLy8gZmlsdGVyIGJ5IGV4cHJlc3Npb25cbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvZihbZmlsdGVyXSlcbiAgICB9XG4gICAgLy8gZmlsdGVyIGJ5IGRhdGUgcmFuZ2VcbiAgICBpZiAoaXNEYXRlUmFuZ2UoZmlsdGVyKSkge1xuICAgICAgcmV0dXJuIG9mKGZpbHRlcilcbiAgICB9XG4gICAgLy8gZmlsdGVyIGJ5IHZhbHVlc1xuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5rZXlzKGZpbHRlcikuZmlsdGVyKCh2KSA9PiBmaWx0ZXJbdl0pXG4gICAgcmV0dXJuIG9mKHZhbHVlcylcbiAgfVxuXG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ3ZhbHVlcydcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlZFNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcm90ZWN0ZWQgcGxhdGZvcm1TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge1xuICAgIHN1cGVyKGVzRmllbGROYW1lLCBpbmplY3Rvciwgb3JkZXIsIG9yZGVyVHlwZSlcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRUcmFuc2xhdGlvbihrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYXRmb3JtU2VydmljZS50cmFuc2xhdGVLZXkoa2V5KSlcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuZ2V0VHJhbnNsYXRpb24oYnVja2V0LnRlcm0pKSB8fCBidWNrZXQudGVybVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgaWYgKHRoaXMub3JkZXJUeXBlID09PSAnY291bnQnKSByZXR1cm4gc3VwZXIuZ2V0QXZhaWxhYmxlVmFsdWVzKClcbiAgICAvLyBzb3J0IHZhbHVlcyBieSBhbHBoYWJldGljYWwgb3JkZXJcbiAgICByZXR1cm4gc3VwZXJcbiAgICAgIC5nZXRBdmFpbGFibGVWYWx1ZXMoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgodmFsdWVzKSA9PlxuICAgICAgICAgIHZhbHVlcy5zb3J0KChhLCBiKSA9PiBuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUoYS5sYWJlbCwgYi5sYWJlbCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgc2VhcmNoIGZpZWxkIHdpbGwgZWl0aGVyIHRhcmdldCB0aGUgYC5kZWZhdWx0YCBmaWVsZCwgb3IgYSBzcGVjaWZpYyBgLmxhbmd4eXpgIGZpZWxkIGFjY29yZGluZ1xuICogdG8gdGhlIGRlZmluZWQgTUVUQURBVEFfTEFOR1VBR0UgdG9rZW5cbiAqIFRoZSBwcm92aWRlZCBFUyBmaWVsZCBuYW1lIHNob3VsZCBub3QgaW5jbHVkZSBhbnkgcHJlZml4IHN1Y2ggYXMgYC5sYW5nZW5nYFxuICovXG5leHBvcnQgY2xhc3MgTXVsdGlsaW5ndWFsU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgbGFuZ1NlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChMYW5nU2VydmljZSlcbiAgcHJpdmF0ZSBzZWFyY2hMYW5ndWFnZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE1FVEFEQVRBX0xBTkdVQUdFLCBudWxsKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge1xuICAgIHN1cGVyKGVzRmllbGROYW1lLCBpbmplY3Rvciwgb3JkZXIsIG9yZGVyVHlwZSlcbiAgICAvLyBub3RlOiB3ZSdyZSBleGNsdWRpbmcgdGhlIG1ldGFkYXRhIGxhbmd1YWdlIFwiY3VycmVudFwiIHZhbHVlIGJlY2F1c2UgdGhhdCB3b3VsZCBwcm9kdWNlXG4gICAgLy8gcGVybWFsaW5rcyB0aGF0IG1pZ2h0IG5vdCB3b3JrIGZvciBkaWZmZXJlbnQgdXNlcnNcbiAgICBpZiAodGhpcy5zZWFyY2hMYW5ndWFnZSAmJiB0aGlzLnNlYXJjaExhbmd1YWdlICE9PSAnY3VycmVudCcpIHtcbiAgICAgIHRoaXMuZXNGaWVsZE5hbWUgKz0gYC5sYW5nJHt0aGlzLnNlYXJjaExhbmd1YWdlfWBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lc0ZpZWxkTmFtZSArPSAnLmRlZmF1bHQnXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGdWxsVGV4dFNlYXJjaEZpZWxkIGltcGxlbWVudHMgQWJzdHJhY3RTZWFyY2hGaWVsZCB7XG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiBvZihbXSlcbiAgfVxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgYW55OiB2YWx1ZXNbMF0gYXMgc3RyaW5nLFxuICAgIH0pXG4gIH1cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKGZpbHRlcnMuYW55ID8gW2ZpbHRlcnMuYW55IGFzIEZpZWxkRmlsdGVyQnlFeHByZXNzaW9uXSA6IFtdKVxuICB9XG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ3ZhbHVlcydcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC55ZXMnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwubm8nKVxuXG5leHBvcnQgY2xhc3MgSXNTcGF0aWFsU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpXG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2lzU3BhdGlhbCcsIGluamVjdG9yLCAnYXNjJylcbiAgICB0aGlzLmVzU2VydmljZS5yZWdpc3RlclJ1bnRpbWVGaWVsZChcbiAgICAgICdpc1NwYXRpYWwnLFxuICAgICAgYFN0cmluZyByZXN1bHQgPSAnbm8nO1xuU3RyaW5nIGZvcm1hdHMgPSBkb2MuZm9ybWF0LmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKGZvcm1hdHMuY29udGFpbnMoJ2dlb2pzb24nKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdhcmNnaXMnKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdvZ2MnKSB8fCBmb3JtYXRzLmNvbnRhaW5zKCdzaHAnKSkgcmVzdWx0ID0gJ3llcyc7XG5TdHJpbmcgcHJvdG9jb2xzID0gZG9jLmxpbmtQcm90b2NvbC5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChwcm90b2NvbHMuY29udGFpbnMoJ2VzcmknKSB8fCBwcm90b2NvbHMuY29udGFpbnMoJ29nYycpKSByZXN1bHQgPSAneWVzJztcbmVtaXQocmVzdWx0KTtgXG4gICAgKVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFnZ3JlZ2F0aW9ucygpOiBBZ2dyZWdhdGlvbnNQYXJhbXMge1xuICAgIHJldHVybiB7XG4gICAgICBpc1NwYXRpYWw6IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgbGltaXQ6IDIsXG4gICAgICAgIGZpZWxkOiAnaXNTcGF0aWFsJyxcbiAgICAgICAgc29ydDogWydhc2MnLCAna2V5J10sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpIHtcbiAgICByZXR1cm4gZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGBzZWFyY2guZmlsdGVycy5pc1NwYXRpYWwuJHtidWNrZXQudGVybX1gKVxuICAgIClcbiAgfVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIGNvbnN0IGlzU3BhdGlhbCA9IHt9XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSBpc1NwYXRpYWxbdmFsdWVzW3ZhbHVlcy5sZW5ndGggLSAxXV0gPSB0cnVlXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIGlzU3BhdGlhbCxcbiAgICB9KVxuICB9XG5cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVycy5pc1NwYXRpYWxcbiAgICBpZiAoIWZpbHRlcikgcmV0dXJuIG9mKFtdKVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhmaWx0ZXIpXG4gICAgcmV0dXJuIG9mKGtleXMubGVuZ3RoID8gW2tleXNbMF1dIDogW10pXG4gIH1cbn1cblxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLnBkZGwnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLm9kYmwnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLm9kYy1ieScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtYnktc2EnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLWJ5Jylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy16ZXJvJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5ldGFsYWItdjInKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmV0YWxhYicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UudW5rbm93bicpXG5cbi8vIE5vdGU6IHZhbHVlcyBhcmUgaW5zcGlyZWQgZnJvbSBodHRwczovL2RvYy5kYXRhLmdvdXYuZnIvbW9pc3Nvbm5hZ2UvbGljZW5jZXMvXG5leHBvcnQgY2xhc3MgTGljZW5zZVNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdsaWNlbnNlJywgaW5qZWN0b3IsICdhc2MnKVxuICAgIHRoaXMuZXNTZXJ2aWNlLnJlZ2lzdGVyUnVudGltZUZpZWxkKFxuICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgYFN0cmluZyByYXcgPSAnJztcbmlmIChkb2MuY29udGFpbnNLZXkoJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJykgJiYgZG9jWydsaWNlbnNlT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmxlbmd0aCA+IDApXG4gIHJhdyArPSBkb2NbJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10uam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAoZG9jLmNvbnRhaW5zS2V5KCdNRF9MZWdhbENvbnN0cmFpbnRzVXNlTGltaXRhdGlvbk9iamVjdC5kZWZhdWx0LmtleXdvcmQnKSAmJiBkb2NbJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmxlbmd0aCA+IDApXG4gIHJhdyArPSBkb2NbJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCddLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuXG5ib29sZWFuIHVua25vd24gPSB0cnVlO1xuaWYgKHJhdy5jb250YWlucygncGRkbCcpIHx8IHJhdy5jb250YWlucygncHVibGljIGRvbWFpbiBkZWRpY2F0aW9uIGFuZCBsaWNlbmNlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdwZGRsJyk7XG59XG5pZiAocmF3LmNvbnRhaW5zKCdvZGJsJykgfHwgcmF3LmNvbnRhaW5zKCdvcGVuIGRhdGFiYXNlIGxpY2Vuc2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ29kYmwnKTtcbn1cbmlmIChyYXcuY29udGFpbnMoJ29kYy1ieScpIHx8IHJhdy5jb250YWlucygnb3BlbmRhdGFjb21tb25zLm9yZy9saWNlbnNlcy9ieS9zdW1tYXJ5L1wiJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdvZGMtYnknKTtcbn1cblxuaWYgKHJhdy5jb250YWlucygnY2MtYnktc2EnKSB8fCByYXcuY29udGFpbnMoJ2NyZWF0aXZlIGNvbW1vbnMgYXR0cmlidXRpb24gc2hhcmUtYWxpa2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLWJ5LXNhJyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnY2MtYnknKSB8fCByYXcuY29udGFpbnMoJ2NjIGJ5JykgfHwgcmF3LmNvbnRhaW5zKCdjcmVhdGl2ZSBjb21tb25zIGF0dHJpYnV0aW9uJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy1ieScpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ2NjMCcpIHx8IHJhdy5jb250YWlucygnY2MtMCcpIHx8IHJhdy5jb250YWlucygnY2N6ZXJvJykgfHwgcmF3LmNvbnRhaW5zKCdjYy16ZXJvJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdjYy16ZXJvJyk7XG59XG5cbmlmIChyYXcuY29udGFpbnMoJ2V0YWxhYicpICYmIChyYXcuY29udGFpbnMoJ3YyJykgfHwgcmF3LmNvbnRhaW5zKCcyLjAnKSkpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdldGFsYWItdjInKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdvcGVuIGxpY2VuY2UnKSB8fCByYXcuY29udGFpbnMoJ2xpY2VuY2Ugb3V2ZXJ0ZScpIHx8IHJhdy5jb250YWlucygnbGljZW5jZV9vdXZlcnRlJykpIHtcbiAgdW5rbm93biA9IGZhbHNlO1xuICBlbWl0KCdldGFsYWInKTtcbn1cblxuaWYodW5rbm93bikgZW1pdCgndW5rbm93bicpO2BcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpY2Vuc2U6IHtcbiAgICAgICAgdHlwZTogJ3Rlcm1zJyxcbiAgICAgICAgbGltaXQ6IDEwLFxuICAgICAgICBmaWVsZDogJ2xpY2Vuc2UnLFxuICAgICAgICBzb3J0OiBbJ2Rlc2MnLCAnY291bnQnXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoYHNlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuJHtidWNrZXQudGVybX1gKVxuICAgIClcbiAgfVxufVxuXG4vLyBUaGlzIHdpbGwgdXNlIHRoZSBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZVxuLy8gRmllbGQgdmFsdWVzIGFyZSB0aGUgb3JnYW5pemF0aW9uIG5hbWVzXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uU2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSBvcmdzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlKVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9yZ3MpID0+XG4gICAgICAgIHZhbHVlc1xuICAgICAgICAgIC5tYXAoKG5hbWUpID0+IG9yZ3MuZmluZCgob3JnKSA9PiBvcmcubmFtZSA9PT0gbmFtZSkpXG4gICAgICAgICAgLmZpbHRlcigob3JnKSA9PiBvcmcgIT09IHVuZGVmaW5lZClcbiAgICAgICksXG4gICAgICBzd2l0Y2hNYXAoKHNlbGVjdGVkT3JncykgPT5cbiAgICAgICAgdGhpcy5vcmdzU2VydmljZS5nZXRGaWx0ZXJzRm9yT3JncyhzZWxlY3RlZE9yZ3MpXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKGZpbHRlcnM6IEZpZWxkRmlsdGVycyk6IE9ic2VydmFibGU8RmllbGRWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2VcbiAgICAgIC5nZXRPcmdzRnJvbUZpbHRlcnMoZmlsdGVycylcbiAgICAgIC5waXBlKG1hcCgob3JncykgPT4gb3Jncy5tYXAoKG9yZykgPT4gb3JnLm5hbWUpKSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIC8vIHNvcnQgdmFsdWVzIGJ5IGFscGhhYmV0aWNhbCBvcmRlclxuICAgIHJldHVybiB0aGlzLm9yZ3NTZXJ2aWNlLm9yZ2FuaXNhdGlvbnMkLnBpcGUoXG4gICAgICBtYXAoKG9yZ2FuaXNhdGlvbnMpID0+XG4gICAgICAgIG9yZ2FuaXNhdGlvbnMubWFwKChvcmcpID0+ICh7XG4gICAgICAgICAgbGFiZWw6IGAke29yZy5uYW1lfSAoJHtvcmcucmVjb3JkQ291bnR9KWAsXG4gICAgICAgICAgdmFsdWU6IG9yZy5uYW1lLFxuICAgICAgICB9KSlcbiAgICAgICksXG4gICAgICBtYXAoKHZhbHVlcykgPT5cbiAgICAgICAgdmFsdWVzLnNvcnQoKGEsIGIpID0+IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZShhLmxhYmVsLCBiLmxhYmVsKSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXRUeXBlKCk6IEZpZWxkVHlwZSB7XG4gICAgcmV0dXJuICd2YWx1ZXMnXG4gIH1cbn1cbmV4cG9ydCBjbGFzcyBPd25lclNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignb3duZXInLCBpbmplY3RvciwgJ2FzYycpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoW10pXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ3VzZXJpbmZvLmtleXdvcmQnLCBpbmplY3RvciwgJ2FzYycpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0QXZhaWxhYmxlVmFsdWVzKCkucGlwZShcbiAgICAgIG1hcCgodmFsdWVzKSA9PlxuICAgICAgICB2YWx1ZXMubWFwKCh2KSA9PiAoe1xuICAgICAgICAgIC4uLnYsXG4gICAgICAgICAgbGFiZWw6IGZvcm1hdFVzZXJJbmZvKHYubGFiZWwsIHRydWUpLFxuICAgICAgICB9KSlcbiAgICAgIClcbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZXNGaWVsZE5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBvcmRlcjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJyxcbiAgICBwcm90ZWN0ZWQgb3JkZXJUeXBlOiAna2V5JyB8ICdjb3VudCcgPSAna2V5J1xuICApIHtcbiAgICBzdXBlcihlc0ZpZWxkTmFtZSwgaW5qZWN0b3IsIG9yZGVyLCBvcmRlclR5cGUpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICAvLyBUT0RPOiByZXR1cm4gYW4gYXJyYXkgb2YgZGF0ZXMgdG8gc2hvdyB3aGljaCBvbmUgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZGF0ZSBwaWNrZXJcbiAgICByZXR1cm4gb2YoW10pXG4gIH1cblxuICBnZXRUeXBlKCk6IEZpZWxkVHlwZSB7XG4gICAgcmV0dXJuICdkYXRlUmFuZ2UnXG4gIH1cbn1cbiJdfQ==
321
+ marker('search.filters.availableServices.view');
322
+ marker('search.filters.availableServices.download');
323
+ export class AvailableServicesField extends SimpleSearchField {
324
+ constructor(injector) {
325
+ super('availableServices', injector, 'asc');
326
+ this.translateService = this.injector.get(TranslateService);
327
+ this.linkProtocolViewFilter = '/OGC:WMT?S.*/';
328
+ this.linkProtocolDownloadFilter = '/OGC:WFS.*/';
329
+ }
330
+ async getBucketLabel(bucket) {
331
+ return firstValueFrom(this.translateService.get(`search.filters.availableServices.${bucket.term}`));
332
+ }
333
+ getAggregations() {
334
+ return {
335
+ availableServices: {
336
+ type: 'filters',
337
+ filters: {
338
+ view: `+linkProtocol:${this.linkProtocolViewFilter}`,
339
+ download: `+linkProtocol:${this.linkProtocolDownloadFilter}`,
340
+ },
341
+ },
342
+ };
343
+ }
344
+ getFiltersForValues(values) {
345
+ const filters = {};
346
+ if (values.includes('view'))
347
+ filters[this.linkProtocolViewFilter] = true;
348
+ if (values.includes('download'))
349
+ filters[this.linkProtocolDownloadFilter] = true;
350
+ return of({
351
+ linkProtocol: filters,
352
+ });
353
+ }
354
+ getValuesForFilter(filters) {
355
+ const linkFilter = filters.linkProtocol;
356
+ if (!linkFilter)
357
+ return of([]);
358
+ const values = [];
359
+ if (linkFilter[this.linkProtocolViewFilter])
360
+ values.push('view');
361
+ if (linkFilter[this.linkProtocolDownloadFilter])
362
+ values.push('download');
363
+ return of(values);
364
+ }
365
+ }
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL3NlYXJjaC9zcmMvbGliL3V0aWxzL3NlcnZpY2UvZmllbGRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQ2hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlGQUFpRixDQUFBO0FBQy9ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlGQUF5RixDQUFBO0FBQ3BJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRFQUE0RSxDQUFBO0FBU3JILE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLDhDQUE4QyxDQUFBO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUE7QUFVMUUsTUFBTSxPQUFnQixtQkFBbUI7Q0FTeEM7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLFlBQ1ksV0FBbUIsRUFDbkIsUUFBa0IsRUFDbEIsUUFBd0IsS0FBSyxFQUM3QixZQUE2QixLQUFLO1FBSGxDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFUcEMsZUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENB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QixFQUFFO2lCQUM3RDthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFvQjtRQUN0QyxNQUFNLE9BQU8sR0FBZ0IsRUFBRSxDQUFBO1FBQy9CLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3hFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7WUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUVqRCxPQUFPLEVBQUUsQ0FBQztZQUNSLFlBQVksRUFBRSxPQUFPO1NBQ3RCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFxQjtRQUN0QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO1FBQ2pCLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDaEUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUN4RSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJ1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9vcmdhbml6YXRpb25zLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9yZXBvc2l0b3J5L3JlY29yZHMtcmVwb3NpdG9yeS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9uQnVja2V0cyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcixcbiAgRmllbGRGaWx0ZXJCeUV4cHJlc3Npb24sXG4gIEZpZWxkRmlsdGVycyxcbiAgVGVybUJ1Y2tldCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHtcbiAgRGF0ZVJhbmdlLFxuICBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgaXNEYXRlUmFuZ2UsXG4gIE1FVEFEQVRBX0xBTkdVQUdFLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYydcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuaW1wb3J0IHsgZm9ybWF0VXNlckluZm8gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcblxuZXhwb3J0IHR5cGUgRmllbGRUeXBlID0gJ3ZhbHVlcycgfCAnZGF0ZVJhbmdlJ1xuXG5leHBvcnQgdHlwZSBGaWVsZFZhbHVlID0gc3RyaW5nIHwgbnVtYmVyXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkQXZhaWxhYmxlVmFsdWUge1xuICB2YWx1ZTogRmllbGRWYWx1ZVxuICBsYWJlbDogc3RyaW5nXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgYWJzdHJhY3QgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdIHwgRGF0ZVJhbmdlW10+XG4gIGFic3RyYWN0IGdldEZpbHRlcnNGb3JWYWx1ZXMoXG4gICAgdmFsdWVzOiBGaWVsZFZhbHVlW10gfCBEYXRlUmFuZ2VbXVxuICApOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz5cbiAgYWJzdHJhY3QgZ2V0VmFsdWVzRm9yRmlsdGVyKFxuICAgIGZpbHRlcnM6IEZpZWxkRmlsdGVyc1xuICApOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXSB8IEZpZWxkVmFsdWUgfCBEYXRlUmFuZ2U+XG4gIGFic3RyYWN0IGdldFR5cGUoKTogRmllbGRUeXBlXG59XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVTZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBwcm90ZWN0ZWQgcmVwb3NpdG9yeSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlKVxuXG4gIC8vIEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHRvIHJlZ2lzdGVyIHJ1bnRpbWUgZmllbGRzOyBhYnN0cmFjdCB0aGlzIGFzIHdlbGxcbiAgcHJvdGVjdGVkIGVzU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVsYXN0aWNzZWFyY2hTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge31cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXToge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBmaWVsZDogdGhpcy5lc0ZpZWxkTmFtZSxcbiAgICAgICAgbGltaXQ6IDEwMDAsXG4gICAgICAgIHNvcnQ6IFt0aGlzLm9yZGVyLCB0aGlzLm9yZGVyVHlwZV0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBnZXRCdWNrZXRMYWJlbChidWNrZXQ6IFRlcm1CdWNrZXQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBidWNrZXQudGVybS50b1N0cmluZygpXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LmFnZ3JlZ2F0ZSh0aGlzLmdldEFnZ3JlZ2F0aW9ucygpKS5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAocmVzcG9uc2UpID0+XG4gICAgICAgICAgKHJlc3BvbnNlW3RoaXMuZXNGaWVsZE5hbWVdIGFzIEFnZ3JlZ2F0aW9uQnVja2V0cykuYnVja2V0cyB8fCBbXVxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoYnVja2V0czogVGVybUJ1Y2tldFtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGJ1Y2tldFByb21pc2VzID0gYnVja2V0cy5tYXAoYXN5bmMgKGJ1Y2tldCkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogYCR7YXdhaXQgdGhpcy5nZXRCdWNrZXRMYWJlbChidWNrZXQpfSAoJHtidWNrZXQuY291bnR9KWAsXG4gICAgICAgICAgdmFsdWU6IGJ1Y2tldC50ZXJtLnRvU3RyaW5nKCksXG4gICAgICAgIH0pKVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoYnVja2V0UHJvbWlzZXMpXG4gICAgICB9KVxuICAgIClcbiAgfVxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKFxuICAgIHZhbHVlczogRmllbGRWYWx1ZVtdIHwgRGF0ZVJhbmdlW11cbiAgKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICAvLyBGaWVsZFZhbHVlW11cbiAgICBpZiAodGhpcy5nZXRUeXBlKCkgPT09ICd2YWx1ZXMnKSB7XG4gICAgICByZXR1cm4gb2Yoe1xuICAgICAgICBbdGhpcy5lc0ZpZWxkTmFtZV06ICh2YWx1ZXMgYXMgRmllbGRWYWx1ZVtdKS5yZWR1Y2UoKGFjYywgdmFsKSA9PiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB2YWwudG9TdHJpbmcoKVxuICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW3ZhbHVlXTogdHJ1ZSB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwge30pLFxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gRGF0ZVJhbmdlXG4gICAgcmV0dXJuIG9mKHtcbiAgICAgIFt0aGlzLmVzRmllbGROYW1lXTogdmFsdWVzWzBdICE9PSAnJyA/IHZhbHVlc1swXSA6IHt9LFxuICAgIH0pXG4gIH1cbiAgZ2V0VmFsdWVzRm9yRmlsdGVyKFxuICAgIGZpbHRlcnM6IEZpZWxkRmlsdGVyc1xuICApOiBPYnNlcnZhYmxlPEZpZWxkVmFsdWVbXSB8IEZpZWxkVmFsdWUgfCBEYXRlUmFuZ2U+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzW3RoaXMuZXNGaWVsZE5hbWVdXG4gICAgaWYgKCFmaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICAvLyBmaWx0ZXIgYnkgZXhwcmVzc2lvblxuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mKFtmaWx0ZXJdKVxuICAgIH1cbiAgICAvLyBmaWx0ZXIgYnkgZGF0ZSByYW5nZVxuICAgIGlmIChpc0RhdGVSYW5nZShmaWx0ZXIpKSB7XG4gICAgICByZXR1cm4gb2YoZmlsdGVyKVxuICAgIH1cbiAgICAvLyBmaWx0ZXIgYnkgdmFsdWVzXG4gICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LmtleXMoZmlsdGVyKS5maWx0ZXIoKHYpID0+IGZpbHRlclt2XSlcbiAgICByZXR1cm4gb2YodmFsdWVzKVxuICB9XG5cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAndmFsdWVzJ1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVkU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByb3RlY3RlZCBwbGF0Zm9ybVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldFRyYW5zbGF0aW9uKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKHRoaXMucGxhdGZvcm1TZXJ2aWNlLnRyYW5zbGF0ZUtleShrZXkpKVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy5nZXRUcmFuc2xhdGlvbihidWNrZXQudGVybSkpIHx8IGJ1Y2tldC50ZXJtXG4gIH1cblxuICBnZXRBdmFpbGFibGVWYWx1ZXMoKTogT2JzZXJ2YWJsZTxGaWVsZEF2YWlsYWJsZVZhbHVlW10+IHtcbiAgICBpZiAodGhpcy5vcmRlclR5cGUgPT09ICdjb3VudCcpIHJldHVybiBzdXBlci5nZXRBdmFpbGFibGVWYWx1ZXMoKVxuICAgIC8vIHNvcnQgdmFsdWVzIGJ5IGFscGhhYmV0aWNhbCBvcmRlclxuICAgIHJldHVybiBzdXBlclxuICAgICAgLmdldEF2YWlsYWJsZVZhbHVlcygpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgICAgdmFsdWVzLnNvcnQoKGEsIGIpID0+IG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZShhLmxhYmVsLCBiLmxhYmVsKSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBzZWFyY2ggZmllbGQgd2lsbCBlaXRoZXIgdGFyZ2V0IHRoZSBgLmRlZmF1bHRgIGZpZWxkLCBvciBhIHNwZWNpZmljIGAubGFuZ3h5emAgZmllbGQgYWNjb3JkaW5nXG4gKiB0byB0aGUgZGVmaW5lZCBNRVRBREFUQV9MQU5HVUFHRSB0b2tlblxuICogVGhlIHByb3ZpZGVkIEVTIGZpZWxkIG5hbWUgc2hvdWxkIG5vdCBpbmNsdWRlIGFueSBwcmVmaXggc3VjaCBhcyBgLmxhbmdlbmdgXG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0aWxpbmd1YWxTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSBsYW5nU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KExhbmdTZXJ2aWNlKVxuICBwcml2YXRlIHNlYXJjaExhbmd1YWdlID0gdGhpcy5pbmplY3Rvci5nZXQoTUVUQURBVEFfTEFOR1VBR0UsIG51bGwpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVzRmllbGROYW1lOiBzdHJpbmcsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcm90ZWN0ZWQgb3JkZXI6ICdhc2MnIHwgJ2Rlc2MnID0gJ2FzYycsXG4gICAgcHJvdGVjdGVkIG9yZGVyVHlwZTogJ2tleScgfCAnY291bnQnID0gJ2tleSdcbiAgKSB7XG4gICAgc3VwZXIoZXNGaWVsZE5hbWUsIGluamVjdG9yLCBvcmRlciwgb3JkZXJUeXBlKVxuICAgIC8vIG5vdGU6IHdlJ3JlIGV4Y2x1ZGluZyB0aGUgbWV0YWRhdGEgbGFuZ3VhZ2UgXCJjdXJyZW50XCIgdmFsdWUgYmVjYXVzZSB0aGF0IHdvdWxkIHByb2R1Y2VcbiAgICAvLyBwZXJtYWxpbmtzIHRoYXQgbWlnaHQgbm90IHdvcmsgZm9yIGRpZmZlcmVudCB1c2Vyc1xuICAgIGlmICh0aGlzLnNlYXJjaExhbmd1YWdlICYmIHRoaXMuc2VhcmNoTGFuZ3VhZ2UgIT09ICdjdXJyZW50Jykge1xuICAgICAgdGhpcy5lc0ZpZWxkTmFtZSArPSBgLmxhbmcke3RoaXMuc2VhcmNoTGFuZ3VhZ2V9YFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVzRmllbGROYW1lICs9ICcuZGVmYXVsdCdcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZ1bGxUZXh0U2VhcmNoRmllbGQgaW1wbGVtZW50cyBBYnN0cmFjdFNlYXJjaEZpZWxkIHtcbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgcmV0dXJuIG9mKFtdKVxuICB9XG4gIGdldEZpbHRlcnNGb3JWYWx1ZXModmFsdWVzOiBGaWVsZFZhbHVlW10pOiBPYnNlcnZhYmxlPEZpZWxkRmlsdGVycz4ge1xuICAgIHJldHVybiBvZih7XG4gICAgICBhbnk6IHZhbHVlc1swXSBhcyBzdHJpbmcsXG4gICAgfSlcbiAgfVxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICByZXR1cm4gb2YoZmlsdGVycy5hbnkgPyBbZmlsdGVycy5hbnkgYXMgRmllbGRGaWx0ZXJCeUV4cHJlc3Npb25dIDogW10pXG4gIH1cbiAgZ2V0VHlwZSgpOiBGaWVsZFR5cGUge1xuICAgIHJldHVybiAndmFsdWVzJ1xuICB9XG59XG5cbm1hcmtlcignc2VhcmNoLmZpbHRlcnMuaXNTcGF0aWFsLnllcycpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC5ubycpXG5cbmV4cG9ydCBjbGFzcyBJc1NwYXRpYWxTZWFyY2hGaWVsZCBleHRlbmRzIFNpbXBsZVNlYXJjaEZpZWxkIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcignaXNTcGF0aWFsJywgaW5qZWN0b3IsICdhc2MnKVxuICAgIHRoaXMuZXNTZXJ2aWNlLnJlZ2lzdGVyUnVudGltZUZpZWxkKFxuICAgICAgJ2lzU3BhdGlhbCcsXG4gICAgICBgU3RyaW5nIHJlc3VsdCA9ICdubyc7XG5TdHJpbmcgZm9ybWF0cyA9IGRvYy5mb3JtYXQuam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5pZiAoZm9ybWF0cy5jb250YWlucygnZ2VvanNvbicpIHx8IGZvcm1hdHMuY29udGFpbnMoJ2FyY2dpcycpIHx8IGZvcm1hdHMuY29udGFpbnMoJ29nYycpIHx8IGZvcm1hdHMuY29udGFpbnMoJ3NocCcpKSByZXN1bHQgPSAneWVzJztcblN0cmluZyBwcm90b2NvbHMgPSBkb2MubGlua1Byb3RvY29sLmpvaW4oJ3wnKS50b0xvd2VyQ2FzZSgpO1xuaWYgKHByb3RvY29scy5jb250YWlucygnZXNyaScpIHx8IHByb3RvY29scy5jb250YWlucygnb2djJykpIHJlc3VsdCA9ICd5ZXMnO1xuZW1pdChyZXN1bHQpO2BcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzU3BhdGlhbDoge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBsaW1pdDogMixcbiAgICAgICAgZmllbGQ6ICdpc1NwYXRpYWwnLFxuICAgICAgICBzb3J0OiBbJ2FzYycsICdrZXknXSxcbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoYHNlYXJjaC5maWx0ZXJzLmlzU3BhdGlhbC4ke2J1Y2tldC50ZXJtfWApXG4gICAgKVxuICB9XG5cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgY29uc3QgaXNTcGF0aWFsID0ge31cbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIGlzU3BhdGlhbFt2YWx1ZXNbdmFsdWVzLmxlbmd0aCAtIDFdXSA9IHRydWVcbiAgICByZXR1cm4gb2Yoe1xuICAgICAgaXNTcGF0aWFsLFxuICAgIH0pXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICBjb25zdCBmaWx0ZXIgPSBmaWx0ZXJzLmlzU3BhdGlhbFxuICAgIGlmICghZmlsdGVyKSByZXR1cm4gb2YoW10pXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGZpbHRlcilcbiAgICByZXR1cm4gb2Yoa2V5cy5sZW5ndGggPyBba2V5c1swXV0gOiBbXSlcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UucGRkbCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2Uub2RibCcpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2Uub2RjLWJ5Jylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS5jYy1ieS1zYScpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuY2MtYnknKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmNjLXplcm8nKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5saWNlbnNlLmV0YWxhYi12MicpXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmxpY2Vuc2UuZXRhbGFiJylcbm1hcmtlcignc2VhcmNoLmZpbHRlcnMubGljZW5zZS51bmtub3duJylcblxuLy8gTm90ZTogdmFsdWVzIGFyZSBpbnNwaXJlZCBmcm9tIGh0dHBzOi8vZG9jLmRhdGEuZ291di5mci9tb2lzc29ubmFnZS9saWNlbmNlcy9cbmV4cG9ydCBjbGFzcyBMaWNlbnNlU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpXG5cbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoJ2xpY2Vuc2UnLCBpbmplY3RvciwgJ2FzYycpXG4gICAgdGhpcy5lc1NlcnZpY2UucmVnaXN0ZXJSdW50aW1lRmllbGQoXG4gICAgICAnbGljZW5zZScsXG4gICAgICBgU3RyaW5nIHJhdyA9ICcnO1xuaWYgKGRvYy5jb250YWluc0tleSgnbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnKSAmJiBkb2NbJ2xpY2Vuc2VPYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10ubGVuZ3RoID4gMClcbiAgcmF3ICs9IGRvY1snbGljZW5zZU9iamVjdC5kZWZhdWx0LmtleXdvcmQnXS5qb2luKCd8JykudG9Mb3dlckNhc2UoKTtcbmlmIChkb2MuY29udGFpbnNLZXkoJ01EX0xlZ2FsQ29uc3RyYWludHNVc2VMaW1pdGF0aW9uT2JqZWN0LmRlZmF1bHQua2V5d29yZCcpICYmIGRvY1snTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10ubGVuZ3RoID4gMClcbiAgcmF3ICs9IGRvY1snTURfTGVnYWxDb25zdHJhaW50c1VzZUxpbWl0YXRpb25PYmplY3QuZGVmYXVsdC5rZXl3b3JkJ10uam9pbignfCcpLnRvTG93ZXJDYXNlKCk7XG5cbmJvb2xlYW4gdW5rbm93biA9IHRydWU7XG5pZiAocmF3LmNvbnRhaW5zKCdwZGRsJykgfHwgcmF3LmNvbnRhaW5zKCdwdWJsaWMgZG9tYWluIGRlZGljYXRpb24gYW5kIGxpY2VuY2UnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ3BkZGwnKTtcbn1cbmlmIChyYXcuY29udGFpbnMoJ29kYmwnKSB8fCByYXcuY29udGFpbnMoJ29wZW4gZGF0YWJhc2UgbGljZW5zZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnb2RibCcpO1xufVxuaWYgKHJhdy5jb250YWlucygnb2RjLWJ5JykgfHwgcmF3LmNvbnRhaW5zKCdvcGVuZGF0YWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5L3N1bW1hcnkvXCInKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ29kYy1ieScpO1xufVxuXG5pZiAocmF3LmNvbnRhaW5zKCdjYy1ieS1zYScpIHx8IHJhdy5jb250YWlucygnY3JlYXRpdmUgY29tbW9ucyBhdHRyaWJ1dGlvbiBzaGFyZS1hbGlrZScpKSB7XG4gIHVua25vd24gPSBmYWxzZTtcbiAgZW1pdCgnY2MtYnktc2EnKTtcbn0gZWxzZSBpZiAocmF3LmNvbnRhaW5zKCdjYy1ieScpIHx8IHJhdy5jb250YWlucygnY2MgYnknKSB8fCByYXcuY29udGFpbnMoJ2NyZWF0aXZlIGNvbW1vbnMgYXR0cmlidXRpb24nKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLWJ5Jyk7XG59IGVsc2UgaWYgKHJhdy5jb250YWlucygnY2MwJykgfHwgcmF3LmNvbnRhaW5zKCdjYy0wJykgfHwgcmF3LmNvbnRhaW5zKCdjY3plcm8nKSB8fCByYXcuY29udGFpbnMoJ2NjLXplcm8nKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2NjLXplcm8nKTtcbn1cblxuaWYgKHJhdy5jb250YWlucygnZXRhbGFiJykgJiYgKHJhdy5jb250YWlucygndjInKSB8fCByYXcuY29udGFpbnMoJzIuMCcpKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2V0YWxhYi12MicpO1xufSBlbHNlIGlmIChyYXcuY29udGFpbnMoJ29wZW4gbGljZW5jZScpIHx8IHJhdy5jb250YWlucygnbGljZW5jZSBvdXZlcnRlJykgfHwgcmF3LmNvbnRhaW5zKCdsaWNlbmNlX291dmVydGUnKSkge1xuICB1bmtub3duID0gZmFsc2U7XG4gIGVtaXQoJ2V0YWxhYicpO1xufVxuXG5pZih1bmtub3duKSBlbWl0KCd1bmtub3duJyk7YFxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRBZ2dyZWdhdGlvbnMoKTogQWdncmVnYXRpb25zUGFyYW1zIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGljZW5zZToge1xuICAgICAgICB0eXBlOiAndGVybXMnLFxuICAgICAgICBsaW1pdDogMTAsXG4gICAgICAgIGZpZWxkOiAnbGljZW5zZScsXG4gICAgICAgIHNvcnQ6IFsnZGVzYycsICdjb3VudCddLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0QnVja2V0TGFiZWwoYnVja2V0OiBUZXJtQnVja2V0KSB7XG4gICAgcmV0dXJuIGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChgc2VhcmNoLmZpbHRlcnMubGljZW5zZS4ke2J1Y2tldC50ZXJtfWApXG4gICAgKVxuICB9XG59XG5cbi8vIFRoaXMgd2lsbCB1c2UgdGhlIE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlXG4vLyBGaWVsZCB2YWx1ZXMgYXJlIHRoZSBvcmdhbml6YXRpb24gbmFtZXNcbmV4cG9ydCBjbGFzcyBPcmdhbml6YXRpb25TZWFyY2hGaWVsZCBpbXBsZW1lbnRzIEFic3RyYWN0U2VhcmNoRmllbGQge1xuICBwcml2YXRlIG9yZ3NTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgZ2V0RmlsdGVyc0ZvclZhbHVlcyh2YWx1ZXM6IEZpZWxkVmFsdWVbXSk6IE9ic2VydmFibGU8RmllbGRGaWx0ZXJzPiB7XG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2Uub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3JncykgPT5cbiAgICAgICAgdmFsdWVzXG4gICAgICAgICAgLm1hcCgobmFtZSkgPT4gb3Jncy5maW5kKChvcmcpID0+IG9yZy5uYW1lID09PSBuYW1lKSlcbiAgICAgICAgICAuZmlsdGVyKChvcmcpID0+IG9yZyAhPT0gdW5kZWZpbmVkKVxuICAgICAgKSxcbiAgICAgIHN3aXRjaE1hcCgoc2VsZWN0ZWRPcmdzKSA9PlxuICAgICAgICB0aGlzLm9yZ3NTZXJ2aWNlLmdldEZpbHRlcnNGb3JPcmdzKHNlbGVjdGVkT3JncylcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICByZXR1cm4gdGhpcy5vcmdzU2VydmljZVxuICAgICAgLmdldE9yZ3NGcm9tRmlsdGVycyhmaWx0ZXJzKVxuICAgICAgLnBpcGUobWFwKChvcmdzKSA9PiBvcmdzLm1hcCgob3JnKSA9PiBvcmcubmFtZSkpKVxuICB9XG5cbiAgZ2V0QXZhaWxhYmxlVmFsdWVzKCk6IE9ic2VydmFibGU8RmllbGRBdmFpbGFibGVWYWx1ZVtdPiB7XG4gICAgLy8gc29ydCB2YWx1ZXMgYnkgYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgcmV0dXJuIHRoaXMub3Jnc1NlcnZpY2Uub3JnYW5pc2F0aW9ucyQucGlwZShcbiAgICAgIG1hcCgob3JnYW5pc2F0aW9ucykgPT5cbiAgICAgICAgb3JnYW5pc2F0aW9ucy5tYXAoKG9yZykgPT4gKHtcbiAgICAgICAgICBsYWJlbDogYCR7b3JnLm5hbWV9ICgke29yZy5yZWNvcmRDb3VudH0pYCxcbiAgICAgICAgICB2YWx1ZTogb3JnLm5hbWUsXG4gICAgICAgIH0pKVxuICAgICAgKSxcbiAgICAgIG1hcCgodmFsdWVzKSA9PlxuICAgICAgICB2YWx1ZXMuc29ydCgoYSwgYikgPT4gbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlKGEubGFiZWwsIGIubGFiZWwpKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ3ZhbHVlcydcbiAgfVxufVxuZXhwb3J0IGNsYXNzIE93bmVyU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdvd25lcicsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiBvZihbXSlcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXNlclNlYXJjaEZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcigndXNlcmluZm8ua2V5d29yZCcsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIHJldHVybiBzdXBlci5nZXRBdmFpbGFibGVWYWx1ZXMoKS5waXBlKFxuICAgICAgbWFwKCh2YWx1ZXMpID0+XG4gICAgICAgIHZhbHVlcy5tYXAoKHYpID0+ICh7XG4gICAgICAgICAgLi4udixcbiAgICAgICAgICBsYWJlbDogZm9ybWF0VXNlckluZm8odi5sYWJlbCwgdHJ1ZSksXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlU2VhcmNoRmllbGQgZXh0ZW5kcyBTaW1wbGVTZWFyY2hGaWVsZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBlc0ZpZWxkTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIG9yZGVyOiAnYXNjJyB8ICdkZXNjJyA9ICdhc2MnLFxuICAgIHByb3RlY3RlZCBvcmRlclR5cGU6ICdrZXknIHwgJ2NvdW50JyA9ICdrZXknXG4gICkge1xuICAgIHN1cGVyKGVzRmllbGROYW1lLCBpbmplY3Rvciwgb3JkZXIsIG9yZGVyVHlwZSlcbiAgfVxuXG4gIGdldEF2YWlsYWJsZVZhbHVlcygpOiBPYnNlcnZhYmxlPEZpZWxkQXZhaWxhYmxlVmFsdWVbXT4ge1xuICAgIC8vIFRPRE86IHJldHVybiBhbiBhcnJheSBvZiBkYXRlcyB0byBzaG93IHdoaWNoIG9uZSBhcmUgYXZhaWxhYmxlIGluIHRoZSBkYXRlIHBpY2tlclxuICAgIHJldHVybiBvZihbXSlcbiAgfVxuXG4gIGdldFR5cGUoKTogRmllbGRUeXBlIHtcbiAgICByZXR1cm4gJ2RhdGVSYW5nZSdcbiAgfVxufVxuXG5tYXJrZXIoJ3NlYXJjaC5maWx0ZXJzLmF2YWlsYWJsZVNlcnZpY2VzLnZpZXcnKVxubWFya2VyKCdzZWFyY2guZmlsdGVycy5hdmFpbGFibGVTZXJ2aWNlcy5kb3dubG9hZCcpXG5cbmV4cG9ydCBjbGFzcyBBdmFpbGFibGVTZXJ2aWNlc0ZpZWxkIGV4dGVuZHMgU2ltcGxlU2VhcmNoRmllbGQge1xuICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldChUcmFuc2xhdGVTZXJ2aWNlKVxuXG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKCdhdmFpbGFibGVTZXJ2aWNlcycsIGluamVjdG9yLCAnYXNjJylcbiAgfVxuXG4gIGxpbmtQcm90b2NvbFZpZXdGaWx0ZXIgPSAnL09HQzpXTVQ/Uy4qLydcbiAgbGlua1Byb3RvY29sRG93bmxvYWRGaWx0ZXIgPSAnL09HQzpXRlMuKi8nXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldEJ1Y2tldExhYmVsKGJ1Y2tldDogVGVybUJ1Y2tldCkge1xuICAgIHJldHVybiBmaXJzdFZhbHVlRnJvbShcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoXG4gICAgICAgIGBzZWFyY2guZmlsdGVycy5hdmFpbGFibGVTZXJ2aWNlcy4ke2J1Y2tldC50ZXJtfWBcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWdncmVnYXRpb25zKCk6IEFnZ3JlZ2F0aW9uc1BhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF2YWlsYWJsZVNlcnZpY2VzOiB7XG4gICAgICAgIHR5cGU6ICdmaWx0ZXJzJyxcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHZpZXc6IGArbGlua1Byb3RvY29sOiR7dGhpcy5saW5rUHJvdG9jb2xWaWV3RmlsdGVyfWAsXG4gICAgICAgICAgZG93bmxvYWQ6IGArbGlua1Byb3RvY29sOiR7dGhpcy5saW5rUHJvdG9jb2xEb3dubG9hZEZpbHRlcn1gLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBnZXRGaWx0ZXJzRm9yVmFsdWVzKHZhbHVlczogRmllbGRWYWx1ZVtdKTogT2JzZXJ2YWJsZTxGaWVsZEZpbHRlcnM+IHtcbiAgICBjb25zdCBmaWx0ZXJzOiBGaWVsZEZpbHRlciA9IHt9XG4gICAgaWYgKHZhbHVlcy5pbmNsdWRlcygndmlldycpKSBmaWx0ZXJzW3RoaXMubGlua1Byb3RvY29sVmlld0ZpbHRlcl0gPSB0cnVlXG4gICAgaWYgKHZhbHVlcy5pbmNsdWRlcygnZG93bmxvYWQnKSlcbiAgICAgIGZpbHRlcnNbdGhpcy5saW5rUHJvdG9jb2xEb3dubG9hZEZpbHRlcl0gPSB0cnVlXG5cbiAgICByZXR1cm4gb2Yoe1xuICAgICAgbGlua1Byb3RvY29sOiBmaWx0ZXJzLFxuICAgIH0pXG4gIH1cblxuICBnZXRWYWx1ZXNGb3JGaWx0ZXIoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxGaWVsZFZhbHVlW10+IHtcbiAgICBjb25zdCBsaW5rRmlsdGVyID0gZmlsdGVycy5saW5rUHJvdG9jb2xcbiAgICBpZiAoIWxpbmtGaWx0ZXIpIHJldHVybiBvZihbXSlcbiAgICBjb25zdCB2YWx1ZXMgPSBbXVxuICAgIGlmIChsaW5rRmlsdGVyW3RoaXMubGlua1Byb3RvY29sVmlld0ZpbHRlcl0pIHZhbHVlcy5wdXNoKCd2aWV3JylcbiAgICBpZiAobGlua0ZpbHRlclt0aGlzLmxpbmtQcm90b2NvbERvd25sb2FkRmlsdGVyXSkgdmFsdWVzLnB1c2goJ2Rvd25sb2FkJylcbiAgICByZXR1cm4gb2YodmFsdWVzKVxuICB9XG59XG4iXX0=