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
@@ -1,8 +1,7 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from '@angular/core';
3
- import { AutocompleteComponent, DropdownSelectorComponent, UiInputsModule, } from '../../../../../../../../../libs/ui/inputs/src';
4
- import { UiWidgetsModule } from '../../../../../../../../../libs/ui/widgets/src';
5
- import { TranslateModule } from '@ngx-translate/core';
3
+ import { AutocompleteComponent } from '../../../../../../../../../libs/ui/inputs/src';
4
+ import { TranslateDirective, TranslatePipe } from '@ngx-translate/core';
6
5
  import { debounceTime, distinctUntilChanged, firstValueFrom, Subscription, switchMap, } from 'rxjs';
7
6
  import { PlatformServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/platform.service.interface';
8
7
  import { OrganizationsServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/organizations.service.interface';
@@ -14,7 +13,6 @@ import * as i0 from "@angular/core";
14
13
  import * as i1 from "../../../../../../../../../libs/common/domain/src/lib/platform.service.interface";
15
14
  import * as i2 from "../../../../../../../../../libs/common/domain/src/lib/organizations.service.interface";
16
15
  import * as i3 from "@angular/common";
17
- import * as i4 from "@ngx-translate/core";
18
16
  export class FormFieldContactsComponent {
19
17
  constructor(platformServiceInterface, organizationsServiceInterface, changeDetectorRef) {
20
18
  this.platformServiceInterface = platformServiceInterface;
@@ -87,17 +85,15 @@ export class FormFieldContactsComponent {
87
85
  this.subscription.unsubscribe();
88
86
  }
89
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, deps: [{ token: i1.PlatformServiceInterface }, { token: i2.OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldContactsComponent, isStandalone: true, selector: "gn-ui-form-field-contacts", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
91
89
  }
92
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsComponent, decorators: [{
93
91
  type: Component,
94
92
  args: [{ selector: 'gn-ui-form-field-contacts', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
95
- DropdownSelectorComponent,
96
- UiInputsModule,
97
93
  CommonModule,
98
- UiWidgetsModule,
99
94
  AutocompleteComponent,
100
- TranslateModule,
95
+ TranslateDirective,
96
+ TranslatePipe,
101
97
  ContactCardComponent,
102
98
  SortableListComponent,
103
99
  ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'editor.record.form.field.contacts.placeholder' | translate\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contacts.length > 0; else noContact\">\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts; let index = index\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n </ng-container>\n</div>\n\n<ng-template #noContact>\n <div\n class=\"p-4 text-sm border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contacts.noContact\n </div>\n</ng-template>\n" }]
@@ -106,4 +102,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
106
102
  }], valueChange: [{
107
103
  type: Output
108
104
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGNBQWMsR0FDZixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQTtBQUtoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUNMLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsY0FBYyxFQUVkLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxNQUFNLENBQUE7QUFFYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrRkFBa0YsQ0FBQTtBQUMzSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1RkFBdUYsQ0FBQTtBQUNySSxPQUFPLEVBQUUsb0JBQW9CLEVB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QUFXLEVBQUUsQ0FBQTtJQUNqQyxDQUFDOytHQWhIVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwrS0N4RHZDLHl6Q0F3Q0EseURET0ksY0FBYyw4QkFDZCxZQUFZLCtQQUNaLGVBQWUsK0JBQ2YscUJBQXFCLGtWQUNyQixlQUFlLG1PQUNmLG9CQUFvQixvRkFDcEIscUJBQXFCOzs0RkFHWiwwQkFBMEI7a0JBakJ0QyxTQUFTOytCQUNFLDJCQUEyQixtQkFHcEIsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AseUJBQXlCO3dCQUN6QixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2Ysb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCO3lLQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gIFVpSW5wdXRzTW9kdWxlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBVaVdpZGdldHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHtcbiAgSW5kaXZpZHVhbCxcbiAgT3JnYW5pemF0aW9uLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlyc3RWYWx1ZUZyb20sXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdXNlcidcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9vcmdhbml6YXRpb25zLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgQ29udGFjdENhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb250YWN0LWNhcmQvY29udGFjdC1jYXJkLmNvbXBvbmVudCdcbmltcG9ydCB7IGNyZWF0ZUZ1enp5RmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL3NoYXJlZC9zcmMnXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFNvcnRhYmxlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1jb250YWN0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLWNvbnRhY3RzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVWlXaWRnZXRzTW9kdWxlLFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQ29udGFjdENhcmRDb21wb25lbnQsXG4gICAgU29ydGFibGVMaXN0Q29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRDb250YWN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgdmFsdWU6IEluZGl2aWR1YWxbXVxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbmRpdmlkdWFsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgY29udGFjdHM6IEluZGl2aWR1YWxbXSA9IFtdXG5cbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKClcblxuICBhbGxVc2VycyQ6IE9ic2VydmFibGU8VXNlck1vZGVsW10+XG5cbiAgYWxsT3JnYW5pemF0aW9uczogTWFwPHN0cmluZywgT3JnYW5pemF0aW9uPiA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZTogT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5hbGxVc2VycyQgPSB0aGlzLnBsYXRmb3JtU2VydmljZUludGVyZmFjZS5nZXRVc2VycygpXG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGFjdHNDaGFuZ2VzID0gY2hhbmdlc1sndmFsdWUnXVxuXG4gICAgaWYgKGNvbnRhY3RzQ2hhbmdlcy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5hbGxPcmdhbml6YXRpb25zID0gbmV3IE1hcDxzdHJpbmcsIE9yZ2FuaXphdGlvbj4oXG4gICAgICAgIChcbiAgICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMub3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2Uub3JnYW5pc2F0aW9ucyRcbiAgICAgICAgICApXG4gICAgICAgICkubWFwKChvcmdhbml6YXRpb24pID0+IFtvcmdhbml6YXRpb24ubmFtZSwgb3JnYW5pemF0aW9uXSlcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoY29udGFjdHNDaGFuZ2VzLmN1cnJlbnRWYWx1ZSAhPT0gY29udGFjdHNDaGFuZ2VzLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29udGFjdHMoKVxuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29udGFjdHMoKSB7XG4gICAgdGhpcy5jb250YWN0cyA9IHRoaXMudmFsdWUucmVkdWNlKChhY2MsIGNvbnRhY3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBsZXRlT3JnYW5pemF0aW9uID0gdGhpcy5hbGxPcmdhbml6YXRpb25zLmdldChcbiAgICAgICAgY29udGFjdC5vcmdhbml6YXRpb24ubmFtZVxuICAgICAgKVxuXG4gICAgICBjb25zdCB1cGRhdGVkQ29udGFjdCA9IHtcbiAgICAgICAgLi4uY29udGFjdCxcbiAgICAgICAgb3JnYW5pemF0aW9uOlxuICAgICAgICAgIGNvbXBsZXRlT3JnYW5pemF0aW9uID8/XG4gICAgICAgICAgKHsgbmFtZTogY29udGFjdC5vcmdhbml6YXRpb24ubmFtZSB9IGFzIE9yZ2FuaXphdGlvbiksXG4gICAgICB9XG5cbiAgICAgIGFjYy5wdXNoKHVwZGF0ZWRDb250YWN0KVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgW10gYXMgSW5kaXZpZHVhbFtdKVxuICB9XG5cbiAgaGFuZGxlQ29udGFjdHNDaGFuZ2VkKGl0ZW1zOiB1bmtub3duW10pIHtcbiAgICBjb25zdCBjb250YWN0cyA9IGl0ZW1zIGFzIEluZGl2aWR1YWxbXVxuXG4gICAgdGhpcy5jb250YWN0cyA9IGNvbnRhY3RzXG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoY29udGFjdHMpXG4gIH1cblxuICAvKipcbiAgICogZ24tdWktYXV0b2NvbXBsZXRlXG4gICAqL1xuICBkaXNwbGF5V2l0aEZuOiAodXNlcjogVXNlck1vZGVsKSA9PiBzdHJpbmcgPSAodXNlcikgPT5cbiAgICBgJHt1c2VyLm5hbWV9ICR7dXNlci5zdXJuYW1lfSAke1xuICAgICAgdXNlci5vcmdhbmlzYXRpb24gPyBgKCR7dXNlci5vcmdhbmlzYXRpb259KWAgOiAnJ1xuICAgIH1gXG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgYXV0b0NvbXBsZXRlQWN0aW9uID0gKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBmdXp6eUZpbHRlciA9IGNyZWF0ZUZ1enp5RmlsdGVyKHF1ZXJ5KVxuICAgIHJldHVybiB0aGlzLmFsbFVzZXJzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh1c2VycykgPT4gW1xuICAgICAgICB1c2Vycy5maWx0ZXIoKHVzZXIpID0+IGZ1enp5RmlsdGVyKHVzZXIudXNlcm5hbWUpKSxcbiAgICAgIF0pLFxuICAgICAgbWFwKChyZXN1bHRzKSA9PiByZXN1bHRzLnNsaWNlKDAsIDEwKSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogZ24tdWktYXV0b2NvbXBsZXRlXG4gICAqL1xuICBhZGRDb250YWN0KGNvbnRhY3Q6IFVzZXJNb2RlbCkge1xuICAgIGNvbnN0IG5ld0NvbnRhY3QgPSB7XG4gICAgICBmaXJzdE5hbWU6IGNvbnRhY3QubmFtZSA/PyAnJyxcbiAgICAgIGxhc3ROYW1lOiBjb250YWN0LnN1cm5hbWUgPz8gJycsXG4gICAgICBvcmdhbml6YXRpb246XG4gICAgICAgIHRoaXMuYWxsT3JnYW5pemF0aW9ucy5nZXQoY29udGFjdC5vcmdhbmlzYXRpb24pID8/XG4gICAgICAgICh7IG5hbWU6IGNvbnRhY3Qub3JnYW5pc2F0aW9uIH0gYXMgT3JnYW5pemF0aW9uKSxcbiAgICAgIGVtYWlsOiBjb250YWN0LmVtYWlsID8/ICcnLFxuICAgICAgcm9sZTogJ3BvaW50X29mX2NvbnRhY3QnLFxuICAgICAgYWRkcmVzczogJycsXG4gICAgICBwaG9uZTogJycsXG4gICAgICBwb3NpdGlvbjogJycsXG4gICAgfSBhcyBJbmRpdmlkdWFsXG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoWy4uLnRoaXMudmFsdWUsIG5ld0NvbnRhY3RdKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICA8Z24tdWktYXV0b2NvbXBsZXRlXG4gICAgW3BsYWNlaG9sZGVyXT1cIidlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQuY29udGFjdHMucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICBbYWN0aW9uXT1cImF1dG9Db21wbGV0ZUFjdGlvblwiXG4gICAgKGl0ZW1TZWxlY3RlZCk9XCJhZGRDb250YWN0KCRldmVudClcIlxuICAgIFtkaXNwbGF5V2l0aEZuXT1cImRpc3BsYXlXaXRoRm5cIlxuICAgIFttaW5DaGFyYWN0ZXJDb3VudF09XCIxXCJcbiAgICBbY2xlYXJPblNlbGVjdGlvbl09XCJ0cnVlXCJcbiAgPlxuICA8L2duLXVpLWF1dG9jb21wbGV0ZT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGFjdHMubGVuZ3RoID4gMDsgZWxzZSBub0NvbnRhY3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGFjdHMubGVuZ3RoID09PSAxXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb250YWN0IG9mIGNvbnRhY3RzOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgICAgICA8Z24tdWktY29udGFjdC1jYXJkXG4gICAgICAgICAgW2NvbnRhY3RdPVwiY29udGFjdFwiXG4gICAgICAgID48L2duLXVpLWNvbnRhY3QtY2FyZD4gPC9uZy1jb250YWluZXJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGFjdHMubGVuZ3RoID4gMVwiPlxuICAgICAgPGduLXVpLXNvcnRhYmxlLWxpc3RcbiAgICAgICAgW2l0ZW1zXT1cImNvbnRhY3RzXCJcbiAgICAgICAgKGl0ZW1zT3JkZXJDaGFuZ2UpPVwiaGFuZGxlQ29udGFjdHNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbZWxlbWVudFRlbXBsYXRlXT1cImNvbnRhY3RUZW1wbGF0ZVwiXG4gICAgICA+PC9nbi11aS1zb3J0YWJsZS1saXN0PlxuICAgICAgPG5nLXRlbXBsYXRlICNjb250YWN0VGVtcGxhdGUgbGV0LWNvbnRhY3Q+XG4gICAgICAgIDxnbi11aS1jb250YWN0LWNhcmQgW2NvbnRhY3RdPVwiY29udGFjdFwiPjwvZ24tdWktY29udGFjdC1jYXJkPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNub0NvbnRhY3Q+XG4gIDxkaXZcbiAgICBjbGFzcz1cInAtNCB0ZXh0LXNtIGJvcmRlciBib3JkZXItcHJpbWFyeSBiZy1wcmltYXJ5LWxpZ2h0ZXN0IHJvdW5kZWQtbGdcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLmNvbnRhY3RzLm5vQ29udGFjdFxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMvZm9ybS1maWVsZC1jb250YWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBS3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN2RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixjQUFjLEVBRWQsWUFBWSxFQUNaLFNBQVMsR0FDVixNQUFNLE1BQU0sQ0FBQTtBQUViLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtGQUFrRixDQUFBO0FBQzNILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVGQUF1RixDQUFBO0FBQ3JJLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFBO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlE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akR2Qyx5ekNBd0NBLHlERENJLFlBQVksZ1FBQ1oscUJBQXFCLG1WQUNyQixrQkFBa0IsNkdBQ2xCLGFBQWEsa0RBQ2Isb0JBQW9CLG9GQUNwQixxQkFBcUI7OzRGQUdaLDBCQUEwQjtrQkFmdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1oscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixxQkFBcUI7cUJBQ3RCO3lLQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQge1xuICBJbmRpdmlkdWFsLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSwgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBDb250YWN0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQuY29tcG9uZW50J1xuaW1wb3J0IHsgY3JlYXRlRnV6enlGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgU29ydGFibGVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9sYXlvdXQvc3JjJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtY29udGFjdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLWNvbnRhY3RzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZURpcmVjdGl2ZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICAgIENvbnRhY3RDYXJkQ29tcG9uZW50LFxuICAgIFNvcnRhYmxlTGlzdENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29udGFjdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZhbHVlOiBJbmRpdmlkdWFsW11cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGNvbnRhY3RzOiBJbmRpdmlkdWFsW10gPSBbXVxuXG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpXG5cbiAgYWxsVXNlcnMkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPlxuXG4gIGFsbE9yZ2FuaXphdGlvbnM6IE1hcDxzdHJpbmcsIE9yZ2FuaXphdGlvbj4gPSBuZXcgTWFwKClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtU2VydmljZUludGVyZmFjZTogUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgb3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2U6IE9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYWxsVXNlcnMkID0gdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlcnMoKVxuICB9XG5cbiAgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvbnRhY3RzQ2hhbmdlcyA9IGNoYW5nZXNbJ3ZhbHVlJ11cblxuICAgIGlmIChjb250YWN0c0NoYW5nZXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuYWxsT3JnYW5pemF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6YXRpb24+KFxuICAgICAgICAoXG4gICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLm9yZ2FuaXNhdGlvbnMkXG4gICAgICAgICAgKVxuICAgICAgICApLm1hcCgob3JnYW5pemF0aW9uKSA9PiBbb3JnYW5pemF0aW9uLm5hbWUsIG9yZ2FuaXphdGlvbl0pXG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKGNvbnRhY3RzQ2hhbmdlcy5jdXJyZW50VmFsdWUgIT09IGNvbnRhY3RzQ2hhbmdlcy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhY3RzKClcblxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbnRhY3RzKCkge1xuICAgIHRoaXMuY29udGFjdHMgPSB0aGlzLnZhbHVlLnJlZHVjZSgoYWNjLCBjb250YWN0KSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV0ZU9yZ2FuaXphdGlvbiA9IHRoaXMuYWxsT3JnYW5pemF0aW9ucy5nZXQoXG4gICAgICAgIGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWVcbiAgICAgIClcblxuICAgICAgY29uc3QgdXBkYXRlZENvbnRhY3QgPSB7XG4gICAgICAgIC4uLmNvbnRhY3QsXG4gICAgICAgIG9yZ2FuaXphdGlvbjpcbiAgICAgICAgICBjb21wbGV0ZU9yZ2FuaXphdGlvbiA/P1xuICAgICAgICAgICh7IG5hbWU6IGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWUgfSBhcyBPcmdhbml6YXRpb24pLFxuICAgICAgfVxuXG4gICAgICBhY2MucHVzaCh1cGRhdGVkQ29udGFjdClcblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIFtdIGFzIEluZGl2aWR1YWxbXSlcbiAgfVxuXG4gIGhhbmRsZUNvbnRhY3RzQ2hhbmdlZChpdGVtczogdW5rbm93bltdKSB7XG4gICAgY29uc3QgY29udGFjdHMgPSBpdGVtcyBhcyBJbmRpdmlkdWFsW11cblxuICAgIHRoaXMuY29udGFjdHMgPSBjb250YWN0c1xuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGNvbnRhY3RzKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgZGlzcGxheVdpdGhGbjogKHVzZXI6IFVzZXJNb2RlbCkgPT4gc3RyaW5nID0gKHVzZXIpID0+XG4gICAgYCR7dXNlci5uYW1lfSAke3VzZXIuc3VybmFtZX0gJHtcbiAgICAgIHVzZXIub3JnYW5pc2F0aW9uID8gYCgke3VzZXIub3JnYW5pc2F0aW9ufSlgIDogJydcbiAgICB9YFxuXG4gIC8qKlxuICAgKiBnbi11aS1hdXRvY29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZUFjdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZnV6enlGaWx0ZXIgPSBjcmVhdGVGdXp6eUZpbHRlcihxdWVyeSlcbiAgICByZXR1cm4gdGhpcy5hbGxVc2VycyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlcnMpID0+IFtcbiAgICAgICAgdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiBmdXp6eUZpbHRlcih1c2VyLnVzZXJuYW1lKSksXG4gICAgICBdKSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4gcmVzdWx0cy5zbGljZSgwLCAxMCkpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgYWRkQ29udGFjdChjb250YWN0OiBVc2VyTW9kZWwpIHtcbiAgICBjb25zdCBuZXdDb250YWN0ID0ge1xuICAgICAgZmlyc3ROYW1lOiBjb250YWN0Lm5hbWUgPz8gJycsXG4gICAgICBsYXN0TmFtZTogY29udGFjdC5zdXJuYW1lID8/ICcnLFxuICAgICAgb3JnYW5pemF0aW9uOlxuICAgICAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMuZ2V0KGNvbnRhY3Qub3JnYW5pc2F0aW9uKSA/P1xuICAgICAgICAoeyBuYW1lOiBjb250YWN0Lm9yZ2FuaXNhdGlvbiB9IGFzIE9yZ2FuaXphdGlvbiksXG4gICAgICBlbWFpbDogY29udGFjdC5lbWFpbCA/PyAnJyxcbiAgICAgIHJvbGU6ICdwb2ludF9vZl9jb250YWN0JyxcbiAgICAgIGFkZHJlc3M6ICcnLFxuICAgICAgcGhvbmU6ICcnLFxuICAgICAgcG9zaXRpb246ICcnLFxuICAgIH0gYXMgSW5kaXZpZHVhbFxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KFsuLi50aGlzLnZhbHVlLCBuZXdDb250YWN0XSlcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKClcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgPGduLXVpLWF1dG9jb21wbGV0ZVxuICAgIFtwbGFjZWhvbGRlcl09XCInZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLmNvbnRhY3RzLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgW2FjdGlvbl09XCJhdXRvQ29tcGxldGVBY3Rpb25cIlxuICAgIChpdGVtU2VsZWN0ZWQpPVwiYWRkQ29udGFjdCgkZXZlbnQpXCJcbiAgICBbZGlzcGxheVdpdGhGbl09XCJkaXNwbGF5V2l0aEZuXCJcbiAgICBbbWluQ2hhcmFjdGVyQ291bnRdPVwiMVwiXG4gICAgW2NsZWFyT25TZWxlY3Rpb25dPVwidHJ1ZVwiXG4gID5cbiAgPC9nbi11aS1hdXRvY29tcGxldGU+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhY3RzLmxlbmd0aCA+IDA7IGVsc2Ugbm9Db250YWN0XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhY3RzLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29udGFjdCBvZiBjb250YWN0czsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICAgICAgPGduLXVpLWNvbnRhY3QtY2FyZFxuICAgICAgICAgIFtjb250YWN0XT1cImNvbnRhY3RcIlxuICAgICAgICA+PC9nbi11aS1jb250YWN0LWNhcmQ+IDwvbmctY29udGFpbmVyXG4gICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhY3RzLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxnbi11aS1zb3J0YWJsZS1saXN0XG4gICAgICAgIFtpdGVtc109XCJjb250YWN0c1wiXG4gICAgICAgIChpdGVtc09yZGVyQ2hhbmdlKT1cImhhbmRsZUNvbnRhY3RzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2VsZW1lbnRUZW1wbGF0ZV09XCJjb250YWN0VGVtcGxhdGVcIlxuICAgICAgPjwvZ24tdWktc29ydGFibGUtbGlzdD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGFjdFRlbXBsYXRlIGxldC1jb250YWN0PlxuICAgICAgICA8Z24tdWktY29udGFjdC1jYXJkIFtjb250YWN0XT1cImNvbnRhY3RcIj48L2duLXVpLWNvbnRhY3QtY2FyZD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbm9Db250YWN0PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJwLTQgdGV4dC1zbSBib3JkZXIgYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodGVzdCByb3VuZGVkLWxnXCJcbiAgICB0cmFuc2xhdGVcbiAgPlxuICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5jb250YWN0cy5ub0NvbnRhY3RcbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,25 +1,21 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
3
- import { RoleLabels, } from '../../../../../../../../../libs/common/domain/src/lib/model/record';
3
+ import { RoleLabels, RoleValues, } from '../../../../../../../../../libs/common/domain/src/lib/model/record';
4
4
  import { OrganizationsServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/organizations.service.interface';
5
5
  import { PlatformServiceInterface } from '../../../../../../../../../libs/common/domain/src/lib/platform.service.interface';
6
6
  import { SortableListComponent } from '../../../../../../../../../libs/ui/layout/src';
7
- import { AutocompleteComponent, DropdownSelectorComponent, UiInputsModule, } from '../../../../../../../../../libs/ui/inputs/src';
8
- import { UiWidgetsModule } from '../../../../../../../../../libs/ui/widgets/src';
7
+ import { AutocompleteComponent, ButtonComponent, } from '../../../../../../../../../libs/ui/inputs/src';
9
8
  import { createFuzzyFilter } from '../../../../../../../../../libs/util/shared/src';
10
- import { TranslateModule } from '@ngx-translate/core';
9
+ import { TranslatePipe } from '@ngx-translate/core';
11
10
  import { debounceTime, distinctUntilChanged, firstValueFrom, switchMap, } from 'rxjs';
12
11
  import { map } from 'rxjs/operators';
13
12
  import { ContactCardComponent } from '../../../contact-card/contact-card.component';
14
13
  import { NgIconComponent, provideIcons, provideNgIconsConfig, } from '@ng-icons/core';
15
14
  import { iconoirPlus } from '@ng-icons/iconoir';
16
- import { RoleValues } from '../../../../../../../../../libs/common/domain/src/lib/model/record';
17
15
  import * as i0 from "@angular/core";
18
16
  import * as i1 from "../../../../../../../../../libs/common/domain/src/lib/platform.service.interface";
19
17
  import * as i2 from "../../../../../../../../../libs/common/domain/src/lib/organizations.service.interface";
20
- import * as i3 from "../../../../../../../../ui/inputs/src/lib/button/button.component";
21
- import * as i4 from "@angular/common";
22
- import * as i5 from "@ngx-translate/core";
18
+ import * as i3 from "@angular/common";
23
19
  export class FormFieldContactsForResourceComponent {
24
20
  constructor(platformServiceInterface, organizationsServiceInterface) {
25
21
  this.platformServiceInterface = platformServiceInterface;
@@ -127,20 +123,18 @@ export class FormFieldContactsForResourceComponent {
127
123
  provideNgIconsConfig({
128
124
  size: '1.5rem',
129
125
  }),
130
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n *ngIf=\"role !== 'unspecified' && role !== 'other'\"\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: i3.ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button type=\"gray\" (buttonClick)=\"addRoleToDisplay(role)\">\n <ng-icon name=\"iconoirPlus\" class=\"text-primary\"></ng-icon>\n &nbsp;\n <span translate>{{ roleToLabel(role) }}</span>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n *ngIf=\"role !== 'unspecified' && role !== 'other'\"\n [placeholder]=\"\n 'editor.record.form.field.contactsForResource.placeholder' | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <gn-ui-sortable-list\n [items]=\"contacts\"\n (itemsOrderChange)=\"handleContactsChanged($event, role)\"\n [elementTemplate]=\"contactTemplate\"\n ></gn-ui-sortable-list>\n <ng-template #contactTemplate let-contact>\n <gn-ui-contact-card [contact]=\"contact\"></gn-ui-contact-card>\n </ng-template>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
131
127
  }
132
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
133
129
  type: Component,
134
130
  args: [{ selector: 'gn-ui-form-field-contacts-for-resource', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
135
- DropdownSelectorComponent,
136
- UiInputsModule,
137
131
  CommonModule,
138
- UiWidgetsModule,
139
132
  AutocompleteComponent,
140
- TranslateModule,
141
133
  ContactCardComponent,
142
134
  SortableListComponent,
143
135
  NgIconComponent,
136
+ ButtonComponent,
137
+ TranslatePipe,
144
138
  ], providers: [
145
139
  provideIcons({ iconoirPlus }),
146
140
  provideNgIconsConfig({
@@ -152,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
152
146
  }], valueChange: [{
153
147
  type: Output
154
148
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZS9mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sb0VBQW9FLENBQUE7QUFFM0UsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUZBQXVGLENBQUE7QUFDckksT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFDM0gsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUE7QUFDckYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsY0FBYyxHQUNmLE1BQU0sK0NBQStDLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFBO0FBQ2hGLE9BQU8s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dEVBcUVBLDZIRGpCSSxjQUFjLCtLQUNkLFlBQVksK1BBQ1osZUFBZSwrQkFDZixxQkFBcUIsa1ZBQ3JCLGVBQWUsbU9BQ2Ysb0JBQW9CLG9GQUNwQixxQkFBcUIscUlBQ3JCLGVBQWU7OzRGQVNOLHFDQUFxQztrQkF4QmpELFNBQVM7K0JBQ0Usd0NBQXdDLG1CQUdqQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCx5QkFBeUI7d0JBQ3pCLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixlQUFlO3dCQUNmLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLHFCQUFxQjt3QkFDckIsZUFBZTtxQkFDaEIsYUFDVTt3QkFDVCxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQzt3QkFDN0Isb0JBQW9CLENBQUM7NEJBQ25CLElBQUksRUFBRSxRQUFRO3lCQUNmLENBQUM7cUJBQ0g7eUlBS1EsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgSW5kaXZpZHVhbCxcbiAgT3JnYW5pemF0aW9uLFxuICBSb2xlLFxuICBSb2xlTGFiZWxzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC91c2VyJ1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9vcmdhbml6YXRpb25zLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBTb3J0YWJsZUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2xheW91dC9zcmMnXG5pbXBvcnQge1xuICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gIERyb3Bkb3duU2VsZWN0b3JDb21wb25lbnQsXG4gIFVpSW5wdXRzTW9kdWxlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBVaVdpZGdldHNNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL3dpZGdldHMvc3JjJ1xuaW1wb3J0IHsgY3JlYXRlRnV6enlGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvc2hhcmVkL3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBDb250YWN0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJQbHVzIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5pbXBvcnQgeyBSb2xlVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFVpSW5wdXRzTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBVaVdpZGdldHNNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb250YWN0Q2FyZENvbXBvbmVudCxcbiAgICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG4gICAgTmdJY29uQ29tcG9uZW50LFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBwcm92aWRlSWNvbnMoeyBpY29ub2lyUGx1cyB9KSxcbiAgICBwcm92aWRlTmdJY29uc0NvbmZpZyh7XG4gICAgICBzaXplOiAnMS41cmVtJyxcbiAgICB9KSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29udGFjdHNGb3JSZXNvdXJjZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0XG57XG4gIEBJbnB1dCgpIHZhbHVlOiBJbmRpdmlkdWFsW11cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SW5kaXZpZHVhbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGNvbnRhY3RzRm9yUmVzc291cmNlQnlSb2xlOiBNYXA8Um9sZSwgSW5kaXZpZHVhbFtdPiA9IG5ldyBNYXAoKVxuICByb2xlVmFsdWVzID0gUm9sZVZhbHVlc1xuXG4gIHJvbGVzVG9QaWNrOiBSb2xlW10gPSB0aGlzLnJvbGVWYWx1ZXMuZmlsdGVyKFxuICAgIChyb2xlKSA9PiByb2xlICE9PSAnb3RoZXInICYmIHJvbGUgIT09ICd1bnNwZWNpZmllZCdcbiAgKVxuXG4gIHJvbGVTZWN0aW9uc1RvRGlzcGxheTogUm9sZVtdID0gW11cblxuICBhbGxPcmdhbml6YXRpb25zOiBNYXA8c3RyaW5nLCBPcmdhbml6YXRpb24+ID0gbmV3IE1hcCgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2U6IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSxcbiAgICBwcml2YXRlIG9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlOiBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZVxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy51cGRhdGVDb250YWN0c0ZvclJlc3NvdXJjZSgpXG4gICAgdGhpcy5tYW5hZ2VSb2xlU2VjdGlvbnNUb0Rpc3BsYXkodGhpcy52YWx1ZSlcbiAgICB0aGlzLmZpbHRlclJvbGVzVG9QaWNrKClcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuYWxsT3JnYW5pemF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBPcmdhbml6YXRpb24+KFxuICAgICAgKFxuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLm9yZ2FuaXphdGlvbnNTZXJ2aWNlSW50ZXJmYWNlLm9yZ2FuaXNhdGlvbnMkKVxuICAgICAgKS5tYXAoKG9yZ2FuaXphdGlvbikgPT4gW29yZ2FuaXphdGlvbi5uYW1lLCBvcmdhbml6YXRpb25dKVxuICAgIClcbiAgICB0aGlzLnVwZGF0ZUNvbnRhY3RzRm9yUmVzc291cmNlKClcbiAgICB0aGlzLm1hbmFnZVJvbGVTZWN0aW9uc1RvRGlzcGxheSh0aGlzLnZhbHVlKVxuICAgIHRoaXMuZmlsdGVyUm9sZXNUb1BpY2soKVxuICB9XG5cbiAgYWRkUm9sZVRvRGlzcGxheShyb2xlVG9BZGQ6IHN0cmluZykge1xuICAgIHRoaXMucm9sZVNlY3Rpb25zVG9EaXNwbGF5LnB1c2gocm9sZVRvQWRkKVxuICAgIHRoaXMuZmlsdGVyUm9sZXNUb1BpY2soKVxuICB9XG5cbiAgZmlsdGVyUm9sZXNUb1BpY2soKSB7XG4gICAgdGhpcy5yb2xlc1RvUGljayA9IHRoaXMucm9sZXNUb1BpY2suZmlsdGVyKFxuICAgICAgKHJvbGUpID0+ICF0aGlzLnJvbGVTZWN0aW9uc1RvRGlzcGxheS5pbmNsdWRlcyhyb2xlKVxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZUNvbnRhY3RzRm9yUmVzc291cmNlKCkge1xuICAgIHRoaXMuY29udGFjdHNGb3JSZXNzb3VyY2VCeVJvbGUgPSB0aGlzLnZhbHVlLnJlZHVjZSgoYWNjLCBjb250YWN0KSA9PiB7XG4gICAgICBjb25zdCBjb21wbGV0ZU9yZ2FuaXphdGlvbiA9IGNvbnRhY3Qub3JnYW5pemF0aW9uXG4gICAgICAgID8gdGhpcy5hbGxPcmdhbml6YXRpb25zLmdldChjb250YWN0Lm9yZ2FuaXphdGlvbi5uYW1lKVxuICAgICAgICA6IG51bGxcbiAgICAgIGNvbnN0IG9yZ2FuaXphdGlvbiA9IGNvbXBsZXRlT3JnYW5pemF0aW9uID8/IGNvbnRhY3Qub3JnYW5pemF0aW9uXG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRDb250YWN0ID0ge1xuICAgICAgICAuLi5jb250YWN0LFxuICAgICAgICAuLi4ob3JnYW5pemF0aW9uICYmIHsgb3JnYW5pemF0aW9uIH0pLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWFjYy5oYXMoY29udGFjdC5yb2xlKSkge1xuICAgICAgICBhY2Muc2V0KGNvbnRhY3Qucm9sZSwgW10pXG4gICAgICB9XG5cbiAgICAgIGFjYy5nZXQoY29udGFjdC5yb2xlKS5wdXNoKHVwZGF0ZWRDb250YWN0KVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwgbmV3IE1hcDxSb2xlLCBJbmRpdmlkdWFsW10+KCkpXG4gIH1cblxuICBtYW5hZ2VSb2xlU2VjdGlvbnNUb0Rpc3BsYXkoY29udGFjdHNGb3JSZXNvdXJjZTogSW5kaXZpZHVhbFtdKSB7XG4gICAgY29uc3Qgcm9sZXMgPSBjb250YWN0c0ZvclJlc291cmNlLm1hcChcbiAgICAgIChjb250YWN0OiBJbmRpdmlkdWFsKSA9PiBjb250YWN0LnJvbGVcbiAgICApIGFzIFJvbGVbXVxuXG4gICAgcm9sZXMuZm9yRWFjaCgocm9sZTogUm9sZSkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnJvbGVTZWN0aW9uc1RvRGlzcGxheS5pbmNsdWRlcyhyb2xlKSkge1xuICAgICAgICB0aGlzLnJvbGVTZWN0aW9uc1RvRGlzcGxheS5wdXNoKHJvbGUpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJlbW92ZUNvbnRhY3QoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IG5ld0NvbnRhY3RzZm9yUmVzc291cmNlID0gdGhpcy52YWx1ZS5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KVxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdDb250YWN0c2ZvclJlc3NvdXJjZSlcbiAgfVxuXG4gIGhhbmRsZUNvbnRhY3RzQ2hhbmdlZChpdGVtczogdW5rbm93bltdLCByb2xlOiBSb2xlKSB7XG4gICAgY29uc3QgY29udGFjdHMgPSBpdGVtcyBhcyBJbmRpdmlkdWFsW11cblxuICAgIHRoaXMuY29udGFjdHNGb3JSZXNzb3VyY2VCeVJvbGUuc2V0KHJvbGUsIGNvbnRhY3RzKVxuXG4gICAgY29uc3QgbmV3Q29udHJvbFZhbHVlID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuY29udGFjdHNGb3JSZXNzb3VyY2VCeVJvbGUudmFsdWVzKClcbiAgICApLmZsYXQoKVxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KG5ld0NvbnRyb2xWYWx1ZSlcbiAgfVxuXG4gIHByb3RlY3RlZCByb2xlVG9MYWJlbChyb2xlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBSb2xlTGFiZWxzLmdldChyb2xlKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgZGlzcGxheVdpdGhGbjogKHVzZXI6IFVzZXJNb2RlbCkgPT4gc3RyaW5nID0gKHVzZXIpID0+XG4gICAgdXNlci5uYW1lXG4gICAgICA/IGAke3VzZXIubmFtZX0gJHt1c2VyLnN1cm5hbWV9ICR7XG4gICAgICAgICAgdXNlci5vcmdhbmlzYXRpb24gPyBgKCR7dXNlci5vcmdhbmlzYXRpb259KWAgOiAnJ1xuICAgICAgICB9YFxuICAgICAgOiBgYFxuXG4gIC8qKlxuICAgKiBnbi11aS1hdXRvY29tcGxldGVcbiAgICovXG4gIGF1dG9Db21wbGV0ZUFjdGlvbiA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZnV6enlGaWx0ZXIgPSBjcmVhdGVGdXp6eUZpbHRlcihxdWVyeSlcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UuZ2V0VXNlcnMoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh1c2VycykgPT4gW1xuICAgICAgICB1c2Vycy5maWx0ZXIoKHVzZXIpID0+IGZ1enp5RmlsdGVyKHVzZXIudXNlcm5hbWUpKSxcbiAgICAgIF0pLFxuICAgICAgbWFwKChyZXN1bHRzKSA9PiByZXN1bHRzLnNsaWNlKDAsIDEwKSksXG4gICAgICBkZWJvdW5jZVRpbWUoMzAwKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogZ24tdWktYXV0b2NvbXBsZXRlXG4gICAqL1xuICBhZGRDb250YWN0KGNvbnRhY3Q6IHVua25vd24sIHJvbGU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld0NvbnRhY3QgPSBjb250YWN0IGFzIFVzZXJNb2RlbFxuICAgIGNvbnN0IG5ld0NvbnRhY3RzRm9yUmVzc291cmNlID0ge1xuICAgICAgZmlyc3ROYW1lOiBuZXdDb250YWN0Lm5hbWUgPz8gJycsXG4gICAgICBsYXN0TmFtZTogbmV3Q29udGFjdC5zdXJuYW1lID8/ICcnLFxuICAgICAgb3JnYW5pemF0aW9uOlxuICAgICAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMuZ2V0KG5ld0NvbnRhY3Qub3JnYW5pc2F0aW9uKSA/P1xuICAgICAgICAoeyBuYW1lOiBuZXdDb250YWN0Lm9yZ2FuaXNhdGlvbiB9IGFzIE9yZ2FuaXphdGlvbiksXG4gICAgICBlbWFpbDogbmV3Q29udGFjdC5lbWFpbCA/PyAnJyxcbiAgICAgIHJvbGUsXG4gICAgICBhZGRyZXNzOiAnJyxcbiAgICAgIHBob25lOiAnJyxcbiAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICB9IGFzIEluZGl2aWR1YWxcblxuICAgIGNvbnN0IG5ld0NvbnRyb2xWYWx1ZSA9IFsuLi50aGlzLnZhbHVlLCBuZXdDb250YWN0c0ZvclJlc3NvdXJjZV1cblxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdDb250cm9sVmFsdWUpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGZsZXgtd3JhcCBnYXAtMlwiIGRhdGEtdGVzdD1cInJvbGVzVG9QaWNrXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm9sZSBvZiByb2xlc1RvUGlja1wiPlxuICAgICAgPGduLXVpLWJ1dHRvbiB0eXBlPVwiZ3JheVwiIChidXR0b25DbGljayk9XCJhZGRSb2xlVG9EaXNwbGF5KHJvbGUpXCI+XG4gICAgICAgIDxuZy1pY29uIG5hbWU9XCJpY29ub2lyUGx1c1wiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+PC9uZy1pY29uPlxuICAgICAgICAmbmJzcDtcbiAgICAgICAgPHNwYW4gdHJhbnNsYXRlPnt7IHJvbGVUb0xhYmVsKHJvbGUpIH19PC9zcGFuPlxuICAgICAgPC9nbi11aS1idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtdC04XCJcbiAgICAqbmdJZj1cIlxuICAgICAgcm9sZVNlY3Rpb25zVG9EaXNwbGF5ICYmIHJvbGVTZWN0aW9uc1RvRGlzcGxheS5sZW5ndGggPiAwO1xuICAgICAgZWxzZSBub0NvbnRhY3RcbiAgICBcIlxuICAgIGRhdGEtdGVzdD1cImRpc3BsYXllZFJvbGVzXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgcm9sZSBvZiByb2xlU2VjdGlvbnNUb0Rpc3BsYXk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgaXNMYXN0ID0gbGFzdFxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkIHRleHQtYmFzZVwiIHRyYW5zbGF0ZT57e1xuICAgICAgICAgIHJvbGVUb0xhYmVsKHJvbGUpXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxnbi11aS1hdXRvY29tcGxldGVcbiAgICAgICAgKm5nSWY9XCJyb2xlICE9PSAndW5zcGVjaWZpZWQnICYmIHJvbGUgIT09ICdvdGhlcidcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5jb250YWN0c0ZvclJlc291cmNlLnBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbYWN0aW9uXT1cImF1dG9Db21wbGV0ZUFjdGlvblwiXG4gICAgICAgIChpdGVtU2VsZWN0ZWQpPVwiYWRkQ29udGFjdCgkZXZlbnQsIHJvbGUpXCJcbiAgICAgICAgW2Rpc3BsYXlXaXRoRm5dPVwiZGlzcGxheVdpdGhGblwiXG4gICAgICAgIFttaW5DaGFyYWN0ZXJDb3VudF09XCIxXCJcbiAgICAgICAgW2NsZWFyT25TZWxlY3Rpb25dPVwidHJ1ZVwiXG4gICAgICAgIFthbGxvd1N1Ym1pdF09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICA8L2duLXVpLWF1dG9jb21wbGV0ZT5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRhY3RzRm9yUmVzc291cmNlQnlSb2xlLmdldChyb2xlKSBhcyBjb250YWN0c1wiPlxuICAgICAgICA8Z24tdWktc29ydGFibGUtbGlzdFxuICAgICAgICAgIFtpdGVtc109XCJjb250YWN0c1wiXG4gICAgICAgICAgKGl0ZW1zT3JkZXJDaGFuZ2UpPVwiaGFuZGxlQ29udGFjdHNDaGFuZ2VkKCRldmVudCwgcm9sZSlcIlxuICAgICAgICAgIFtlbGVtZW50VGVtcGxhdGVdPVwiY29udGFjdFRlbXBsYXRlXCJcbiAgICAgICAgPjwvZ24tdWktc29ydGFibGUtbGlzdD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjb250YWN0VGVtcGxhdGUgbGV0LWNvbnRhY3Q+XG4gICAgICAgICAgPGduLXVpLWNvbnRhY3QtY2FyZCBbY29udGFjdF09XCJjb250YWN0XCI+PC9nbi11aS1jb250YWN0LWNhcmQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGhyIGNsYXNzPVwiYm9yZGVyLXQtWyNENkQzRDFdIG10LTQgbWItNlwiICpuZ0lmPVwiIWlzTGFzdFwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI25vQ29udGFjdD5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInAtNCBib3JkZXIgYm9yZGVyLXByaW1hcnkgYmctcHJpbWFyeS1saWdodGVzdCByb3VuZGVkLWxnXCJcbiAgICAgIHRyYW5zbGF0ZVxuICAgID5cbiAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5jb250YWN0c0ZvclJlc291cmNlLm5vQ29udGFjdFxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZS9mb3JtLWZpZWxkLWNvbnRhY3RzLWZvci1yZXNvdXJjZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBSUwsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLG9FQUFvRSxDQUFBO0FBRTNFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVGQUF1RixDQUFBO0FBQ3JJLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtGQUFrRixDQUFBO0FBQzNILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFBO0FBQ3JGLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZUFBZSxHQUNoQixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFBO0FBQ25GLE9BQU8s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QUFhOzs0RkFTSixxQ0FBcUM7a0JBdEJqRCxTQUFTOytCQUNFLHdDQUF3QyxtQkFHakMsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTtxQkFDZCxhQUNVO3dCQUNULFlBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO3dCQUM3QixvQkFBb0IsQ0FBQzs0QkFDbkIsSUFBSSxFQUFFLFFBQVE7eUJBQ2YsQ0FBQztxQkFDSDt5SUFLUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBJbmRpdmlkdWFsLFxuICBPcmdhbml6YXRpb24sXG4gIFJvbGUsXG4gIFJvbGVMYWJlbHMsXG4gIFJvbGVWYWx1ZXMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3VzZXInXG5pbXBvcnQgeyBPcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL29yZ2FuaXphdGlvbnMuc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IFNvcnRhYmxlTGlzdENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7XG4gIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgQnV0dG9uQ29tcG9uZW50LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpL2lucHV0cy9zcmMnXG5pbXBvcnQgeyBjcmVhdGVGdXp6eUZpbHRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdXRpbC9zaGFyZWQvc3JjJ1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQge1xuICBkZWJvdW5jZVRpbWUsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaXJzdFZhbHVlRnJvbSxcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBDb250YWN0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQuY29tcG9uZW50J1xuaW1wb3J0IHtcbiAgTmdJY29uQ29tcG9uZW50LFxuICBwcm92aWRlSWNvbnMsXG4gIHByb3ZpZGVOZ0ljb25zQ29uZmlnLFxufSBmcm9tICdAbmctaWNvbnMvY29yZSdcbmltcG9ydCB7IGljb25vaXJQbHVzIH0gZnJvbSAnQG5nLWljb25zL2ljb25vaXInXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2duLXVpLWZvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQtY29udGFjdHMtZm9yLXJlc291cmNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC1jb250YWN0cy1mb3ItcmVzb3VyY2UuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgQ29udGFjdENhcmRDb21wb25lbnQsXG4gICAgU29ydGFibGVMaXN0Q29tcG9uZW50LFxuICAgIE5nSWNvbkNvbXBvbmVudCxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZUljb25zKHsgaWNvbm9pclBsdXMgfSksXG4gICAgcHJvdmlkZU5nSWNvbnNDb25maWcoe1xuICAgICAgc2l6ZTogJzEuNXJlbScsXG4gICAgfSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZENvbnRhY3RzRm9yUmVzb3VyY2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdFxue1xuICBASW5wdXQoKSB2YWx1ZTogSW5kaXZpZHVhbFtdXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEluZGl2aWR1YWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcblxuICBjb250YWN0c0ZvclJlc3NvdXJjZUJ5Um9sZTogTWFwPFJvbGUsIEluZGl2aWR1YWxbXT4gPSBuZXcgTWFwKClcbiAgcm9sZVZhbHVlcyA9IFJvbGVWYWx1ZXNcblxuICByb2xlc1RvUGljazogUm9sZVtdID0gdGhpcy5yb2xlVmFsdWVzLmZpbHRlcihcbiAgICAocm9sZSkgPT4gcm9sZSAhPT0gJ290aGVyJyAmJiByb2xlICE9PSAndW5zcGVjaWZpZWQnXG4gIClcblxuICByb2xlU2VjdGlvbnNUb0Rpc3BsYXk6IFJvbGVbXSA9IFtdXG5cbiAgYWxsT3JnYW5pemF0aW9uczogTWFwPHN0cmluZywgT3JnYW5pemF0aW9uPiA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBvcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZTogT3JnYW5pemF0aW9uc1NlcnZpY2VJbnRlcmZhY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMudXBkYXRlQ29udGFjdHNGb3JSZXNzb3VyY2UoKVxuICAgIHRoaXMubWFuYWdlUm9sZVNlY3Rpb25zVG9EaXNwbGF5KHRoaXMudmFsdWUpXG4gICAgdGhpcy5maWx0ZXJSb2xlc1RvUGljaygpXG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFsbE9yZ2FuaXphdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgT3JnYW5pemF0aW9uPihcbiAgICAgIChcbiAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5vcmdhbml6YXRpb25zU2VydmljZUludGVyZmFjZS5vcmdhbmlzYXRpb25zJClcbiAgICAgICkubWFwKChvcmdhbml6YXRpb24pID0+IFtvcmdhbml6YXRpb24ubmFtZSwgb3JnYW5pemF0aW9uXSlcbiAgICApXG4gICAgdGhpcy51cGRhdGVDb250YWN0c0ZvclJlc3NvdXJjZSgpXG4gICAgdGhpcy5tYW5hZ2VSb2xlU2VjdGlvbnNUb0Rpc3BsYXkodGhpcy52YWx1ZSlcbiAgICB0aGlzLmZpbHRlclJvbGVzVG9QaWNrKClcbiAgfVxuXG4gIGFkZFJvbGVUb0Rpc3BsYXkocm9sZVRvQWRkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvbGVTZWN0aW9uc1RvRGlzcGxheS5wdXNoKHJvbGVUb0FkZClcbiAgICB0aGlzLmZpbHRlclJvbGVzVG9QaWNrKClcbiAgfVxuXG4gIGZpbHRlclJvbGVzVG9QaWNrKCkge1xuICAgIHRoaXMucm9sZXNUb1BpY2sgPSB0aGlzLnJvbGVzVG9QaWNrLmZpbHRlcihcbiAgICAgIChyb2xlKSA9PiAhdGhpcy5yb2xlU2VjdGlvbnNUb0Rpc3BsYXkuaW5jbHVkZXMocm9sZSlcbiAgICApXG4gIH1cblxuICB1cGRhdGVDb250YWN0c0ZvclJlc3NvdXJjZSgpIHtcbiAgICB0aGlzLmNvbnRhY3RzRm9yUmVzc291cmNlQnlSb2xlID0gdGhpcy52YWx1ZS5yZWR1Y2UoKGFjYywgY29udGFjdCkgPT4ge1xuICAgICAgY29uc3QgY29tcGxldGVPcmdhbml6YXRpb24gPSBjb250YWN0Lm9yZ2FuaXphdGlvblxuICAgICAgICA/IHRoaXMuYWxsT3JnYW5pemF0aW9ucy5nZXQoY29udGFjdC5vcmdhbml6YXRpb24ubmFtZSlcbiAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBvcmdhbml6YXRpb24gPSBjb21wbGV0ZU9yZ2FuaXphdGlvbiA/PyBjb250YWN0Lm9yZ2FuaXphdGlvblxuXG4gICAgICBjb25zdCB1cGRhdGVkQ29udGFjdCA9IHtcbiAgICAgICAgLi4uY29udGFjdCxcbiAgICAgICAgLi4uKG9yZ2FuaXphdGlvbiAmJiB7IG9yZ2FuaXphdGlvbiB9KSxcbiAgICAgIH1cblxuICAgICAgaWYgKCFhY2MuaGFzKGNvbnRhY3Qucm9sZSkpIHtcbiAgICAgICAgYWNjLnNldChjb250YWN0LnJvbGUsIFtdKVxuICAgICAgfVxuXG4gICAgICBhY2MuZ2V0KGNvbnRhY3Qucm9sZSkucHVzaCh1cGRhdGVkQ29udGFjdClcblxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIG5ldyBNYXA8Um9sZSwgSW5kaXZpZHVhbFtdPigpKVxuICB9XG5cbiAgbWFuYWdlUm9sZVNlY3Rpb25zVG9EaXNwbGF5KGNvbnRhY3RzRm9yUmVzb3VyY2U6IEluZGl2aWR1YWxbXSkge1xuICAgIGNvbnN0IHJvbGVzID0gY29udGFjdHNGb3JSZXNvdXJjZS5tYXAoXG4gICAgICAoY29udGFjdDogSW5kaXZpZHVhbCkgPT4gY29udGFjdC5yb2xlXG4gICAgKSBhcyBSb2xlW11cblxuICAgIHJvbGVzLmZvckVhY2goKHJvbGU6IFJvbGUpID0+IHtcbiAgICAgIGlmICghdGhpcy5yb2xlU2VjdGlvbnNUb0Rpc3BsYXkuaW5jbHVkZXMocm9sZSkpIHtcbiAgICAgICAgdGhpcy5yb2xlU2VjdGlvbnNUb0Rpc3BsYXkucHVzaChyb2xlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICByZW1vdmVDb250YWN0KGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBuZXdDb250YWN0c2ZvclJlc3NvdXJjZSA9IHRoaXMudmFsdWUuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleClcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3Q29udGFjdHNmb3JSZXNzb3VyY2UpXG4gIH1cblxuICBoYW5kbGVDb250YWN0c0NoYW5nZWQoaXRlbXM6IHVua25vd25bXSwgcm9sZTogUm9sZSkge1xuICAgIGNvbnN0IGNvbnRhY3RzID0gaXRlbXMgYXMgSW5kaXZpZHVhbFtdXG5cbiAgICB0aGlzLmNvbnRhY3RzRm9yUmVzc291cmNlQnlSb2xlLnNldChyb2xlLCBjb250YWN0cylcblxuICAgIGNvbnN0IG5ld0NvbnRyb2xWYWx1ZSA9IEFycmF5LmZyb20oXG4gICAgICB0aGlzLmNvbnRhY3RzRm9yUmVzc291cmNlQnlSb2xlLnZhbHVlcygpXG4gICAgKS5mbGF0KClcblxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdDb250cm9sVmFsdWUpXG4gIH1cblxuICBwcm90ZWN0ZWQgcm9sZVRvTGFiZWwocm9sZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUm9sZUxhYmVscy5nZXQocm9sZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBnbi11aS1hdXRvY29tcGxldGVcbiAgICovXG4gIGRpc3BsYXlXaXRoRm46ICh1c2VyOiBVc2VyTW9kZWwpID0+IHN0cmluZyA9ICh1c2VyKSA9PlxuICAgIHVzZXIubmFtZVxuICAgICAgPyBgJHt1c2VyLm5hbWV9ICR7dXNlci5zdXJuYW1lfSAke1xuICAgICAgICAgIHVzZXIub3JnYW5pc2F0aW9uID8gYCgke3VzZXIub3JnYW5pc2F0aW9ufSlgIDogJydcbiAgICAgICAgfWBcbiAgICAgIDogYGBcblxuICAvKipcbiAgICogZ24tdWktYXV0b2NvbXBsZXRlXG4gICAqL1xuICBhdXRvQ29tcGxldGVBY3Rpb24gPSAocXVlcnk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZ1enp5RmlsdGVyID0gY3JlYXRlRnV6enlGaWx0ZXIocXVlcnkpXG4gICAgcmV0dXJuIHRoaXMucGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlLmdldFVzZXJzKCkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodXNlcnMpID0+IFtcbiAgICAgICAgdXNlcnMuZmlsdGVyKCh1c2VyKSA9PiBmdXp6eUZpbHRlcih1c2VyLnVzZXJuYW1lKSksXG4gICAgICBdKSxcbiAgICAgIG1hcCgocmVzdWx0cykgPT4gcmVzdWx0cy5zbGljZSgwLCAxMCkpLFxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIGduLXVpLWF1dG9jb21wbGV0ZVxuICAgKi9cbiAgYWRkQ29udGFjdChjb250YWN0OiB1bmtub3duLCByb2xlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdDb250YWN0ID0gY29udGFjdCBhcyBVc2VyTW9kZWxcbiAgICBjb25zdCBuZXdDb250YWN0c0ZvclJlc3NvdXJjZSA9IHtcbiAgICAgIGZpcnN0TmFtZTogbmV3Q29udGFjdC5uYW1lID8/ICcnLFxuICAgICAgbGFzdE5hbWU6IG5ld0NvbnRhY3Quc3VybmFtZSA/PyAnJyxcbiAgICAgIG9yZ2FuaXphdGlvbjpcbiAgICAgICAgdGhpcy5hbGxPcmdhbml6YXRpb25zLmdldChuZXdDb250YWN0Lm9yZ2FuaXNhdGlvbikgPz9cbiAgICAgICAgKHsgbmFtZTogbmV3Q29udGFjdC5vcmdhbmlzYXRpb24gfSBhcyBPcmdhbml6YXRpb24pLFxuICAgICAgZW1haWw6IG5ld0NvbnRhY3QuZW1haWwgPz8gJycsXG4gICAgICByb2xlLFxuICAgICAgYWRkcmVzczogJycsXG4gICAgICBwaG9uZTogJycsXG4gICAgICBwb3NpdGlvbjogJycsXG4gICAgfSBhcyBJbmRpdmlkdWFsXG5cbiAgICBjb25zdCBuZXdDb250cm9sVmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgbmV3Q29udGFjdHNGb3JSZXNzb3VyY2VdXG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3Q29udHJvbFZhbHVlKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAgZ2FwLTJcIiBkYXRhLXRlc3Q9XCJyb2xlc1RvUGlja1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvbGUgb2Ygcm9sZXNUb1BpY2tcIj5cbiAgICAgIDxnbi11aS1idXR0b24gdHlwZT1cImdyYXlcIiAoYnV0dG9uQ2xpY2spPVwiYWRkUm9sZVRvRGlzcGxheShyb2xlKVwiPlxuICAgICAgICA8bmctaWNvbiBuYW1lPVwiaWNvbm9pclBsdXNcIiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPjwvbmctaWNvbj5cbiAgICAgICAgJm5ic3A7XG4gICAgICAgIDxzcGFuIHRyYW5zbGF0ZT57eyByb2xlVG9MYWJlbChyb2xlKSB9fTwvc3Bhbj5cbiAgICAgIDwvZ24tdWktYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwibXQtOFwiXG4gICAgKm5nSWY9XCJcbiAgICAgIHJvbGVTZWN0aW9uc1RvRGlzcGxheSAmJiByb2xlU2VjdGlvbnNUb0Rpc3BsYXkubGVuZ3RoID4gMDtcbiAgICAgIGVsc2Ugbm9Db250YWN0XG4gICAgXCJcbiAgICBkYXRhLXRlc3Q9XCJkaXNwbGF5ZWRSb2xlc1wiXG4gID5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJvbGUgb2Ygcm9sZVNlY3Rpb25zVG9EaXNwbGF5O1xuICAgICAgICBsZXQgaW5kZXggPSBpbmRleDtcbiAgICAgICAgbGV0IGlzTGFzdCA9IGxhc3RcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9sZCB0ZXh0LWJhc2VcIiB0cmFuc2xhdGU+e3tcbiAgICAgICAgICByb2xlVG9MYWJlbChyb2xlKVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Z24tdWktYXV0b2NvbXBsZXRlXG4gICAgICAgICpuZ0lmPVwicm9sZSAhPT0gJ3Vuc3BlY2lmaWVkJyAmJiByb2xlICE9PSAnb3RoZXInXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQuY29udGFjdHNGb3JSZXNvdXJjZS5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgICAgW2FjdGlvbl09XCJhdXRvQ29tcGxldGVBY3Rpb25cIlxuICAgICAgICAoaXRlbVNlbGVjdGVkKT1cImFkZENvbnRhY3QoJGV2ZW50LCByb2xlKVwiXG4gICAgICAgIFtkaXNwbGF5V2l0aEZuXT1cImRpc3BsYXlXaXRoRm5cIlxuICAgICAgICBbbWluQ2hhcmFjdGVyQ291bnRdPVwiMVwiXG4gICAgICAgIFtjbGVhck9uU2VsZWN0aW9uXT1cInRydWVcIlxuICAgICAgICBbYWxsb3dTdWJtaXRdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgPC9nbi11aS1hdXRvY29tcGxldGU+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250YWN0c0ZvclJlc3NvdXJjZUJ5Um9sZS5nZXQocm9sZSkgYXMgY29udGFjdHNcIj5cbiAgICAgICAgPGduLXVpLXNvcnRhYmxlLWxpc3RcbiAgICAgICAgICBbaXRlbXNdPVwiY29udGFjdHNcIlxuICAgICAgICAgIChpdGVtc09yZGVyQ2hhbmdlKT1cImhhbmRsZUNvbnRhY3RzQ2hhbmdlZCgkZXZlbnQsIHJvbGUpXCJcbiAgICAgICAgICBbZWxlbWVudFRlbXBsYXRlXT1cImNvbnRhY3RUZW1wbGF0ZVwiXG4gICAgICAgID48L2duLXVpLXNvcnRhYmxlLWxpc3Q+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY29udGFjdFRlbXBsYXRlIGxldC1jb250YWN0PlxuICAgICAgICAgIDxnbi11aS1jb250YWN0LWNhcmQgW2NvbnRhY3RdPVwiY29udGFjdFwiPjwvZ24tdWktY29udGFjdC1jYXJkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxociBjbGFzcz1cImJvcmRlci10LVsjRDZEM0QxXSBtdC00IG1iLTZcIiAqbmdJZj1cIiFpc0xhc3RcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNub0NvbnRhY3Q+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwLTQgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGJnLXByaW1hcnktbGlnaHRlc3Qgcm91bmRlZC1sZ1wiXG4gICAgICB0cmFuc2xhdGVcbiAgICA+XG4gICAgICBlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQuY29udGFjdHNGb3JSZXNvdXJjZS5ub0NvbnRhY3RcbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -1,15 +1,12 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
3
- import { AutocompleteComponent, DropdownSelectorComponent, UiInputsModule, } from '../../../../../../../../../libs/ui/inputs/src';
4
- import { UiWidgetsModule } from '../../../../../../../../../libs/ui/widgets/src';
5
3
  import { GenericKeywordsComponent } from '../../../generic-keywords/generic-keywords.component';
6
- import { TranslateModule } from '@ngx-translate/core';
4
+ import { TranslatePipe } from '@ngx-translate/core';
7
5
  import { EditorFacade } from '../../../../+state/editor.facade';
8
6
  import { firstValueFrom, map } from 'rxjs';
9
7
  import { SPATIAL_SCOPES } from '../../../../fields.config';
10
8
  import * as i0 from "@angular/core";
11
9
  import * as i1 from "../../../../+state/editor.facade";
12
- import * as i2 from "@ngx-translate/core";
13
10
  export class FormFieldKeywordsComponent {
14
11
  get filteredKeywords() {
15
12
  return (this.value?.filter((keyword) => keyword.type !== 'place' && // filter out place keywords
@@ -29,22 +26,14 @@ export class FormFieldKeywordsComponent {
29
26
  this.valueChange.emit(allKeywords);
30
27
  }
31
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: i1.EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: GenericKeywordsComponent, selector: "gn-ui-generic-keywords", inputs: ["keywords", "keywordTypes", "placeholder", "allowSubmit"], outputs: ["changedKeywords", "addedKeyword", "deletedKeyword"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
30
  }
34
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
35
32
  type: Component,
36
- args: [{ selector: 'gn-ui-form-field-keywords', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
37
- DropdownSelectorComponent,
38
- UiInputsModule,
39
- CommonModule,
40
- UiWidgetsModule,
41
- AutocompleteComponent,
42
- GenericKeywordsComponent,
43
- TranslateModule,
44
- ], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n" }]
33
+ args: [{ selector: 'gn-ui-form-field-keywords', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, GenericKeywordsComponent, TranslatePipe], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-generic-keywords\n [keywords]=\"filteredKeywords\"\n [keywordTypes]=\"keywordTypes\"\n [placeholder]=\"'editor.record.form.keywords.placeholder' | translate\"\n (changedKeywords)=\"handleKeywordsChange($event)\"\n [allowSubmit]=\"false\"\n >\n </gn-ui-generic-keywords>\n</div>\n" }]
45
34
  }], ctorParameters: () => [{ type: i1.EditorFacade }], propDecorators: { value: [{
46
35
  type: Input
47
36
  }], valueChange: [{
48
37
  type: Output
49
38
  }] } });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQta2V5d29yZHMvZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQta2V5d29yZHMvZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsY0FBYyxHQUNmLE1BQU0sK0NBQStDLENBQUE7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFBO0FBRWhGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFBO0FBQy9GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBOzs7O0FBbUIxRCxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FDTCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLDRCQUE0QjtZQUN4RCxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2xCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQ3ZELENBQUMsaURBQWlEO1NBQ3RELElBQUksRUFBRSxDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFoQnBDLGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUE7UUFFbkUsaUJBQVksR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFrQixDQUFBO0lBY2IsQ0FBQztJQUVsRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsUUFBbUI7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGNBQWMsQ0FDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNwQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUkseUJBQXlCO1lBQy9DLGNBQWMsQ0FBQyxJQUFJLENBQ2pCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsaUNBQWlDO2FBQ25GLENBQ0osQ0FDRixDQUNGLENBQ0YsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7K0dBckNVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDBKQ3ZDdkMsd1ZBVUEseUREcUJJLGNBQWMsOEJBQ2QsWUFBWSw4QkFDWixlQUFlLCtCQUVmLHdCQUF3QixzTUFDeEIsZUFBZTs7NEZBR04sMEJBQTBCO2tCQWhCdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLHlCQUF5Qjt3QkFDekIsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLGVBQWU7cUJBQ2hCO2lGQUdRLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICBEcm9wZG93blNlbGVjdG9yQ29tcG9uZW50LFxuICBVaUlucHV0c01vZHVsZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS9pbnB1dHMvc3JjJ1xuaW1wb3J0IHsgVWlXaWRnZXRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91aS93aWRnZXRzL3NyYydcbmltcG9ydCB7IEtleXdvcmQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBHZW5lcmljS2V5d29yZHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9nZW5lcmljLWtleXdvcmRzL2dlbmVyaWMta2V5d29yZHMuY29tcG9uZW50J1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEtleXdvcmRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzJ1xuaW1wb3J0IHsgRWRpdG9yRmFjYWRlIH0gZnJvbSAnLi4vLi4vLi4vLi4vK3N0YXRlL2VkaXRvci5mYWNhZGUnXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgbWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IFNQQVRJQUxfU0NPUEVTIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzLmNvbmZpZydcbmltcG9ydCB7IGFsbCB9IGZyb20gJ29sL2xvYWRpbmdzdHJhdGVneSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1rZXl3b3JkcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLWtleXdvcmRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRHJvcGRvd25TZWxlY3RvckNvbXBvbmVudCxcbiAgICBVaUlucHV0c01vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVWlXaWRnZXRzTW9kdWxlLFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBHZW5lcmljS2V5d29yZHNDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRLZXl3b3Jkc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBLZXl3b3JkW11cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8S2V5d29yZFtdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIGtleXdvcmRUeXBlcyA9IFsndGVtcG9yYWwnLCAndGhlbWUnLCAnb3RoZXInXSBhcyBLZXl3b3JkVHlwZVtdXG5cbiAgZ2V0IGZpbHRlcmVkS2V5d29yZHMoKTogS2V5d29yZFtdIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAoa2V5d29yZCkgPT5cbiAgICAgICAgICBrZXl3b3JkLnR5cGUgIT09ICdwbGFjZScgJiYgLy8gZmlsdGVyIG91dCBwbGFjZSBrZXl3b3Jkc1xuICAgICAgICAgICFTUEFUSUFMX1NDT1BFUy5zb21lKFxuICAgICAgICAgICAgKHNwYXRpYWxTY29wZSkgPT4gc3BhdGlhbFNjb3BlLmxhYmVsID09PSBrZXl3b3JkLmxhYmVsXG4gICAgICAgICAgKSAvLyBmaWx0ZXIgb3V0IGtleXdvcmRzIG1hdGNoaW5nIHNwYXRpYWxTY29wZSBrZXlzXG4gICAgICApIHx8IFtdXG4gICAgKVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JGYWNhZGU6IEVkaXRvckZhY2FkZSkge31cblxuICBhc3luYyBoYW5kbGVLZXl3b3Jkc0NoYW5nZShrZXl3b3JkczogS2V5d29yZFtdKSB7XG4gICAgY29uc3QgZmlsdGVyZWRLZXl3b3JkcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgdGhpcy5lZGl0b3JGYWNhZGUucmVjb3JkJC5waXBlKFxuICAgICAgICBtYXAoKHJlY29yZCkgPT5cbiAgICAgICAgICByZWNvcmQua2V5d29yZHMuZmlsdGVyKFxuICAgICAgICAgICAgKGspID0+XG4gICAgICAgICAgICAgIGsudHlwZSA9PT0gJ3BsYWNlJyB8fCAvLyBnZXQgYmFjayBwbGFjZSBrZXl3b3JkXG4gICAgICAgICAgICAgIFNQQVRJQUxfU0NPUEVTLnNvbWUoXG4gICAgICAgICAgICAgICAgKHNwYXRpYWxTY29wZSkgPT4gc3BhdGlhbFNjb3BlLmxhYmVsID09PSBrLmxhYmVsIC8vIGdldCBiYWNrIHNwYXRpYWxTY29wZSBrZXl3b3Jkc1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuXG4gICAgY29uc3QgYWxsS2V5d29yZHMgPSBbLi4uZmlsdGVyZWRLZXl3b3JkcywgLi4ua2V5d29yZHNdXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KGFsbEtleXdvcmRzKVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICA8Z24tdWktZ2VuZXJpYy1rZXl3b3Jkc1xuICAgIFtrZXl3b3Jkc109XCJmaWx0ZXJlZEtleXdvcmRzXCJcbiAgICBba2V5d29yZFR5cGVzXT1cImtleXdvcmRUeXBlc1wiXG4gICAgW3BsYWNlaG9sZGVyXT1cIidlZGl0b3IucmVjb3JkLmZvcm0ua2V5d29yZHMucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAoY2hhbmdlZEtleXdvcmRzKT1cImhhbmRsZUtleXdvcmRzQ2hhbmdlKCRldmVudClcIlxuICAgIFthbGxvd1N1Ym1pdF09XCJmYWxzZVwiXG4gID5cbiAgPC9nbi11aS1nZW5lcmljLWtleXdvcmRzPlxuPC9kaXY+XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQta2V5d29yZHMvZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQta2V5d29yZHMvZm9ybS1maWVsZC1rZXl3b3Jkcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUE7QUFFdEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0RBQXNELENBQUE7QUFDL0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7OztBQVUxRCxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FDTCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLDRCQUE0QjtZQUN4RCxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2xCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxLQUFLLENBQ3ZELENBQUMsaURBQWlEO1NBQ3RELElBQUksRUFBRSxDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFoQnBDLGdCQUFXLEdBQTRCLElBQUksWUFBWSxFQUFFLENBQUE7UUFFbkUsaUJBQVksR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFrQixDQUFBO0lBY2IsQ0FBQztJQUVsRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsUUFBbUI7UUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGNBQWMsQ0FDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNiLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNwQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUkseUJBQXlCO1lBQy9DLGNBQWMsQ0FBQyxJQUFJLENBQ2pCLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsaUNBQWlDO2FBQ25GLENBQ0osQ0FDRixDQUNGLENBQ0YsQ0FBQTtRQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFBO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7K0dBckNVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDBKQ3hCdkMsd1ZBVUEseUREWVksWUFBWSwrQkFBRSx3QkFBd0Isa01BQUUsYUFBYTs7NEZBRXBELDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGFBQWEsQ0FBQztpRkFHdkQsS0FBSztzQkFBYixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBLZXl3b3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgR2VuZXJpY0tleXdvcmRzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VuZXJpYy1rZXl3b3Jkcy9nZW5lcmljLWtleXdvcmRzLmNvbXBvbmVudCdcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgS2V5d29yZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC90aGVzYXVydXMnXG5pbXBvcnQgeyBFZGl0b3JGYWNhZGUgfSBmcm9tICcuLi8uLi8uLi8uLi8rc3RhdGUvZWRpdG9yLmZhY2FkZSdcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgU1BBVElBTF9TQ09QRVMgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMuY29uZmlnJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnbi11aS1mb3JtLWZpZWxkLWtleXdvcmRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQta2V5d29yZHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLWtleXdvcmRzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEdlbmVyaWNLZXl3b3Jkc0NvbXBvbmVudCwgVHJhbnNsYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZEtleXdvcmRzQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFsdWU6IEtleXdvcmRbXVxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxLZXl3b3JkW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAga2V5d29yZFR5cGVzID0gWyd0ZW1wb3JhbCcsICd0aGVtZScsICdvdGhlciddIGFzIEtleXdvcmRUeXBlW11cblxuICBnZXQgZmlsdGVyZWRLZXl3b3JkcygpOiBLZXl3b3JkW10ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnZhbHVlPy5maWx0ZXIoXG4gICAgICAgIChrZXl3b3JkKSA9PlxuICAgICAgICAgIGtleXdvcmQudHlwZSAhPT0gJ3BsYWNlJyAmJiAvLyBmaWx0ZXIgb3V0IHBsYWNlIGtleXdvcmRzXG4gICAgICAgICAgIVNQQVRJQUxfU0NPUEVTLnNvbWUoXG4gICAgICAgICAgICAoc3BhdGlhbFNjb3BlKSA9PiBzcGF0aWFsU2NvcGUubGFiZWwgPT09IGtleXdvcmQubGFiZWxcbiAgICAgICAgICApIC8vIGZpbHRlciBvdXQga2V5d29yZHMgbWF0Y2hpbmcgc3BhdGlhbFNjb3BlIGtleXNcbiAgICAgICkgfHwgW11cbiAgICApXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvckZhY2FkZTogRWRpdG9yRmFjYWRlKSB7fVxuXG4gIGFzeW5jIGhhbmRsZUtleXdvcmRzQ2hhbmdlKGtleXdvcmRzOiBLZXl3b3JkW10pIHtcbiAgICBjb25zdCBmaWx0ZXJlZEtleXdvcmRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICB0aGlzLmVkaXRvckZhY2FkZS5yZWNvcmQkLnBpcGUoXG4gICAgICAgIG1hcCgocmVjb3JkKSA9PlxuICAgICAgICAgIHJlY29yZC5rZXl3b3Jkcy5maWx0ZXIoXG4gICAgICAgICAgICAoaykgPT5cbiAgICAgICAgICAgICAgay50eXBlID09PSAncGxhY2UnIHx8IC8vIGdldCBiYWNrIHBsYWNlIGtleXdvcmRcbiAgICAgICAgICAgICAgU1BBVElBTF9TQ09QRVMuc29tZShcbiAgICAgICAgICAgICAgICAoc3BhdGlhbFNjb3BlKSA9PiBzcGF0aWFsU2NvcGUubGFiZWwgPT09IGsubGFiZWwgLy8gZ2V0IGJhY2sgc3BhdGlhbFNjb3BlIGtleXdvcmRzXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgICBjb25zdCBhbGxLZXl3b3JkcyA9IFsuLi5maWx0ZXJlZEtleXdvcmRzLCAuLi5rZXl3b3Jkc11cbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoYWxsS2V5d29yZHMpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gIDxnbi11aS1nZW5lcmljLWtleXdvcmRzXG4gICAgW2tleXdvcmRzXT1cImZpbHRlcmVkS2V5d29yZHNcIlxuICAgIFtrZXl3b3JkVHlwZXNdPVwia2V5d29yZFR5cGVzXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiJ2VkaXRvci5yZWNvcmQuZm9ybS5rZXl3b3Jkcy5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgIChjaGFuZ2VkS2V5d29yZHMpPVwiaGFuZGxlS2V5d29yZHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW2FsbG93U3VibWl0XT1cImZhbHNlXCJcbiAgPlxuICA8L2duLXVpLWdlbmVyaWMta2V5d29yZHM+XG48L2Rpdj5cbiJdfQ==
@@ -5,7 +5,7 @@ import { PlatformServiceInterface } from '../../../../../../../../../libs/common
5
5
  import { NotificationsService } from '../../../../../../../../../libs/feature/notifications/src';
6
6
  import { FileInputComponent, TextAreaComponent, TextInputComponent, UrlInputComponent, } from '../../../../../../../../../libs/ui/inputs/src';
7
7
  import { ModalDialogComponent, SortableListComponent, } from '../../../../../../../../../libs/ui/layout/src';
8
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
8
+ import { TranslateDirective, TranslateService } from '@ngx-translate/core';
9
9
  import { MAX_UPLOAD_SIZE_MB } from '../../../../fields.config';
10
10
  import { OnlineResourceCardComponent } from '../../../online-resource-card/online-resource-card.component';
11
11
  import * as i0 from "@angular/core";
@@ -124,7 +124,7 @@ export class FormFieldOnlineLinkResourcesComponent {
124
124
  });
125
125
  }
126
126
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: i1.NotificationsService }, { token: i2.TranslateService }, { token: i3.PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i4.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
128
  }
129
129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, decorators: [{
130
130
  type: Component,
@@ -136,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
136
136
  TextInputComponent,
137
137
  TextAreaComponent,
138
138
  UrlInputComponent,
139
- TranslateModule,
139
+ TranslateDirective,
140
140
  ], template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n" }]
141
141
  }], ctorParameters: () => [{ type: i1.NotificationsService }, { type: i2.TranslateService }, { type: i3.PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i4.MatDialog }], propDecorators: { metadataUuid: [{
142
142
  type: Input
@@ -148,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
148
148
  type: ViewChild,
149
149
  args: ['dialogTemplate']
150
150
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFLcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDaEcsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixHQUNsQixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sK0NB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QUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztnQkFDckQsR0FBRyxRQUFRO2FBQ1osQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDOytHQTFJVSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyx1VENsRGxELG1yREFnREEsMEREUkksa0JBQWtCLHVLQUNsQixZQUFZLCtCQUNaLHFCQUFxQixxSUFDckIsMkJBQTJCLDZIQUMzQixrQkFBa0IsK0pBQ2xCLGlCQUFpQiw4SkFDakIsaUJBQWlCLDBNQUNqQixlQUFlOzs0RkFHTixxQ0FBcUM7a0JBakJqRCxTQUFTOytCQUNFLHdDQUF3QyxtQkFHakMsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1Asa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsMkJBQTJCO3dCQUMzQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjt1TkFHUSxZQUFZO3NCQUFwQixLQUFLO2dCQUNPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTTtnQkFHc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHtcbiAgT25saW5lTGlua1Jlc291cmNlLFxuICBPbmxpbmVSZXNvdXJjZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9ub3RpZmljYXRpb25zL3NyYydcbmltcG9ydCB7XG4gIEZpbGVJbnB1dENvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRJbnB1dENvbXBvbmVudCxcbiAgVXJsSW5wdXRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIE1vZGFsRGlhbG9nQ29tcG9uZW50LFxuICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTUFYX1VQTE9BRF9TSVpFX01CIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzLmNvbmZpZydcbmltcG9ydCB7IE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL29ubGluZS1yZXNvdXJjZS1jYXJkL29ubGluZS1yZXNvdXJjZS1jYXJkLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG4gICAgT25saW5lUmVzb3VyY2VDYXJkQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgICBVcmxJbnB1dENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZE9ubGluZUxpbmtSZXNvdXJjZXNDb21wb25lbnQge1xuICBASW5wdXQoKSBtZXRhZGF0YVV1aWQ6IHN0cmluZ1xuICBASW5wdXQoKSBzZXQgdmFsdWUob25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVSZXNvdXJjZT4pIHtcbiAgICB0aGlzLmFsbFJlc291cmNlcyA9IG9ubGluZVJlc291cmNlc1xuICAgIHRoaXMubGlua1Jlc291cmNlcyA9IG9ubGluZVJlc291cmNlcy5maWx0ZXIoXG4gICAgICAocmVzKTogcmVzIGlzIE9ubGluZUxpbmtSZXNvdXJjZSA9PiByZXMudHlwZSA9PT0gJ2xpbmsnXG4gICAgKVxuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE9ubGluZVJlc291cmNlPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE9ubGluZVJlc291cmNlPlxuXG4gIHByaXZhdGUgYWxsUmVzb3VyY2VzOiBPbmxpbmVSZXNvdXJjZVtdID0gW11cbiAgbGlua1Jlc291cmNlczogT25saW5lTGlua1Jlc291cmNlW10gPSBbXVxuICB1cGxvYWRQcm9ncmVzcz86IG51bWJlciA9IHVuZGVmaW5lZFxuICB1cGxvYWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGxcblxuICBwcm90ZWN0ZWQgTUFYX1VQTE9BRF9TSVpFX01CID0gTUFYX1VQTE9BRF9TSVpFX01CXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICApIHt9XG5cbiAgaGFuZGxlRmlsZUNoYW5nZShmaWxlOiBGaWxlKSB7XG4gICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IDBcbiAgICB0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbiA9IHRoaXMucGxhdGZvcm1TZXJ2aWNlXG4gICAgICAuYXR0YWNoRmlsZVRvUmVjb3JkKHRoaXMubWV0YWRhdGFVdWlkLCBmaWxlKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gZXZlbnQucHJvZ3Jlc3NcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSB1bmRlZmluZWRcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZTogT25saW5lTGlua1Jlc291cmNlID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgICAgICAgIHVybDogbmV3IFVSTChldmVudC5hdHRhY2htZW50LnVybCksXG4gICAgICAgICAgICAgIG5hbWU6IGV2ZW50LmF0dGFjaG1lbnQuZmlsZU5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoWy4uLnRoaXMuYWxsUmVzb3VyY2VzLCBuZXdSZXNvdXJjZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlVXBsb2FkQ2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVVybENoYW5nZSh1cmw6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuYW1lID0gdXJsLnNwbGl0KCcvJykucG9wKClcbiAgICAgIGNvbnN0IG5ld0xpbms6IE9ubGluZUxpbmtSZXNvdXJjZSA9IHtcbiAgICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgICB1cmw6IG5ldyBVUkwodXJsKSxcbiAgICAgICAgbmFtZSxcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5hbGxSZXNvdXJjZXMsIG5ld0xpbmtdKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZSBhcyBFcnJvcilcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoaXRlbXM6IHVua25vd25bXSkge1xuICAgIGNvbnN0IGxpbmtzID0gaXRlbXMgYXMgT25saW5lUmVzb3VyY2VbXVxuICAgIGNvbnN0IG5ld1Jlc291cmNlcyA9IFtcbiAgICAgIC4uLnRoaXMuYWxsUmVzb3VyY2VzLmZpbHRlcigocikgPT4gci50eXBlICE9PSAnbGluaycpLFxuICAgICAgLi4ubGlua3MsXG4gICAgXVxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdSZXNvdXJjZXMpXG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZU1vZGlmeShyZXNvdXJjZTogT25saW5lTGlua1Jlc291cmNlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuRWRpdERpYWxvZyhyZXNvdXJjZSwgaW5kZXgpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSB1bmRlZmluZWRcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbihcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IudGl0bGUnXG4gICAgICAgICksXG4gICAgICAgIHRleHQ6IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IuYm9keSdcbiAgICAgICAgKX0gJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICAgIGNsb3NlTWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci5jbG9zZU1lc3NhZ2UnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZXJyb3JcbiAgICApXG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0RGlhbG9nKHJlc291cmNlOiBPbmxpbmVMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZXNvdXJjZUNvcHkgPSB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKE1vZGFsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5kaWFsb2dUaXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGJvZHk6IHRoaXMuZGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgYm9keUNvbnRleHQ6IHJlc291cmNlQ29weSxcbiAgICAgICAgICBjb25maXJtVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmNvbmZpcm0nXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuY2FuY2VsJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpcm1lZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5ld0xpbmtzID0gWy4uLnRoaXMubGlua1Jlc291cmNlc11cbiAgICAgICAgbmV3TGlua3Muc3BsaWNlKGluZGV4LCAxLCByZXNvdXJjZUNvcHkpXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbXG4gICAgICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgIT09ICdsaW5rJyksXG4gICAgICAgICAgLi4ubmV3TGlua3MsXG4gICAgICAgIF0pXG4gICAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICA8Z24tdWktZmlsZS1pbnB1dFxuICAgIFttYXhTaXplTUJdPVwiTUFYX1VQTE9BRF9TSVpFX01CXCJcbiAgICAoZmlsZUNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICh1cGxvYWRDYW5jZWwpPVwiaGFuZGxlVXBsb2FkQ2FuY2VsKClcIlxuICAgIFt1cGxvYWRQcm9ncmVzc109XCJ1cGxvYWRQcm9ncmVzc1wiXG4gICAgKHVybENoYW5nZSk9XCJoYW5kbGVVcmxDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2duLXVpLWZpbGUtaW5wdXQ+XG4gIDxkaXYgY2xhc3M9XCJoLVs4cHhdXCI+PC9kaXY+XG4gIDxnbi11aS1zb3J0YWJsZS1saXN0XG4gICAgW2l0ZW1zXT1cImxpbmtSZXNvdXJjZXNcIlxuICAgIChpdGVtc09yZGVyQ2hhbmdlKT1cImhhbmRsZVJlc291cmNlc0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbZWxlbWVudFRlbXBsYXRlXT1cInRlbXBsYXRlXCJcbiAgPlxuICA8L2duLXVpLXNvcnRhYmxlLWxpc3Q+XG4gIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LW9ubGluZVJlc291cmNlIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgPGduLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkXG4gICAgICBbb25saW5lUmVzb3VyY2VdPVwib25saW5lUmVzb3VyY2VcIlxuICAgICAgKG1vZGlmeUNsaWNrKT1cImhhbmRsZVJlc291cmNlTW9kaWZ5KG9ubGluZVJlc291cmNlLCBpbmRleClcIlxuICAgID48L2duLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGUgbGV0LW9ubGluZVJlc291cmNlPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC1bMTZweF1cIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtWzE2cHhdIGZvbnQtYm9sZCB0ZXh0LW1haW4gbWItWzEycHhdXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LnRpdGxlXG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxnbi11aS10ZXh0LWlucHV0IFsodmFsdWUpXT1cIm9ubGluZVJlc291cmNlLm5hbWVcIj48L2duLXVpLXRleHQtaW5wdXQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtWzE2cHhdIGZvbnQtYm9sZCB0ZXh0LW1haW4gbWItWzEycHhdXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LmRlc2NyaXB0aW9uXG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxnbi11aS10ZXh0LWFyZWFcbiAgICAgICAgICBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5kZXNjcmlwdGlvblwiXG4gICAgICAgID48L2duLXVpLXRleHQtYXJlYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgICAgPGduLXVpLXVybC1pbnB1dFxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9ubGluZVJlc291cmNlLnVybFwiXG4gICAgICAgIFtzaG93VmFsaWRhdGVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgPjwvZ24tdWktdXJsLWlucHV0PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9mZWF0dXJlL2VkaXRvci9zcmMvbGliL2NvbXBvbmVudHMvcmVjb3JkLWZvcm0vZm9ybS1maWVsZC9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2ZlYXR1cmUvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy9yZWNvcmQtZm9ybS9mb3JtLWZpZWxkL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzL2Zvcm0tZmllbGQtb25saW5lLWxpbmstcmVzb3VyY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFLcEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0ZBQWtGLENBQUE7QUFDM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkRBQTJELENBQUE7QUFDaEcsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixHQUNsQixNQUFNLCtDQUErQyxDQUFBO0FBQ3RELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBQ3RCLE1BQU0sK0NB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Q0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO2dCQUNyRCxHQUFHLFFBQVE7YUFDWixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7K0dBMUlVLHFDQUFxQzttR0FBckMscUNBQXFDLHVUQ2xEbEQsbXJEQWdEQSwwRERSSSxrQkFBa0IsdUtBQ2xCLFlBQVksK0JBQ1oscUJBQXFCLHFJQUNyQiwyQkFBMkIsNkhBQzNCLGtCQUFrQiwrSkFDbEIsaUJBQWlCLDhKQUNqQixpQkFBaUIsMk1BQ2pCLGtCQUFrQjs7NEZBR1QscUNBQXFDO2tCQWpCakQsU0FBUzsrQkFDRSx3Q0FBd0MsbUJBR2pDLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGtCQUFrQjt3QkFDbEIsWUFBWTt3QkFDWixxQkFBcUI7d0JBQ3JCLDJCQUEyQjt3QkFDM0Isa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3FCQUNuQjt1TkFHUSxZQUFZO3NCQUFwQixLQUFLO2dCQUNPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBTUksV0FBVztzQkFBcEIsTUFBTTtnQkFHc0IsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJ1xuaW1wb3J0IHtcbiAgT25saW5lTGlua1Jlc291cmNlLFxuICBPbmxpbmVSZXNvdXJjZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvcGxhdGZvcm0uc2VydmljZS5pbnRlcmZhY2UnXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZmVhdHVyZS9ub3RpZmljYXRpb25zL3NyYydcbmltcG9ydCB7XG4gIEZpbGVJbnB1dENvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRJbnB1dENvbXBvbmVudCxcbiAgVXJsSW5wdXRDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvaW5wdXRzL3NyYydcbmltcG9ydCB7XG4gIE1vZGFsRGlhbG9nQ29tcG9uZW50LFxuICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdWkvbGF5b3V0L3NyYydcbmltcG9ydCB7IFRyYW5zbGF0ZURpcmVjdGl2ZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgTUFYX1VQTE9BRF9TSVpFX01CIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzLmNvbmZpZydcbmltcG9ydCB7IE9ubGluZVJlc291cmNlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL29ubGluZS1yZXNvdXJjZS1jYXJkL29ubGluZS1yZXNvdXJjZS1jYXJkLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ24tdWktZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1maWVsZC1vbmxpbmUtbGluay1yZXNvdXJjZXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLW9ubGluZS1saW5rLXJlc291cmNlcy5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRmlsZUlucHV0Q29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTb3J0YWJsZUxpc3RDb21wb25lbnQsXG4gICAgT25saW5lUmVzb3VyY2VDYXJkQ29tcG9uZW50LFxuICAgIFRleHRJbnB1dENvbXBvbmVudCxcbiAgICBUZXh0QXJlYUNvbXBvbmVudCxcbiAgICBVcmxJbnB1dENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVEaXJlY3RpdmUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZE9ubGluZUxpbmtSZXNvdXJjZXNDb21wb25lbnQge1xuICBASW5wdXQoKSBtZXRhZGF0YVV1aWQ6IHN0cmluZ1xuICBASW5wdXQoKSBzZXQgdmFsdWUob25saW5lUmVzb3VyY2VzOiBBcnJheTxPbmxpbmVSZXNvdXJjZT4pIHtcbiAgICB0aGlzLmFsbFJlc291cmNlcyA9IG9ubGluZVJlc291cmNlc1xuICAgIHRoaXMubGlua1Jlc291cmNlcyA9IG9ubGluZVJlc291cmNlcy5maWx0ZXIoXG4gICAgICAocmVzKTogcmVzIGlzIE9ubGluZUxpbmtSZXNvdXJjZSA9PiByZXMudHlwZSA9PT0gJ2xpbmsnXG4gICAgKVxuICB9XG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PE9ubGluZVJlc291cmNlPj4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIEBWaWV3Q2hpbGQoJ2RpYWxvZ1RlbXBsYXRlJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPE9ubGluZVJlc291cmNlPlxuXG4gIHByaXZhdGUgYWxsUmVzb3VyY2VzOiBPbmxpbmVSZXNvdXJjZVtdID0gW11cbiAgbGlua1Jlc291cmNlczogT25saW5lTGlua1Jlc291cmNlW10gPSBbXVxuICB1cGxvYWRQcm9ncmVzcz86IG51bWJlciA9IHVuZGVmaW5lZFxuICB1cGxvYWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGxcblxuICBwcm90ZWN0ZWQgTUFYX1VQTE9BRF9TSVpFX01CID0gTUFYX1VQTE9BRF9TSVpFX01CXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhdGZvcm1TZXJ2aWNlOiBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZ1xuICApIHt9XG5cbiAgaGFuZGxlRmlsZUNoYW5nZShmaWxlOiBGaWxlKSB7XG4gICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IDBcbiAgICB0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbiA9IHRoaXMucGxhdGZvcm1TZXJ2aWNlXG4gICAgICAuYXR0YWNoRmlsZVRvUmVjb3JkKHRoaXMubWV0YWRhdGFVdWlkLCBmaWxlKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFByb2dyZXNzID0gZXZlbnQucHJvZ3Jlc3NcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSB1bmRlZmluZWRcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZTogT25saW5lTGlua1Jlc291cmNlID0ge1xuICAgICAgICAgICAgICB0eXBlOiAnbGluaycsXG4gICAgICAgICAgICAgIHVybDogbmV3IFVSTChldmVudC5hdHRhY2htZW50LnVybCksXG4gICAgICAgICAgICAgIG5hbWU6IGV2ZW50LmF0dGFjaG1lbnQuZmlsZU5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoWy4uLnRoaXMuYWxsUmVzb3VyY2VzLCBuZXdSZXNvdXJjZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvciksXG4gICAgICB9KVxuICB9XG5cbiAgaGFuZGxlVXBsb2FkQ2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnVwbG9hZFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcyA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy51cGxvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVVybENoYW5nZSh1cmw6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBuYW1lID0gdXJsLnNwbGl0KCcvJykucG9wKClcbiAgICAgIGNvbnN0IG5ld0xpbms6IE9ubGluZUxpbmtSZXNvdXJjZSA9IHtcbiAgICAgICAgdHlwZTogJ2xpbmsnLFxuICAgICAgICB1cmw6IG5ldyBVUkwodXJsKSxcbiAgICAgICAgbmFtZSxcbiAgICAgIH1cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbLi4udGhpcy5hbGxSZXNvdXJjZXMsIG5ld0xpbmtdKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZSBhcyBFcnJvcilcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZXNDaGFuZ2UoaXRlbXM6IHVua25vd25bXSkge1xuICAgIGNvbnN0IGxpbmtzID0gaXRlbXMgYXMgT25saW5lUmVzb3VyY2VbXVxuICAgIGNvbnN0IG5ld1Jlc291cmNlcyA9IFtcbiAgICAgIC4uLnRoaXMuYWxsUmVzb3VyY2VzLmZpbHRlcigocikgPT4gci50eXBlICE9PSAnbGluaycpLFxuICAgICAgLi4ubGlua3MsXG4gICAgXVxuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChuZXdSZXNvdXJjZXMpXG4gIH1cblxuICBoYW5kbGVSZXNvdXJjZU1vZGlmeShyZXNvdXJjZTogT25saW5lTGlua1Jlc291cmNlLCBpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuRWRpdERpYWxvZyhyZXNvdXJjZSwgaW5kZXgpXG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvcikge1xuICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3MgPSB1bmRlZmluZWRcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKVxuICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbihcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IudGl0bGUnXG4gICAgICAgICksXG4gICAgICAgIHRleHQ6IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdlZGl0b3IucmVjb3JkLm9ubGluZVJlc291cmNlRXJyb3IuYm9keSdcbiAgICAgICAgKX0gJHtlcnJvci5tZXNzYWdlfWAsXG4gICAgICAgIGNsb3NlTWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgJ2VkaXRvci5yZWNvcmQub25saW5lUmVzb3VyY2VFcnJvci5jbG9zZU1lc3NhZ2UnXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgZXJyb3JcbiAgICApXG4gIH1cblxuICBwcml2YXRlIG9wZW5FZGl0RGlhbG9nKHJlc291cmNlOiBPbmxpbmVMaW5rUmVzb3VyY2UsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByZXNvdXJjZUNvcHkgPSB7XG4gICAgICAuLi5yZXNvdXJjZSxcbiAgICB9XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKE1vZGFsRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgJ2VkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5kaWFsb2dUaXRsZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGJvZHk6IHRoaXMuZGlhbG9nVGVtcGxhdGUsXG4gICAgICAgICAgYm9keUNvbnRleHQ6IHJlc291cmNlQ29weSxcbiAgICAgICAgICBjb25maXJtVGV4dDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnZWRpdG9yLnJlY29yZC5mb3JtLmZpZWxkLm9ubGluZVJlc291cmNlLmNvbmZpcm0nXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICdlZGl0b3IucmVjb3JkLmZvcm0uZmllbGQub25saW5lUmVzb3VyY2UuY2FuY2VsJ1xuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpcm1lZDogYm9vbGVhbikgPT4ge1xuICAgICAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5ld0xpbmtzID0gWy4uLnRoaXMubGlua1Jlc291cmNlc11cbiAgICAgICAgbmV3TGlua3Muc3BsaWNlKGluZGV4LCAxLCByZXNvdXJjZUNvcHkpXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChbXG4gICAgICAgICAgLi4udGhpcy5hbGxSZXNvdXJjZXMuZmlsdGVyKChyKSA9PiByLnR5cGUgIT09ICdsaW5rJyksXG4gICAgICAgICAgLi4ubmV3TGlua3MsXG4gICAgICAgIF0pXG4gICAgICB9KVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICA8Z24tdWktZmlsZS1pbnB1dFxuICAgIFttYXhTaXplTUJdPVwiTUFYX1VQTE9BRF9TSVpFX01CXCJcbiAgICAoZmlsZUNoYW5nZSk9XCJoYW5kbGVGaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICh1cGxvYWRDYW5jZWwpPVwiaGFuZGxlVXBsb2FkQ2FuY2VsKClcIlxuICAgIFt1cGxvYWRQcm9ncmVzc109XCJ1cGxvYWRQcm9ncmVzc1wiXG4gICAgKHVybENoYW5nZSk9XCJoYW5kbGVVcmxDaGFuZ2UoJGV2ZW50KVwiXG4gID48L2duLXVpLWZpbGUtaW5wdXQ+XG4gIDxkaXYgY2xhc3M9XCJoLVs4cHhdXCI+PC9kaXY+XG4gIDxnbi11aS1zb3J0YWJsZS1saXN0XG4gICAgW2l0ZW1zXT1cImxpbmtSZXNvdXJjZXNcIlxuICAgIChpdGVtc09yZGVyQ2hhbmdlKT1cImhhbmRsZVJlc291cmNlc0NoYW5nZSgkZXZlbnQpXCJcbiAgICBbZWxlbWVudFRlbXBsYXRlXT1cInRlbXBsYXRlXCJcbiAgPlxuICA8L2duLXVpLXNvcnRhYmxlLWxpc3Q+XG4gIDxuZy10ZW1wbGF0ZSAjdGVtcGxhdGUgbGV0LW9ubGluZVJlc291cmNlIGxldC1pbmRleD1cImluZGV4XCI+XG4gICAgPGduLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkXG4gICAgICBbb25saW5lUmVzb3VyY2VdPVwib25saW5lUmVzb3VyY2VcIlxuICAgICAgKG1vZGlmeUNsaWNrKT1cImhhbmRsZVJlc291cmNlTW9kaWZ5KG9ubGluZVJlc291cmNlLCBpbmRleClcIlxuICAgID48L2duLXVpLW9ubGluZS1yZXNvdXJjZS1jYXJkPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZGlhbG9nVGVtcGxhdGUgbGV0LW9ubGluZVJlc291cmNlPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC1bMTZweF1cIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtWzE2cHhdIGZvbnQtYm9sZCB0ZXh0LW1haW4gbWItWzEycHhdXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LnRpdGxlXG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxnbi11aS10ZXh0LWlucHV0IFsodmFsdWUpXT1cIm9ubGluZVJlc291cmNlLm5hbWVcIj48L2duLXVpLXRleHQtaW5wdXQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInRleHQtWzE2cHhdIGZvbnQtYm9sZCB0ZXh0LW1haW4gbWItWzEycHhdXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIGVkaXRvci5yZWNvcmQuZm9ybS5maWVsZC5vbmxpbmVSZXNvdXJjZS5lZGl0LmRlc2NyaXB0aW9uXG4gICAgICAgIDwvaDM+XG4gICAgICAgIDxnbi11aS10ZXh0LWFyZWFcbiAgICAgICAgICBbKHZhbHVlKV09XCJvbmxpbmVSZXNvdXJjZS5kZXNjcmlwdGlvblwiXG4gICAgICAgID48L2duLXVpLXRleHQtYXJlYT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGwgYm9yZGVyLWIgYm9yZGVyLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgICAgPGduLXVpLXVybC1pbnB1dFxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9ubGluZVJlc291cmNlLnVybFwiXG4gICAgICAgIFtzaG93VmFsaWRhdGVCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgPjwvZ24tdWktdXJsLWlucHV0PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=