geonetwork-ui 2.6.0-dev.c5432f39f → 2.6.0-dev.cfd9cd166

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 (586) hide show
  1. package/README.md +2 -3
  2. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +11 -2
  3. package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +3 -3
  4. package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +17 -11
  5. package/esm2022/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.mjs +3 -3
  6. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +4 -8
  7. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +3 -6
  8. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +14 -6
  9. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +4 -4
  10. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +5 -5
  11. package/esm2022/libs/api/metadata-converter/src/lib/translate-utils.mjs +17 -0
  12. package/esm2022/libs/api/repository/src/lib/gn4/auth/auth.service.mjs +4 -4
  13. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -2
  14. package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +18 -16
  15. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +46 -16
  16. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.mjs +8 -8
  17. package/esm2022/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.mjs +14 -11
  18. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +23 -13
  19. package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
  20. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  21. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  22. package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -31
  23. package/esm2022/libs/feature/catalog/src/lib/sources/sources.service.mjs +9 -8
  24. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +4 -4
  25. package/esm2022/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.mjs +4 -5
  26. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -3
  27. package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +4 -4
  28. package/esm2022/libs/feature/editor/src/index.mjs +1 -4
  29. package/esm2022/libs/feature/editor/src/lib/+state/editor.actions.mjs +2 -1
  30. package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +13 -7
  31. package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +4 -1
  32. package/esm2022/libs/feature/editor/src/lib/+state/editor.reducer.mjs +5 -1
  33. package/esm2022/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.mjs +5 -7
  34. package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +8 -13
  35. package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +5 -6
  36. package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +11 -9
  37. package/esm2022/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.mjs +4 -13
  38. package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +5 -5
  39. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.mjs +5 -8
  40. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.mjs +4 -5
  41. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +6 -10
  42. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +8 -14
  43. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +4 -15
  44. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +4 -4
  45. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +4 -4
  46. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +4 -4
  47. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +4 -4
  48. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +4 -4
  49. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
  50. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +6 -17
  51. package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +4 -5
  52. package/esm2022/libs/feature/editor/src/lib/feature-editor.module.mjs +12 -30
  53. package/esm2022/libs/feature/editor/src/lib/models/index.mjs +1 -3
  54. package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +5 -6
  55. package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +11 -8
  56. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +11 -8
  57. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -6
  58. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -5
  59. package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +3 -36
  60. package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +5 -11
  61. package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +6 -6
  62. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +20 -19
  63. package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +6 -7
  64. package/esm2022/libs/feature/record/src/lib/data-view-share/data-view-share.component.mjs +4 -5
  65. package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +6 -7
  66. package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +4 -4
  67. package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +8 -22
  68. package/esm2022/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.mjs +5 -5
  69. package/esm2022/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.mjs +15 -7
  70. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +77 -28
  71. package/esm2022/libs/feature/search/src/lib/constants.mjs +3 -2
  72. package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +4 -4
  73. package/esm2022/libs/feature/search/src/lib/feature-search.module.mjs +24 -27
  74. package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +3 -3
  75. package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +8 -6
  76. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -6
  77. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
  78. package/esm2022/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.mjs +5 -7
  79. package/esm2022/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.mjs +4 -4
  80. package/esm2022/libs/feature/search/src/lib/utils/service/fields.mjs +5 -4
  81. package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +4 -5
  82. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +4 -5
  83. package/esm2022/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.mjs +4 -5
  84. package/esm2022/libs/ui/dataviz/src/index.mjs +1 -2
  85. package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +4 -4
  86. package/esm2022/libs/ui/dataviz/src/lib/figure/figure.component.mjs +5 -5
  87. package/esm2022/libs/ui/elements/src/index.mjs +1 -3
  88. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +6 -6
  89. package/esm2022/libs/ui/elements/src/lib/application-banner/application-banner.component.mjs +5 -5
  90. package/esm2022/libs/ui/elements/src/lib/avatar/avatar.component.mjs +4 -3
  91. package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +5 -3
  92. package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +4 -5
  93. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +4 -4
  94. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +4 -5
  95. package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +4 -5
  96. package/esm2022/libs/ui/elements/src/lib/image-input/image-input.component.mjs +4 -5
  97. package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -36
  98. package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +58 -0
  99. package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +7 -10
  100. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +4 -5
  101. package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +3 -6
  102. package/esm2022/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.mjs +4 -5
  103. package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +4 -5
  104. package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +6 -7
  105. package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +39 -16
  106. package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +8 -5
  107. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +7 -5
  108. package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +52 -32
  109. package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +5 -4
  110. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +4 -5
  111. package/esm2022/libs/ui/elements/src/lib/user-preview/user-preview.component.mjs +5 -4
  112. package/esm2022/libs/ui/inputs/src/index.mjs +1 -2
  113. package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +5 -6
  114. package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +4 -3
  115. package/esm2022/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.mjs +7 -6
  116. package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +29 -7
  117. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +4 -5
  118. package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +5 -7
  119. package/esm2022/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.mjs +4 -3
  120. package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +12 -7
  121. package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +4 -5
  122. package/esm2022/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.mjs +3 -3
  123. package/esm2022/libs/ui/layout/src/index.mjs +2 -2
  124. package/esm2022/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.mjs +3 -2
  125. package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
  126. package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +4 -5
  127. package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +21 -12
  128. package/esm2022/libs/ui/layout/src/lib/max-lines/max-lines.component.mjs +4 -5
  129. package/esm2022/libs/ui/layout/src/lib/pagination/pagination.component.mjs +4 -5
  130. package/esm2022/libs/ui/layout/src/lib/sticky-header/sticky-header.component.mjs +4 -3
  131. package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +17 -53
  132. package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +4 -5
  133. package/esm2022/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.mjs +6 -6
  134. package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
  135. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +8 -8
  136. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +28 -17
  137. package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +23 -24
  138. package/esm2022/libs/ui/widgets/src/index.mjs +1 -2
  139. package/esm2022/libs/ui/widgets/src/lib/color-scale/color-scale.component.mjs +3 -3
  140. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +1 -3
  141. package/esm2022/libs/util/i18n/src/index.mjs +2 -3
  142. package/esm2022/libs/util/i18n/src/lib/embedded.translate.loader.mjs +3 -2
  143. package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +36 -69
  144. package/esm2022/libs/util/i18n/src/lib/i18n.interceptor.mjs +10 -9
  145. package/esm2022/libs/util/i18n/src/lib/i18n.providers.mjs +41 -0
  146. package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +40 -2
  147. package/esm2022/libs/util/shared/src/index.mjs +2 -2
  148. package/esm2022/libs/util/shared/src/lib/image-fallback.directive.mjs +3 -2
  149. package/esm2022/libs/util/shared/src/lib/record.util.mjs +56 -0
  150. package/esm2022/translations/de.json +20 -22
  151. package/esm2022/translations/en.json +21 -23
  152. package/esm2022/translations/es.json +19 -21
  153. package/esm2022/translations/fr.json +25 -27
  154. package/esm2022/translations/it.json +22 -24
  155. package/esm2022/translations/nl.json +19 -21
  156. package/esm2022/translations/pt.json +19 -21
  157. package/esm2022/translations/sk.json +602 -0
  158. package/fesm2022/geonetwork-ui.mjs +10826 -10689
  159. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  160. package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -1
  161. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts +4 -4
  162. package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
  163. package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
  164. package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
  165. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  166. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  167. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts +2 -0
  168. package/libs/api/metadata-converter/src/lib/translate-utils.d.ts.map +1 -0
  169. package/libs/api/repository/src/lib/gn4/auth/auth.service.d.ts.map +1 -1
  170. package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
  171. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts +8 -6
  172. package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
  173. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +10 -4
  174. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  175. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts +1 -0
  176. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.d.ts.map +1 -1
  177. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts +4 -4
  178. package/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.d.ts.map +1 -1
  179. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +6 -3
  180. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  181. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
  182. package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
  183. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +20 -17
  184. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  185. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +5 -2
  186. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  187. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +4 -8
  188. package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
  189. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts +3 -3
  190. package/libs/feature/catalog/src/lib/sources/sources.service.d.ts.map +1 -1
  191. package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
  192. package/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.d.ts.map +1 -1
  193. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  194. package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
  195. package/libs/feature/editor/src/index.d.ts +0 -3
  196. package/libs/feature/editor/src/index.d.ts.map +1 -1
  197. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts +8 -1
  198. package/libs/feature/editor/src/lib/+state/editor.actions.d.ts.map +1 -1
  199. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts +10 -12
  200. package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
  201. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +2 -1
  202. package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
  203. package/libs/feature/editor/src/lib/+state/editor.reducer.d.ts.map +1 -1
  204. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts +1 -1
  205. package/libs/feature/editor/src/lib/+state/editor.selectors.d.ts.map +1 -1
  206. package/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.d.ts.map +1 -1
  207. package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts.map +1 -1
  208. package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -1
  209. package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
  210. package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.d.ts.map +1 -1
  211. package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -1
  212. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.d.ts.map +1 -1
  213. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -1
  214. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
  215. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts.map +1 -1
  216. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
  217. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -1
  218. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
  219. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
  220. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
  221. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -1
  222. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  223. package/libs/feature/editor/src/lib/feature-editor.module.d.ts +10 -17
  224. package/libs/feature/editor/src/lib/feature-editor.module.d.ts.map +1 -1
  225. package/libs/feature/editor/src/lib/models/index.d.ts +0 -2
  226. package/libs/feature/editor/src/lib/models/index.d.ts.map +1 -1
  227. package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.d.ts.map +1 -1
  228. package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
  229. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  230. package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
  231. package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
  232. package/libs/feature/map/src/lib/feature-map.module.d.ts +2 -11
  233. package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
  234. package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
  235. package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
  236. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts +7 -4
  237. package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
  238. package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
  239. package/libs/feature/record/src/lib/feature-record.module.d.ts +8 -12
  240. package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
  241. package/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.d.ts.map +1 -1
  242. package/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.d.ts.map +1 -1
  243. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -6
  244. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  245. package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
  246. package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
  247. package/libs/feature/search/src/lib/feature-search.module.d.ts +24 -24
  248. package/libs/feature/search/src/lib/feature-search.module.d.ts.map +1 -1
  249. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
  250. package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
  251. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
  252. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  253. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts +1 -2
  254. package/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.d.ts.map +1 -1
  255. package/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.d.ts.map +1 -1
  256. package/libs/feature/search/src/lib/utils/service/fields.d.ts +1 -2
  257. package/libs/feature/search/src/lib/utils/service/fields.d.ts.map +1 -1
  258. package/libs/ui/dataviz/src/index.d.ts +0 -1
  259. package/libs/ui/dataviz/src/index.d.ts.map +1 -1
  260. package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
  261. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts +1 -1
  262. package/libs/ui/dataviz/src/lib/figure/figure.component.d.ts.map +1 -1
  263. package/libs/ui/elements/src/index.d.ts +0 -2
  264. package/libs/ui/elements/src/index.d.ts.map +1 -1
  265. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  266. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts +1 -1
  267. package/libs/ui/elements/src/lib/avatar/avatar.component.d.ts.map +1 -1
  268. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +2 -0
  269. package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -1
  270. package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
  271. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +4 -7
  272. package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
  273. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
  274. package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
  275. package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
  276. package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +1 -1
  277. package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
  278. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
  279. package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
  280. package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
  281. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  282. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +20 -9
  283. package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -1
  284. package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
  285. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts +1 -1
  286. package/libs/ui/elements/src/lib/user-preview/user-preview.component.d.ts.map +1 -1
  287. package/libs/ui/inputs/src/index.d.ts +0 -1
  288. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  289. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts +1 -1
  290. package/libs/ui/inputs/src/lib/checkbox/checkbox.component.d.ts.map +1 -1
  291. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts +1 -1
  292. package/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.d.ts.map +1 -1
  293. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts +1 -1
  294. package/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.d.ts.map +1 -1
  295. package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -1
  296. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts +1 -1
  297. package/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.d.ts.map +1 -1
  298. package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -1
  299. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts +1 -1
  300. package/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.d.ts.map +1 -1
  301. package/libs/ui/layout/src/index.d.ts +1 -1
  302. package/libs/ui/layout/src/index.d.ts.map +1 -1
  303. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts +1 -1
  304. package/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.d.ts.map +1 -1
  305. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
  306. package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
  307. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
  308. package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
  309. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts +1 -1
  310. package/libs/ui/layout/src/lib/sticky-header/sticky-header.component.d.ts.map +1 -1
  311. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +6 -11
  312. package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
  313. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +2 -1
  314. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
  315. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +5 -3
  316. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  317. package/libs/ui/search/src/lib/ui-search.module.d.ts +11 -11
  318. package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
  319. package/libs/ui/widgets/src/index.d.ts +0 -1
  320. package/libs/ui/widgets/src/index.d.ts.map +1 -1
  321. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts +1 -1
  322. package/libs/ui/widgets/src/lib/color-scale/color-scale.component.d.ts.map +1 -1
  323. package/libs/util/app-config/src/lib/app-config.d.ts +0 -1
  324. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  325. package/libs/util/i18n/src/index.d.ts +1 -2
  326. package/libs/util/i18n/src/index.d.ts.map +1 -1
  327. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts +1 -1
  328. package/libs/util/i18n/src/lib/embedded.translate.loader.d.ts.map +1 -1
  329. package/libs/util/i18n/src/lib/i18n.constants.d.ts +6 -16
  330. package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
  331. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts +5 -5
  332. package/libs/util/i18n/src/lib/i18n.interceptor.d.ts.map +1 -1
  333. package/libs/util/i18n/src/lib/i18n.providers.d.ts +4 -0
  334. package/libs/util/i18n/src/lib/i18n.providers.d.ts.map +1 -0
  335. package/libs/util/i18n/src/lib/language-codes.d.ts +3 -29
  336. package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
  337. package/libs/util/shared/src/index.d.ts +1 -1
  338. package/libs/util/shared/src/index.d.ts.map +1 -1
  339. package/libs/util/shared/src/lib/image-fallback.directive.d.ts +1 -1
  340. package/libs/util/shared/src/lib/image-fallback.directive.d.ts.map +1 -1
  341. package/libs/util/shared/src/lib/record.util.d.ts +3 -0
  342. package/libs/util/shared/src/lib/record.util.d.ts.map +1 -0
  343. package/package.json +3 -3
  344. package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +10 -1
  345. package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +2 -2
  346. package/src/libs/api/metadata-converter/src/lib/fixtures/metadata-for-i18n.records.ts +4196 -0
  347. package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +19 -6
  348. package/src/libs/api/metadata-converter/src/lib/gn4/metadata-url.service.ts +4 -4
  349. package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +3 -7
  350. package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +2 -6
  351. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +14 -8
  352. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +3 -3
  353. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +5 -7
  354. package/src/libs/api/metadata-converter/src/lib/translate-utils.ts +17 -0
  355. package/src/libs/api/repository/src/lib/gn4/auth/auth.service.ts +3 -6
  356. package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -1
  357. package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +14 -6
  358. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +60 -16
  359. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-groups.service.ts +8 -7
  360. package/src/libs/api/repository/src/lib/gn4/organizations/organizations-from-metadata.service.ts +13 -6
  361. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +24 -20
  362. package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
  363. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +20 -14
  364. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +9 -2
  365. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +113 -0
  366. package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +4 -17
  367. package/src/libs/feature/catalog/src/lib/sources/sources.service.ts +7 -3
  368. package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +2 -2
  369. package/src/libs/feature/dataviz/src/lib/figure/figure-container/figure-container.component.ts +2 -2
  370. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +4 -2
  371. package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +2 -2
  372. package/src/libs/feature/editor/src/index.ts +0 -3
  373. package/src/libs/feature/editor/src/lib/+state/editor.actions.ts +9 -1
  374. package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +23 -12
  375. package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +13 -1
  376. package/src/libs/feature/editor/src/lib/+state/editor.reducer.ts +9 -1
  377. package/src/libs/feature/editor/src/lib/components/constraint-card/constraint-card.component.ts +3 -4
  378. package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +5 -16
  379. package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +7 -5
  380. package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +16 -10
  381. package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +2 -10
  382. package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +3 -2
  383. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints/form-field-constraints.component.ts +3 -4
  384. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-constraints-shortcuts/form-field-constraints-shortcuts.component.ts +2 -2
  385. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +4 -11
  386. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +5 -9
  387. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +2 -17
  388. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +2 -2
  389. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +2 -2
  390. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +2 -2
  391. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +2 -2
  392. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +2 -2
  393. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +2 -2
  394. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +2 -2
  395. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +2 -15
  396. package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -2
  397. package/src/libs/feature/editor/src/lib/feature-editor.module.ts +4 -17
  398. package/src/libs/feature/editor/src/lib/models/index.ts +0 -2
  399. package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.ts +2 -1
  400. package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +8 -3
  401. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +10 -3
  402. package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +8 -2
  403. package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +8 -2
  404. package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -17
  405. package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +3 -8
  406. package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +3 -2
  407. package/src/libs/feature/record/src/lib/data-view/data-view.component.html +1 -1
  408. package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +22 -19
  409. package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +2 -2
  410. package/src/libs/feature/record/src/lib/data-view-share/data-view-share.component.ts +2 -2
  411. package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +2 -2
  412. package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +2 -2
  413. package/src/libs/feature/record/src/lib/feature-record.module.ts +4 -13
  414. package/src/libs/feature/record/src/lib/gpf-api-dl/gpf-api-dl.component.ts +4 -3
  415. package/src/libs/feature/record/src/lib/gpf-api-dl-list-item/gpf-api-dl-list-item.component.ts +10 -4
  416. package/src/libs/feature/record/src/lib/map-view/map-view.component.html +27 -9
  417. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +113 -30
  418. package/src/libs/feature/search/src/lib/constants.ts +2 -1
  419. package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +2 -2
  420. package/src/libs/feature/search/src/lib/feature-search.module.ts +13 -18
  421. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
  422. package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +5 -0
  423. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  424. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
  425. package/src/libs/feature/search/src/lib/search-filters-summary/search-filters-summary.component.ts +10 -4
  426. package/src/libs/feature/search/src/lib/search-filters-summary-item/search-filters-summary-item.component.ts +2 -2
  427. package/src/libs/feature/search/src/lib/utils/service/fields.ts +4 -3
  428. package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.ts +2 -2
  429. package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +2 -2
  430. package/src/libs/ui/catalog/src/lib/organisations-result/organisations-result.component.ts +2 -2
  431. package/src/libs/ui/dataviz/src/index.ts +0 -1
  432. package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +2 -2
  433. package/src/libs/ui/dataviz/src/lib/figure/figure.component.html +0 -1
  434. package/src/libs/ui/dataviz/src/lib/figure/figure.component.ts +4 -0
  435. package/src/libs/ui/elements/src/index.ts +0 -2
  436. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +3 -2
  437. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.html +6 -6
  438. package/src/libs/ui/elements/src/lib/application-banner/application-banner.component.ts +2 -2
  439. package/src/libs/ui/elements/src/lib/avatar/avatar.component.ts +3 -0
  440. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +6 -2
  441. package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +5 -1
  442. package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +2 -2
  443. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +2 -5
  444. package/src/libs/ui/elements/src/lib/error/error.component.ts +2 -2
  445. package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +2 -2
  446. package/src/libs/ui/elements/src/lib/image-input/image-input.component.ts +2 -2
  447. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +8 -76
  448. package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +22 -55
  449. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
  450. package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
  451. package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +4 -5
  452. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +2 -2
  453. package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -4
  454. package/src/libs/ui/elements/src/lib/metadata-catalog/metadata-catalog.component.ts +2 -2
  455. package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.ts +2 -2
  456. package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +4 -7
  457. package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +51 -13
  458. package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +6 -2
  459. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +4 -2
  460. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
  461. package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +62 -31
  462. package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +7 -2
  463. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
  464. package/src/libs/ui/elements/src/lib/user-preview/user-preview.component.ts +4 -0
  465. package/src/libs/ui/inputs/src/index.ts +0 -1
  466. package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +2 -2
  467. package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.ts +3 -0
  468. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.html +1 -1
  469. package/src/libs/ui/inputs/src/lib/drag-and-drop-file-input/drag-and-drop-file-input.component.ts +4 -0
  470. package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.ts +27 -0
  471. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +2 -2
  472. package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +3 -4
  473. package/src/libs/ui/inputs/src/lib/inline-filter/inline-filter.component.ts +3 -0
  474. package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +9 -3
  475. package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +2 -2
  476. package/src/libs/ui/inputs/src/lib/viewport-intersector/viewport-intersector.component.ts +1 -0
  477. package/src/libs/ui/layout/src/index.ts +1 -1
  478. package/src/libs/ui/layout/src/lib/anchor-link/anchor-link.directive.ts +1 -0
  479. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
  480. package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
  481. package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +2 -2
  482. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
  483. package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +15 -8
  484. package/src/libs/ui/layout/src/lib/max-lines/max-lines.component.ts +2 -2
  485. package/src/libs/ui/layout/src/lib/pagination/pagination.component.ts +2 -2
  486. package/src/libs/ui/layout/src/lib/sticky-header/sticky-header.component.ts +3 -0
  487. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -42
  488. package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +12 -58
  489. package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +2 -2
  490. package/src/libs/ui/search/src/lib/record-preview-feed/record-preview-feed.component.html +4 -1
  491. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +6 -4
  492. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +4 -4
  493. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +14 -22
  494. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +34 -13
  495. package/src/libs/ui/search/src/lib/ui-search.module.ts +12 -11
  496. package/src/libs/ui/widgets/src/index.ts +0 -1
  497. package/src/libs/ui/widgets/src/lib/color-scale/color-scale.component.ts +1 -0
  498. package/src/libs/util/app-config/src/lib/app-config.ts +0 -2
  499. package/src/libs/util/i18n/src/index.ts +1 -2
  500. package/src/libs/util/i18n/src/lib/embedded.translate.loader.ts +4 -3
  501. package/src/libs/util/i18n/src/lib/i18n.constants.ts +39 -71
  502. package/src/libs/util/i18n/src/lib/i18n.interceptor.ts +11 -9
  503. package/src/libs/util/i18n/src/lib/i18n.providers.ts +68 -0
  504. package/src/libs/util/i18n/src/lib/language-codes.ts +44 -1
  505. package/src/libs/util/shared/src/index.ts +1 -1
  506. package/src/libs/util/shared/src/lib/image-fallback.directive.ts +1 -0
  507. package/src/libs/util/shared/src/lib/record.util.ts +114 -0
  508. package/translations/de.json +20 -22
  509. package/translations/en.json +21 -23
  510. package/translations/es.json +19 -21
  511. package/translations/fr.json +25 -27
  512. package/translations/it.json +22 -24
  513. package/translations/nl.json +19 -21
  514. package/translations/pt.json +19 -21
  515. package/translations/sk.json +19 -21
  516. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +0 -44
  517. package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +0 -75
  518. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +0 -160
  519. package/esm2022/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.mjs +0 -53
  520. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.model.mjs +0 -2
  521. package/esm2022/libs/feature/editor/src/lib/models/wizard-field.type.mjs +0 -8
  522. package/esm2022/libs/feature/editor/src/lib/services/wizard.service.mjs +0 -87
  523. package/esm2022/libs/ui/dataviz/src/lib/ui-dataviz.module.mjs +0 -47
  524. package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -56
  525. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +0 -130
  526. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +0 -160
  527. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +0 -23
  528. package/esm2022/libs/ui/widgets/src/lib/ui-widgets.module.mjs +0 -46
  529. package/esm2022/libs/util/i18n/src/lib/lang.service.mjs +0 -31
  530. package/esm2022/libs/util/i18n/src/lib/util-i18n.module.mjs +0 -37
  531. package/esm2022/libs/util/shared/src/lib/util-shared.module.mjs +0 -18
  532. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +0 -14
  533. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +0 -1
  534. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts +0 -31
  535. package/libs/feature/editor/src/lib/components/wizard/wizard.component.d.ts.map +0 -1
  536. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts +0 -43
  537. package/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.d.ts.map +0 -1
  538. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts +0 -17
  539. package/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.d.ts.map +0 -1
  540. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts +0 -10
  541. package/libs/feature/editor/src/lib/models/wizard-field.model.d.ts.map +0 -1
  542. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts +0 -7
  543. package/libs/feature/editor/src/lib/models/wizard-field.type.d.ts.map +0 -1
  544. package/libs/feature/editor/src/lib/services/wizard.service.d.ts +0 -33
  545. package/libs/feature/editor/src/lib/services/wizard.service.d.ts.map +0 -1
  546. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts +0 -11
  547. package/libs/ui/dataviz/src/lib/ui-dataviz.module.d.ts.map +0 -1
  548. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -19
  549. package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
  550. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +0 -31
  551. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +0 -1
  552. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +0 -35
  553. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +0 -1
  554. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +0 -12
  555. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +0 -1
  556. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts +0 -15
  557. package/libs/ui/widgets/src/lib/ui-widgets.module.d.ts.map +0 -1
  558. package/libs/util/i18n/src/lib/lang.service.d.ts +0 -13
  559. package/libs/util/i18n/src/lib/lang.service.d.ts.map +0 -1
  560. package/libs/util/i18n/src/lib/util-i18n.module.d.ts +0 -12
  561. package/libs/util/i18n/src/lib/util-i18n.module.d.ts.map +0 -1
  562. package/libs/util/shared/src/lib/util-shared.module.d.ts +0 -9
  563. package/libs/util/shared/src/lib/util-shared.module.d.ts.map +0 -1
  564. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.css +0 -5
  565. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +0 -22
  566. package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.ts +0 -93
  567. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.css +0 -31
  568. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.html +0 -62
  569. package/src/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.ts +0 -206
  570. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.css +0 -3
  571. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.html +0 -21
  572. package/src/libs/feature/editor/src/lib/components/wizard-summarize/wizard-summarize.component.ts +0 -58
  573. package/src/libs/feature/editor/src/lib/models/wizard-field.model.ts +0 -10
  574. package/src/libs/feature/editor/src/lib/models/wizard-field.type.ts +0 -6
  575. package/src/libs/feature/editor/src/lib/services/wizard.service.ts +0 -105
  576. package/src/libs/ui/dataviz/src/lib/ui-dataviz.module.ts +0 -27
  577. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.css +0 -0
  578. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -9
  579. package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -61
  580. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -72
  581. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -96
  582. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -14
  583. package/src/libs/ui/widgets/src/lib/ui-widgets.module.ts +0 -25
  584. package/src/libs/util/i18n/src/lib/lang.service.ts +0 -23
  585. package/src/libs/util/i18n/src/lib/util-i18n.module.ts +0 -26
  586. package/src/libs/util/shared/src/lib/util-shared.module.ts +0 -10
@@ -4,10 +4,9 @@ import { NgIcon, provideIcons } from '@ng-icons/core';
4
4
  import { matMailOutline, matOpenInNew, matPersonOutline, } from '@ng-icons/material-icons/baseline';
5
5
  import { matCallOutline, matLocationOnOutline, } from '@ng-icons/material-icons/outline';
6
6
  import { CommonModule } from '@angular/common';
7
- import { TranslateModule } from '@ngx-translate/core';
7
+ import { TranslateDirective } from '@ngx-translate/core';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
- import * as i2 from "@ngx-translate/core";
11
10
  export class MetadataContactComponent {
12
11
  constructor() {
13
12
  this.organizationClick = new EventEmitter();
@@ -31,7 +30,7 @@ export class MetadataContactComponent {
31
30
  this.organizationClick.emit(this.shownOrganization);
32
31
  }
33
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div\n class=\"py-5 px-5 rounded bg-gray-100 text-black\"\n data-cy=\"metadata-organization\"\n>\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name-link\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div\n class=\"py-5 px-5 rounded bg-gray-100 text-black\"\n data-cy=\"metadata-organization\"\n>\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name-link\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
35
34
  provideIcons({
36
35
  matOpenInNew,
37
36
  matCallOutline,
@@ -43,7 +42,7 @@ export class MetadataContactComponent {
43
42
  }
44
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, decorators: [{
45
44
  type: Component,
46
- args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ThumbnailComponent, NgIcon, TranslateModule], viewProviders: [
45
+ args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, ThumbnailComponent, NgIcon, TranslateDirective], viewProviders: [
47
46
  provideIcons({
48
47
  matOpenInNew,
49
48
  matCallOutline,
@@ -59,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
59
58
  }], contactClick: [{
60
59
  type: Output
61
60
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtY29udGFjdC9tZXRhZGF0YS1jb250YWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1jb250YWN0L21ldGFkYXRhLWNvbnRhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFNdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixNQUFNLGtDQUFrQyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7Ozs7QUFtQnJELE1BQU0sT0FBTyx3QkFBd0I7SUFqQnJDO1FBbUJZLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFnQixDQUFBO1FBQ3BELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQTtLQXdCeEQ7SUF0QkMsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFBO0lBQ3hDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQ2xDLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO2FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzdCLE9BQU8sWUFBWSxDQUFBO0lBQ3JCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNyRCxDQUFDOytHQTFCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qix1TUMzQ3JDLDh5R0FtR0EseUREbkVZLFlBQVksZ1FBQUUsa0JBQWtCLDRIQUFFLE1BQU0sNEdBQUUsZUFBZSwySkFDcEQ7WUFDYixZQUFZLENBQUM7Z0JBQ1gsWUFBWTtnQkFDWixjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixvQkFBb0I7YUFDckIsQ0FBQztTQUNIOzs0RkFFVSx3QkFBd0I7a0JBakJwQyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxpQkFDckQ7d0JBQ2IsWUFBWSxDQUFDOzRCQUNYLFlBQVk7NEJBQ1osY0FBYzs0QkFDZCxjQUFjOzRCQUNkLGdCQUFnQjs0QkFDaEIsb0JBQW9CO3lCQUNyQixDQUFDO3FCQUNIOzhCQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBJbmRpdmlkdWFsLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRodW1ibmFpbENvbXBvbmVudCB9IGZyb20gJy4uL3RodW1ibmFpbC90aHVtYm5haWwuY29tcG9uZW50J1xuaW1wb3J0IHsgTmdJY29uLCBwcm92aWRlSWNvbnMgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7XG4gIG1hdE1haWxPdXRsaW5lLFxuICBtYXRPcGVuSW5OZXcsXG4gIG1hdFBlcnNvbk91dGxpbmUsXG59IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9iYXNlbGluZSdcbmltcG9ydCB7XG4gIG1hdENhbGxPdXRsaW5lLFxuICBtYXRMb2NhdGlvbk9uT3V0bGluZSxcbn0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL291dGxpbmUnXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tZXRhZGF0YS1jb250YWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldGFkYXRhLWNvbnRhY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZXRhZGF0YS1jb250YWN0LmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRodW1ibmFpbENvbXBvbmVudCwgTmdJY29uLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIG1hdE9wZW5Jbk5ldyxcbiAgICAgIG1hdENhbGxPdXRsaW5lLFxuICAgICAgbWF0TWFpbE91dGxpbmUsXG4gICAgICBtYXRQZXJzb25PdXRsaW5lLFxuICAgICAgbWF0TG9jYXRpb25Pbk91dGxpbmUsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhQ29udGFjdENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1ldGFkYXRhOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+XG4gIEBPdXRwdXQoKSBvcmdhbml6YXRpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8T3JnYW5pemF0aW9uPigpXG4gIEBPdXRwdXQoKSBjb250YWN0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEluZGl2aWR1YWw+KClcblxuICBnZXQgc2hvd25Pcmdhbml6YXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGEub3duZXJPcmdhbml6YXRpb25cbiAgfVxuXG4gIGdldCBjb250YWN0cygpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMubWV0YWRhdGEua2luZCA9PT0gJ2RhdGFzZXQnXG4gICAgICAgID8gdGhpcy5tZXRhZGF0YS5jb250YWN0c0ZvclJlc291cmNlXG4gICAgICAgIDogdGhpcy5tZXRhZGF0YS5jb250YWN0cykgfHwgW11cbiAgICApXG4gIH1cblxuICBnZXQgYWRkcmVzcygpIHtcbiAgICBjb25zdCBhZGRyZXNzUGFydHMgPSB0aGlzLmNvbnRhY3RzWzBdLmFkZHJlc3NcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKChwYXJ0KSA9PiBwYXJ0LnRyaW0oKSlcbiAgICByZXR1cm4gYWRkcmVzc1BhcnRzXG4gIH1cblxuICBvbk9yZ2FuaXphdGlvbkNsaWNrKCkge1xuICAgIHRoaXMub3JnYW5pemF0aW9uQ2xpY2suZW1pdCh0aGlzLnNob3duT3JnYW5pemF0aW9uKVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicHktNSBweC01IHJvdW5kZWQgYmctZ3JheS0xMDAgdGV4dC1ibGFja1wiXG4gIGRhdGEtY3k9XCJtZXRhZGF0YS1vcmdhbml6YXRpb25cIlxuPlxuICA8ZGl2IGNsYXNzPVwiZ3JpZCBnYXAtMyBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1tZWRpdW1cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmNvbnRhY3Q8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG93bk9yZ2FuaXphdGlvbj8ubG9nb1VybD8uaHJlZlwiXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci1zb2xpZCBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbWQgYmctd2hpdGUgaC0zMiBvdmVyZmxvdy1oaWRkZW5cIlxuICAgID5cbiAgICAgIDxnbi11aS10aHVtYm5haWxcbiAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBoLWZ1bGwgdy1mdWxsXCJcbiAgICAgICAgW3RodW1ibmFpbFVybF09XCJzaG93bk9yZ2FuaXphdGlvbi5sb2dvVXJsLmhyZWZcIlxuICAgICAgICBmaXQ9XCJjb250YWluXCJcbiAgICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZm9udC10aXRsZSB0ZXh0LTIxIG1yLTIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAoY2xpY2spPVwib25Pcmdhbml6YXRpb25DbGljaygpXCJcbiAgICAgICAgICBkYXRhLWN5PVwib3JnYW5pemF0aW9uLW5hbWUtbGlua1wiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzaG93bk9yZ2FuaXphdGlvbj8ubmFtZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3duT3JnYW5pemF0aW9uPy53ZWJzaXRlXCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgW2hyZWZdPVwic2hvd25Pcmdhbml6YXRpb24ud2Vic2l0ZVwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICBjbGFzcz1cImNvbnRhY3Qtd2Vic2l0ZSB0ZXh0LXNtIGN1cnNvci1wb2ludGVyIGhvdmVyOnVuZGVybGluZSB0cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgICAgPnt7IHNob3duT3JnYW5pemF0aW9uLndlYnNpdGUgfX1cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy1bMTJweF0gIWgtWzEycHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdE9wZW5Jbk5ld1wiXG4gICAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTUgcHktMyBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0c1swXT8ucGhvbmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy01ICFoLTUgIXRleHQtWzIwcHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdENhbGxPdXRsaW5lXCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTJcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiPnt7IGNvbnRhY3RzWzBdLnBob25lIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3RzWzBdPy5lbWFpbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LTUgIWgtNSAhdGV4dC1bMjBweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0TWFpbE91dGxpbmVcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0lmPVwiY29udGFjdHMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtocmVmXT1cIidtYWlsdG86JyArIGNvbnRhY3RzWzBdLmVtYWlsXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnJlYWstYWxsIHRleHQtc20gaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICBkYXRhLWN5PVwiY29udGFjdC1lbWFpbFwiXG4gICAgICAgICAgICA+e3sgY29udGFjdHNbMF0uZW1haWwgfX08L2FcbiAgICAgICAgICA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdHNbMF0/LmZpcnN0TmFtZSB8fCBjb250YWN0c1swXT8ubGFzdE5hbWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy01ICFoLTUgIXRleHQtWzIwcHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdFBlcnNvbk91dGxpbmVcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWwtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIHt7IGNvbnRhY3RzWzBdPy5maXJzdE5hbWUgfHwgJycgfX1cbiAgICAgICAgICAgICAge3sgY29udGFjdHNbMF0/Lmxhc3ROYW1lIHx8ICcnIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdHNbMF0/LmFkZHJlc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy01ICFoLTUgIXRleHQtWzIwcHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdExvY2F0aW9uT25PdXRsaW5lXCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG1sLTJcIj5cbiAgICAgICAgICAgIDxwICpuZ0Zvcj1cImxldCBhZGRyZXNzUGFydCBvZiBhZGRyZXNzXCIgY2xhc3M9XCJ0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgIHt7IGFkZHJlc3NQYXJ0IH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtY29udGFjdC9tZXRhZGF0YS1jb250YWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1jb250YWN0L21ldGFkYXRhLWNvbnRhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFNdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLFlBQVksRUFDWixnQkFBZ0IsR0FDakIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMxQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixHQUNyQixNQUFNLGtDQUFrQyxDQUFBO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTs7O0FBbUJ4RCxNQUFNLE9BQU8sd0JBQXdCO0lBakJyQztRQW1CWSxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQTtRQUNwRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUE7S0F3QnhEO0lBdEJDLElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUNMLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7WUFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUNsQyxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTzthQUMxQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUM3QixPQUFPLFlBQVksQ0FBQTtJQUNyQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDckQsQ0FBQzsrR0ExQlUsd0JBQXdCO21HQUF4Qix3QkFBd0IsdU1DM0NyQyw4eUdBbUdBLHlERG5FWSxZQUFZLGdRQUFFLGtCQUFrQiw0SEFBRSxNQUFNLDZHQUFFLGtCQUFrQix1R0FDdkQ7WUFDYixZQUFZLENBQUM7Z0JBQ1gsWUFBWTtnQkFDWixjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsZ0JBQWdCO2dCQUNoQixvQkFBb0I7YUFDckIsQ0FBQztTQUNIOzs0RkFFVSx3QkFBd0I7a0JBakJwQyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixDQUFDLGlCQUN4RDt3QkFDYixZQUFZLENBQUM7NEJBQ1gsWUFBWTs0QkFDWixjQUFjOzRCQUNkLGNBQWM7NEJBQ2QsZ0JBQWdCOzRCQUNoQixvQkFBb0I7eUJBQ3JCLENBQUM7cUJBQ0g7OEJBR1EsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIEluZGl2aWR1YWwsXG4gIE9yZ2FuaXphdGlvbixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgVGh1bWJuYWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGh1bWJuYWlsL3RodW1ibmFpbC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ0ljb24sIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHtcbiAgbWF0TWFpbE91dGxpbmUsXG4gIG1hdE9wZW5Jbk5ldyxcbiAgbWF0UGVyc29uT3V0bGluZSxcbn0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL2Jhc2VsaW5lJ1xuaW1wb3J0IHtcbiAgbWF0Q2FsbE91dGxpbmUsXG4gIG1hdExvY2F0aW9uT25PdXRsaW5lLFxufSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvb3V0bGluZSdcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1ldGFkYXRhLWNvbnRhY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEtY29udGFjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21ldGFkYXRhLWNvbnRhY3QuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGh1bWJuYWlsQ29tcG9uZW50LCBOZ0ljb24sIFRyYW5zbGF0ZURpcmVjdGl2ZV0sXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgbWF0T3BlbkluTmV3LFxuICAgICAgbWF0Q2FsbE91dGxpbmUsXG4gICAgICBtYXRNYWlsT3V0bGluZSxcbiAgICAgIG1hdFBlcnNvbk91dGxpbmUsXG4gICAgICBtYXRMb2NhdGlvbk9uT3V0bGluZSxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFDb250YWN0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgbWV0YWRhdGE6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cbiAgQE91dHB1dCgpIG9yZ2FuaXphdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxPcmdhbml6YXRpb24+KClcbiAgQE91dHB1dCgpIGNvbnRhY3RDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbD4oKVxuXG4gIGdldCBzaG93bk9yZ2FuaXphdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhZGF0YS5vd25lck9yZ2FuaXphdGlvblxuICB9XG5cbiAgZ2V0IGNvbnRhY3RzKCkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5tZXRhZGF0YS5raW5kID09PSAnZGF0YXNldCdcbiAgICAgICAgPyB0aGlzLm1ldGFkYXRhLmNvbnRhY3RzRm9yUmVzb3VyY2VcbiAgICAgICAgOiB0aGlzLm1ldGFkYXRhLmNvbnRhY3RzKSB8fCBbXVxuICAgIClcbiAgfVxuXG4gIGdldCBhZGRyZXNzKCkge1xuICAgIGNvbnN0IGFkZHJlc3NQYXJ0cyA9IHRoaXMuY29udGFjdHNbMF0uYWRkcmVzc1xuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAoKHBhcnQpID0+IHBhcnQudHJpbSgpKVxuICAgIHJldHVybiBhZGRyZXNzUGFydHNcbiAgfVxuXG4gIG9uT3JnYW5pemF0aW9uQ2xpY2soKSB7XG4gICAgdGhpcy5vcmdhbml6YXRpb25DbGljay5lbWl0KHRoaXMuc2hvd25Pcmdhbml6YXRpb24pXG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJweS01IHB4LTUgcm91bmRlZCBiZy1ncmF5LTEwMCB0ZXh0LWJsYWNrXCJcbiAgZGF0YS1jeT1cIm1ldGFkYXRhLW9yZ2FuaXphdGlvblwiXG4+XG4gIDxkaXYgY2xhc3M9XCJncmlkIGdhcC0zIG92ZXJmbG93LWhpZGRlblwiPlxuICAgIDxkaXY+XG4gICAgICA8cCBjbGFzcz1cInRleHQtYmFzZSBmb250LW1lZGl1bVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuY29udGFjdDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInNob3duT3JnYW5pemF0aW9uPy5sb2dvVXJsPy5ocmVmXCJcbiAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXNvbGlkIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1tZCBiZy13aGl0ZSBoLTMyIG92ZXJmbG93LWhpZGRlblwiXG4gICAgPlxuICAgICAgPGduLXVpLXRodW1ibmFpbFxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIlxuICAgICAgICBbdGh1bWJuYWlsVXJsXT1cInNob3duT3JnYW5pemF0aW9uLmxvZ29VcmwuaHJlZlwiXG4gICAgICAgIGZpdD1cImNvbnRhaW5cIlxuICAgICAgPjwvZ24tdWktdGh1bWJuYWlsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC0xXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb250LXRpdGxlIHRleHQtMjEgbXItMiBjdXJzb3ItcG9pbnRlciBob3Zlcjp1bmRlcmxpbmVcIlxuICAgICAgICAgIChjbGljayk9XCJvbk9yZ2FuaXphdGlvbkNsaWNrKClcIlxuICAgICAgICAgIGRhdGEtY3k9XCJvcmdhbml6YXRpb24tbmFtZS1saW5rXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHNob3duT3JnYW5pemF0aW9uPy5uYW1lIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd25Pcmdhbml6YXRpb24/LndlYnNpdGVcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBbaHJlZl09XCJzaG93bk9yZ2FuaXphdGlvbi53ZWJzaXRlXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIGNsYXNzPVwiY29udGFjdC13ZWJzaXRlIHRleHQtc20gY3Vyc29yLXBvaW50ZXIgaG92ZXI6dW5kZXJsaW5lIHRyYW5zaXRpb24tYWxsXCJcbiAgICAgICAgICA+e3sgc2hvd25Pcmdhbml6YXRpb24ud2Vic2l0ZSB9fVxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LVsxMnB4XSAhaC1bMTJweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0T3BlbkluTmV3XCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtNSBweS0zIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgPGRpdiAqbmdJZj1cImNvbnRhY3RzWzBdPy5waG9uZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LTUgIWgtNSAhdGV4dC1bMjBweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0Q2FsbE91dGxpbmVcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWwtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCI+e3sgY29udGFjdHNbMF0ucGhvbmUgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY29udGFjdHNbMF0/LmVtYWlsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgPG5nLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiIXctNSAhaC01ICF0ZXh0LVsyMHB4XSBvcGFjaXR5LTc1IHNocmluay0wXCJcbiAgICAgICAgICAgIG5hbWU9XCJtYXRNYWlsT3V0bGluZVwiXG4gICAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgKm5nSWY9XCJjb250YWN0cy5sZW5ndGhcIlxuICAgICAgICAgICAgW2hyZWZdPVwiJ21haWx0bzonICsgY29udGFjdHNbMF0uZW1haWxcIlxuICAgICAgICAgICAgY2xhc3M9XCJicmVhay1hbGwgdGV4dC1zbSBob3Zlcjp1bmRlcmxpbmVcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjb250YWN0LWVtYWlsXCJcbiAgICAgICAgICAgID57eyBjb250YWN0c1swXS5lbWFpbCB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0c1swXT8uZmlyc3ROYW1lIHx8IGNvbnRhY3RzWzBdPy5sYXN0TmFtZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LTUgIWgtNSAhdGV4dC1bMjBweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0UGVyc29uT3V0bGluZVwiXG4gICAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtbC0yXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgICAge3sgY29udGFjdHNbMF0/LmZpcnN0TmFtZSB8fCAnJyB9fVxuICAgICAgICAgICAgICB7eyBjb250YWN0c1swXT8ubGFzdE5hbWUgfHwgJycgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb250YWN0c1swXT8uYWRkcmVzc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LTUgIWgtNSAhdGV4dC1bMjBweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0TG9jYXRpb25Pbk91dGxpbmVcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbWwtMlwiPlxuICAgICAgICAgICAgPHAgKm5nRm9yPVwibGV0IGFkZHJlc3NQYXJ0IG9mIGFkZHJlc3NcIiBjbGFzcz1cInRleHQtc21cIj5cbiAgICAgICAgICAgICAge3sgYWRkcmVzc1BhcnQgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from
2
2
  import { DateService, getTemporalRangeUnion } from '../../../../../../libs/util/shared/src';
3
3
  import { MarkdownParserComponent } from '../markdown-parser/markdown-parser.component';
4
4
  import { ExpandablePanelComponent, MaxLinesComponent, } from '../../../../../../libs/ui/layout/src';
5
- import { TranslateModule } from '@ngx-translate/core';
5
+ import { TranslateDirective, TranslatePipe } from '@ngx-translate/core';
6
6
  import { BadgeComponent, CopyTextButtonComponent, } from '../../../../../../libs/ui/inputs/src';
7
7
  import { ContentGhostComponent } from '../content-ghost/content-ghost.component';
8
8
  import { NgIcon, provideIcons } from '@ng-icons/core';
@@ -11,11 +11,10 @@ import { matMailOutline } from '@ng-icons/material-icons/outline';
11
11
  import { ThumbnailComponent } from '../thumbnail/thumbnail.component';
12
12
  import { GnUiLinkifyDirective } from './linkify.directive';
13
13
  import { CommonModule } from '@angular/common';
14
- import { MapContainerComponent, SpatialExtentComponent, } from '../../../../../../libs/ui/map/src';
14
+ import { SpatialExtentComponent } from '../../../../../../libs/ui/map/src';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "../../../../../../libs/util/shared/src";
17
17
  import * as i2 from "@angular/common";
18
- import * as i3 from "@ngx-translate/core";
19
18
  export class MetadataInfoComponent {
20
19
  constructor(dateService) {
21
20
  this.dateService = dateService;
@@ -90,7 +89,7 @@ export class MetadataInfoComponent {
90
89
  return this.dateService.formatDateTime(date);
91
90
  }
92
91
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
92
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
94
93
  provideIcons({
95
94
  matOpenInNew,
96
95
  matMailOutline,
@@ -101,7 +100,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
101
100
  type: Component,
102
101
  args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
103
102
  CommonModule,
104
- TranslateModule,
103
+ TranslateDirective,
104
+ TranslatePipe,
105
105
  MarkdownParserComponent,
106
106
  ExpandablePanelComponent,
107
107
  BadgeComponent,
@@ -111,7 +111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
111
111
  CopyTextButtonComponent,
112
112
  NgIcon,
113
113
  GnUiLinkifyDirective,
114
- MapContainerComponent,
115
114
  SpatialExtentComponent,
116
115
  ], viewProviders: [
117
116
  provideIcons({
@@ -126,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
126
125
  }], keyword: [{
127
126
  type: Output
128
127
  }] } });
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtaW5mby9tZXRhZGF0YS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1pbmZvL21ldGFkYXRhLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFLdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFBO0FBQ3RGLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsaUJBQWlCLEdBQ2xCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3JELE9BQU8sRUFDTCxjQUFjLEVBQ2QsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUE7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFB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QUFLO2dCQUNJLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBLZXl3b3JkLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBEYXRlU2VydmljZSwgZ2V0VGVtcG9yYWxSYW5nZVVuaW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBNYXJrZG93blBhcnNlckNvbXBvbmVudCB9IGZyb20gJy4uL21hcmtkb3duLXBhcnNlci9tYXJrZG93bi1wYXJzZXIuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgRXhwYW5kYWJsZVBhbmVsQ29tcG9uZW50LFxuICBNYXhMaW5lc0NvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7XG4gIEJhZGdlQ29tcG9uZW50LFxuICBDb3B5VGV4dEJ1dHRvbkNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgQ29udGVudEdob3N0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29udGVudC1naG9zdC9jb250ZW50LWdob3N0LmNvbXBvbmVudCdcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBtYXRPcGVuSW5OZXcgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5pbXBvcnQgeyBtYXRNYWlsT3V0bGluZSB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9vdXRsaW5lJ1xuaW1wb3J0IHsgVGh1bWJuYWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vdGh1bWJuYWlsL3RodW1ibmFpbC5jb21wb25lbnQnXG5pbXBvcnQgeyBHblVpTGlua2lmeURpcmVjdGl2ZSB9IGZyb20gJy4vbGlua2lmeS5kaXJlY3RpdmUnXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIE1hcENvbnRhaW5lckNvbXBvbmVudCxcbiAgU3BhdGlhbEV4dGVudENvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9tYXAvc3JjJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1tZXRhZGF0YS1pbmZvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldGFkYXRhLWluZm8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tZXRhZGF0YS1pbmZvLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50LFxuICAgIEV4cGFuZGFibGVQYW5lbENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBDb250ZW50R2hvc3RDb21wb25lbnQsXG4gICAgVGh1bWJuYWlsQ29tcG9uZW50LFxuICAgIE1heExpbmVzQ29tcG9uZW50LFxuICAgIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxuICAgIE5nSWNvbixcbiAgICBHblVpTGlua2lmeURpcmVjdGl2ZSxcbiAgICBNYXBDb250YWluZXJDb21wb25lbnQsXG4gICAgU3BhdGlhbEV4dGVudENvbXBvbmVudCxcbiAgXSxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHByb3ZpZGVJY29ucyh7XG4gICAgICBtYXRPcGVuSW5OZXcsXG4gICAgICBtYXRNYWlsT3V0bGluZSxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFJbmZvQ29tcG9uZW50IHtcbiAgQElucHV0KCkgbWV0YWRhdGE6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cbiAgQElucHV0KCkgaW5jb21wbGV0ZTogYm9vbGVhblxuICBAT3V0cHV0KCkga2V5d29yZCA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5d29yZD4oKVxuICB1cGRhdGVkVGltZXM6IG51bWJlclxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVTZXJ2aWNlKSB7fVxuXG4gIGdldCBoYXNVc2FnZSgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5tZXRhZGF0YS5leHRyYXM/LmlzT3BlbkRhdGEgPT09IHRydWUgfHxcbiAgICAgICh0aGlzLm1ldGFkYXRhLmxlZ2FsQ29uc3RyYWludHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5sZWdhbENvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHx8XG4gICAgICAodGhpcy5tZXRhZGF0YS5vdGhlckNvbnN0cmFpbnRzPy5sZW5ndGggPiAwICYmXG4gICAgICAgIHRoaXMub3RoZXJDb25zdHJhaW50cy5sZW5ndGggPiAwKSB8fFxuICAgICAgKHRoaXMubWV0YWRhdGEubGljZW5zZXM/Lmxlbmd0aCA+IDAgJiYgdGhpcy5saWNlbnNlcy5sZW5ndGggPiAwKVxuICAgIClcbiAgfVxuXG4gIGdldCBsZWdhbENvbnN0cmFpbnRzKCkge1xuICAgIGxldCBhcnJheSA9IFtdXG4gICAgaWYgKHRoaXMubWV0YWRhdGEubGVnYWxDb25zdHJhaW50cz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBsaWNlbnNlc1RleHRzID0gdGhpcy5tZXRhZGF0YS5saWNlbnNlcy5tYXAoXG4gICAgICAgIChsaWNlbnNlKSA9PiBsaWNlbnNlLnRleHRcbiAgICAgIClcbiAgICAgIGFycmF5ID0gYXJyYXkuY29uY2F0KFxuICAgICAgICB0aGlzLm1ldGFkYXRhLmxlZ2FsQ29uc3RyYWludHNcbiAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLnRleHQgJiYgIWxpY2Vuc2VzVGV4dHMuaW5jbHVkZXMoYy50ZXh0KSlcbiAgICAgICAgICAubWFwKChjKSA9PiBjLnRleHQpXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhcnJheVxuICB9XG5cbiAgZ2V0IG90aGVyQ29uc3RyYWludHMoKSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBpZiAodGhpcy5tZXRhZGF0YS5vdGhlckNvbnN0cmFpbnRzPy5sZW5ndGgpIHtcbiAgICAgIGFycmF5ID0gYXJyYXkuY29uY2F0KFxuICAgICAgICB0aGlzLm1ldGFkYXRhLm90aGVyQ29uc3RyYWludHMuZmlsdGVyKChjKSA9PiBjLnRleHQpLm1hcCgoYykgPT4gYy50ZXh0KVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlcbiAgfVxuXG4gIGdldCBsaWNlbnNlcygpOiB7IHRleHQ6IHN0cmluZzsgdXJsOiBzdHJpbmcgfVtdIHtcbiAgICBsZXQgYXJyYXkgPSBbXVxuICAgIGlmICh0aGlzLm1ldGFkYXRhLmxpY2Vuc2VzPy5sZW5ndGgpIHtcbiAgICAgIGFycmF5ID0gYXJyYXkuY29uY2F0KFxuICAgICAgICB0aGlzLm1ldGFkYXRhLmxpY2Vuc2VzXG4gICAgICAgICAgLmZpbHRlcigoYykgPT4gYy50ZXh0KVxuICAgICAgICAgIC5tYXAoKGMpID0+ICh7IHRleHQ6IGMudGV4dCwgdXJsOiBjLnVybCB9KSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cblxuICBnZXQgdXBkYXRlRnJlcXVlbmN5KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMubWV0YWRhdGEudXBkYXRlRnJlcXVlbmN5IGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICB0aGlzLnVwZGF0ZWRUaW1lcyA9IHRoaXMubWV0YWRhdGEudXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lc1xuICAgICAgcmV0dXJuIGBkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS4ke3RoaXMubWV0YWRhdGEudXBkYXRlRnJlcXVlbmN5LnBlcn1gXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3kgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gYGRvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LiR7dGhpcy5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3l9YFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgZ2V0IHRlbXBvcmFsRXh0ZW50KCk6IHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgdGVtcG9yYWxFeHRlbnRzID1cbiAgICAgIHRoaXMubWV0YWRhdGEua2luZCA9PT0gJ2RhdGFzZXQnID8gdGhpcy5tZXRhZGF0YS50ZW1wb3JhbEV4dGVudHMgOiBbXVxuICAgIHJldHVybiBnZXRUZW1wb3JhbFJhbmdlVW5pb24odGVtcG9yYWxFeHRlbnRzLCB0aGlzLmRhdGVTZXJ2aWNlKVxuICB9XG5cbiAgZ2V0IHNob3duT3JnYW5pemF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLm93bmVyT3JnYW5pemF0aW9uXG4gIH1cblxuICBnZXQgcmVzb3VyY2VDb250YWN0KCkge1xuICAgIHJldHVybiB0aGlzLm1ldGFkYXRhLmNvbnRhY3RzRm9yUmVzb3VyY2U/LlswXVxuICB9XG5cbiAgZmllbGRSZWFkeShwcm9wTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuICF0aGlzLmluY29tcGxldGUgfHwgcHJvcE5hbWUgaW4gdGhpcy5tZXRhZGF0YVxuICB9XG5cbiAgb25LZXl3b3JkQ2xpY2soa2V5d29yZDogS2V5d29yZCkge1xuICAgIHRoaXMua2V5d29yZC5lbWl0KGtleXdvcmQpXG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdERhdGUoZGF0ZSlcbiAgfVxuXG4gIGZvcm1hdERhdGVUaW1lKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmZvcm1hdERhdGVUaW1lKGRhdGUpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi02IG1kLWRlc2NyaXB0aW9uIHNtOm1iLTQgc206cHItMTZcIj5cbiAgPGduLXVpLWNvbnRlbnQtZ2hvc3RcbiAgICBnaG9zdENsYXNzPVwiaC1bMTc4cHhdXCJcbiAgICBbc2hvd0NvbnRlbnRdPVwiZmllbGRSZWFkeSgnYWJzdHJhY3QnKVwiXG4gID5cbiAgICA8Z24tdWktbWF4LWxpbmVzIFttYXhMaW5lc109XCI2XCIgKm5nSWY9XCJtZXRhZGF0YS5hYnN0cmFjdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTZcIj5cbiAgICAgICAgPGduLXVpLW1hcmtkb3duLXBhcnNlclxuICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJtZXRhZGF0YS5hYnN0cmFjdFwiXG4gICAgICAgID48L2duLXVpLW1hcmtkb3duLXBhcnNlcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZ24tdWktbWF4LWxpbmVzPlxuICA8L2duLXVpLWNvbnRlbnQtZ2hvc3Q+XG5cbiAgPHBcbiAgICBjbGFzcz1cIm10LTYgbWItMyBmb250LW1lZGl1bSB0ZXh0LWJsYWNrIHRleHQtc21cIlxuICAgIHRyYW5zbGF0ZVxuICAgICpuZ0lmPVwiIWZpZWxkUmVhZHkoJ2tleXdvcmRzJykgfHwgbWV0YWRhdGEua2V5d29yZHM/Lmxlbmd0aFwiXG4gID5cbiAgICByZWNvcmQubWV0YWRhdGEua2V5d29yZHNcbiAgPC9wPlxuXG4gIDxnbi11aS1jb250ZW50LWdob3N0XG4gICAgZ2hvc3RDbGFzcz1cImgtWzMxcHhdIHctMy80XCJcbiAgICBbc2hvd0NvbnRlbnRdPVwiZmllbGRSZWFkeSgna2V5d29yZHMnKVwiXG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEua2V5d29yZHM/Lmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGFkYXRhLWluZm8ta2V5d29yZHMgc206cGItNCBmbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxuICAgICAgICA8Z24tdWktYmFkZ2VcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1ibG9jayBsb3dlcmNhc2VcIlxuICAgICAgICAgIChjbGljayk9XCJvbktleXdvcmRDbGljayhrZXl3b3JkKVwiXG4gICAgICAgICAgW2NsaWNrYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5d29yZCBvZiBtZXRhZGF0YS5rZXl3b3Jkc1wiXG4gICAgICAgICAgPnt7IGtleXdvcmQubGFiZWwgfX08L2duLXVpLWJhZGdlXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2duLXVpLWNvbnRlbnQtZ2hvc3Q+XG48L2Rpdj5cblxuPGduLXVpLWV4cGFuZGFibGUtcGFuZWxcbiAgKm5nSWY9XCJcbiAgICBtZXRhZGF0YS5saWNlbnNlcyB8fFxuICAgIG1ldGFkYXRhLmxlZ2FsQ29uc3RyYWludHMgfHxcbiAgICBtZXRhZGF0YS5zZWN1cml0eUNvbnN0cmFpbnRzIHx8XG4gICAgbWV0YWRhdGEub3RoZXJDb25zdHJhaW50c1xuICBcIlxuICBbdGl0bGVdPVwiJ3JlY29yZC5tZXRhZGF0YS51c2FnZScgfCB0cmFuc2xhdGVcIlxuICBkYXRhLXRlc3Q9XCJ1c2FnZS1wYW5lbFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC1bMTBweF0gbXItNCBweS1bMTJweF0gcm91bmRlZCB0ZXh0LWdyYXktOTAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGljZW5zZSBvZiBsaWNlbnNlc1wiPlxuICAgICAgPGRpdiAqbmdJZj1cImxpY2Vuc2UudXJsOyBlbHNlIG5vVXJsXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBbaHJlZl09XCJsaWNlbnNlLnVybFwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIGhvdmVyOnVuZGVybGluZSB0cmFuc2l0aW9uLWFsbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBsaWNlbnNlLnRleHQgfX1cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy1bMTJweF0gIWgtWzEycHhdICF0ZXh0LVsxMnB4XSBvcGFjaXR5LTc1IHNocmluay0wXCJcbiAgICAgICAgICAgIG5hbWU9XCJtYXRPcGVuSW5OZXdcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICNub1VybD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcHJpbWFyeVwiIGduVWlMaW5raWZ5PlxuICAgICAgICAgIHt7IGxpY2Vuc2UudGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxlZ2FsQ29uc3RyYWludHMubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItNlwiPlxuICAgICAgICA8Z24tdWktbWFya2Rvd24tcGFyc2VyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnN0cmFpbnQgb2YgbGVnYWxDb25zdHJhaW50c1wiXG4gICAgICAgICAgW3RleHRDb250ZW50XT1cImNvbnN0cmFpbnRcIlxuICAgICAgICA+XG4gICAgICAgIDwvZ24tdWktbWFya2Rvd24tcGFyc2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm90aGVyQ29uc3RyYWludHMubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGduVWlMaW5raWZ5ICpuZ0Zvcj1cImxldCBjb25zdHJhaW50IG9mIG90aGVyQ29uc3RyYWludHNcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBjbGFzcz1cImZvbnQtbWVkaXVtIHRleHQtYmxhY2sgdGV4dC1zbSBtYi1bMnB4XSBtdC1bMTZweF1cIlxuICAgICAgICA+XG4gICAgICAgICAgcmVjb3JkLm1ldGFkYXRhLm90aGVyQ29uc3RyYWludHNcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItNlwiPlxuICAgICAgICAgIDxnbi11aS1tYXJrZG93bi1wYXJzZXIgW3RleHRDb250ZW50XT1cImNvbnN0cmFpbnRcIj5cbiAgICAgICAgICA8L2duLXVpLW1hcmtkb3duLXBhcnNlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxzcGFuIGNsYXNzPVwibm9Vc2FnZVwiICpuZ0lmPVwiIWhhc1VzYWdlXCI+XG4gICAgICB7eyAncmVjb3JkLm1ldGFkYXRhLm5vVXNhZ2UnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvZ24tdWktZXhwYW5kYWJsZS1wYW5lbD5cbjxnbi11aS1leHBhbmRhYmxlLXBhbmVsXG4gICpuZ0lmPVwiXG4gICAgKG1ldGFkYXRhLmtpbmQgPT09ICdkYXRhc2V0JyAmJiBtZXRhZGF0YS5saW5lYWdlKSB8fFxuICAgIG1ldGFkYXRhLnJlc291cmNlVXBkYXRlZCB8fFxuICAgIG1ldGFkYXRhLnVwZGF0ZUZyZXF1ZW5jeSB8fFxuICAgIChtZXRhZGF0YS5raW5kID09PSAnZGF0YXNldCcgJiYgbWV0YWRhdGEuc3RhdHVzKVxuICBcIlxuICBbdGl0bGVdPVwiJ3JlY29yZC5tZXRhZGF0YS5kZXRhaWxzJyB8IHRyYW5zbGF0ZVwiXG4gIGRhdGEtdGVzdD1cImRldGFpbHMtcGFuZWxcIlxuPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEubGluZWFnZVwiIGNsYXNzPVwidGV4dC1ncmF5LTkwMCBmbGV4IGZsZXgtY29sIG10LTQgZ2FwLTJcIj5cbiAgICA8cCBjbGFzcz1cIndoaXRlc3BhY2UtcHJlLWxpbmUgYnJlYWstd29yZHMgdGV4dC1ncmF5LTkwMFwiIGduVWlMaW5raWZ5PlxuICAgICAge3sgbWV0YWRhdGEubGluZWFnZSB9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC02IG10LTUgbWItOFwiICpuZ0lmPVwicmVzb3VyY2VDb250YWN0XCI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJyZXNvdXJjZUNvbnRhY3Qub3JnYW5pemF0aW9uPy5sb2dvVXJsPy5ocmVmXCJcbiAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLXNvbGlkIGJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1tZCBiZy13aGl0ZSBoLTMyIG92ZXJmbG93LWhpZGRlblwiXG4gICAgPlxuICAgICAgPGduLXVpLXRodW1ibmFpbFxuICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGgtZnVsbCB3LWZ1bGxcIlxuICAgICAgICBbdGh1bWJuYWlsVXJsXT1cInJlc291cmNlQ29udGFjdC5vcmdhbml6YXRpb24ubG9nb1VybC5ocmVmXCJcbiAgICAgICAgZml0PVwiY29udGFpblwiXG4gICAgICA+PC9nbi11aS10aHVtYm5haWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTFcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEucHJvZHVjZXI8L3A+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtdGl0bGUgdGV4dC0yMSBtci0yIGN1cnNvci1wb2ludGVyIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICAgIGRhdGEtY3k9XCJvcmdhbml6YXRpb24tbmFtZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHJlc291cmNlQ29udGFjdC5vcmdhbml6YXRpb24/Lm5hbWUgfX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInJlc291cmNlQ29udGFjdC5vcmdhbml6YXRpb24/LndlYnNpdGVcIj5cbiAgICAgICAgPGFcbiAgICAgICAgICBbaHJlZl09XCJyZXNvdXJjZUNvbnRhY3Qub3JnYW5pemF0aW9uLndlYnNpdGVcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgY2xhc3M9XCJjb250YWN0LXdlYnNpdGUgdGV4dC1wcmltYXJ5IHRleHQtc20gY3Vyc29yLXBvaW50ZXIgaG92ZXI6dW5kZXJsaW5lIHRyYW5zaXRpb24tYWxsXCJcbiAgICAgICAgICA+e3sgcmVzb3VyY2VDb250YWN0Lm9yZ2FuaXphdGlvbi53ZWJzaXRlIH19XG4gICAgICAgICAgPG5nLWljb25cbiAgICAgICAgICAgIGNsYXNzPVwiIXctWzEycHhdICFoLVsxMnB4XSAhdGV4dC1bMTJweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0T3BlbkluTmV3XCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJyZXNvdXJjZUNvbnRhY3QuZW1haWxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy01ICFoLTUgIXRleHQtWzIwcHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdE1haWxPdXRsaW5lXCJcbiAgICAgICAgICA+PC9uZy1pY29uPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICAqbmdJZj1cInJlc291cmNlQ29udGFjdC5lbWFpbFwiXG4gICAgICAgICAgICBbaHJlZl09XCInbWFpbHRvOicgKyByZXNvdXJjZUNvbnRhY3QuZW1haWxcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGhvdmVyOnVuZGVybGluZSBtbC0yXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICBkYXRhLWN5PVwiY29udGFjdC1lbWFpbFwiXG4gICAgICAgICAgICA+e3sgcmVzb3VyY2VDb250YWN0Py5lbWFpbCB9fTwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInB5LTYgcHgtNiByb3VuZGVkIGJnLWdyYXktMTAwIGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXktNiBnYXAteC1bMjBweF0gdGV4dC1ncmF5LTcwMFwiXG4gID5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEucmVzb3VyY2VDcmVhdGVkXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmNyZWF0aW9uPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW0gbXQtMVwiPlxuICAgICAgICB7eyBmb3JtYXREYXRlKG1ldGFkYXRhLnJlc291cmNlQ3JlYXRlZCkgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEucmVzb3VyY2VQdWJsaXNoZWRcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEucHVibGljYXRpb248L3A+XG4gICAgICA8cCBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bSBtdC0xXCI+XG4gICAgICAgIHt7IGZvcm1hdERhdGUobWV0YWRhdGEucmVzb3VyY2VQdWJsaXNoZWQpIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInVwZGF0ZUZyZXF1ZW5jeVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3k8L3A+XG4gICAgICA8cFxuICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bSBtdC0xIHVwZGF0ZUZyZXF1ZW5jeVwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IHVwZGF0ZWRUaW1lcyB9XCJcbiAgICAgID5cbiAgICAgICAge3sgdXBkYXRlRnJlcXVlbmN5IH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm1ldGFkYXRhLm90aGVyTGFuZ3VhZ2VzPy5sZW5ndGhcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBtYi0xXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5sYW5ndWFnZXM8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSBmbGV4LXdyYXBcIj5cbiAgICAgICAgPHBcbiAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bVwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIG1ldGFkYXRhLm90aGVyTGFuZ3VhZ2VzXCJcbiAgICAgICAgPlxuICAgICAgICAgIGxhbmd1YWdlLnt7IGxhbmd1YWdlIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wb3JhbEV4dGVudFwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50ZW1wb3JhbEV4dGVudDwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0xIG1iLTEgdGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtXCI+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJ0ZW1wb3JhbEV4dGVudC5zdGFydCAmJiB0ZW1wb3JhbEV4dGVudC5lbmRcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie1xuICAgICAgICAgICAgc3RhcnQ6IHRlbXBvcmFsRXh0ZW50LnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB0ZW1wb3JhbEV4dGVudC5lbmQsXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICByZWNvcmQubWV0YWRhdGEudGVtcG9yYWxFeHRlbnQuZnJvbURhdGVUb0RhdGVcbiAgICAgICAgPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwidGVtcG9yYWxFeHRlbnQuc3RhcnQgJiYgIXRlbXBvcmFsRXh0ZW50LmVuZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IHN0YXJ0OiB0ZW1wb3JhbEV4dGVudC5zdGFydCB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHJlY29yZC5tZXRhZGF0YS50ZW1wb3JhbEV4dGVudC5zaW5jZURhdGVcbiAgICAgICAgPC9wPlxuICAgICAgICA8cFxuICAgICAgICAgICpuZ0lmPVwiIXRlbXBvcmFsRXh0ZW50LnN0YXJ0ICYmIHRlbXBvcmFsRXh0ZW50LmVuZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGVuZDogdGVtcG9yYWxFeHRlbnQuZW5kIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgcmVjb3JkLm1ldGFkYXRhLnRlbXBvcmFsRXh0ZW50LnVudGlsRGF0ZVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2duLXVpLWV4cGFuZGFibGUtcGFuZWw+XG48Z24tdWktZXhwYW5kYWJsZS1wYW5lbFxuICAqbmdJZj1cIm1ldGFkYXRhLmtpbmQgIT09ICdkYXRhc2V0JyAmJiBtZXRhZGF0YS5zcGF0aWFsRXh0ZW50c1wiXG4gIFt0aXRsZV09XCInc2VydmljZS5tZXRhZGF0YS5zcGF0aWFsRXh0ZW50JyB8IHRyYW5zbGF0ZVwiXG4gIGRhdGEtdGVzdD1cInNwYXRpYWwtZXh0ZW50LXBhbmVsXCJcbj5cbiAgPGduLXVpLXNwYXRpYWwtZXh0ZW50XG4gICAgY2xhc3M9XCJmbGV4IGgtWzI3MXB4XSB3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWdyYXktMTAwIG10LTMgbWItNlwiXG4gICAgW3NwYXRpYWxFeHRlbnRzXT1cIm1ldGFkYXRhLnNwYXRpYWxFeHRlbnRzXCJcbiAgPjwvZ24tdWktc3BhdGlhbC1leHRlbnQ+XG48L2duLXVpLWV4cGFuZGFibGUtcGFuZWw+XG48Z24tdWktZXhwYW5kYWJsZS1wYW5lbFxuICAqbmdJZj1cIm1ldGFkYXRhLmxhbmRpbmdQYWdlXCJcbiAgW3RpdGxlXT1cIidzZXJ2aWNlLm1ldGFkYXRhLm90aGVyJyB8IHRyYW5zbGF0ZVwiXG4gIGRhdGEtdGVzdD1cIm90aGVyLXBhbmVsXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTQgbXItNCBweS01IHJvdW5kZWQgdGV4dC1ncmF5LTcwMFwiPlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5yZWNvcmRVcGRhdGVkXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnVwZGF0ZWRPbjwvcD5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtXCI+XG4gICAgICAgIHt7IG1ldGFkYXRhLnJlY29yZFVwZGF0ZWQgJiYgZm9ybWF0RGF0ZVRpbWUobWV0YWRhdGEucmVjb3JkVXBkYXRlZCkgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEubGFuZGluZ1BhZ2VcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuc2hlZXQ8L3A+XG4gICAgICA8cCBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bVwiIHRyYW5zbGF0ZT5cbiAgICAgICAgPGEgW2hyZWZdPVwibWV0YWRhdGEubGFuZGluZ1BhZ2VcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJyZWFrLWFsbFwiIGduVWlMaW5raWZ5Pnt7IG1ldGFkYXRhLmxhbmRpbmdQYWdlIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm1ldGFkYXRhLm93bmVyT3JnYW5pemF0aW9uXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLm93bmVyPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW1cIj5cbiAgICAgICAge3sgbWV0YWRhdGEub3duZXJPcmdhbml6YXRpb24ubmFtZSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS51bmlxdWVJZGVudGlmaWVyXCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnVuaXF1ZUlkPC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgY29udGVudC1hbGlnbiBpdGVtcy1lbmQgZ2FwLTFcIj5cbiAgICAgICAgPGduLXVpLWNvcHktdGV4dC1idXR0b25cbiAgICAgICAgICBbdGV4dF09XCJtZXRhZGF0YS51bmlxdWVJZGVudGlmaWVyXCJcbiAgICAgICAgICBbdG9vbHRpcFRleHRdPVwiJ3Rvb2x0aXAuaWQuY29weScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtkaXNwbGF5VGV4dF09XCJmYWxzZVwiXG4gICAgICAgID48L2duLXVpLWNvcHktdGV4dC1idXR0b24+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtXCI+XG4gICAgICAgICAge3sgbWV0YWRhdGEudW5pcXVlSWRlbnRpZmllciB9fVxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEudG9waWNzPy5sZW5ndGhcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBtYi0xXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS50b3BpY3M8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwic206cGItNCBzbTpwci0xNlwiPlxuICAgICAgICA8Z24tdWktYmFkZ2VcbiAgICAgICAgICBbY2xpY2thYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1ibG9jayBtci0yIG1iLTIgbG93ZXJjYXNlXCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdG9waWMgb2YgbWV0YWRhdGEudG9waWNzXCJcbiAgICAgICAgICA+e3sgdG9waWMgfX08L2duLXVpLWJhZGdlXG4gICAgICAgID5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZ24tdWktZXhwYW5kYWJsZS1wYW5lbD5cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtaW5mby9tZXRhZGF0YS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1pbmZvL21ldGFkYXRhLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFLdEIsT0FBTyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFBO0FBQ3RGLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsaUJBQWlCLEdBQ2xCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3ZFLE9BQU8sRUFDTCxjQUFjLEVBQ2QsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUE7QUFDN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUE7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFBO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTs7OztBQThCMUUsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUhsQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQTtJQUdBLENBQUM7SUFFaEQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsS0FBSyxJQUFJO1lBQ3pDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sR0FBRyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNuQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQ2pFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDOUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzFCLENBQUE7WUFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7aUJBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDdEIsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDZCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDM0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3hFLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNuQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO2lCQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7aUJBQ3JCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM5QyxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxZQUFZLE1BQU0sRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFBO1lBQzlELE9BQU8saUNBQWlDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdFLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0QsT0FBTyxpQ0FBaUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN6RSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFDdkUsT0FBTyxxQkFBcUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2pFLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUE7SUFDeEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RELENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZ0I7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUMsQ0FBQzsrR0EvRlUscUJBQXFCO21HQUFyQixxQkFBcUIsNEtDNURsQyxxaVVBc1NBLDRmRC9QSSxZQUFZLGdRQUNaLGtCQUFrQiw2R0FDbEIsYUFBYSxrREFDYix1QkFBdUIsNEdBQ3ZCLHdCQUF3QixnSEFDeEIsY0FBYyw2SEFDZCxxQkFBcUIsdUdBQ3JCLGtCQUFrQiw0SEFDbEIsaUJBQWlCLGtGQUNqQix1QkFBdUIsMkhBQ3ZCLE1BQU0sNkdBQ04sb0JBQW9CLDBEQUNwQixzQkFBc0Isa0ZBRVQ7WUFDYixZQUFZLENBQUM7Z0JBQ1gsWUFBWTtnQkFDWixjQUFjO2FBQ2YsQ0FBQztTQUNIOzs0RkFFVSxxQkFBcUI7a0JBNUJqQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsYUFBYTt3QkFDYix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix1QkFBdUI7d0JBQ3ZCLE1BQU07d0JBQ04sb0JBQW9CO3dCQUNwQixzQkFBc0I7cUJBQ3ZCLGlCQUNjO3dCQUNiLFlBQVksQ0FBQzs0QkFDWCxZQUFZOzRCQUNaLGNBQWM7eUJBQ2YsQ0FBQztxQkFDSDtnRkFHUSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIEtleXdvcmQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IERhdGVTZXJ2aWNlLCBnZXRUZW1wb3JhbFJhbmdlVW5pb24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IE1hcmtkb3duUGFyc2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vbWFya2Rvd24tcGFyc2VyL21hcmtkb3duLXBhcnNlci5jb21wb25lbnQnXG5pbXBvcnQge1xuICBFeHBhbmRhYmxlUGFuZWxDb21wb25lbnQsXG4gIE1heExpbmVzQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQgeyBUcmFuc2xhdGVEaXJlY3RpdmUsIFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHtcbiAgQmFkZ2VDb21wb25lbnQsXG4gIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBDb250ZW50R2hvc3RDb21wb25lbnQgfSBmcm9tICcuLi9jb250ZW50LWdob3N0L2NvbnRlbnQtZ2hvc3QuY29tcG9uZW50J1xuaW1wb3J0IHsgTmdJY29uLCBwcm92aWRlSWNvbnMgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IG1hdE9wZW5Jbk5ldyB9IGZyb20gJ0BuZy1pY29ucy9tYXRlcmlhbC1pY29ucy9iYXNlbGluZSdcbmltcG9ydCB7IG1hdE1haWxPdXRsaW5lIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL291dGxpbmUnXG5pbXBvcnQgeyBUaHVtYm5haWxDb21wb25lbnQgfSBmcm9tICcuLi90aHVtYm5haWwvdGh1bWJuYWlsLmNvbXBvbmVudCdcbmltcG9ydCB7IEduVWlMaW5raWZ5RGlyZWN0aXZlIH0gZnJvbSAnLi9saW5raWZ5LmRpcmVjdGl2ZSdcblxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgU3BhdGlhbEV4dGVudENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbWFwL3NyYydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWV0YWRhdGEtaW5mbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXRhZGF0YS1pbmZvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWV0YWRhdGEtaW5mby5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZURpcmVjdGl2ZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIE1hcmtkb3duUGFyc2VyQ29tcG9uZW50LFxuICAgIEV4cGFuZGFibGVQYW5lbENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBDb250ZW50R2hvc3RDb21wb25lbnQsXG4gICAgVGh1bWJuYWlsQ29tcG9uZW50LFxuICAgIE1heExpbmVzQ29tcG9uZW50LFxuICAgIENvcHlUZXh0QnV0dG9uQ29tcG9uZW50LFxuICAgIE5nSWNvbixcbiAgICBHblVpTGlua2lmeURpcmVjdGl2ZSxcbiAgICBTcGF0aWFsRXh0ZW50Q29tcG9uZW50LFxuICBdLFxuICB2aWV3UHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIG1hdE9wZW5Jbk5ldyxcbiAgICAgIG1hdE1haWxPdXRsaW5lLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YUluZm9Db21wb25lbnQge1xuICBASW5wdXQoKSBtZXRhZGF0YTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuICBASW5wdXQoKSBpbmNvbXBsZXRlOiBib29sZWFuXG4gIEBPdXRwdXQoKSBrZXl3b3JkID0gbmV3IEV2ZW50RW1pdHRlcjxLZXl3b3JkPigpXG4gIHVwZGF0ZWRUaW1lczogbnVtYmVyXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZVNlcnZpY2UpIHt9XG5cbiAgZ2V0IGhhc1VzYWdlKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm1ldGFkYXRhLmV4dHJhcz8uaXNPcGVuRGF0YSA9PT0gdHJ1ZSB8fFxuICAgICAgKHRoaXMubWV0YWRhdGEubGVnYWxDb25zdHJhaW50cz8ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0aGlzLmxlZ2FsQ29uc3RyYWludHMubGVuZ3RoID4gMCkgfHxcbiAgICAgICh0aGlzLm1ldGFkYXRhLm90aGVyQ29uc3RyYWludHM/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5vdGhlckNvbnN0cmFpbnRzLmxlbmd0aCA+IDApIHx8XG4gICAgICAodGhpcy5tZXRhZGF0YS5saWNlbnNlcz8ubGVuZ3RoID4gMCAmJiB0aGlzLmxpY2Vuc2VzLmxlbmd0aCA+IDApXG4gICAgKVxuICB9XG5cbiAgZ2V0IGxlZ2FsQ29uc3RyYWludHMoKSB7XG4gICAgbGV0IGFycmF5ID0gW11cbiAgICBpZiAodGhpcy5tZXRhZGF0YS5sZWdhbENvbnN0cmFpbnRzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGxpY2Vuc2VzVGV4dHMgPSB0aGlzLm1ldGFkYXRhLmxpY2Vuc2VzLm1hcChcbiAgICAgICAgKGxpY2Vuc2UpID0+IGxpY2Vuc2UudGV4dFxuICAgICAgKVxuICAgICAgYXJyYXkgPSBhcnJheS5jb25jYXQoXG4gICAgICAgIHRoaXMubWV0YWRhdGEubGVnYWxDb25zdHJhaW50c1xuICAgICAgICAgIC5maWx0ZXIoKGMpID0+IGMudGV4dCAmJiAhbGljZW5zZXNUZXh0cy5pbmNsdWRlcyhjLnRleHQpKVxuICAgICAgICAgIC5tYXAoKGMpID0+IGMudGV4dClcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cblxuICBnZXQgb3RoZXJDb25zdHJhaW50cygpIHtcbiAgICBsZXQgYXJyYXkgPSBbXVxuICAgIGlmICh0aGlzLm1ldGFkYXRhLm90aGVyQ29uc3RyYWludHM/Lmxlbmd0aCkge1xuICAgICAgYXJyYXkgPSBhcnJheS5jb25jYXQoXG4gICAgICAgIHRoaXMubWV0YWRhdGEub3RoZXJDb25zdHJhaW50cy5maWx0ZXIoKGMpID0+IGMudGV4dCkubWFwKChjKSA9PiBjLnRleHQpXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhcnJheVxuICB9XG5cbiAgZ2V0IGxpY2Vuc2VzKCk6IHsgdGV4dDogc3RyaW5nOyB1cmw6IHN0cmluZyB9W10ge1xuICAgIGxldCBhcnJheSA9IFtdXG4gICAgaWYgKHRoaXMubWV0YWRhdGEubGljZW5zZXM/Lmxlbmd0aCkge1xuICAgICAgYXJyYXkgPSBhcnJheS5jb25jYXQoXG4gICAgICAgIHRoaXMubWV0YWRhdGEubGljZW5zZXNcbiAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLnRleHQpXG4gICAgICAgICAgLm1hcCgoYykgPT4gKHsgdGV4dDogYy50ZXh0LCB1cmw6IGMudXJsIH0pKVxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlcbiAgfVxuXG4gIGdldCB1cGRhdGVGcmVxdWVuY3koKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3kgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIHRoaXMudXBkYXRlZFRpbWVzID0gdGhpcy5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzXG4gICAgICByZXR1cm4gYGRvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LiR7dGhpcy5tZXRhZGF0YS51cGRhdGVGcmVxdWVuY3kucGVyfWBcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLm1ldGFkYXRhLnVwZGF0ZUZyZXF1ZW5jeSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBgZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuJHt0aGlzLm1ldGFkYXRhLnVwZGF0ZUZyZXF1ZW5jeX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBnZXQgdGVtcG9yYWxFeHRlbnQoKTogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9IHtcbiAgICBjb25zdCB0ZW1wb3JhbEV4dGVudHMgPVxuICAgICAgdGhpcy5tZXRhZGF0YS5raW5kID09PSAnZGF0YXNldCcgPyB0aGlzLm1ldGFkYXRhLnRlbXBvcmFsRXh0ZW50cyA6IFtdXG4gICAgcmV0dXJuIGdldFRlbXBvcmFsUmFuZ2VVbmlvbih0ZW1wb3JhbEV4dGVudHMsIHRoaXMuZGF0ZVNlcnZpY2UpXG4gIH1cblxuICBnZXQgc2hvd25Pcmdhbml6YXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGEub3duZXJPcmdhbml6YXRpb25cbiAgfVxuXG4gIGdldCByZXNvdXJjZUNvbnRhY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGEuY29udGFjdHNGb3JSZXNvdXJjZT8uWzBdXG4gIH1cblxuICBmaWVsZFJlYWR5KHByb3BOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gIXRoaXMuaW5jb21wbGV0ZSB8fCBwcm9wTmFtZSBpbiB0aGlzLm1ldGFkYXRhXG4gIH1cblxuICBvbktleXdvcmRDbGljayhrZXl3b3JkOiBLZXl3b3JkKSB7XG4gICAgdGhpcy5rZXl3b3JkLmVtaXQoa2V5d29yZClcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVNlcnZpY2UuZm9ybWF0RGF0ZShkYXRlKVxuICB9XG5cbiAgZm9ybWF0RGF0ZVRpbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVNlcnZpY2UuZm9ybWF0RGF0ZVRpbWUoZGF0ZSlcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1iLTYgbWQtZGVzY3JpcHRpb24gc206bWItNCBzbTpwci0xNlwiPlxuICA8Z24tdWktY29udGVudC1naG9zdFxuICAgIGdob3N0Q2xhc3M9XCJoLVsxNzhweF1cIlxuICAgIFtzaG93Q29udGVudF09XCJmaWVsZFJlYWR5KCdhYnN0cmFjdCcpXCJcbiAgPlxuICAgIDxnbi11aS1tYXgtbGluZXMgW21heExpbmVzXT1cIjZcIiAqbmdJZj1cIm1ldGFkYXRhLmFic3RyYWN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItNlwiPlxuICAgICAgICA8Z24tdWktbWFya2Rvd24tcGFyc2VyXG4gICAgICAgICAgW3RleHRDb250ZW50XT1cIm1ldGFkYXRhLmFic3RyYWN0XCJcbiAgICAgICAgPjwvZ24tdWktbWFya2Rvd24tcGFyc2VyPlxuICAgICAgPC9kaXY+XG4gICAgPC9nbi11aS1tYXgtbGluZXM+XG4gIDwvZ24tdWktY29udGVudC1naG9zdD5cblxuICA8cFxuICAgIGNsYXNzPVwibXQtNiBtYi0zIGZvbnQtbWVkaXVtIHRleHQtYmxhY2sgdGV4dC1zbVwiXG4gICAgdHJhbnNsYXRlXG4gICAgKm5nSWY9XCIhZmllbGRSZWFkeSgna2V5d29yZHMnKSB8fCBtZXRhZGF0YS5rZXl3b3Jkcz8ubGVuZ3RoXCJcbiAgPlxuICAgIHJlY29yZC5tZXRhZGF0YS5rZXl3b3Jkc1xuICA8L3A+XG5cbiAgPGduLXVpLWNvbnRlbnQtZ2hvc3RcbiAgICBnaG9zdENsYXNzPVwiaC1bMzFweF0gdy0zLzRcIlxuICAgIFtzaG93Q29udGVudF09XCJmaWVsZFJlYWR5KCdrZXl3b3JkcycpXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5rZXl3b3Jkcz8ubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YWRhdGEtaW5mby1rZXl3b3JkcyBzbTpwYi00IGZsZXggZmxleC13cmFwIGdhcC0yXCI+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIGxvd2VyY2FzZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uS2V5d29yZENsaWNrKGtleXdvcmQpXCJcbiAgICAgICAgICBbY2xpY2thYmxlXT1cInRydWVcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBrZXl3b3JkIG9mIG1ldGFkYXRhLmtleXdvcmRzXCJcbiAgICAgICAgICA+e3sga2V5d29yZC5sYWJlbCB9fTwvZ24tdWktYmFkZ2VcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZ24tdWktY29udGVudC1naG9zdD5cbjwvZGl2PlxuXG48Z24tdWktZXhwYW5kYWJsZS1wYW5lbFxuICAqbmdJZj1cIlxuICAgIG1ldGFkYXRhLmxpY2Vuc2VzIHx8XG4gICAgbWV0YWRhdGEubGVnYWxDb25zdHJhaW50cyB8fFxuICAgIG1ldGFkYXRhLnNlY3VyaXR5Q29uc3RyYWludHMgfHxcbiAgICBtZXRhZGF0YS5vdGhlckNvbnN0cmFpbnRzXG4gIFwiXG4gIFt0aXRsZV09XCIncmVjb3JkLm1ldGFkYXRhLnVzYWdlJyB8IHRyYW5zbGF0ZVwiXG4gIGRhdGEtdGVzdD1cInVzYWdlLXBhbmVsXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLVsxMHB4XSBtci00IHB5LVsxMnB4XSByb3VuZGVkIHRleHQtZ3JheS05MDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBsaWNlbnNlIG9mIGxpY2Vuc2VzXCI+XG4gICAgICA8ZGl2ICpuZ0lmPVwibGljZW5zZS51cmw7IGVsc2Ugbm9VcmxcIiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPlxuICAgICAgICA8YVxuICAgICAgICAgIFtocmVmXT1cImxpY2Vuc2UudXJsXCJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgaG92ZXI6dW5kZXJsaW5lIHRyYW5zaXRpb24tYWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGxpY2Vuc2UudGV4dCB9fVxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LVsxMnB4XSAhaC1bMTJweF0gIXRleHQtWzEycHhdIG9wYWNpdHktNzUgc2hyaW5rLTBcIlxuICAgICAgICAgICAgbmFtZT1cIm1hdE9wZW5Jbk5ld1wiXG4gICAgICAgICAgPjwvbmctaWNvbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vVXJsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgZ25VaUxpbmtpZnk+XG4gICAgICAgICAge3sgbGljZW5zZS50ZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGVnYWxDb25zdHJhaW50cy5sZW5ndGhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYi02XCI+XG4gICAgICAgIDxnbi11aS1tYXJrZG93bi1wYXJzZXJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY29uc3RyYWludCBvZiBsZWdhbENvbnN0cmFpbnRzXCJcbiAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiY29uc3RyYWludFwiXG4gICAgICAgID5cbiAgICAgICAgPC9nbi11aS1tYXJrZG93bi1wYXJzZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3RoZXJDb25zdHJhaW50cy5sZW5ndGhcIj5cbiAgICAgIDxkaXYgZ25VaUxpbmtpZnkgKm5nRm9yPVwibGV0IGNvbnN0cmFpbnQgb2Ygb3RoZXJDb25zdHJhaW50c1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIGNsYXNzPVwiZm9udC1tZWRpdW0gdGV4dC1ibGFjayB0ZXh0LXNtIG1iLVsycHhdIG10LVsxNnB4XVwiXG4gICAgICAgID5cbiAgICAgICAgICByZWNvcmQubWV0YWRhdGEub3RoZXJDb25zdHJhaW50c1xuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi02XCI+XG4gICAgICAgICAgPGduLXVpLW1hcmtkb3duLXBhcnNlciBbdGV4dENvbnRlbnRdPVwiY29uc3RyYWludFwiPlxuICAgICAgICAgIDwvZ24tdWktbWFya2Rvd24tcGFyc2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJub1VzYWdlXCIgKm5nSWY9XCIhaGFzVXNhZ2VcIj5cbiAgICAgIHt7ICdyZWNvcmQubWV0YWRhdGEubm9Vc2FnZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuPC9nbi11aS1leHBhbmRhYmxlLXBhbmVsPlxuPGduLXVpLWV4cGFuZGFibGUtcGFuZWxcbiAgKm5nSWY9XCJcbiAgICAobWV0YWRhdGEua2luZCA9PT0gJ2RhdGFzZXQnICYmIG1ldGFkYXRhLmxpbmVhZ2UpIHx8XG4gICAgbWV0YWRhdGEucmVzb3VyY2VVcGRhdGVkIHx8XG4gICAgbWV0YWRhdGEudXBkYXRlRnJlcXVlbmN5IHx8XG4gICAgKG1ldGFkYXRhLmtpbmQgPT09ICdkYXRhc2V0JyAmJiBtZXRhZGF0YS5zdGF0dXMpXG4gIFwiXG4gIFt0aXRsZV09XCIncmVjb3JkLm1ldGFkYXRhLmRldGFpbHMnIHwgdHJhbnNsYXRlXCJcbiAgZGF0YS10ZXN0PVwiZGV0YWlscy1wYW5lbFwiXG4+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5saW5lYWdlXCIgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIGZsZXggZmxleC1jb2wgbXQtNCBnYXAtMlwiPlxuICAgIDxwIGNsYXNzPVwid2hpdGVzcGFjZS1wcmUtbGluZSBicmVhay13b3JkcyB0ZXh0LWdyYXktOTAwXCIgZ25VaUxpbmtpZnk+XG4gICAgICB7eyBtZXRhZGF0YS5saW5lYWdlIH19XG4gICAgPC9wPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTYgbXQtNSBtYi04XCIgKm5nSWY9XCJyZXNvdXJjZUNvbnRhY3RcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInJlc291cmNlQ29udGFjdC5vcmdhbml6YXRpb24/LmxvZ29Vcmw/LmhyZWZcIlxuICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBib3JkZXItc29saWQgYm9yZGVyIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLW1kIGJnLXdoaXRlIGgtMzIgb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICA+XG4gICAgICA8Z24tdWktdGh1bWJuYWlsXG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmUgaC1mdWxsIHctZnVsbFwiXG4gICAgICAgIFt0aHVtYm5haWxVcmxdPVwicmVzb3VyY2VDb250YWN0Lm9yZ2FuaXphdGlvbi5sb2dvVXJsLmhyZWZcIlxuICAgICAgICBmaXQ9XCJjb250YWluXCJcbiAgICAgID48L2duLXVpLXRodW1ibmFpbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5wcm9kdWNlcjwvcD5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZm9udC10aXRsZSB0ZXh0LTIxIG1yLTIgY3Vyc29yLXBvaW50ZXIgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgZGF0YS1jeT1cIm9yZ2FuaXphdGlvbi1uYW1lXCJcbiAgICAgID5cbiAgICAgICAge3sgcmVzb3VyY2VDb250YWN0Lm9yZ2FuaXphdGlvbj8ubmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwicmVzb3VyY2VDb250YWN0Lm9yZ2FuaXphdGlvbj8ud2Vic2l0ZVwiPlxuICAgICAgICA8YVxuICAgICAgICAgIFtocmVmXT1cInJlc291cmNlQ29udGFjdC5vcmdhbml6YXRpb24ud2Vic2l0ZVwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICBjbGFzcz1cImNvbnRhY3Qtd2Vic2l0ZSB0ZXh0LXByaW1hcnkgdGV4dC1zbSBjdXJzb3ItcG9pbnRlciBob3Zlcjp1bmRlcmxpbmUgdHJhbnNpdGlvbi1hbGxcIlxuICAgICAgICAgID57eyByZXNvdXJjZUNvbnRhY3Qub3JnYW5pemF0aW9uLndlYnNpdGUgfX1cbiAgICAgICAgICA8bmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCIhdy1bMTJweF0gIWgtWzEycHhdICF0ZXh0LVsxMnB4XSBvcGFjaXR5LTc1IHNocmluay0wXCJcbiAgICAgICAgICAgIG5hbWU9XCJtYXRPcGVuSW5OZXdcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cInJlc291cmNlQ29udGFjdC5lbWFpbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxuZy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIiF3LTUgIWgtNSAhdGV4dC1bMjBweF0gb3BhY2l0eS03NSBzaHJpbmstMFwiXG4gICAgICAgICAgICBuYW1lPVwibWF0TWFpbE91dGxpbmVcIlxuICAgICAgICAgID48L25nLWljb24+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgICpuZ0lmPVwicmVzb3VyY2VDb250YWN0LmVtYWlsXCJcbiAgICAgICAgICAgIFtocmVmXT1cIidtYWlsdG86JyArIHJlc291cmNlQ29udGFjdC5lbWFpbFwiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc20gaG92ZXI6dW5kZXJsaW5lIG1sLTJcIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgIGRhdGEtY3k9XCJjb250YWN0LWVtYWlsXCJcbiAgICAgICAgICAgID57eyByZXNvdXJjZUNvbnRhY3Q/LmVtYWlsIH19PC9hXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwicHktNiBweC02IHJvdW5kZWQgYmctZ3JheS0xMDAgZ3JpZCBncmlkLWNvbHMtMiBnYXAteS02IGdhcC14LVsyMHB4XSB0ZXh0LWdyYXktNzAwXCJcbiAgPlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5yZXNvdXJjZUNyZWF0ZWRcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEuY3JlYXRpb248L3A+XG4gICAgICA8cCBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bSBtdC0xXCI+XG4gICAgICAgIHt7IGZvcm1hdERhdGUobWV0YWRhdGEucmVzb3VyY2VDcmVhdGVkKSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5yZXNvdXJjZVB1Ymxpc2hlZFwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5wdWJsaWNhdGlvbjwvcD5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtIG10LTFcIj5cbiAgICAgICAge3sgZm9ybWF0RGF0ZShtZXRhZGF0YS5yZXNvdXJjZVB1Ymxpc2hlZCkgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidXBkYXRlRnJlcXVlbmN5XCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnVwZGF0ZUZyZXF1ZW5jeTwvcD5cbiAgICAgIDxwXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtIG10LTEgdXBkYXRlRnJlcXVlbmN5XCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwieyBjb3VudDogdXBkYXRlZFRpbWVzIH1cIlxuICAgICAgPlxuICAgICAgICB7eyB1cGRhdGVGcmVxdWVuY3kgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEub3RoZXJMYW5ndWFnZXM/Lmxlbmd0aFwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIG1iLTFcIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLmxhbmd1YWdlczwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0xIGZsZXgtd3JhcFwiPlxuICAgICAgICA8cFxuICAgICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgbWV0YWRhdGEub3RoZXJMYW5ndWFnZXNcIlxuICAgICAgICA+XG4gICAgICAgICAgbGFuZ3VhZ2Uue3sgbGFuZ3VhZ2UgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBvcmFsRXh0ZW50XCI+XG4gICAgICA8cCBjbGFzcz1cInRleHQtc21cIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnRlbXBvcmFsRXh0ZW50PC9wPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEgbWItMSB0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgPHBcbiAgICAgICAgICAqbmdJZj1cInRlbXBvcmFsRXh0ZW50LnN0YXJ0ICYmIHRlbXBvcmFsRXh0ZW50LmVuZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICAgICAgICBzdGFydDogdGVtcG9yYWxFeHRlbnQuc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHRlbXBvcmFsRXh0ZW50LmVuZCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHJlY29yZC5tZXRhZGF0YS50ZW1wb3JhbEV4dGVudC5mcm9tRGF0ZVRvRGF0ZVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJ0ZW1wb3JhbEV4dGVudC5zdGFydCAmJiAhdGVtcG9yYWxFeHRlbnQuZW5kXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgc3RhcnQ6IHRlbXBvcmFsRXh0ZW50LnN0YXJ0IH1cIlxuICAgICAgICA+XG4gICAgICAgICAgcmVjb3JkLm1ldGFkYXRhLnRlbXBvcmFsRXh0ZW50LnNpbmNlRGF0ZVxuICAgICAgICA8L3A+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCIhdGVtcG9yYWxFeHRlbnQuc3RhcnQgJiYgdGVtcG9yYWxFeHRlbnQuZW5kXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgZW5kOiB0ZW1wb3JhbEV4dGVudC5lbmQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICByZWNvcmQubWV0YWRhdGEudGVtcG9yYWxFeHRlbnQudW50aWxEYXRlXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZ24tdWktZXhwYW5kYWJsZS1wYW5lbD5cbjxnbi11aS1leHBhbmRhYmxlLXBhbmVsXG4gICpuZ0lmPVwibWV0YWRhdGEua2luZCAhPT0gJ2RhdGFzZXQnICYmIG1ldGFkYXRhLnNwYXRpYWxFeHRlbnRzXCJcbiAgW3RpdGxlXT1cIidzZXJ2aWNlLm1ldGFkYXRhLnNwYXRpYWxFeHRlbnQnIHwgdHJhbnNsYXRlXCJcbiAgZGF0YS10ZXN0PVwic3BhdGlhbC1leHRlbnQtcGFuZWxcIlxuPlxuICA8Z24tdWktc3BhdGlhbC1leHRlbnRcbiAgICBjbGFzcz1cImZsZXggaC1bMjcxcHhdIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBib3JkZXItZ3JheS0xMDAgbXQtMyBtYi02XCJcbiAgICBbc3BhdGlhbEV4dGVudHNdPVwibWV0YWRhdGEuc3BhdGlhbEV4dGVudHNcIlxuICA+PC9nbi11aS1zcGF0aWFsLWV4dGVudD5cbjwvZ24tdWktZXhwYW5kYWJsZS1wYW5lbD5cbjxnbi11aS1leHBhbmRhYmxlLXBhbmVsXG4gICpuZ0lmPVwibWV0YWRhdGEubGFuZGluZ1BhZ2VcIlxuICBbdGl0bGVdPVwiJ3NlcnZpY2UubWV0YWRhdGEub3RoZXInIHwgdHJhbnNsYXRlXCJcbiAgZGF0YS10ZXN0PVwib3RoZXItcGFuZWxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNCBtci00IHB5LTUgcm91bmRlZCB0ZXh0LWdyYXktNzAwXCI+XG4gICAgPGRpdiAqbmdJZj1cIm1ldGFkYXRhLnJlY29yZFVwZGF0ZWRcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEudXBkYXRlZE9uPC9wPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW1cIj5cbiAgICAgICAge3sgbWV0YWRhdGEucmVjb3JkVXBkYXRlZCAmJiBmb3JtYXREYXRlVGltZShtZXRhZGF0YS5yZWNvcmRVcGRhdGVkKSB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS5sYW5kaW5nUGFnZVwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5zaGVldDwvcD5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1wcmltYXJ5IGZvbnQtbWVkaXVtXCIgdHJhbnNsYXRlPlxuICAgICAgICA8YSBbaHJlZl09XCJtZXRhZGF0YS5sYW5kaW5nUGFnZVwiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnJlYWstYWxsXCIgZ25VaUxpbmtpZnk+e3sgbWV0YWRhdGEubGFuZGluZ1BhZ2UgfX08L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGEub3duZXJPcmdhbml6YXRpb25cIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEub3duZXI8L3A+XG4gICAgICA8cCBjbGFzcz1cInRleHQtcHJpbWFyeSBmb250LW1lZGl1bVwiPlxuICAgICAgICB7eyBtZXRhZGF0YS5vd25lck9yZ2FuaXphdGlvbi5uYW1lIH19XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIm1ldGFkYXRhLnVuaXF1ZUlkZW50aWZpZXJcIj5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1zbVwiIHRyYW5zbGF0ZT5yZWNvcmQubWV0YWRhdGEudW5pcXVlSWQ8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb250ZW50LWFsaWduIGl0ZW1zLWVuZCBnYXAtMVwiPlxuICAgICAgICA8Z24tdWktY29weS10ZXh0LWJ1dHRvblxuICAgICAgICAgIFt0ZXh0XT1cIm1ldGFkYXRhLnVuaXF1ZUlkZW50aWZpZXJcIlxuICAgICAgICAgIFt0b29sdGlwVGV4dF09XCIndG9vbHRpcC5pZC5jb3B5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2Rpc3BsYXlUZXh0XT1cImZhbHNlXCJcbiAgICAgICAgPjwvZ24tdWktY29weS10ZXh0LWJ1dHRvbj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICB7eyBtZXRhZGF0YS51bmlxdWVJZGVudGlmaWVyIH19XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJtZXRhZGF0YS50b3BpY3M/Lmxlbmd0aFwiPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIG1iLTFcIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnRvcGljczwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbTpwYi00IHNtOnByLTE2XCI+XG4gICAgICAgIDxnbi11aS1iYWRnZVxuICAgICAgICAgIFtjbGlja2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIG1yLTIgbWItMiBsb3dlcmNhc2VcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0b3BpYyBvZiBtZXRhZGF0YS50b3BpY3NcIlxuICAgICAgICAgID57eyB0b3BpYyB9fTwvZ24tdWktYmFkZ2VcbiAgICAgICAgPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9nbi11aS1leHBhbmRhYmxlLXBhbmVsPlxuIl19
@@ -2,17 +2,37 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { MetadataQualityItemComponent, } from '../metadata-quality-item/metadata-quality-item.component';
3
3
  import { PopoverComponent, ProgressBarComponent, } from '../../../../../../libs/ui/widgets/src';
4
4
  import { CommonModule } from '@angular/common';
5
- import { TranslateModule } from '@ngx-translate/core';
6
- import { NgIcon } from '@ng-icons/core';
5
+ import { TranslateDirective } from '@ngx-translate/core';
6
+ import { NgIcon, provideIcons, provideNgIconsConfig } from '@ng-icons/core';
7
7
  import { matInfoOutline } from '@ng-icons/material-icons/outline';
8
- import { provideIcons, provideNgIconsConfig } from '@ng-icons/core';
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "@angular/common";
11
- import * as i2 from "@ngx-translate/core";
12
10
  export class MetadataQualityComponent {
13
11
  constructor() {
14
12
  this.smaller = false;
15
13
  this.items = [];
14
+ this.COMMON_CHECKS = {
15
+ title: (metadata) => !!metadata?.title,
16
+ description: (metadata) => !!metadata?.abstract,
17
+ keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
18
+ legalConstraints: (metadata) => (metadata?.legalConstraints?.length ?? 0) > 0,
19
+ contact: (metadata) => !!metadata?.contacts?.[0]?.email,
20
+ };
21
+ this.SPECIFIC_CHECKS = {
22
+ dataset: {
23
+ updateFrequency: (metadata) => !!metadata?.updateFrequency,
24
+ topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
25
+ organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
26
+ },
27
+ service: {
28
+ capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
29
+ },
30
+ reuse: {
31
+ topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
32
+ organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
33
+ source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
34
+ },
35
+ };
16
36
  }
17
37
  get qualityScore() {
18
38
  const qualityScore = this.metadata?.extras?.qualityScore;
@@ -28,17 +48,20 @@ export class MetadataQualityComponent {
28
48
  this.items.push({ name, value });
29
49
  }
30
50
  }
51
+ hasGetCapabilities(url) {
52
+ return url.toLowerCase().includes('capabilities');
53
+ }
31
54
  initialize() {
32
- const contact = this.metadata?.contacts?.[0];
33
55
  this.items = [];
34
- this.add('title', !!this.metadata?.title);
35
- this.add('description', !!this.metadata?.abstract);
36
- this.add('topic', this.metadata?.topics?.length > 0);
37
- this.add('keywords', this.metadata?.keywords?.length > 0);
38
- this.add('legalConstraints', this.metadata?.legalConstraints?.length > 0);
39
- this.add('organisation', !!contact?.organization);
40
- this.add('contact', !!contact?.email);
41
- this.add('updateFrequency', !!this.metadata?.updateFrequency);
56
+ Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
57
+ this.add(name, check(this.metadata));
58
+ });
59
+ const datasetType = this.metadata?.kind;
60
+ if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
61
+ Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(([name, check]) => {
62
+ this.add(name, check(this.metadata));
63
+ });
64
+ }
42
65
  }
43
66
  ngOnChanges(changes) {
44
67
  if (changes['metadata'] || changes['metadataQualityDisplay']) {
@@ -54,7 +77,7 @@ export class MetadataQualityComponent {
54
77
  size: '1.2em',
55
78
  strokeWidth: '1.5px',
56
79
  }),
57
- ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
+ ], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
58
81
  }
59
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
60
83
  type: Component,
@@ -63,7 +86,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
63
86
  PopoverComponent,
64
87
  ProgressBarComponent,
65
88
  MetadataQualityItemComponent,
66
- TranslateModule,
89
+ TranslateDirective,
67
90
  NgIcon,
68
91
  ], providers: [
69
92
  provideIcons({
@@ -81,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
81
104
  }], metadataQualityDisplay: [{
82
105
  type: Input
83
106
  }] } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtcXVhbGl0eS9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5L21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQTtBQUVqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixHQUNyQixNQUFNLHVDQUF1QyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUE7Ozs7QUEwQm5FLE1BQU0sT0FBTyx3QkFBd0I7SUF4QnJDO1FBMEJXLFlBQU8sR0FBRyxLQUFLLENBQUE7UUFHeEIsVUFBSyxHQUEwQixFQUFFLENBQUE7S0F1Q2xDO0lBckNDLElBQUksWUFBWTtRQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQTtRQUN4RCxPQUFPLE9BQU8sWUFBWSxLQUFLLFFBQVE7WUFD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WUFBWSxDQUFDOzRCQUNYLGNBQWM7eUJBQ2YsQ0FBQzt3QkFDRixvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLE9BQU87NEJBQ2IsV0FBVyxFQUFFLE9BQU87eUJBQ3JCLENBQUM7cUJBQ0g7OEJBR1EsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIE1ldGFkYXRhUXVhbGl0eUl0ZW0sXG4gIE1ldGFkYXRhUXVhbGl0eUl0ZW1Db21wb25lbnQsXG59IGZyb20gJy4uL21ldGFkYXRhLXF1YWxpdHktaXRlbS9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0uY29tcG9uZW50J1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7XG4gIFBvcG92ZXJDb21wb25lbnQsXG4gIFByb2dyZXNzQmFyQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IE5nSWNvbiB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgbWF0SW5mb091dGxpbmUgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvb3V0bGluZSdcbmltcG9ydCB7IHByb3ZpZGVJY29ucywgcHJvdmlkZU5nSWNvbnNDb25maWcgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWV0YWRhdGEtcXVhbGl0eScsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgTWV0YWRhdGFRdWFsaXR5SXRlbUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTmdJY29uLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoe1xuICAgICAgbWF0SW5mb091dGxpbmUsXG4gICAgfSksXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzEuMmVtJyxcbiAgICAgIHN0cm9rZVdpZHRoOiAnMS41cHgnLFxuICAgIH0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YVF1YWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBtZXRhZGF0YTogUGFydGlhbDxDYXRhbG9nUmVjb3JkPlxuICBASW5wdXQoKSBzbWFsbGVyID0gZmFsc2VcbiAgQElucHV0KCkgbWV0YWRhdGFRdWFsaXR5RGlzcGxheTogYm9vbGVhblxuXG4gIGl0ZW1zOiBNZXRhZGF0YVF1YWxpdHlJdGVtW10gPSBbXVxuXG4gIGdldCBxdWFsaXR5U2NvcmUoKSB7XG4gICAgY29uc3QgcXVhbGl0eVNjb3JlID0gdGhpcy5tZXRhZGF0YT8uZXh0cmFzPy5xdWFsaXR5U2NvcmVcbiAgICByZXR1cm4gdHlwZW9mIHF1YWxpdHlTY29yZSA9PT0gJ251bWJlcidcbiAgICAgID8gcXVhbGl0eVNjb3JlXG4gICAgICA6IHRoaXMuY2FsY3VsYXRlZFF1YWxpdHlTY29yZVxuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRRdWFsaXR5U2NvcmUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLml0ZW1zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkubGVuZ3RoICogMTAwKSAvIHRoaXMuaXRlbXMubGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBhZGQobmFtZTogc3RyaW5nLCB2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm1ldGFkYXRhUXVhbGl0eURpc3BsYXk/LltuYW1lXSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuaXRlbXMucHVzaCh7IG5hbWUsIHZhbHVlIH0pXG4gICAgfVxuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBjb25zdCBjb250YWN0ID0gdGhpcy5tZXRhZGF0YT8uY29udGFjdHM/LlswXVxuICAgIHRoaXMuaXRlbXMgPSBbXVxuICAgIHRoaXMuYWRkKCd0aXRsZScsICEhdGhpcy5tZXRhZGF0YT8udGl0bGUpXG4gICAgdGhpcy5hZGQoJ2Rlc2NyaXB0aW9uJywgISF0aGlzLm1ldGFkYXRhPy5hYnN0cmFjdClcbiAgICB0aGlzLmFkZCgndG9waWMnLCB0aGlzLm1ldGFkYXRhPy50b3BpY3M/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2tleXdvcmRzJywgdGhpcy5tZXRhZGF0YT8ua2V5d29yZHM/Lmxlbmd0aCA+IDApXG4gICAgdGhpcy5hZGQoJ2xlZ2FsQ29uc3RyYWludHMnLCB0aGlzLm1ldGFkYXRhPy5sZWdhbENvbnN0cmFpbnRzPy5sZW5ndGggPiAwKVxuICAgIHRoaXMuYWRkKCdvcmdhbmlzYXRpb24nLCAhIWNvbnRhY3Q/Lm9yZ2FuaXphdGlvbilcbiAgICB0aGlzLmFkZCgnY29udGFjdCcsICEhY29udGFjdD8uZW1haWwpXG4gICAgdGhpcy5hZGQoJ3VwZGF0ZUZyZXF1ZW5jeScsICEhdGhpcy5tZXRhZGF0YT8udXBkYXRlRnJlcXVlbmN5KVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydtZXRhZGF0YSddIHx8IGNoYW5nZXNbJ21ldGFkYXRhUXVhbGl0eURpc3BsYXknXSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplKClcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJtZXRhZGF0YVF1YWxpdHlEaXNwbGF5XCIgY2xhc3M9XCJtZXRhZGF0YS1xdWFsaXR5XCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCJcbiAgICBbY2xhc3NdPVwibWluIC0gdyAtIDBcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQteHMgbGVhZGluZy1bOHB4XSBtLWgtWzEyMHB4XSc6IHNtYWxsZXIgfVwiXG4gID5cbiAgICA8Z24tdWktcHJvZ3Jlc3MtYmFyXG4gICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgW3ZhbHVlXT1cInF1YWxpdHlTY29yZVwiXG4gICAgICBbdHlwZV09XCInbGlnaHQnXCJcbiAgICAgIGNsYXNzPVwiZmxleC1ncm93XCJcbiAgICA+PC9nbi11aS1wcm9ncmVzcy1iYXI+XG4gICAgPGduLXVpLXBvcG92ZXJcbiAgICAgIFtjb250ZW50XT1cInBvcG92ZXJJdGVtc1wiXG4gICAgICB0aGVtZT1cImxpZ2h0LWJvcmRlclwiXG4gICAgICBbY2xhc3NdPVwic21hbGxlciA/ICdtbC0yJyA6ICdtbC0yIG10LTEnXCJcbiAgICA+XG4gICAgICA8bmctaWNvblxuICAgICAgICBuYW1lPVwibWF0SW5mb091dGxpbmVcIlxuICAgICAgICBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5LTYwMFwiXG4gICAgICA+PC9uZy1pY29uPlxuICAgIDwvZ24tdWktcG9wb3Zlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjcG9wb3Zlckl0ZW1zPlxuICA8ZGl2IGNsYXNzPVwicC0yIHB5LTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWItNCBmb250LWJvbGRcIiB0cmFuc2xhdGU+cmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkuZGV0YWlsczwvZGl2PlxuICAgIDxnbi11aS1tZXRhZGF0YS1xdWFsaXR5LWl0ZW1cbiAgICAgICpuZ0Zvcj1cImxldCBlIG9mIGl0ZW1zXCJcbiAgICAgIFtuYW1lXT1cImUubmFtZVwiXG4gICAgICBbdmFsdWVdPVwiZS52YWx1ZVwiXG4gICAgPjwvZ24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2VsZW1lbnRzL3NyYy9saWIvbWV0YWRhdGEtcXVhbGl0eS9tZXRhZGF0YS1xdWFsaXR5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5L21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQTtBQUVqRSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixHQUNyQixNQUFNLHVDQUF1QyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTs7O0FBOEJqRSxNQUFNLE9BQU8sd0JBQXdCO0lBeEJyQztRQTBCVyxZQUFPLEdBQUcsS0FBSyxDQUFBO1FBR3hCLFVBQUssR0FBMEIsRUFBRSxDQUFBO1FBd0JoQixrQkFBYSxHQUFrQjtZQUM5QyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSztZQUN0QyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsUUFB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RkksWUFBWSw4VkFDWixnQkFBZ0Isd0ZBQ2hCLG9CQUFvQiwwRkFDcEIsNEJBQTRCLG1HQUM1QixrQkFBa0Isa0hBQ2xCLE1BQU07OzRGQVlHLHdCQUF3QjtrQkF4QnBDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLGtCQUFrQjt3QkFDbEIsTUFBTTtxQkFDUCxhQUNVO3dCQUNULFlBQVksQ0FBQzs0QkFDWCxjQUFjO3lCQUNmLENBQUM7d0JBQ0Ysb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxPQUFPOzRCQUNiLFdBQVcsRUFBRSxPQUFPO3lCQUNyQixDQUFDO3FCQUNIOzhCQUdRLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLHNCQUFzQjtzQkFBOUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBNZXRhZGF0YVF1YWxpdHlJdGVtLFxuICBNZXRhZGF0YVF1YWxpdHlJdGVtQ29tcG9uZW50LFxufSBmcm9tICcuLi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudCdcbmltcG9ydCB7IENhdGFsb2dSZWNvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBQb3BvdmVyQ29tcG9uZW50LFxuICBQcm9ncmVzc0JhckNvbXBvbmVudCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBOZ0ljb24sIHByb3ZpZGVJY29ucywgcHJvdmlkZU5nSWNvbnNDb25maWcgfSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IG1hdEluZm9PdXRsaW5lIH0gZnJvbSAnQG5nLWljb25zL21hdGVyaWFsLWljb25zL291dGxpbmUnXG5cbnR5cGUgUXVhbGl0eUNoZWNrcyA9IHtcbiAgW2tleTogc3RyaW5nXTogKG1ldGFkYXRhOiBQYXJ0aWFsPENhdGFsb2dSZWNvcmQ+KSA9PiBib29sZWFuXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLW1ldGFkYXRhLXF1YWxpdHknLFxuICB0ZW1wbGF0ZVVybDogJy4vbWV0YWRhdGEtcXVhbGl0eS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21ldGFkYXRhLXF1YWxpdHkuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50LFxuICAgIE1ldGFkYXRhUXVhbGl0eUl0ZW1Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlRGlyZWN0aXZlLFxuICAgIE5nSWNvbixcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHtcbiAgICAgIG1hdEluZm9PdXRsaW5lLFxuICAgIH0pLFxuICAgIHByb3ZpZGVOZ0ljb25zQ29uZmlnKHtcbiAgICAgIHNpemU6ICcxLjJlbScsXG4gICAgICBzdHJva2VXaWR0aDogJzEuNXB4JyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWV0YWRhdGFRdWFsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgbWV0YWRhdGE6IFBhcnRpYWw8Q2F0YWxvZ1JlY29yZD5cbiAgQElucHV0KCkgc21hbGxlciA9IGZhbHNlXG4gIEBJbnB1dCgpIG1ldGFkYXRhUXVhbGl0eURpc3BsYXk6IGJvb2xlYW5cblxuICBpdGVtczogTWV0YWRhdGFRdWFsaXR5SXRlbVtdID0gW11cblxuICBnZXQgcXVhbGl0eVNjb3JlKCkge1xuICAgIGNvbnN0IHF1YWxpdHlTY29yZSA9IHRoaXMubWV0YWRhdGE/LmV4dHJhcz8ucXVhbGl0eVNjb3JlXG4gICAgcmV0dXJuIHR5cGVvZiBxdWFsaXR5U2NvcmUgPT09ICdudW1iZXInXG4gICAgICA/IHF1YWxpdHlTY29yZVxuICAgICAgOiB0aGlzLmNhbGN1bGF0ZWRRdWFsaXR5U2NvcmVcbiAgfVxuXG4gIGdldCBjYWxjdWxhdGVkUXVhbGl0eVNjb3JlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoXG4gICAgICAodGhpcy5pdGVtcy5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLmxlbmd0aCAqIDEwMCkgLyB0aGlzLml0ZW1zLmxlbmd0aFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYWRkKG5hbWU6IHN0cmluZywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5tZXRhZGF0YVF1YWxpdHlEaXNwbGF5Py5bbmFtZV0gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLml0ZW1zLnB1c2goeyBuYW1lLCB2YWx1ZSB9KVxuICAgIH1cbiAgfVxuICBoYXNHZXRDYXBhYmlsaXRpZXModXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXJsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NhcGFiaWxpdGllcycpXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IENPTU1PTl9DSEVDS1M6IFF1YWxpdHlDaGVja3MgPSB7XG4gICAgdGl0bGU6IChtZXRhZGF0YSkgPT4gISFtZXRhZGF0YT8udGl0bGUsXG4gICAgZGVzY3JpcHRpb246IChtZXRhZGF0YSkgPT4gISFtZXRhZGF0YT8uYWJzdHJhY3QsXG4gICAga2V5d29yZHM6IChtZXRhZGF0YSkgPT4gKG1ldGFkYXRhPy5rZXl3b3Jkcz8ubGVuZ3RoID8/IDApID4gMCxcbiAgICBsZWdhbENvbnN0cmFpbnRzOiAobWV0YWRhdGEpID0+XG4gICAgICAobWV0YWRhdGE/LmxlZ2FsQ29uc3RyYWludHM/Lmxlbmd0aCA/PyAwKSA+IDAsXG4gICAgY29udGFjdDogKG1ldGFkYXRhKSA9PiAhIW1ldGFkYXRhPy5jb250YWN0cz8uWzBdPy5lbWFpbCxcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgU1BFQ0lGSUNfQ0hFQ0tTOiBSZWNvcmQ8c3RyaW5nLCBRdWFsaXR5Q2hlY2tzPiA9IHtcbiAgICBkYXRhc2V0OiB7XG4gICAgICB1cGRhdGVGcmVxdWVuY3k6IChtZXRhZGF0YSkgPT4gISFtZXRhZGF0YT8udXBkYXRlRnJlcXVlbmN5LFxuICAgICAgdG9waWM6IChtZXRhZGF0YSkgPT4gKG1ldGFkYXRhPy50b3BpY3M/Lmxlbmd0aCA/PyAwKSA+IDAsXG4gICAgICBvcmdhbmlzYXRpb246IChtZXRhZGF0YSkgPT4gISFtZXRhZGF0YT8uY29udGFjdHM/LlswXT8ub3JnYW5pemF0aW9uPy5uYW1lLFxuICAgIH0sXG4gICAgc2VydmljZToge1xuICAgICAgY2FwYWJpbGl0aWVzOiAobWV0YWRhdGEpID0+XG4gICAgICAgIChtZXRhZGF0YT8ub25saW5lUmVzb3VyY2VzID8/IFtdKS5zb21lKChyZXNvdXJjZSkgPT5cbiAgICAgICAgICB0aGlzLmhhc0dldENhcGFiaWxpdGllcyhyZXNvdXJjZT8udXJsPy5ocmVmID8/ICcnKVxuICAgICAgICApLFxuICAgIH0sXG4gICAgcmV1c2U6IHtcbiAgICAgIHRvcGljOiAobWV0YWRhdGEpID0+IChtZXRhZGF0YT8udG9waWNzPy5sZW5ndGggPz8gMCkgPiAwLFxuICAgICAgb3JnYW5pc2F0aW9uOiAobWV0YWRhdGEpID0+ICEhbWV0YWRhdGE/LmNvbnRhY3RzPy5bMF0/Lm9yZ2FuaXphdGlvbj8ubmFtZSxcbiAgICAgIHNvdXJjZTogKG1ldGFkYXRhKSA9PiAhIW1ldGFkYXRhPy5leHRyYXM/LnNvdXJjZXNJZGVudGlmaWVycyxcbiAgICB9LFxuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLml0ZW1zID0gW11cblxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuQ09NTU9OX0NIRUNLUykuZm9yRWFjaCgoW25hbWUsIGNoZWNrXSkgPT4ge1xuICAgICAgdGhpcy5hZGQobmFtZSwgY2hlY2sodGhpcy5tZXRhZGF0YSkpXG4gICAgfSlcblxuICAgIGNvbnN0IGRhdGFzZXRUeXBlID0gdGhpcy5tZXRhZGF0YT8ua2luZFxuICAgIGlmIChkYXRhc2V0VHlwZSAmJiB0aGlzLlNQRUNJRklDX0NIRUNLU1tkYXRhc2V0VHlwZV0pIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuU1BFQ0lGSUNfQ0hFQ0tTW2RhdGFzZXRUeXBlXSkuZm9yRWFjaChcbiAgICAgICAgKFtuYW1lLCBjaGVja10pID0+IHtcbiAgICAgICAgICB0aGlzLmFkZChuYW1lLCBjaGVjayh0aGlzLm1ldGFkYXRhKSlcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snbWV0YWRhdGEnXSB8fCBjaGFuZ2VzWydtZXRhZGF0YVF1YWxpdHlEaXNwbGF5J10pIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZSgpXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibWV0YWRhdGFRdWFsaXR5RGlzcGxheVwiIGNsYXNzPVwibWV0YWRhdGEtcXVhbGl0eVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgW2NsYXNzXT1cIm1pbiAtIHcgLSAwXCJcbiAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LXhzIGxlYWRpbmctWzhweF0gbS1oLVsxMjBweF0nOiBzbWFsbGVyIH1cIlxuICA+XG4gICAgPGduLXVpLXByb2dyZXNzLWJhclxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIFt2YWx1ZV09XCJxdWFsaXR5U2NvcmVcIlxuICAgICAgW3R5cGVdPVwiJ2xpZ2h0J1wiXG4gICAgICBjbGFzcz1cImZsZXgtZ3Jvd1wiXG4gICAgPjwvZ24tdWktcHJvZ3Jlc3MtYmFyPlxuICAgIDxnbi11aS1wb3BvdmVyXG4gICAgICBbY29udGVudF09XCJwb3BvdmVySXRlbXNcIlxuICAgICAgdGhlbWU9XCJsaWdodC1ib3JkZXJcIlxuICAgICAgW2NsYXNzXT1cInNtYWxsZXIgPyAnbWwtMicgOiAnbWwtMiBtdC0xJ1wiXG4gICAgPlxuICAgICAgPG5nLWljb25cbiAgICAgICAgbmFtZT1cIm1hdEluZm9PdXRsaW5lXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4LXNocmluay0wIHRleHQtZ3JheS02MDBcIlxuICAgICAgPjwvbmctaWNvbj5cbiAgICA8L2duLXVpLXBvcG92ZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI3BvcG92ZXJJdGVtcz5cbiAgPGRpdiBjbGFzcz1cInAtMiBweS00XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLTQgZm9udC1ib2xkXCIgdHJhbnNsYXRlPnJlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmRldGFpbHM8L2Rpdj5cbiAgICA8Z24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtXG4gICAgICAqbmdGb3I9XCJsZXQgZSBvZiBpdGVtc1wiXG4gICAgICBbbmFtZV09XCJlLm5hbWVcIlxuICAgICAgW3ZhbHVlXT1cImUudmFsdWVcIlxuICAgID48L2duLXVpLW1ldGFkYXRhLXF1YWxpdHktaXRlbT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,10 +1,9 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import { marker } from '@biesbjerg/ngx-translate-extract-marker';
3
3
  import { NgIcon, provideIcons } from '@ng-icons/core';
4
- import { TranslateModule } from '@ngx-translate/core';
4
+ import { TranslatePipe } from '@ngx-translate/core';
5
5
  import { matCheck, matWarningAmber } from '@ng-icons/material-icons/baseline';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "@ngx-translate/core";
8
7
  marker('record.metadata.quality.title.success');
9
8
  marker('record.metadata.quality.title.failed');
10
9
  marker('record.metadata.quality.description.success');
@@ -21,6 +20,10 @@ marker('record.metadata.quality.updateFrequency.success');
21
20
  marker('record.metadata.quality.updateFrequency.failed');
22
21
  marker('record.metadata.quality.organisation.success');
23
22
  marker('record.metadata.quality.organisation.failed');
23
+ marker('record.metadata.quality.capabilities.success');
24
+ marker('record.metadata.quality.capabilities.failed');
25
+ marker('record.metadata.quality.source.success');
26
+ marker('record.metadata.quality.source.failed');
24
27
  export class MetadataQualityItemComponent {
25
28
  get icon() {
26
29
  return this.value ? 'matCheck' : 'matWarningAmber';
@@ -29,14 +32,14 @@ export class MetadataQualityItemComponent {
29
32
  return `record.metadata.quality.${this.name}.${this.value ? 'success' : 'failed'}`;
30
33
  }
31
34
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityItemComponent, isStandalone: true, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <ng-icon [name]=\"icon\" class=\"min-w-fit\"></ng-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], viewProviders: [provideIcons({ matCheck, matWarningAmber })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataQualityItemComponent, isStandalone: true, selector: "gn-ui-metadata-quality-item", inputs: { name: "name", value: "value" }, ngImport: i0, template: "<div class=\"ml-4 flex flex-row\">\n <ng-icon [name]=\"icon\" class=\"min-w-fit\"></ng-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n", dependencies: [{ kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], viewProviders: [provideIcons({ matCheck, matWarningAmber })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
36
  }
34
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityItemComponent, decorators: [{
35
38
  type: Component,
36
- args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, TranslateModule], viewProviders: [provideIcons({ matCheck, matWarningAmber })], template: "<div class=\"ml-4 flex flex-row\">\n <ng-icon [name]=\"icon\" class=\"min-w-fit\"></ng-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
39
+ args: [{ selector: 'gn-ui-metadata-quality-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIcon, TranslatePipe], viewProviders: [provideIcons({ matCheck, matWarningAmber })], template: "<div class=\"ml-4 flex flex-row\">\n <ng-icon [name]=\"icon\" class=\"min-w-fit\"></ng-icon>\n <p class=\"ml-2 text\">{{ labelKey | translate }}</p>\n</div>\n" }]
37
40
  }], propDecorators: { name: [{
38
41
  type: Input
39
42
  }], value: [{
40
43
  type: Input
41
44
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOzs7QUFFN0UsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUE7QUFDckQsTUFBTSxDQUFDLDRDQUE0QyxDQUFDLENBQUE7QUFDcEQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUE7QUFDL0MsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7QUFDOUMsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDbEQsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLGtEQUFrRCxDQUFDLENBQUE7QUFDMUQsTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUE7QUFDekQsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUE7QUFDakQsTUFBTSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDaEQsTUFBTSxDQUFDLGlEQUFpRCxDQUFDLENBQUE7QUFDekQsTUFBTSxDQUFDLGdEQUFnRCxDQUFDLENBQUE7QUFDeEQsTUFBTSxDQUFDLDhDQUE4QyxDQUFDLENBQUE7QUFDdEQsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUE7QUFlckQsTUFBTSxPQUFPLDRCQUE0QjtJQUl2QyxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUE7SUFDcEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sMkJBQTJCLElBQUksQ0FBQyxJQUFJLElBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFDM0IsRUFBRSxDQUFBO0lBQ0osQ0FBQzsrR0FaVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixpSUNwQ3pDLGtLQUlBLDRDRDZCWSxNQUFNLDRHQUFFLGVBQWUsaUZBQ2xCLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7OzRGQUVqRCw0QkFBNEI7a0JBUnhDLFNBQVM7K0JBQ0UsNkJBQTZCLG1CQUV0Qix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsaUJBQ25CLENBQUMsWUFBWSxDQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7OEJBR25ELElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBtYXJrZXIgfSBmcm9tICdAYmllc2JqZXJnL25neC10cmFuc2xhdGUtZXh0cmFjdC1tYXJrZXInXG5pbXBvcnQgeyBOZ0ljb24sIHByb3ZpZGVJY29ucyB9IGZyb20gJ0BuZy1pY29ucy9jb3JlJ1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IG1hdENoZWNrLCBtYXRXYXJuaW5nQW1iZXIgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkudGl0bGUuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LnRpdGxlLmZhaWxlZCcpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmRlc2NyaXB0aW9uLnN1Y2Nlc3MnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5kZXNjcmlwdGlvbi5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS50b3BpYy5zdWNjZXNzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkudG9waWMuZmFpbGVkJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkua2V5d29yZHMuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmtleXdvcmRzLmZhaWxlZCcpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmxlZ2FsQ29uc3RyYWludHMuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmxlZ2FsQ29uc3RyYWludHMuZmFpbGVkJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkuY29udGFjdC5zdWNjZXNzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkuY29udGFjdC5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS51cGRhdGVGcmVxdWVuY3kuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LnVwZGF0ZUZyZXF1ZW5jeS5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5vcmdhbmlzYXRpb24uc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5Lm9yZ2FuaXNhdGlvbi5mYWlsZWQnKVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhUXVhbGl0eUl0ZW0ge1xuICBuYW1lOiBzdHJpbmdcbiAgdmFsdWU6IGJvb2xlYW5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldGFkYXRhLXF1YWxpdHktaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJY29uLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB2aWV3UHJvdmlkZXJzOiBbcHJvdmlkZUljb25zKHsgbWF0Q2hlY2ssIG1hdFdhcm5pbmdBbWJlciB9KV0sXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFkYXRhUXVhbGl0eUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBNZXRhZGF0YVF1YWxpdHlJdGVtIHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nXG4gIEBJbnB1dCgpIHZhbHVlOiBib29sZWFuXG5cbiAgZ2V0IGljb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPyAnbWF0Q2hlY2snIDogJ21hdFdhcm5pbmdBbWJlcidcbiAgfVxuXG4gIGdldCBsYWJlbEtleSgpIHtcbiAgICByZXR1cm4gYHJlY29yZC5tZXRhZGF0YS5xdWFsaXR5LiR7dGhpcy5uYW1lfS4ke1xuICAgICAgdGhpcy52YWx1ZSA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnXG4gICAgfWBcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1sLTQgZmxleCBmbGV4LXJvd1wiPlxuICA8bmctaWNvbiBbbmFtZV09XCJpY29uXCIgY2xhc3M9XCJtaW4tdy1maXRcIj48L25nLWljb24+XG4gIDxwIGNsYXNzPVwibWwtMiB0ZXh0XCI+e3sgbGFiZWxLZXkgfCB0cmFuc2xhdGUgfX08L3A+XG48L2Rpdj5cbiJdfQ==
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvZWxlbWVudHMvc3JjL2xpYi9tZXRhZGF0YS1xdWFsaXR5LWl0ZW0vbWV0YWRhdGEtcXVhbGl0eS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFBOztBQUU3RSxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtBQUM5QyxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtBQUNyRCxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQTtBQUNwRCxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQUMvQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtBQUM5QyxNQUFNLENBQUMsMENBQTBDLENBQUMsQ0FBQTtBQUNsRCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsa0RBQWtELENBQUMsQ0FBQTtBQUMxRCxNQUFNLENBQUMsaURBQWlELENBQUMsQ0FBQTtBQUN6RCxNQUFNLENBQUMseUNBQXlDLENBQUMsQ0FBQTtBQUNqRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMsaURBQWlELENBQUMsQ0FBQTtBQUN6RCxNQUFNLENBQUMsZ0RBQWdELENBQUMsQ0FBQTtBQUN4RCxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQTtBQUN0RCxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtBQUNyRCxNQUFNLENBQUMsOENBQThDLENBQUMsQ0FBQTtBQUN0RCxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtBQUNyRCxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNoRCxNQUFNLENBQUMsdUNBQXVDLENBQUMsQ0FBQTtBQWUvQyxNQUFNLE9BQU8sNEJBQTRCO0lBSXZDLElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTywyQkFBMkIsSUFBSSxDQUFDLElBQUksSUFDekMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUMzQixFQUFFLENBQUE7SUFDSixDQUFDOytHQVpVLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlJQ3hDekMsa0tBSUEsNENEaUNZLE1BQU0sd0dBQUUsYUFBYSx1Q0FDaEIsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs7NEZBRWpELDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDRSw2QkFBNkIsbUJBRXRCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxpQkFDakIsQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs4QkFHbkQsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB7IE5nSWNvbiwgcHJvdmlkZUljb25zIH0gZnJvbSAnQG5nLWljb25zL2NvcmUnXG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IG1hdENoZWNrLCBtYXRXYXJuaW5nQW1iZXIgfSBmcm9tICdAbmctaWNvbnMvbWF0ZXJpYWwtaWNvbnMvYmFzZWxpbmUnXG5cbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkudGl0bGUuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LnRpdGxlLmZhaWxlZCcpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmRlc2NyaXB0aW9uLnN1Y2Nlc3MnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5kZXNjcmlwdGlvbi5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS50b3BpYy5zdWNjZXNzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkudG9waWMuZmFpbGVkJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkua2V5d29yZHMuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmtleXdvcmRzLmZhaWxlZCcpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmxlZ2FsQ29uc3RyYWludHMuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmxlZ2FsQ29uc3RyYWludHMuZmFpbGVkJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkuY29udGFjdC5zdWNjZXNzJylcbm1hcmtlcigncmVjb3JkLm1ldGFkYXRhLnF1YWxpdHkuY29udGFjdC5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS51cGRhdGVGcmVxdWVuY3kuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LnVwZGF0ZUZyZXF1ZW5jeS5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5vcmdhbmlzYXRpb24uc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5Lm9yZ2FuaXNhdGlvbi5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5jYXBhYmlsaXRpZXMuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LmNhcGFiaWxpdGllcy5mYWlsZWQnKVxubWFya2VyKCdyZWNvcmQubWV0YWRhdGEucXVhbGl0eS5zb3VyY2Uuc3VjY2VzcycpXG5tYXJrZXIoJ3JlY29yZC5tZXRhZGF0YS5xdWFsaXR5LnNvdXJjZS5mYWlsZWQnKVxuXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhUXVhbGl0eUl0ZW0ge1xuICBuYW1lOiBzdHJpbmdcbiAgdmFsdWU6IGJvb2xlYW5cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktbWV0YWRhdGEtcXVhbGl0eS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldGFkYXRhLXF1YWxpdHktaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJY29uLCBUcmFuc2xhdGVQaXBlXSxcbiAgdmlld1Byb3ZpZGVyczogW3Byb3ZpZGVJY29ucyh7IG1hdENoZWNrLCBtYXRXYXJuaW5nQW1iZXIgfSldLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRhZGF0YVF1YWxpdHlJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTWV0YWRhdGFRdWFsaXR5SXRlbSB7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZ1xuICBASW5wdXQoKSB2YWx1ZTogYm9vbGVhblxuXG4gIGdldCBpY29uKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlID8gJ21hdENoZWNrJyA6ICdtYXRXYXJuaW5nQW1iZXInXG4gIH1cblxuICBnZXQgbGFiZWxLZXkoKSB7XG4gICAgcmV0dXJuIGByZWNvcmQubWV0YWRhdGEucXVhbGl0eS4ke3RoaXMubmFtZX0uJHtcbiAgICAgIHRoaXMudmFsdWUgPyAnc3VjY2VzcycgOiAnZmFpbGVkJ1xuICAgIH1gXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtbC00IGZsZXggZmxleC1yb3dcIj5cbiAgPG5nLWljb24gW25hbWVdPVwiaWNvblwiIGNsYXNzPVwibWluLXctZml0XCI+PC9uZy1pY29uPlxuICA8cCBjbGFzcz1cIm1sLTIgdGV4dFwiPnt7IGxhYmVsS2V5IHwgdHJhbnNsYXRlIH19PC9wPlxuPC9kaXY+XG4iXX0=