@c8y/ngx-components 1021.38.1 → 1021.49.4

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 (529) hide show
  1. package/api/services.d.ts +1 -1
  2. package/api/services.d.ts.map +1 -1
  3. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  4. package/connectivity/abstract-connectivity-tab.factory.d.ts +1 -1
  5. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  6. package/context-dashboard/context-dashboard.model.d.ts +4 -2
  7. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  8. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  9. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts +1 -0
  10. package/context-dashboard/dashboard-manager/dashboard-manager.model.d.ts.map +1 -1
  11. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts +0 -1
  12. package/context-dashboard/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  13. package/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  14. package/context-dashboard/new-dashboard.guard.d.ts +1 -1
  15. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  16. package/core/action/action.component.d.ts +2 -1
  17. package/core/action/action.component.d.ts.map +1 -1
  18. package/core/action/action.model.d.ts +3 -2
  19. package/core/action/action.model.d.ts.map +1 -1
  20. package/core/breadcrumb/breadcrumb-item.component.d.ts +2 -1
  21. package/core/breadcrumb/breadcrumb-item.component.d.ts.map +1 -1
  22. package/core/breadcrumb/breadcrumb.model.d.ts +2 -1
  23. package/core/breadcrumb/breadcrumb.model.d.ts.map +1 -1
  24. package/core/common/ApplicationOptions.d.ts +1 -0
  25. package/core/common/ApplicationOptions.d.ts.map +1 -1
  26. package/core/common/empty-state/empty-state.component.d.ts +2 -1
  27. package/core/common/empty-state/empty-state.component.d.ts.map +1 -1
  28. package/core/common/get-group-icon.pipe.d.ts +2 -1
  29. package/core/common/get-group-icon.pipe.d.ts.map +1 -1
  30. package/core/common/group.service.d.ts +22 -7
  31. package/core/common/group.service.d.ts.map +1 -1
  32. package/core/common/icon.directive.d.ts +5 -5
  33. package/core/common/icon.directive.d.ts.map +1 -1
  34. package/core/common/service-registry.model.d.ts +2 -1
  35. package/core/common/service-registry.model.d.ts.map +1 -1
  36. package/core/data-grid/data-grid.model.d.ts +2 -1
  37. package/core/data-grid/data-grid.model.d.ts.map +1 -1
  38. package/core/docs/docs.models.d.ts +2 -1
  39. package/core/docs/docs.models.d.ts.map +1 -1
  40. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts +5 -1
  41. package/core/docs/help-and-support-outlet/help-and-support-outlet.component.d.ts.map +1 -1
  42. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts +5 -1
  43. package/core/docs/legal-notices-outlet/legal-notices-outlet.component.d.ts.map +1 -1
  44. package/core/docs/support-outlet/support-outlet.component.d.ts +5 -1
  45. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  46. package/core/forms/filter-input.component.d.ts +8 -3
  47. package/core/forms/filter-input.component.d.ts.map +1 -1
  48. package/core/i18n/translate.service.d.ts.map +1 -1
  49. package/core/list-group/list-item-action.component.d.ts +2 -1
  50. package/core/list-group/list-item-action.component.d.ts.map +1 -1
  51. package/core/list-group/list-item-icon.component.d.ts +2 -1
  52. package/core/list-group/list-item-icon.component.d.ts.map +1 -1
  53. package/core/login/login.service.d.ts.map +1 -1
  54. package/core/navigator/navigator-icon.component.d.ts +1 -1
  55. package/core/navigator/navigator-icon.component.d.ts.map +1 -1
  56. package/core/navigator/navigator-node-data.d.ts +2 -1
  57. package/core/navigator/navigator-node-data.d.ts.map +1 -1
  58. package/core/navigator/navigator-node.component.d.ts.map +1 -1
  59. package/core/navigator/navigator-node.d.ts +2 -1
  60. package/core/navigator/navigator-node.d.ts.map +1 -1
  61. package/core/plugins/plugins.model.d.ts +7 -2
  62. package/core/plugins/plugins.model.d.ts.map +1 -1
  63. package/core/plugins/plugins.service.d.ts.map +1 -1
  64. package/core/properties-list/properties-list.component.d.ts +2 -1
  65. package/core/properties-list/properties-list.component.d.ts.map +1 -1
  66. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts +2 -2
  67. package/core/provider-configuration/model/dynamic-provider-config.model.d.ts.map +1 -1
  68. package/core/router/context-route.service.d.ts.map +1 -1
  69. package/core/router/router.model.d.ts +1 -1
  70. package/core/router/router.model.d.ts.map +1 -1
  71. package/core/router/scoped-context-route.service.d.ts.map +1 -1
  72. package/core/search/search.model.d.ts +2 -1
  73. package/core/search/search.model.d.ts.map +1 -1
  74. package/core/select/select-keyboard.service.d.ts +4 -0
  75. package/core/select/select-keyboard.service.d.ts.map +1 -1
  76. package/core/select/select.component.d.ts +14 -3
  77. package/core/select/select.component.d.ts.map +1 -1
  78. package/core/select-modal/select-modal.component.d.ts +2 -1
  79. package/core/select-modal/select-modal.component.d.ts.map +1 -1
  80. package/core/shared/core.model.d.ts +5 -1
  81. package/core/shared/core.model.d.ts.map +1 -1
  82. package/core/tabs/conditional-tabs-outlet.component.d.ts.map +1 -1
  83. package/core/tabs/tab.component.d.ts +3 -2
  84. package/core/tabs/tab.component.d.ts.map +1 -1
  85. package/core/tabs/tab.model.d.ts +10 -5
  86. package/core/tabs/tab.model.d.ts.map +1 -1
  87. package/core/tabs/tabs-outlet.component.d.ts +7 -4
  88. package/core/tabs/tabs-outlet.component.d.ts.map +1 -1
  89. package/core/user/user-menu-item.component.d.ts +2 -1
  90. package/core/user/user-menu-item.component.d.ts.map +1 -1
  91. package/core/user/user.model.d.ts +2 -1
  92. package/core/user/user.model.d.ts.map +1 -1
  93. package/core/wizard/wizard.model.d.ts +4 -3
  94. package/core/wizard/wizard.model.d.ts.map +1 -1
  95. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  96. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +15 -46
  97. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  98. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts +3 -0
  99. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.d.ts.map +1 -1
  100. package/datapoint-selector/datapoint-selection.model.d.ts +6 -7
  101. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  102. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +2 -1
  103. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  104. package/device-grid/columns/icon.cell-renderer.component.d.ts +14 -0
  105. package/device-grid/columns/icon.cell-renderer.component.d.ts.map +1 -0
  106. package/device-grid/columns/index.d.ts +1 -0
  107. package/device-grid/columns/index.d.ts.map +1 -1
  108. package/device-grid/device-grid.component.d.ts.map +1 -1
  109. package/device-grid/device-grid.service.d.ts +0 -2
  110. package/device-grid/device-grid.service.d.ts.map +1 -1
  111. package/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.d.ts.map +1 -0
  112. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts +11 -0
  113. package/device-provisioned-certificates/device-provisioned-certificates.guard.d.ts.map +1 -0
  114. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +13 -0
  115. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -0
  116. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts +13 -0
  117. package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -0
  118. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +57 -0
  119. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -0
  120. package/device-provisioned-certificates/index.d.ts +2 -0
  121. package/device-provisioned-certificates/index.d.ts.map +1 -0
  122. package/ecosystem/application-plugins/application-plugins.component.d.ts +4 -0
  123. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  124. package/ecosystem/application-plugins/application-plugins.module.d.ts +2 -2
  125. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  126. package/ecosystem/application-plugins/index.d.ts +1 -0
  127. package/ecosystem/application-plugins/index.d.ts.map +1 -1
  128. package/ecosystem/application-plugins/install-plugin.component.d.ts +9 -11
  129. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  130. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +12 -0
  131. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -0
  132. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +8 -3
  133. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  134. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  135. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  136. package/ecosystem/applications/application-list/application-list.component.d.ts +2 -2
  137. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  138. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  139. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +11 -0
  140. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -0
  141. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +10 -0
  142. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -0
  143. package/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.d.ts.map +1 -0
  144. package/ecosystem/archived-confirm/index.d.ts +3 -0
  145. package/ecosystem/archived-confirm/index.d.ts.map +1 -0
  146. package/ecosystem/ecosystem.module.d.ts +2 -1
  147. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  148. package/ecosystem/features/feature-list.component.d.ts +2 -2
  149. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  150. package/ecosystem/microservices/microservice-list.component.d.ts +2 -2
  151. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  152. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  153. package/ecosystem/packages/package-details/package-details.component.d.ts +7 -2
  154. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  155. package/ecosystem/packages/package-list/packages-list.component.d.ts +2 -2
  156. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  157. package/ecosystem/shared/add-application.component.d.ts +2 -1
  158. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  159. package/ecosystem/shared/application-card.component.d.ts +4 -0
  160. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  161. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +12 -0
  162. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -0
  163. package/ecosystem/shared/ecosystem.constants.d.ts +4 -0
  164. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  165. package/ecosystem/shared/ecosystem.model.d.ts +5 -1
  166. package/ecosystem/shared/ecosystem.model.d.ts.map +1 -1
  167. package/ecosystem/shared/ecosystem.service.d.ts +7 -0
  168. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  169. package/ecosystem/shared/index.d.ts +1 -0
  170. package/ecosystem/shared/index.d.ts.map +1 -1
  171. package/ecosystem/shared/list-filters/list-filters.component.d.ts +14 -4
  172. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  173. package/ecosystem/shared/list-filters/list-filters.model.d.ts +8 -2
  174. package/ecosystem/shared/list-filters/list-filters.model.d.ts.map +1 -1
  175. package/ecosystem/shared/shared-ecosystem.module.d.ts +9 -8
  176. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  177. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  178. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  179. package/esm2022/alarms/alarm-info.component.mjs +1 -1
  180. package/esm2022/api/services.mjs +2 -2
  181. package/esm2022/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.mjs +10 -5
  182. package/esm2022/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.mjs +4 -4
  183. package/esm2022/branding/shared/lazy/branding-form/branding-form.component.mjs +3 -3
  184. package/esm2022/context-dashboard/add-dashboard.component.mjs +4 -2
  185. package/esm2022/context-dashboard/context-dashboard.model.mjs +3 -2
  186. package/esm2022/context-dashboard/context-dashboard.service.mjs +2 -2
  187. package/esm2022/context-dashboard/dashboard-detail.component.mjs +5 -3
  188. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.model.mjs +1 -1
  189. package/esm2022/context-dashboard/dashboard-manager/dashboard-manager.service.mjs +5 -15
  190. package/esm2022/context-dashboard/dashboard-manager/type-dashboards-list/type-dashboards-list.component.mjs +2 -2
  191. package/esm2022/context-dashboard/new-dashboard.guard.mjs +1 -1
  192. package/esm2022/core/action/action.component.mjs +1 -1
  193. package/esm2022/core/action/action.model.mjs +1 -1
  194. package/esm2022/core/bootstrap/bootstrap.component.mjs +1 -1
  195. package/esm2022/core/breadcrumb/breadcrumb-item.component.mjs +1 -1
  196. package/esm2022/core/breadcrumb/breadcrumb.model.mjs +1 -1
  197. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  198. package/esm2022/core/common/empty-state/empty-state.component.mjs +1 -1
  199. package/esm2022/core/common/get-group-icon.pipe.mjs +1 -1
  200. package/esm2022/core/common/group.service.mjs +2 -2
  201. package/esm2022/core/common/icon.directive.mjs +1 -1
  202. package/esm2022/core/common/service-registry.model.mjs +1 -1
  203. package/esm2022/core/data-grid/data-grid.model.mjs +1 -1
  204. package/esm2022/core/docs/docs.models.mjs +1 -1
  205. package/esm2022/core/docs/support-outlet/support-outlet.component.mjs +3 -3
  206. package/esm2022/core/forms/filter-input.component.mjs +22 -7
  207. package/esm2022/core/i18n/translate.service.mjs +7 -5
  208. package/esm2022/core/list-group/list-item-action.component.mjs +1 -1
  209. package/esm2022/core/list-group/list-item-icon.component.mjs +1 -1
  210. package/esm2022/core/login/credentials.component.mjs +2 -2
  211. package/esm2022/core/login/login.service.mjs +18 -7
  212. package/esm2022/core/navigator/navigator-node-data.mjs +1 -1
  213. package/esm2022/core/navigator/navigator-node.component.mjs +11 -2
  214. package/esm2022/core/navigator/navigator-node.mjs +1 -1
  215. package/esm2022/core/plugins/plugins.model.mjs +5 -1
  216. package/esm2022/core/plugins/plugins.service.mjs +6 -2
  217. package/esm2022/core/properties-list/properties-list.component.mjs +1 -1
  218. package/esm2022/core/provider-configuration/model/dynamic-provider-config.model.mjs +1 -1
  219. package/esm2022/core/router/context-route.service.mjs +4 -2
  220. package/esm2022/core/router/router.model.mjs +1 -1
  221. package/esm2022/core/router/scoped-context-route.service.mjs +4 -2
  222. package/esm2022/core/search/search.model.mjs +1 -1
  223. package/esm2022/core/select/select-keyboard.service.mjs +7 -3
  224. package/esm2022/core/select/select.component.mjs +36 -8
  225. package/esm2022/core/select-modal/select-modal.component.mjs +2 -2
  226. package/esm2022/core/shared/core.model.mjs +6 -2
  227. package/esm2022/core/tabs/conditional-tabs-outlet.component.mjs +4 -2
  228. package/esm2022/core/tabs/tab.component.mjs +1 -1
  229. package/esm2022/core/tabs/tab.model.mjs +1 -1
  230. package/esm2022/core/tabs/tabs-outlet.component.mjs +41 -12
  231. package/esm2022/core/user/user-menu-item.component.mjs +1 -1
  232. package/esm2022/core/user/user.model.mjs +1 -1
  233. package/esm2022/core/wizard/wizard.model.mjs +1 -1
  234. package/esm2022/data-grid-columns/asset-type/asset-type.cell-renderer.component.mjs +1 -1
  235. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +47 -22
  236. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes.model.mjs +1 -1
  237. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  238. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  239. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +1 -1
  240. package/esm2022/device-grid/columns/icon.cell-renderer.component.mjs +42 -0
  241. package/esm2022/device-grid/columns/index.mjs +2 -1
  242. package/esm2022/device-grid/device-grid.component.mjs +3 -3
  243. package/esm2022/device-grid/device-grid.service.mjs +7 -25
  244. package/esm2022/device-provisioned-certificates/c8y-ngx-components-device-provisioned-certificates.mjs +5 -0
  245. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.guard.mjs +28 -0
  246. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.module.mjs +51 -0
  247. package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +31 -0
  248. package/esm2022/device-provisioned-certificates/device-tab-provisioned-certificates.component.mjs +76 -0
  249. package/esm2022/device-provisioned-certificates/index.mjs +2 -0
  250. package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +41 -39
  251. package/esm2022/ecosystem/application-plugins/application-plugins.module.mjs +8 -6
  252. package/esm2022/ecosystem/application-plugins/apps-to-update-remotes-select.component.mjs +1 -1
  253. package/esm2022/ecosystem/application-plugins/index.mjs +2 -1
  254. package/esm2022/ecosystem/application-plugins/install-plugin.component.mjs +18 -21
  255. package/esm2022/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.mjs +26 -0
  256. package/esm2022/ecosystem/application-plugins/plugin-list-item.component.mjs +14 -6
  257. package/esm2022/ecosystem/application-plugins/plugin-list.component.mjs +14 -12
  258. package/esm2022/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.mjs +7 -1
  259. package/esm2022/ecosystem/applications/application-list/application-list.component.mjs +1 -1
  260. package/esm2022/ecosystem/applications/install-from-package/install-from-package.component.mjs +6 -1
  261. package/esm2022/ecosystem/archived-confirm/archived-confirm-modal.component.mjs +22 -0
  262. package/esm2022/ecosystem/archived-confirm/archived-confirm.module.mjs +32 -0
  263. package/esm2022/ecosystem/archived-confirm/c8y-ngx-components-ecosystem-archived-confirm.mjs +5 -0
  264. package/esm2022/ecosystem/archived-confirm/index.mjs +3 -0
  265. package/esm2022/ecosystem/ecosystem.module.mjs +20 -16
  266. package/esm2022/ecosystem/features/feature-list.component.mjs +1 -1
  267. package/esm2022/ecosystem/microservices/microservice-list.component.mjs +1 -1
  268. package/esm2022/ecosystem/packages/deploy-application/deploy-application.component.mjs +6 -1
  269. package/esm2022/ecosystem/packages/package-details/package-details.component.mjs +13 -8
  270. package/esm2022/ecosystem/packages/package-list/packages-list.component.mjs +4 -4
  271. package/esm2022/ecosystem/shared/add-application.component.mjs +1 -1
  272. package/esm2022/ecosystem/shared/application-card.component.mjs +3 -3
  273. package/esm2022/ecosystem/shared/archived-filter/archived-filter.component.mjs +27 -0
  274. package/esm2022/ecosystem/shared/ecosystem.constants.mjs +5 -1
  275. package/esm2022/ecosystem/shared/ecosystem.model.mjs +7 -3
  276. package/esm2022/ecosystem/shared/ecosystem.service.mjs +26 -1
  277. package/esm2022/ecosystem/shared/index.mjs +2 -1
  278. package/esm2022/ecosystem/shared/list-filters/list-filters.component.mjs +75 -13
  279. package/esm2022/ecosystem/shared/list-filters/list-filters.model.mjs +1 -1
  280. package/esm2022/ecosystem/shared/shared-ecosystem.module.mjs +10 -5
  281. package/esm2022/ecosystem/shared/translate-package-label.pipe.mjs +3 -3
  282. package/esm2022/files-repository/files-repository.component.mjs +2 -2
  283. package/esm2022/files-repository/files-repository.service.mjs +5 -16
  284. package/esm2022/icon-selector/icon-selector.component.mjs +1 -1
  285. package/esm2022/icon-selector/icons/index.mjs +1 -1
  286. package/esm2022/operations/shared/status-option.model.mjs +1 -1
  287. package/esm2022/protocol-lwm2m/components/configuration/lwm2m-configuration.component.mjs +2 -2
  288. package/esm2022/protocol-opcua/opcua-auto-apply-settings.component.mjs +1 -1
  289. package/esm2022/register-device/bulk/bulk-device-registration-modal.component.mjs +17 -9
  290. package/esm2022/register-device/general/general-device-registration-button.component.mjs +3 -3
  291. package/esm2022/register-device/general/general-device-registration.component.mjs +109 -33
  292. package/esm2022/remote-access/configurations/c8y-ngx-components-remote-access-configurations.mjs +5 -0
  293. package/esm2022/remote-access/configurations/index.mjs +16 -0
  294. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.mjs +218 -0
  295. package/esm2022/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.mjs +60 -0
  296. package/esm2022/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.mjs +36 -0
  297. package/esm2022/remote-access/data/c8y-ngx-components-remote-access-data.mjs +5 -0
  298. package/esm2022/remote-access/data/index.mjs +3 -0
  299. package/esm2022/remote-access/data/remote-access-protocol-provider.mjs +2 -0
  300. package/esm2022/remote-access/data/remote-access.service.mjs +200 -0
  301. package/esm2022/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.mjs +5 -0
  302. package/esm2022/remote-access/passthrough/index.mjs +36 -0
  303. package/esm2022/remote-access/shared/c8y-ngx-components-remote-access-shared.mjs +5 -0
  304. package/esm2022/remote-access/shared/index.mjs +3 -0
  305. package/esm2022/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.mjs +49 -0
  306. package/esm2022/remote-access/shared/ssh-key-input/ssh-key-input.component.mjs +87 -0
  307. package/esm2022/remote-access/ssh/c8y-ngx-components-remote-access-ssh.mjs +5 -0
  308. package/esm2022/remote-access/ssh/index.mjs +73 -0
  309. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +5 -0
  310. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/index.mjs +2 -0
  311. package/esm2022/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.mjs +104 -0
  312. package/esm2022/remote-access/telnet/c8y-ngx-components-remote-access-telnet.mjs +5 -0
  313. package/esm2022/remote-access/telnet/index.mjs +43 -0
  314. package/esm2022/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.mjs +5 -0
  315. package/esm2022/remote-access/terminal-viewer/index.mjs +2 -0
  316. package/esm2022/remote-access/terminal-viewer/shell-adapter.mjs +36 -0
  317. package/esm2022/remote-access/terminal-viewer/telnet-negotiator.mjs +96 -0
  318. package/esm2022/remote-access/terminal-viewer/terminal-viewer.component.mjs +101 -0
  319. package/esm2022/remote-access/vnc/c8y-ngx-components-remote-access-vnc.mjs +5 -0
  320. package/esm2022/remote-access/vnc/index.mjs +73 -0
  321. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +5 -0
  322. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/index.mjs +2 -0
  323. package/esm2022/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.mjs +59 -0
  324. package/esm2022/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +5 -0
  325. package/esm2022/remote-access/vnc/vnc-viewer/index.mjs +2 -0
  326. package/esm2022/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.mjs +57 -0
  327. package/esm2022/remote-access/vnc/vnc-viewer/vnc-viewer.component.mjs +158 -0
  328. package/esm2022/replace-device/replace-device-wizard/replace-device-wizard.model.mjs +1 -1
  329. package/esm2022/report-dashboard/report-dashboard-list.component.mjs +4 -3
  330. package/esm2022/repository/configuration/device-tab/device-configuration-list.component.mjs +1 -1
  331. package/esm2022/repository/shared/repository.model.mjs +1 -1
  332. package/esm2022/repository/shared/repository.service.mjs +3 -3
  333. package/esm2022/services/status-options/status-options.model.mjs +1 -1
  334. package/esm2022/sub-assets/group-info.component.mjs +1 -1
  335. package/esm2022/translation-editor/data/translation-store.service.mjs +4 -3
  336. package/esm2022/trusted-certificates/list/trusted-certificate-list.component.mjs +35 -9
  337. package/esm2022/upgrade/bridge.service.mjs +16 -2
  338. package/esm2022/widgets/implementations/alarms/severity-icon.pipe.mjs +1 -1
  339. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +3 -2
  340. package/esm2022/widgets/implementations/kpi/kpi-widget.model.mjs +1 -1
  341. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  342. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-api.mjs +3 -2
  344. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +12 -7
  346. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -2
  348. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +15 -20
  350. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +48 -23
  354. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  355. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-device-grid.mjs +48 -28
  357. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  358. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +174 -0
  359. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -0
  360. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +125 -105
  361. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +57 -0
  363. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -0
  364. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +147 -31
  365. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1452 -1414
  367. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  368. package/fesm2022/c8y-ngx-components-files-repository.mjs +5 -16
  369. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  370. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
  373. package/fesm2022/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +1 -1
  375. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-register-device.mjs +269 -188
  377. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +314 -0
  379. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -0
  380. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +206 -0
  381. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -0
  382. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +42 -0
  383. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -0
  384. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +138 -0
  385. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -0
  386. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +111 -0
  387. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -0
  388. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +79 -0
  389. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -0
  390. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +50 -0
  391. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -0
  392. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +235 -0
  393. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -0
  394. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +66 -0
  395. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -0
  396. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +211 -0
  397. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -0
  398. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +79 -0
  399. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -0
  400. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +3 -2
  402. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +1 -1
  404. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-repository-shared.mjs +2 -2
  406. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -2
  410. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +43 -17
  412. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-upgrade.mjs +16 -2
  414. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  418. package/fesm2022/c8y-ngx-components.mjs +157 -42
  419. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  420. package/files-repository/files-repository.component.d.ts.map +1 -1
  421. package/files-repository/files-repository.service.d.ts +0 -2
  422. package/files-repository/files-repository.service.d.ts.map +1 -1
  423. package/icon-selector/icon-selector.component.d.ts +3 -2
  424. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  425. package/icon-selector/icons/index.d.ts +1 -0
  426. package/icon-selector/icons/index.d.ts.map +1 -1
  427. package/locales/de.po +157 -5
  428. package/locales/es.po +157 -5
  429. package/locales/fr.po +157 -5
  430. package/locales/ja_JP.po +156 -5
  431. package/locales/ko.po +156 -5
  432. package/locales/locales.pot +156 -4
  433. package/locales/nl.po +157 -5
  434. package/locales/pl.po +157 -5
  435. package/locales/pt_BR.po +157 -5
  436. package/locales/zh_CN.po +156 -5
  437. package/locales/zh_TW.po +156 -5
  438. package/operations/shared/status-option.model.d.ts +2 -1
  439. package/operations/shared/status-option.model.d.ts.map +1 -1
  440. package/package.json +1 -1
  441. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +6 -2
  442. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  443. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  444. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  445. package/register-device/general/general-device-registration.component.d.ts +21 -7
  446. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  447. package/remote-access/configurations/c8y-ngx-components-remote-access-configurations.d.ts.map +1 -0
  448. package/remote-access/configurations/index.d.ts +3 -0
  449. package/remote-access/configurations/index.d.ts.map +1 -0
  450. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts +34 -0
  451. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -0
  452. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts +17 -0
  453. package/remote-access/configurations/remote-access-configuration-list/remote-access-connect-button/remote-access-connect-button.component.d.ts.map +1 -0
  454. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts +18 -0
  455. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -0
  456. package/remote-access/data/c8y-ngx-components-remote-access-data.d.ts.map +1 -0
  457. package/remote-access/data/index.d.ts +3 -0
  458. package/remote-access/data/index.d.ts.map +1 -0
  459. package/remote-access/data/remote-access-protocol-provider.d.ts +21 -0
  460. package/remote-access/data/remote-access-protocol-provider.d.ts.map +1 -0
  461. package/remote-access/data/remote-access.service.d.ts +94 -0
  462. package/remote-access/data/remote-access.service.d.ts.map +1 -0
  463. package/remote-access/passthrough/c8y-ngx-components-remote-access-passthrough.d.ts.map +1 -0
  464. package/remote-access/passthrough/index.d.ts +17 -0
  465. package/remote-access/passthrough/index.d.ts.map +1 -0
  466. package/remote-access/shared/c8y-ngx-components-remote-access-shared.d.ts.map +1 -0
  467. package/remote-access/shared/index.d.ts +3 -0
  468. package/remote-access/shared/index.d.ts.map +1 -0
  469. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts +37 -0
  470. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -0
  471. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts +38 -0
  472. package/remote-access/shared/ssh-key-input/ssh-key-input.component.d.ts.map +1 -0
  473. package/remote-access/ssh/c8y-ngx-components-remote-access-ssh.d.ts.map +1 -0
  474. package/remote-access/ssh/index.d.ts +22 -0
  475. package/remote-access/ssh/index.d.ts.map +1 -0
  476. package/remote-access/ssh/remote-access-ssh-endpoint-modal/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.d.ts.map +1 -0
  477. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts +2 -0
  478. package/remote-access/ssh/remote-access-ssh-endpoint-modal/index.d.ts.map +1 -0
  479. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts +64 -0
  480. package/remote-access/ssh/remote-access-ssh-endpoint-modal/remote-access-ssh-endpoint-modal.component.d.ts.map +1 -0
  481. package/remote-access/telnet/c8y-ngx-components-remote-access-telnet.d.ts.map +1 -0
  482. package/remote-access/telnet/index.d.ts +17 -0
  483. package/remote-access/telnet/index.d.ts.map +1 -0
  484. package/remote-access/terminal-viewer/c8y-ngx-components-remote-access-terminal-viewer.d.ts.map +1 -0
  485. package/remote-access/terminal-viewer/index.d.ts +2 -0
  486. package/remote-access/terminal-viewer/index.d.ts.map +1 -0
  487. package/remote-access/terminal-viewer/shell-adapter.d.ts +14 -0
  488. package/remote-access/terminal-viewer/shell-adapter.d.ts.map +1 -0
  489. package/remote-access/terminal-viewer/telnet-negotiator.d.ts +13 -0
  490. package/remote-access/terminal-viewer/telnet-negotiator.d.ts.map +1 -0
  491. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts +25 -0
  492. package/remote-access/terminal-viewer/terminal-viewer.component.d.ts.map +1 -0
  493. package/remote-access/vnc/c8y-ngx-components-remote-access-vnc.d.ts.map +1 -0
  494. package/remote-access/vnc/index.d.ts +22 -0
  495. package/remote-access/vnc/index.d.ts.map +1 -0
  496. package/remote-access/vnc/remote-access-vnc-endpoint-modal/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.d.ts.map +1 -0
  497. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts +2 -0
  498. package/remote-access/vnc/remote-access-vnc-endpoint-modal/index.d.ts.map +1 -0
  499. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts +46 -0
  500. package/remote-access/vnc/remote-access-vnc-endpoint-modal/remote-access-vnc-endpoint-modal.component.d.ts.map +1 -0
  501. package/remote-access/vnc/vnc-viewer/c8y-ngx-components-remote-access-vnc-vnc-viewer.d.ts.map +1 -0
  502. package/remote-access/vnc/vnc-viewer/index.d.ts +2 -0
  503. package/remote-access/vnc/vnc-viewer/index.d.ts.map +1 -0
  504. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts +32 -0
  505. package/remote-access/vnc/vnc-viewer/vnc-credentials-prompt/vnc-credentials-prompt.component.d.ts.map +1 -0
  506. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts +37 -0
  507. package/remote-access/vnc/vnc-viewer/vnc-viewer.component.d.ts.map +1 -0
  508. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts +2 -1
  509. package/replace-device/replace-device-wizard/replace-device-wizard.model.d.ts.map +1 -1
  510. package/report-dashboard/report-dashboard-list.component.d.ts +29 -0
  511. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  512. package/repository/shared/repository.model.d.ts +2 -1
  513. package/repository/shared/repository.model.d.ts.map +1 -1
  514. package/services/status-options/status-options.model.d.ts +2 -1
  515. package/services/status-options/status-options.model.d.ts.map +1 -1
  516. package/sub-assets/group-info.component.d.ts +2 -1
  517. package/sub-assets/group-info.component.d.ts.map +1 -1
  518. package/translation-editor/data/translation-store.service.d.ts.map +1 -1
  519. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +7 -2
  520. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  521. package/upgrade/bridge.service.d.ts +5 -0
  522. package/upgrade/bridge.service.d.ts.map +1 -1
  523. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  524. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  525. package/widgets/implementations/kpi/kpi-widget.model.d.ts +2 -1
  526. package/widgets/implementations/kpi/kpi-widget.model.d.ts.map +1 -1
  527. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts +0 -10
  528. package/ecosystem/application-plugins/only-latest-plugin-version.pipe.d.ts.map +0 -1
  529. package/esm2022/ecosystem/application-plugins/only-latest-plugin-version.pipe.mjs +0 -20
@@ -1,30 +1,36 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
2
  import { FormBuilder } from '@angular/forms';
3
+ import { ActivatedRoute, Router } from '@angular/router';
3
4
  import { AppStateService, FilterInputComponent, GainsightService, internalApps, PackageType } from '@c8y/ngx-components';
4
- import { pipe } from 'rxjs';
5
- import { map } from 'rxjs/operators';
6
5
  import { TranslateService } from '@ngx-translate/core';
6
+ import { pipe, Subject } from 'rxjs';
7
+ import { map, takeUntil } from 'rxjs/operators';
7
8
  import { APP_STATE } from '../ecosystem.constants';
8
9
  import { PRODUCT_EXPERIENCE_ECOSYSTEM } from '../ecosystem.model';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/forms";
11
12
  import * as i2 from "@c8y/ngx-components";
12
13
  import * as i3 from "@ngx-translate/core";
13
- import * as i4 from "@angular/common";
14
- import * as i5 from "ngx-bootstrap/dropdown";
15
- import * as i6 from "@angular/cdk/a11y";
14
+ import * as i4 from "@angular/router";
15
+ import * as i5 from "@angular/common";
16
+ import * as i6 from "ngx-bootstrap/dropdown";
17
+ import * as i7 from "@angular/cdk/a11y";
16
18
  export class ListFiltersComponent {
17
- constructor(formBuilder, ui, translateService, gainsightService) {
19
+ constructor(formBuilder, ui, translateService, gainsightService, router, activatedRoute) {
18
20
  this.formBuilder = formBuilder;
19
21
  this.ui = ui;
20
22
  this.translateService = translateService;
21
23
  this.gainsightService = gainsightService;
24
+ this.router = router;
25
+ this.activatedRoute = activatedRoute;
22
26
  this.packageTypes = [];
23
27
  this.packageAvailabilities = [];
24
28
  this.packageContents = [];
25
29
  this.filterPipeChange = new EventEmitter();
26
30
  this.chips = [];
31
+ this.customFilters = new Map();
27
32
  this.CURRENT_LOCATION = location.href;
33
+ this.destroy$ = new Subject();
28
34
  this.formGroup = this.initForm();
29
35
  }
30
36
  ngOnInit() {
@@ -34,6 +40,7 @@ export class ListFiltersComponent {
34
40
  this.packageAvailabilities?.length > 0 ||
35
41
  this.packageContents?.length > 0;
36
42
  this.currentLang = this.ui.state.lang;
43
+ this.subscribeToQueryParams();
37
44
  }
38
45
  setFilterTerm(filterTerm) {
39
46
  this.currentFilterTerm = filterTerm;
@@ -77,6 +84,55 @@ export class ListFiltersComponent {
77
84
  chip[1].setValue(false);
78
85
  this.applyPredefinedFilters();
79
86
  }
87
+ ngOnDestroy() {
88
+ this.destroy$.next();
89
+ this.destroy$.complete();
90
+ }
91
+ subscribeToQueryParams() {
92
+ this.activatedRoute.queryParams
93
+ .pipe(takeUntil(this.destroy$))
94
+ .subscribe((queryParams) => {
95
+ const filters = this.parseQueryParams(queryParams);
96
+ this.currentFilterTerm = queryParams.filterTerm || '';
97
+ this.formGroup.patchValue(filters);
98
+ this.applyPredefinedFilters();
99
+ });
100
+ }
101
+ setQueryParams() {
102
+ if (!this.currentFiltersState) {
103
+ return;
104
+ }
105
+ this.router.navigate([], {
106
+ queryParams: {
107
+ ...this.simplifyFilterObject(this.currentFiltersState),
108
+ filterTerm: this.currentFilterTerm || null
109
+ }
110
+ });
111
+ }
112
+ parseQueryParams(queryParams) {
113
+ const filter = {};
114
+ for (const fullKey in queryParams) {
115
+ const [key, subKey] = fullKey.split('.');
116
+ if (!filter[key]) {
117
+ filter[key] = {};
118
+ }
119
+ filter[key][subKey] = queryParams[fullKey] === 'true';
120
+ }
121
+ return filter;
122
+ }
123
+ simplifyFilterObject(currentFiltersState) {
124
+ const keys = Object.keys(currentFiltersState);
125
+ const result = {};
126
+ for (const key of keys) {
127
+ const subKeys = Object.keys(currentFiltersState[key]);
128
+ for (const subKey of subKeys) {
129
+ if (currentFiltersState[key][subKey]) {
130
+ result[`${key}.${subKey}`] = currentFiltersState[key][subKey];
131
+ }
132
+ }
133
+ }
134
+ return result;
135
+ }
80
136
  initForm() {
81
137
  return this.formBuilder.group({
82
138
  type: this.formBuilder.group({
@@ -92,10 +148,12 @@ export class ListFiltersComponent {
92
148
  content: this.formBuilder.group({
93
149
  [APP_STATE.PACKAGE_BLUEPRINT.label]: [false],
94
150
  [APP_STATE.PACKAGE_PLUGIN.label]: [false]
95
- })
151
+ }),
152
+ custom: this.formBuilder.group({})
96
153
  });
97
154
  }
98
155
  setPipe() {
156
+ this.setQueryParams();
99
157
  const filterPipe = pipe(map((data) => {
100
158
  this.data = data.filter((app) => {
101
159
  let matchesByString;
@@ -112,7 +170,8 @@ export class ListFiltersComponent {
112
170
  }
113
171
  const matchesByPredefinedProperty = this.appMatchesByPredefinedProperty(app, 'type') &&
114
172
  this.appMatchesByPredefinedProperty(app, 'availability') &&
115
- this.appMatchesByPredefinedProperty(app, 'content');
173
+ this.appMatchesByPredefinedProperty(app, 'content') &&
174
+ this.appMatchesByPredefinedProperty(app, 'custom');
116
175
  return matchesByString && matchesByPredefinedProperty;
117
176
  });
118
177
  return this.data;
@@ -124,6 +183,9 @@ export class ListFiltersComponent {
124
183
  return name && name.toLowerCase().indexOf(term) > -1;
125
184
  }
126
185
  appMatchesByPredefinedProperty(app, property) {
186
+ if (property === 'custom' && this.currentFiltersState) {
187
+ return Object.entries(this.currentFiltersState[property]).every(([key, value]) => this.customFilters.get(key)(app, value));
188
+ }
127
189
  // if filter object does not contain property filters or all filters are false, filter is inactive
128
190
  const filterForPropertyIsActive = this.currentFiltersState?.[property] &&
129
191
  !Object.values(this.currentFiltersState[property]).every(v => !v);
@@ -147,13 +209,13 @@ export class ListFiltersComponent {
147
209
  });
148
210
  });
149
211
  }
150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListFiltersComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AppStateService }, { token: i3.TranslateService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter (onSearch)=\"setFilterTerm($event)\"></c8y-filter>\n\n <div\n *ngIf=\"predefinedFiltersVisible\"\n class=\"dropdown m-l-8 m-r-4\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }} {{ chip[0] | translate | titlecase }}\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let type of packageTypes\"\n [title]=\"type | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let availability of packageAvailabilities\"\n [title]=\"availability | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let content of packageContents\"\n [title]=\"content | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n type=\"button\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n type=\"button\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i4.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i5.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i5.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i5.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }] }); }
212
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListFiltersComponent, deps: [{ token: i1.FormBuilder }, { token: i2.AppStateService }, { token: i3.TranslateService }, { token: i2.GainsightService }, { token: i4.Router }, { token: i4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
213
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ListFiltersComponent, selector: "c8y-list-filters", inputs: { packageTypes: "packageTypes", packageAvailabilities: "packageAvailabilities", packageContents: "packageContents" }, outputs: { filterPipeChange: "filterPipeChange" }, viewQueries: [{ propertyName: "filterInput", first: true, predicate: FilterInputComponent, descendants: true }], ngImport: i0, template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgPlural, selector: "[ngPlural]", inputs: ["ngPlural"] }, { kind: "directive", type: i5.NgPluralCase, selector: "[ngPluralCase]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i2.FilterInputComponent, selector: "c8y-filter", inputs: ["icon", "filterTerm"], outputs: ["onSearch"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i7.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.TitleCasePipe, name: "titlecase" }] }); }
152
214
  }
153
215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ListFiltersComponent, decorators: [{
154
216
  type: Component,
155
- args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter (onSearch)=\"setFilterTerm($event)\"></c8y-filter>\n\n <div\n *ngIf=\"predefinedFiltersVisible\"\n class=\"dropdown m-l-8 m-r-4\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n type=\"button\"\n title=\"{{ 'Remove' | translate }} {{ chip[0] | translate | titlecase }}\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let type of packageTypes\"\n [title]=\"type | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let availability of packageAvailabilities\"\n [title]=\"availability | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n *ngFor=\"let content of packageContents\"\n [title]=\"content | translate\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n type=\"button\"\n title=\"{{ 'Reset' | translate }}\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n type=\"button\"\n title=\"{{ 'Apply' | translate }}\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>" }]
156
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AppStateService }, { type: i3.TranslateService }, { type: i2.GainsightService }], propDecorators: { packageTypes: [{
217
+ args: [{ selector: 'c8y-list-filters', template: "<form\n class=\"d-flex a-i-center\"\n [formGroup]=\"formGroup\"\n>\n <c8y-filter\n [filterTerm]=\"currentFilterTerm\"\n (onSearch)=\"setFilterTerm($event)\"\n ></c8y-filter>\n\n <div\n class=\"dropdown m-l-8 m-r-4\"\n *ngIf=\"predefinedFiltersVisible\"\n dropdown\n (isOpenChange)=\"toggleDropdown($event)\"\n #filtersDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"filtersDropdown.isOpen\"\n [insideClick]=\"true\"\n >\n <div class=\"input-group d-inline-flex\">\n <button\n class=\"btn-clean form-control p-l-8 p-r-16 a-s-stretch d-flex a-i-center w-auto flex-no-shrink\"\n title=\"{{ 'Filters' | translate }}\"\n dropdownToggle\n >\n <span [ngPlural]=\"chips.length\">\n <ng-template ngPluralCase=\"=0\">\n {{ 'Filters' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"=1\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filter' | translate }}\n </ng-template>\n <ng-template ngPluralCase=\"other\">\n <span class=\"badge badge-info\">{{ chips.length }}</span>\n {{ 'Filters' | translate }}\n </ng-template>\n </span>\n <span class=\"caret\"></span>\n </button>\n <div\n class=\"input-group-addon p-t-0 p-b-0 d-flex gap-4 a-i-center inner-scroll\"\n *ngIf=\"chips.length > 0\"\n >\n <ng-container *ngFor=\"let chip of chips\">\n <span\n class=\"tag tag--info chip\"\n *ngIf=\"chip[1].value\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n (click)=\"deselectChip(chip)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ chip[0] | translate | titlecase }}\n </span>\n </ng-container>\n </div>\n </div>\n <div\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n <div class=\"dropdown-form\">\n <c8y-form-group\n *ngIf=\"packageTypes.length\"\n formGroupName=\"type\"\n >\n <label class=\"m-b-16\">\n {{ 'Type' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"type | translate\"\n *ngFor=\"let type of packageTypes\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"type\"\n [value]=\"type\"\n />\n <span></span>\n <span>{{ type | translate | titlecase }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageAvailabilities.length\"\n formGroupName=\"availability\"\n >\n <label class=\"m-b-16\">\n {{ 'Availability`of package based on app state`' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"availability | translate\"\n *ngFor=\"let availability of packageAvailabilities\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"availability\"\n [value]=\"availability\"\n />\n <span></span>\n <span>{{ availability | translate }}</span>\n </label>\n </c8y-form-group>\n\n <c8y-form-group\n *ngIf=\"packageContents.length\"\n formGroupName=\"content\"\n >\n <label class=\"m-b-16\">\n {{ 'Content' | translate }}\n </label>\n <label\n class=\"c8y-checkbox\"\n [title]=\"content | translate\"\n *ngFor=\"let content of packageContents\"\n >\n <input\n type=\"checkbox\"\n [formControlName]=\"content\"\n [value]=\"content\"\n />\n <span></span>\n <span>{{ content | translate }}</span>\n </label>\n </c8y-form-group>\n <c8y-form-group formGroupName=\"custom\">\n <ng-content></ng-content>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset(); filtersDropdown.isOpen = false\"\n >\n {{ 'Reset' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyPredefinedFilters(); filtersDropdown.isOpen = false\"\n [disabled]=\"formGroup.pristine && formGroup.untouched\"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
218
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.AppStateService }, { type: i3.TranslateService }, { type: i2.GainsightService }, { type: i4.Router }, { type: i4.ActivatedRoute }], propDecorators: { packageTypes: [{
157
219
  type: Input
158
220
  }], packageAvailabilities: [{
159
221
  type: Input
@@ -165,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
165
227
  type: ViewChild,
166
228
  args: [FilterInputComponent]
167
229
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7QUFNbEUsTUFBTSxPQUFPLG9CQUFvQjtJQWlCL0IsWUFDVSxXQUF3QixFQUN4QixFQUFtQixFQUNuQixnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBSGxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQWlCO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXBCbkMsaUJBQVksR0FBcUMs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QUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQXdCLEVBQUUsRUFBRTtZQUMxRSxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUE0QixFQUFFLEVBQUU7Z0JBQzlFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTlLVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixzUkFLcEIsb0JBQW9CLGdEQzFCakMseXdKQXVKTzs7MkZEbElNLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7NEtBSW5CLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUMwQixXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEZpbHRlcklucHV0Q29tcG9uZW50LFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBpbnRlcm5hbEFwcHMsXG4gIFBhY2thZ2VUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSUFwcGxpY2F0aW9uIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUGFja2FnZUZpbHRlcnMsIEZpbHRlclBpcGUgfSBmcm9tICcuL2xpc3QtZmlsdGVycy5tb2RlbCc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0gfSBmcm9tICcuLi9lY29zeXN0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbGlzdC1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpc3QtZmlsdGVycy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGlzdEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwYWNrYWdlVHlwZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1sndHlwZSddKVtdID0gW107XG4gIEBJbnB1dCgpIHBhY2thZ2VBdmFpbGFiaWxpdGllczogKGtleW9mIFBhY2thZ2VGaWx0ZXJzWydhdmFpbGFiaWxpdHknXSlbXSA9IFtdO1xuICBASW5wdXQoKSBwYWNrYWdlQ29udGVudHM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snY29udGVudCddKVtdID0gW107XG4gIEBPdXRwdXQoKSBmaWx0ZXJQaXBlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJQaXBlPigpO1xuICBAVmlld0NoaWxkKEZpbHRlcklucHV0Q29tcG9uZW50KSBmaWx0ZXJJbnB1dDogRmlsdGVySW5wdXRDb21wb25lbnQ7XG5cbiAgZm9ybUdyb3VwOiBSZXR1cm5UeXBlPExpc3RGaWx0ZXJzQ29tcG9uZW50Wydpbml0Rm9ybSddPjtcbiAgY2hpcHM6IFtzdHJpbmcsIEZvcm1Db250cm9sXVtdID0gW107XG4gIHByZWRlZmluZWRGaWx0ZXJzVmlzaWJsZTogYm9vbGVhbjtcblxuICBwcml2YXRlIGN1cnJlbnRMYW5nOiBzdHJpbmc7XG4gIHByaXZhdGUgZGF0YTogSUFwcGxpY2F0aW9uW107XG4gIHByaXZhdGUgY3VycmVudEZpbHRlcnNTdGF0ZTogUGFydGlhbDxQYWNrYWdlRmlsdGVycz47XG4gIHByaXZhdGUgY3VycmVudEZpbHRlclRlcm06IHN0cmluZztcbiAgcHJpdmF0ZSBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnNWaXNpYmxlID1cbiAgICAgIHRoaXMucGFja2FnZVR5cGVzPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdGllcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wYWNrYWdlQ29udGVudHM/Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudWkuc3RhdGUubGFuZztcbiAgfVxuXG4gIHNldEZpbHRlclRlcm0oZmlsdGVyVGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgdGhpcy5zZXRQaXBlKCk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLkZJTFRFUl9MSVNULFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuTElTVF9GSUxURVJTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0ZJTFRFUl9URVJNLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMuc2V0Q2hpcHMoKTtcbiAgICB0aGlzLnNldFBpcGUoKTtcblxuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuRklMVEVSX0xJU1QsXG4gICAgICB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5MSVNUX0ZJTFRFUlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfUFJFREVGSU5FRF9GSUxURVJTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgZmlsdGVyczogdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5GSUxURVJfTElTVCxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkxJU1RfRklMVEVSUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlJFU0VUX0ZJTFRFUixcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICB9XG5cbiAgcmVzZXRBbGxGaWx0ZXJzKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmZpbHRlcklucHV0LnJlc2V0KCk7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGRlc2VsZWN0Q2hpcChjaGlwOiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pOiB2b2lkIHtcbiAgICBjaGlwWzFdLnNldFZhbHVlKGZhbHNlKTtcbiAgICB0aGlzLmFwcGx5UHJlZGVmaW5lZEZpbHRlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdHlwZTogdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIFtQYWNrYWdlVHlwZS5PRkZJQ0lBTF06IFtmYWxzZV0sXG4gICAgICAgIFtQYWNrYWdlVHlwZS5DT01NVU5JVFldOiBbZmFsc2VdXG4gICAgICB9KSxcbiAgICAgIGF2YWlsYWJpbGl0eTogdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgIFtBUFBfU1RBVEUuU1VCU0NSSUJFRC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuVU5QQUNLRUQubGFiZWxdOiBbZmFsc2VdLFxuICAgICAgICBbQVBQX1NUQVRFLkVYVEVSTkFMLmxhYmVsXTogW2ZhbHNlXSxcbiAgICAgICAgW0FQUF9TVEFURS5DVVNUT00ubGFiZWxdOiBbZmFsc2VdXG4gICAgICB9KSxcbiAgICAgIGNvbnRlbnQ6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbQVBQX1NUQVRFLlBBQ0tBR0VfQkxVRVBSSU5ULmxhYmVsXTogW2ZhbHNlXSxcbiAgICAgICAgW0FQUF9TVEFURS5QQUNLQUdFX1BMVUdJTi5sYWJlbF06IFtmYWxzZV1cbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBpcGUoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IElBcHBsaWNhdGlvbltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZmlsdGVyKChhcHA6IElBcHBsaWNhdGlvbikgPT4ge1xuICAgICAgICAgIGxldCBtYXRjaGVzQnlTdHJpbmc7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtIHx8IHRoaXMuY3VycmVudEZpbHRlclRlcm0udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbWF0Y2hlc0J5U3RyaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXBwTmFtZSA9XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmcgPT09ICdlbicgfHwgIWFwcC5uYW1lPy5sZW5ndGggfHwgIWludGVybmFsQXBwc1thcHAubmFtZV1cbiAgICAgICAgICAgICAgICA/IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpbnRlcm5hbEFwcHNbYXBwLm5hbWVdKTtcbiAgICAgICAgICAgIG1hdGNoZXNCeVN0cmluZyA9XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhhcHBOYW1lLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcoYXBwLmRlc2NyaXB0aW9uLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkgPVxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAndHlwZScpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdhdmFpbGFiaWxpdHknKSAmJlxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAnY29udGVudCcpO1xuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoZXNCeVN0cmluZyAmJiBtYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuZmlsdGVyUGlwZUNoYW5nZS5lbWl0KGZpbHRlclBpcGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb250YWluU3RyaW5nKG5hbWU6IHN0cmluZywgZmlsdGVyVGVybTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGVybSA9IGZpbHRlclRlcm0udG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgcmV0dXJuIG5hbWUgJiYgbmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGVybSkgPiAtMTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwTWF0Y2hlc0J5UHJlZGVmaW5lZFByb3BlcnR5KFxuICAgIGFwcDogSUFwcGxpY2F0aW9uLFxuICAgIHByb3BlcnR5OiBrZXlvZiBQYWNrYWdlRmlsdGVyc1xuICApOiBib29sZWFuIHtcbiAgICAvLyBpZiBmaWx0ZXIgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gcHJvcGVydHkgZmlsdGVycyBvciBhbGwgZmlsdGVycyBhcmUgZmFsc2UsIGZpbHRlciBpcyBpbmFjdGl2ZVxuICAgIGNvbnN0IGZpbHRlckZvclByb3BlcnR5SXNBY3RpdmUgPVxuICAgICAgdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlPy5bcHJvcGVydHldICYmXG4gICAgICAhT2JqZWN0LnZhbHVlcyh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGVbcHJvcGVydHldKS5ldmVyeSh2ID0+ICF2KTtcbiAgICBpZiAoIWZpbHRlckZvclByb3BlcnR5SXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFwcC5maWx0ZXJQcm9wcz8uW3Byb3BlcnR5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XVthcHAuZmlsdGVyUHJvcHNbcHJvcGVydHldXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sc0dyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRyb2xzR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGVudHJ5OiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5WzFdLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jaGlwcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxjOHktZmlsdGVyIChvblNlYXJjaCk9XCJzZXRGaWx0ZXJUZXJtKCRldmVudClcIj48L2M4eS1maWx0ZXI+XG5cbiAgPGRpdlxuICAgICpuZ0lmPVwicHJlZGVmaW5lZEZpbHRlcnNWaXNpYmxlXCJcbiAgICBjbGFzcz1cImRyb3Bkb3duIG0tbC04IG0tci00XCJcbiAgICBkcm9wZG93blxuICAgIChpc09wZW5DaGFuZ2UpPVwidG9nZ2xlRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgI2ZpbHRlcnNEcm9wZG93bj1cImJzLWRyb3Bkb3duXCJcbiAgICBbY2RrVHJhcEZvY3VzXT1cImZpbHRlcnNEcm9wZG93bi5pc09wZW5cIlxuICAgIFtpbnNpZGVDbGlja109XCJ0cnVlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBkLWlubGluZS1mbGV4XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuLWNsZWFuIGZvcm0tY29udHJvbCBwLWwtOCBwLXItMTYgYS1zLXN0cmV0Y2ggZC1mbGV4IGEtaS1jZW50ZXIgdy1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnRmlsdGVycycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBkcm9wZG93blRvZ2dsZVxuICAgICAgPlxuICAgICAgICA8c3BhbiBbbmdQbHVyYWxdPVwiY2hpcHMubGVuZ3RoXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nUGx1cmFsQ2FzZT1cIj0wXCI+XG4gICAgICAgICAgICB7eyAnRmlsdGVycycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY2hpcHMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAge3sgJ0ZpbHRlcicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCJvdGhlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1pbmZvXCI+e3sgY2hpcHMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAge3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXAtYWRkb24gcC10LTAgcC1iLTAgZC1mbGV4IGdhcC00IGEtaS1jZW50ZXIgaW5uZXItc2Nyb2xsXCJcbiAgICAgICAgKm5nSWY9XCJjaGlwcy5sZW5ndGggPiAwXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpcCBvZiBjaGlwc1wiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInRhZyB0YWctLWluZm8gY2hpcFwiXG4gICAgICAgICAgICAqbmdJZj1cImNoaXBbMV0udmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXhzIGJ0bi1jbGVhbiB0ZXh0LTEwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX0ge3sgY2hpcFswXSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZXNlbGVjdENoaXAoY2hpcClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwidGltZXNcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIHt7IGNoaXBbMF0gfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51XCJcbiAgICAgICpkcm9wZG93bk1lbnVcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZm9ybVwiPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAqbmdJZj1cInBhY2thZ2VUeXBlcy5sZW5ndGhcIlxuICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJ0eXBlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm0tYi0xNlwiPlxuICAgICAgICAgICAge3sgJ1R5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0eXBlIG9mIHBhY2thZ2VUeXBlc1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwidHlwZSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwidHlwZVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ0eXBlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57eyB0eXBlIHwgdHJhbnNsYXRlIHwgdGl0bGVjYXNlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgKm5nSWY9XCJwYWNrYWdlQXZhaWxhYmlsaXRpZXMubGVuZ3RoXCJcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm0tYi0xNlwiPlxuICAgICAgICAgICAge3sgJ0F2YWlsYWJpbGl0eWBvZiBwYWNrYWdlIGJhc2VkIG9uIGFwcCBzdGF0ZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWNoZWNrYm94XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhdmFpbGFiaWxpdHkgb2YgcGFja2FnZUF2YWlsYWJpbGl0aWVzXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJhdmFpbGFiaWxpdHkgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGF2YWlsYWJpbGl0eSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuXG4gICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICpuZ0lmPVwicGFja2FnZUNvbnRlbnRzLmxlbmd0aFwiXG4gICAgICAgICAgZm9ybUdyb3VwTmFtZT1cImNvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnQ29udGVudCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgcGFja2FnZUNvbnRlbnRzXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJjb250ZW50IHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250ZW50XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGNvbnRlbnQgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZC1mbGV4IGdhcC04IHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnUmVzZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIChjbGljayk9XCJhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Hcm91cC5wcmlzdGluZSAmJiBmb3JtR3JvdXAudW50b3VjaGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+Il19
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvbGlzdC1maWx0ZXJzL2xpc3QtZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7OztBQU9sRSxNQUFNLE9BQU8sb0JBQW9CO0lBbUIvQixZQUNVLFdBQXdCLEVBQ3hCLEVBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLGNBQThCO1FBTDlCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FB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S0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQzBCLFdBQVc7c0JBQTNDLFNBQVM7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBcHBTdGF0ZVNlcnZpY2UsXG4gIEZpbHRlcklucHV0Q29tcG9uZW50LFxuICBHYWluc2lnaHRTZXJ2aWNlLFxuICBpbnRlcm5hbEFwcHMsXG4gIFBhY2thZ2VUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgcGlwZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBUFBfU1RBVEUgfSBmcm9tICcuLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0gfSBmcm9tICcuLi9lY29zeXN0ZW0ubW9kZWwnO1xuaW1wb3J0IHsgRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBGaWx0ZXJQaXBlLCBQYWNrYWdlRmlsdGVycyB9IGZyb20gJy4vbGlzdC1maWx0ZXJzLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWxpc3QtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExpc3RGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcGFja2FnZVR5cGVzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ3R5cGUnXSlbXSA9IFtdO1xuICBASW5wdXQoKSBwYWNrYWdlQXZhaWxhYmlsaXRpZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snYXZhaWxhYmlsaXR5J10pW10gPSBbXTtcbiAgQElucHV0KCkgcGFja2FnZUNvbnRlbnRzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ2NvbnRlbnQnXSlbXSA9IFtdO1xuICBAT3V0cHV0KCkgZmlsdGVyUGlwZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyUGlwZT4oKTtcbiAgQFZpZXdDaGlsZChGaWx0ZXJJbnB1dENvbXBvbmVudCkgZmlsdGVySW5wdXQ6IEZpbHRlcklucHV0Q29tcG9uZW50O1xuXG4gIGZvcm1Hcm91cDogUmV0dXJuVHlwZTxMaXN0RmlsdGVyc0NvbXBvbmVudFsnaW5pdEZvcm0nXT47XG4gIGNoaXBzOiBbc3RyaW5nLCBGb3JtQ29udHJvbF1bXSA9IFtdO1xuICBwcmVkZWZpbmVkRmlsdGVyc1Zpc2libGU6IGJvb2xlYW47XG4gIGN1c3RvbUZpbHRlcnMgPSBuZXcgTWFwPHN0cmluZywgKGFwcDogRmlsdGVyYWJsZUFwcE9yUGx1Z2luLCBlbmFibGVkOiBib29sZWFuKSA9PiBib29sZWFuPigpO1xuICBjdXJyZW50RmlsdGVyVGVybTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY3VycmVudExhbmc6IHN0cmluZztcbiAgcHJpdmF0ZSBkYXRhOiBGaWx0ZXJhYmxlQXBwT3JQbHVnaW5bXTtcbiAgcHJpdmF0ZSBjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPjtcbiAgcHJpdmF0ZSBDVVJSRU5UX0xPQ0FUSU9OID0gbG9jYXRpb24uaHJlZjtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMucHJlZGVmaW5lZEZpbHRlcnNWaXNpYmxlID1cbiAgICAgIHRoaXMucGFja2FnZVR5cGVzPy5sZW5ndGggPiAwIHx8XG4gICAgICB0aGlzLnBhY2thZ2VBdmFpbGFiaWxpdGllcz8ubGVuZ3RoID4gMCB8fFxuICAgICAgdGhpcy5wYWNrYWdlQ29udGVudHM/Lmxlbmd0aCA+IDA7XG4gICAgdGhpcy5jdXJyZW50TGFuZyA9IHRoaXMudWkuc3RhdGUubGFuZztcbiAgICB0aGlzLnN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKTtcbiAgfVxuXG4gIHNldEZpbHRlclRlcm0oZmlsdGVyVGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IGZpbHRlclRlcm07XG4gICAgdGhpcy5zZXRQaXBlKCk7XG5cbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KFxuICAgICAgUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuRVZFTlRTLkZJTFRFUl9MSVNULFxuICAgICAge1xuICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkNPTVBPTkVOVFMuTElTVF9GSUxURVJTLFxuICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkFDVElPTlMuU0VUX0ZJTFRFUl9URVJNLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTlxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlO1xuICAgIHRoaXMuc2V0Q2hpcHMoKTtcbiAgICB0aGlzLnNldFBpcGUoKTtcblxuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS50cmlnZ2VyRXZlbnQoXG4gICAgICBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5FVkVOVFMuRklMVEVSX0xJU1QsXG4gICAgICB7XG4gICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQ09NUE9ORU5UUy5MSVNUX0ZJTFRFUlMsXG4gICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFX0VDT1NZU1RFTS5BUFBMSUNBVElPTlMuQUNUSU9OUy5TRVRfUFJFREVGSU5FRF9GSUxURVJTLFxuICAgICAgICB1cmw6IHRoaXMuQ1VSUkVOVF9MT0NBVElPTixcbiAgICAgICAgZmlsdGVyczogdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChcbiAgICAgIFBST0RVQ1RfRVhQRVJJRU5DRV9FQ09TWVNURU0uQVBQTElDQVRJT05TLkVWRU5UUy5GSUxURVJfTElTVCxcbiAgICAgIHtcbiAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5DT01QT05FTlRTLkxJU1RfRklMVEVSUyxcbiAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRUNPU1lTVEVNLkFQUExJQ0FUSU9OUy5BQ1RJT05TLlJFU0VUX0ZJTFRFUixcbiAgICAgICAgdXJsOiB0aGlzLkNVUlJFTlRfTE9DQVRJT05cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICB9XG5cbiAgcmVzZXRBbGxGaWx0ZXJzKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgICB0aGlzLmZpbHRlcklucHV0LnJlc2V0KCk7XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGRlc2VsZWN0Q2hpcChjaGlwOiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pOiB2b2lkIHtcbiAgICBjaGlwWzFdLnNldFZhbHVlKGZhbHNlKTtcbiAgICB0aGlzLmFwcGx5UHJlZGVmaW5lZEZpbHRlcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvUXVlcnlQYXJhbXMoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgocXVlcnlQYXJhbXM6IFBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJzID0gdGhpcy5wYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyVGVybSA9IHF1ZXJ5UGFyYW1zLmZpbHRlclRlcm0gfHwgJyc7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoZmlsdGVycyk7XG4gICAgICAgIHRoaXMuYXBwbHlQcmVkZWZpbmVkRmlsdGVycygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFF1ZXJ5UGFyYW1zKCkge1xuICAgIGlmICghdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAuLi50aGlzLnNpbXBsaWZ5RmlsdGVyT2JqZWN0KHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZSksXG4gICAgICAgIGZpbHRlclRlcm06IHRoaXMuY3VycmVudEZpbHRlclRlcm0gfHwgbnVsbFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiB7XG4gICAgY29uc3QgZmlsdGVyOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPiA9IHt9O1xuICAgIGZvciAoY29uc3QgZnVsbEtleSBpbiBxdWVyeVBhcmFtcykge1xuICAgICAgY29uc3QgW2tleSwgc3ViS2V5XSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICAgIGlmICghZmlsdGVyW2tleV0pIHtcbiAgICAgICAgZmlsdGVyW2tleV0gPSB7fTtcbiAgICAgIH1cbiAgICAgIGZpbHRlcltrZXldW3N1YktleV0gPSBxdWVyeVBhcmFtc1tmdWxsS2V5XSA9PT0gJ3RydWUnO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBzaW1wbGlmeUZpbHRlck9iamVjdChjdXJyZW50RmlsdGVyc1N0YXRlOiBQYXJ0aWFsPFBhY2thZ2VGaWx0ZXJzPik6IFBhcmFtcyB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGN1cnJlbnRGaWx0ZXJzU3RhdGUpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHN1YktleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RmlsdGVyc1N0YXRlW2tleV0pO1xuICAgICAgZm9yIChjb25zdCBzdWJLZXkgb2Ygc3ViS2V5cykge1xuICAgICAgICBpZiAoY3VycmVudEZpbHRlcnNTdGF0ZVtrZXldW3N1YktleV0pIHtcbiAgICAgICAgICByZXN1bHRbYCR7a2V5fS4ke3N1YktleX1gXSA9IGN1cnJlbnRGaWx0ZXJzU3RhdGVba2V5XVtzdWJLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbUGFja2FnZVR5cGUuT0ZGSUNJQUxdOiBbZmFsc2VdLFxuICAgICAgICBbUGFja2FnZVR5cGUuQ09NTVVOSVRZXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBhdmFpbGFiaWxpdHk6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICBbQVBQX1NUQVRFLlNVQlNDUklCRUQubGFiZWxdOiBbZmFsc2VdLFxuICAgICAgICBbQVBQX1NUQVRFLlVOUEFDS0VELmxhYmVsXTogW2ZhbHNlXSxcbiAgICAgICAgW0FQUF9TVEFURS5FWFRFUk5BTC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuQ1VTVE9NLmxhYmVsXTogW2ZhbHNlXVxuICAgICAgfSksXG4gICAgICBjb250ZW50OiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgW0FQUF9TVEFURS5QQUNLQUdFX0JMVUVQUklOVC5sYWJlbF06IFtmYWxzZV0sXG4gICAgICAgIFtBUFBfU1RBVEUuUEFDS0FHRV9QTFVHSU4ubGFiZWxdOiBbZmFsc2VdXG4gICAgICB9KSxcbiAgICAgIGN1c3RvbTogdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7fSlcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0UGlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFF1ZXJ5UGFyYW1zKCk7XG4gICAgY29uc3QgZmlsdGVyUGlwZSA9IHBpcGUoXG4gICAgICBtYXAoKGRhdGE6IEZpbHRlcmFibGVBcHBPclBsdWdpbltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZmlsdGVyKChhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbikgPT4ge1xuICAgICAgICAgIGxldCBtYXRjaGVzQnlTdHJpbmc7XG4gICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtIHx8IHRoaXMuY3VycmVudEZpbHRlclRlcm0udHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgbWF0Y2hlc0J5U3RyaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXBwTmFtZSA9XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudExhbmcgPT09ICdlbicgfHwgIWFwcC5uYW1lPy5sZW5ndGggfHwgIWludGVybmFsQXBwc1thcHAubmFtZV1cbiAgICAgICAgICAgICAgICA/IGFwcC5uYW1lXG4gICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpbnRlcm5hbEFwcHNbYXBwLm5hbWVdKTtcbiAgICAgICAgICAgIG1hdGNoZXNCeVN0cmluZyA9XG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyQ29udGFpblN0cmluZyhhcHBOYW1lLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKSB8fFxuICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbnRhaW5TdHJpbmcoYXBwLmRlc2NyaXB0aW9uLCB0aGlzLmN1cnJlbnRGaWx0ZXJUZXJtKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkgPVxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAndHlwZScpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdhdmFpbGFiaWxpdHknKSAmJlxuICAgICAgICAgICAgdGhpcy5hcHBNYXRjaGVzQnlQcmVkZWZpbmVkUHJvcGVydHkoYXBwLCAnY29udGVudCcpICYmXG4gICAgICAgICAgICB0aGlzLmFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShhcHAsICdjdXN0b20nKTtcblxuICAgICAgICAgIHJldHVybiBtYXRjaGVzQnlTdHJpbmcgJiYgbWF0Y2hlc0J5UHJlZGVmaW5lZFByb3BlcnR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmZpbHRlclBpcGVDaGFuZ2UuZW1pdChmaWx0ZXJQaXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ29udGFpblN0cmluZyhuYW1lOiBzdHJpbmcsIGZpbHRlclRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRlcm0gPSBmaWx0ZXJUZXJtLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIHJldHVybiBuYW1lICYmIG5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRlcm0pID4gLTE7XG4gIH1cblxuICBwcml2YXRlIGFwcE1hdGNoZXNCeVByZWRlZmluZWRQcm9wZXJ0eShcbiAgICBhcHA6IEZpbHRlcmFibGVBcHBPclBsdWdpbixcbiAgICBwcm9wZXJ0eToga2V5b2YgUGFja2FnZUZpbHRlcnNcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKHByb3BlcnR5ID09PSAnY3VzdG9tJyAmJiB0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGUpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLmN1cnJlbnRGaWx0ZXJzU3RhdGVbcHJvcGVydHldKS5ldmVyeSgoW2tleSwgdmFsdWVdKSA9PlxuICAgICAgICB0aGlzLmN1c3RvbUZpbHRlcnMuZ2V0KGtleSkoYXBwLCB2YWx1ZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgZmlsdGVyIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHByb3BlcnR5IGZpbHRlcnMgb3IgYWxsIGZpbHRlcnMgYXJlIGZhbHNlLCBmaWx0ZXIgaXMgaW5hY3RpdmVcbiAgICBjb25zdCBmaWx0ZXJGb3JQcm9wZXJ0eUlzQWN0aXZlID1cbiAgICAgIHRoaXMuY3VycmVudEZpbHRlcnNTdGF0ZT8uW3Byb3BlcnR5XSAmJlxuICAgICAgIU9iamVjdC52YWx1ZXModGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XSkuZXZlcnkodiA9PiAhdik7XG5cbiAgICBpZiAoIWZpbHRlckZvclByb3BlcnR5SXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFwcC5maWx0ZXJQcm9wcz8uW3Byb3BlcnR5XSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyc1N0YXRlW3Byb3BlcnR5XVthcHAuZmlsdGVyUHJvcHNbcHJvcGVydHldXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENoaXBzKCk6IHZvaWQge1xuICAgIHRoaXMuY2hpcHMgPSBbXTtcbiAgICBPYmplY3QudmFsdWVzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChjb250cm9sc0dyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKGNvbnRyb2xzR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGVudHJ5OiBbc3RyaW5nLCBGb3JtQ29udHJvbF0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5WzFdLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5jaGlwcy5wdXNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4+XG4gIDxjOHktZmlsdGVyXG4gICAgW2ZpbHRlclRlcm1dPVwiY3VycmVudEZpbHRlclRlcm1cIlxuICAgIChvblNlYXJjaCk9XCJzZXRGaWx0ZXJUZXJtKCRldmVudClcIlxuICA+PC9jOHktZmlsdGVyPlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImRyb3Bkb3duIG0tbC04IG0tci00XCJcbiAgICAqbmdJZj1cInByZWRlZmluZWRGaWx0ZXJzVmlzaWJsZVwiXG4gICAgZHJvcGRvd25cbiAgICAoaXNPcGVuQ2hhbmdlKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIlxuICAgICNmaWx0ZXJzRHJvcGRvd249XCJicy1kcm9wZG93blwiXG4gICAgW2Nka1RyYXBGb2N1c109XCJmaWx0ZXJzRHJvcGRvd24uaXNPcGVuXCJcbiAgICBbaW5zaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZC1pbmxpbmUtZmxleFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0bi1jbGVhbiBmb3JtLWNvbnRyb2wgcC1sLTggcC1yLTE2IGEtcy1zdHJldGNoIGQtZmxleCBhLWktY2VudGVyIHctYXV0byBmbGV4LW5vLXNocmlua1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgZHJvcGRvd25Ub2dnbGVcbiAgICAgID5cbiAgICAgICAgPHNwYW4gW25nUGx1cmFsXT1cImNoaXBzLmxlbmd0aFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ1BsdXJhbENhc2U9XCI9MFwiPlxuICAgICAgICAgICAge3sgJ0ZpbHRlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwiPTFcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdQbHVyYWxDYXNlPVwib3RoZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtaW5mb1wiPnt7IGNoaXBzLmxlbmd0aCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIHt7ICdGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJldFwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uIHAtdC0wIHAtYi0wIGQtZmxleCBnYXAtNCBhLWktY2VudGVyIGlubmVyLXNjcm9sbFwiXG4gICAgICAgICpuZ0lmPVwiY2hpcHMubGVuZ3RoID4gMFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaXAgb2YgY2hpcHNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0YWcgdGFnLS1pbmZvIGNoaXBcIlxuICAgICAgICAgICAgKm5nSWY9XCJjaGlwWzFdLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi14cyBidG4tY2xlYW4gdGV4dC0xMFwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2VsZWN0Q2hpcChjaGlwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJ0aW1lc1wiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAge3sgY2hpcFswXSB8IHRyYW5zbGF0ZSB8IHRpdGxlY2FzZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIlxuICAgICAgKmRyb3Bkb3duTWVudVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1mb3JtXCI+XG4gICAgICAgIDxjOHktZm9ybS1ncm91cFxuICAgICAgICAgICpuZ0lmPVwicGFja2FnZVR5cGVzLmxlbmd0aFwiXG4gICAgICAgICAgZm9ybUdyb3VwTmFtZT1cInR5cGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cInR5cGUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHR5cGUgb2YgcGFja2FnZVR5cGVzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInR5cGVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IHR5cGUgfCB0cmFuc2xhdGUgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cblxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXBcbiAgICAgICAgICAqbmdJZj1cInBhY2thZ2VBdmFpbGFiaWxpdGllcy5sZW5ndGhcIlxuICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJhdmFpbGFiaWxpdHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibS1iLTE2XCI+XG4gICAgICAgICAgICB7eyAnQXZhaWxhYmlsaXR5YG9mIHBhY2thZ2UgYmFzZWQgb24gYXBwIHN0YXRlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgY2xhc3M9XCJjOHktY2hlY2tib3hcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImF2YWlsYWJpbGl0eSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmlsaXR5IG9mIHBhY2thZ2VBdmFpbGFiaWxpdGllc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiYXZhaWxhYmlsaXR5XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cImF2YWlsYWJpbGl0eVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgYXZhaWxhYmlsaXR5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgPGM4eS1mb3JtLWdyb3VwXG4gICAgICAgICAgKm5nSWY9XCJwYWNrYWdlQ29udGVudHMubGVuZ3RoXCJcbiAgICAgICAgICBmb3JtR3JvdXBOYW1lPVwiY29udGVudFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtLWItMTZcIj5cbiAgICAgICAgICAgIHt7ICdDb250ZW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1jaGVja2JveFwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29udGVudCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBwYWNrYWdlQ29udGVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNvbnRlbnRcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiY29udGVudFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e3sgY29udGVudCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICA8Yzh5LWZvcm0tZ3JvdXAgZm9ybUdyb3VwTmFtZT1cImN1c3RvbVwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInAtMTYgZC1mbGV4IGdhcC04IHNlcGFyYXRvci10b3BcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBmbGV4LWdyb3dcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1Jlc2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlc2V0KCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnUmVzZXQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gZmxleC1ncm93XCJcbiAgICAgICAgICB0aXRsZT1cInt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJhcHBseVByZWRlZmluZWRGaWx0ZXJzKCk7IGZpbHRlcnNEcm9wZG93bi5pc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm1Hcm91cC5wcmlzdGluZSAmJiBmb3JtR3JvdXAudW50b3VjaGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdBcHBseScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -14,4 +14,4 @@ export const defaultPackageContents = [
14
14
  APP_STATE.PACKAGE_BLUEPRINT.label,
15
15
  APP_STATE.PACKAGE_PLUGIN.label
16
16
  ];
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3NoYXJlZC9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXJzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsU0FBUyxFQUFvQixNQUFNLHdCQUF3QixDQUFDO0FBMkJyRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBcUM7SUFDbkUsV0FBVyxDQUFDLFFBQVE7SUFDcEIsV0FBVyxDQUFDLFNBQVM7Q0FDdEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUE2QztJQUNwRixTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUs7SUFDMUIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQ3hCLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSztJQUN4QixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUs7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF3QztJQUN6RSxTQUFTLENBQUMsaUJBQWlCLENBQUMsS0FBSztJQUNqQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUs7Q0FDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhY2thZ2VUeXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBVbmFyeUZ1bmN0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQXBwbGljYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBUFBfU1RBVEUsIEFwcGxpY2F0aW9uU3RhdGUgfSBmcm9tICcuLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyUGlwZSA9IFVuYXJ5RnVuY3Rpb248T2JzZXJ2YWJsZTxJQXBwbGljYXRpb25bXT4sIE9ic2VydmFibGU8SUFwcGxpY2F0aW9uW10+PjtcblxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbHRlcnMgPSB7XG4gIHR5cGU6IHtcbiAgICBbUGFja2FnZVR5cGUuT0ZGSUNJQUxdPzogYm9vbGVhbjtcbiAgICBbUGFja2FnZVR5cGUuQ09NTVVOSVRZXT86IGJvb2xlYW47XG4gIH07XG4gIGF2YWlsYWJpbGl0eToge1xuICAgIFtBUFBfU1RBVEUuU1VCU0NSSUJFRC5sYWJlbF0/OiBib29sZWFuO1xuICAgIFtBUFBfU1RBVEUuVU5QQUNLRUQubGFiZWxdPzogYm9vbGVhbjtcbiAgICBbQVBQX1NUQVRFLkVYVEVSTkFMLmxhYmVsXT86IGJvb2xlYW47XG4gICAgW0FQUF9TVEFURS5DVVNUT00ubGFiZWxdPzogYm9vbGVhbjtcbiAgfTtcbiAgY29udGVudDoge1xuICAgIFtBUFBfU1RBVEUuUEFDS0FHRV9CTFVFUFJJTlQubGFiZWxdPzogYm9vbGVhbjtcbiAgICBbQVBQX1NUQVRFLlBBQ0tBR0VfUExVR0lOLmxhYmVsXT86IGJvb2xlYW47XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBBcHBGaWx0ZXJQcm9wcyA9IHtcbiAgdHlwZTogUGFja2FnZVR5cGU7XG4gIGF2YWlsYWJpbGl0eTogQXBwbGljYXRpb25TdGF0ZVsnbGFiZWwnXTtcbiAgY29udGVudDogQXBwbGljYXRpb25TdGF0ZVsnbGFiZWwnXTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UGFja2FnZVR5cGVzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ3R5cGUnXSlbXSA9IFtcbiAgUGFja2FnZVR5cGUuT0ZGSUNJQUwsXG4gIFBhY2thZ2VUeXBlLkNPTU1VTklUWVxuXTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQYWNrYWdlQXZhaWxhYmlsaXRpZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snYXZhaWxhYmlsaXR5J10pW10gPSBbXG4gIEFQUF9TVEFURS5TVUJTQ1JJQkVELmxhYmVsLFxuICBBUFBfU1RBVEUuVU5QQUNLRUQubGFiZWwsXG4gIEFQUF9TVEFURS5FWFRFUk5BTC5sYWJlbCxcbiAgQVBQX1NUQVRFLkNVU1RPTS5sYWJlbFxuXTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQYWNrYWdlQ29udGVudHM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snY29udGVudCddKVtdID0gW1xuICBBUFBfU1RBVEUuUEFDS0FHRV9CTFVFUFJJTlQubGFiZWwsXG4gIEFQUF9TVEFURS5QQUNLQUdFX1BMVUdJTi5sYWJlbFxuXTtcbiJdfQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL3NoYXJlZC9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXJzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHckUsT0FBTyxFQUFFLFNBQVMsRUFBb0IsTUFBTSx3QkFBd0IsQ0FBQztBQXFDckUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXFDO0lBQ25FLFdBQVcsQ0FBQyxRQUFRO0lBQ3BCLFdBQVcsQ0FBQyxTQUFTO0NBQ3RCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBNkM7SUFDcEYsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLO0lBQzFCLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSztJQUN4QixTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUs7SUFDeEIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0NBQ3ZCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBd0M7SUFDekUsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEtBQUs7SUFDakMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLO0NBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblBsdWdpbiwgUGFja2FnZVR5cGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFVuYXJ5RnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFQUF9TVEFURSwgQXBwbGljYXRpb25TdGF0ZSB9IGZyb20gJy4uL2Vjb3N5c3RlbS5jb25zdGFudHMnO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJhYmxlQXBwT3JQbHVnaW4gPSAoSUFwcGxpY2F0aW9uIHwgQXBwbGljYXRpb25QbHVnaW4pICYge1xuICBmaWx0ZXJQcm9wcz86IEFwcEZpbHRlclByb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyUGlwZSA9IFVuYXJ5RnVuY3Rpb248XG4gIE9ic2VydmFibGU8RmlsdGVyYWJsZUFwcE9yUGx1Z2luW10+LFxuICBPYnNlcnZhYmxlPEZpbHRlcmFibGVBcHBPclBsdWdpbltdPlxuPjtcblxuZXhwb3J0IHR5cGUgUGFja2FnZUZpbHRlcnMgPSB7XG4gIHR5cGU6IHtcbiAgICBbUGFja2FnZVR5cGUuT0ZGSUNJQUxdPzogYm9vbGVhbjtcbiAgICBbUGFja2FnZVR5cGUuQ09NTVVOSVRZXT86IGJvb2xlYW47XG4gIH07XG4gIGF2YWlsYWJpbGl0eToge1xuICAgIFtBUFBfU1RBVEUuU1VCU0NSSUJFRC5sYWJlbF0/OiBib29sZWFuO1xuICAgIFtBUFBfU1RBVEUuVU5QQUNLRUQubGFiZWxdPzogYm9vbGVhbjtcbiAgICBbQVBQX1NUQVRFLkVYVEVSTkFMLmxhYmVsXT86IGJvb2xlYW47XG4gICAgW0FQUF9TVEFURS5DVVNUT00ubGFiZWxdPzogYm9vbGVhbjtcbiAgfTtcbiAgY29udGVudDoge1xuICAgIFtBUFBfU1RBVEUuUEFDS0FHRV9CTFVFUFJJTlQubGFiZWxdPzogYm9vbGVhbjtcbiAgICBbQVBQX1NUQVRFLlBBQ0tBR0VfUExVR0lOLmxhYmVsXT86IGJvb2xlYW47XG4gIH07XG4gIGN1c3RvbToge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBBcHBGaWx0ZXJQcm9wcyA9IHtcbiAgdHlwZTogUGFja2FnZVR5cGU7XG4gIGF2YWlsYWJpbGl0eTogQXBwbGljYXRpb25TdGF0ZVsnbGFiZWwnXTtcbiAgY29udGVudDogQXBwbGljYXRpb25TdGF0ZVsnbGFiZWwnXTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0UGFja2FnZVR5cGVzOiAoa2V5b2YgUGFja2FnZUZpbHRlcnNbJ3R5cGUnXSlbXSA9IFtcbiAgUGFja2FnZVR5cGUuT0ZGSUNJQUwsXG4gIFBhY2thZ2VUeXBlLkNPTU1VTklUWVxuXTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQYWNrYWdlQXZhaWxhYmlsaXRpZXM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snYXZhaWxhYmlsaXR5J10pW10gPSBbXG4gIEFQUF9TVEFURS5TVUJTQ1JJQkVELmxhYmVsLFxuICBBUFBfU1RBVEUuVU5QQUNLRUQubGFiZWwsXG4gIEFQUF9TVEFURS5FWFRFUk5BTC5sYWJlbCxcbiAgQVBQX1NUQVRFLkNVU1RPTS5sYWJlbFxuXTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRQYWNrYWdlQ29udGVudHM6IChrZXlvZiBQYWNrYWdlRmlsdGVyc1snY29udGVudCddKVtdID0gW1xuICBBUFBfU1RBVEUuUEFDS0FHRV9CTFVFUFJJTlQubGFiZWwsXG4gIEFQUF9TVEFURS5QQUNLQUdFX1BMVUdJTi5sYWJlbFxuXTtcbiJdfQ==
@@ -17,6 +17,7 @@ import { EcosystemWizards } from './ecosystem.model';
17
17
  import { TranslatePackageLabelPipe } from './translate-package-label.pipe';
18
18
  import { ListFiltersComponent } from './list-filters/list-filters.component';
19
19
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
20
+ import { ArchivedFilterComponent } from './archived-filter/archived-filter.component';
20
21
  import * as i0 from "@angular/core";
21
22
  export class SharedEcosystemModule {
22
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SharedEcosystemModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -29,7 +30,8 @@ export class SharedEcosystemModule {
29
30
  DuplicateApplicationComponent,
30
31
  PackageVersionSelectComponent,
31
32
  TranslatePackageLabelPipe,
32
- ListFiltersComponent], imports: [CoreModule,
33
+ ListFiltersComponent,
34
+ ArchivedFilterComponent], imports: [CoreModule,
33
35
  BsDropdownModule,
34
36
  TooltipModule,
35
37
  A11yModule,
@@ -45,7 +47,8 @@ export class SharedEcosystemModule {
45
47
  DuplicateApplicationComponent,
46
48
  PackageVersionSelectComponent,
47
49
  TranslatePackageLabelPipe,
48
- ListFiltersComponent] }); }
50
+ ListFiltersComponent,
51
+ ArchivedFilterComponent] }); }
49
52
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SharedEcosystemModule, providers: [
50
53
  hookWizard({
51
54
  wizardId: EcosystemWizards.APPLICATION_UPLOAD,
@@ -91,7 +94,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
91
94
  DuplicateApplicationComponent,
92
95
  PackageVersionSelectComponent,
93
96
  TranslatePackageLabelPipe,
94
- ListFiltersComponent
97
+ ListFiltersComponent,
98
+ ArchivedFilterComponent
95
99
  ],
96
100
  exports: [
97
101
  AddApplicationComponent,
@@ -103,7 +107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
103
107
  DuplicateApplicationComponent,
104
108
  PackageVersionSelectComponent,
105
109
  TranslatePackageLabelPipe,
106
- ListFiltersComponent
110
+ ListFiltersComponent,
111
+ ArchivedFilterComponent
107
112
  ],
108
113
  providers: [
109
114
  hookWizard({
@@ -121,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
121
126
  ]
122
127
  }]
123
128
  }] });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWVjb3N5c3RlbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL3NoYXJlZC1lY29zeXN0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQztBQUM5SixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBb0RsRSxNQUFNLE9BQU8scUJBQXFCOzhHQUFyQixxQkFBcUI7K0dBQXJCLHFCQUFxQixpQkF0QzlCLHVCQUF1QjtZQUN2QixrQ0FBa0M7WUFDbEMsc0JBQXNCO1lBQ3RCLHdCQUF3QjtZQUN4QixpQ0FBaUM7WUFDakMsdUNBQXVDO1lBQ3ZDLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IseUJBQXlCO1lBQ3pCLG9CQUFvQixhQW5CcEIsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixhQUFhO1lBQ2IsVUFBVTtZQUNWLFdBQVc7WUFDWCxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLGtCQUFrQixhQWVsQix1QkFBdUI7WUFDdkIsa0NBQWtDO1lBQ2xDLHNCQUFzQjtZQUN0Qix3QkFBd0I7WUFDeEIsaUNBQWlDO1lBQ2pDLHVDQUF1QztZQUN2Qyw2QkFBNkI7WUFDN0IsNkJBQTZCO1lBQzdCLHlCQUF5QjtZQUN6QixvQkFBb0I7K0dBaUJYLHFCQUFxQixhQWZyQjtZQUNULFVBQVUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsa0JBQWtCO2dCQUM3QyxTQUFTLEVBQUUsNkJBQTZCO2dCQUN4QyxJQUFJLEVBQUUsZ0NBQWdDO2dCQUN0QyxPQUFPLEVBQUUsTUFBTTthQUNoQixDQUFDO1lBQ0YsVUFBVSxDQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFNBQVMsRUFBRSw2QkFBNkI7Z0JBQ3hDLElBQUksRUFBRSxnQ0FBZ0M7Z0JBQ3RDLE9BQU8sRUFBRSxNQUFNO2FBQ2hCLENBQUM7U0FDSCxZQTlDQyxVQUFVO1lBQ1YsZ0JBQWdCO1lBQ2hCLGFBQWE7WUFDYixVQUFVO1lBQ1YsV0FBVztZQUNYLGFBQWE7WUFDYixtQkFBbUI7WUFDbkIsa0JBQWtCOzsyRkF5Q1QscUJBQXFCO2tCQWxEakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsVUFBVTt3QkFDVixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ25CO29CQUNELFlBQVksRUFBRTt3QkFDWix1QkFBdUI7d0JBQ3ZCLGtDQUFrQzt3QkFDbEMsc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMsdUNBQXVDO3dCQUN2Qyw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6QixvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLGtDQUFrQzt3QkFDbEMsc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLGlDQUFpQzt3QkFDakMsdUNBQXVDO3dCQUN2Qyw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IseUJBQXlCO3dCQUN6QixvQkFBb0I7cUJBQ3JCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxVQUFVLENBQUM7NEJBQ1QsUUFBUSxFQUFFLGdCQUFnQixDQUFDLGtCQUFrQjs0QkFDN0MsU0FBUyxFQUFFLDZCQUE2Qjs0QkFDeEMsSUFBSSxFQUFFLGdDQUFnQzs0QkFDdEMsT0FBTyxFQUFFLE1BQU07eUJBQ2hCLENBQUM7d0JBQ0YsVUFBVSxDQUFDOzRCQUNULFFBQVEsRUFBRSxzQkFBc0I7NEJBQ2hDLFNBQVMsRUFBRSw2QkFBNkI7NEJBQ3hDLElBQUksRUFBRSxnQ0FBZ0M7NEJBQ3RDLE9BQU8sRUFBRSxNQUFNO3lCQUNoQixDQUFDO3FCQUNIO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvcmVNb2R1bGUsIGhvb2tXaXphcmQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEljb25TZWxlY3Rvck1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvaWNvbi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC90b29sdGlwJztcbmltcG9ydCB7IEExMXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IEFkZEFwcGxpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9hZGQtYXBwbGljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vYXBwbGljYXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vYXBwbGljYXRpb24tcHJvcGVydGllcy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVcGxvYWRBcmNoaXZlQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtYXJjaGl2ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHVwbGljYXRlQXBwbGljYXRpb25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9kdXBsaWNhdGUtYXBwbGljYXRpb24vZHVwbGljYXRlLWFwcGxpY2F0aW9uLWxpc3QvZHVwbGljYXRlLWFwcGxpY2F0aW9uLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IER1cGxpY2F0ZUFwcGxpY2F0aW9uUHJvcGVydGllc0NvbXBvbmVudCB9IGZyb20gJy4vZHVwbGljYXRlLWFwcGxpY2F0aW9uL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEdXBsaWNhdGVBcHBsaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZHVwbGljYXRlLWFwcGxpY2F0aW9uL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFja2FnZVZlcnNpb25TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3BhY2thZ2UtdmVyc2lvbi1zZWxlY3QvcGFja2FnZS12ZXJzaW9uLXNlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWNvc3lzdGVtV2l6YXJkcyB9IGZyb20gJy4vZWNvc3lzdGVtLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBhY2thZ2VMYWJlbFBpcGUgfSBmcm9tICcuL3RyYW5zbGF0ZS1wYWNrYWdlLWxhYmVsLnBpcGUnO1xuaW1wb3J0IHsgTGlzdEZpbHRlcnNDb21wb25lbnQgfSBmcm9tICcuL2xpc3QtZmlsdGVycy9saXN0LWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29yZU1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSWNvblNlbGVjdG9yTW9kdWxlXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFkZEFwcGxpY2F0aW9uQ29tcG9uZW50LFxuICAgIEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQsXG4gICAgVXBsb2FkQXJjaGl2ZUNvbXBvbmVudCxcbiAgICBBcHBsaWNhdGlvbkNhcmRDb21wb25lbnQsXG4gICAgRHVwbGljYXRlQXBwbGljYXRpb25MaXN0Q29tcG9uZW50LFxuICAgIER1cGxpY2F0ZUFwcGxpY2F0aW9uUHJvcGVydGllc0NvbXBvbmVudCxcbiAgICBEdXBsaWNhdGVBcHBsaWNhdGlvbkNvbXBvbmVudCxcbiAgICBQYWNrYWdlVmVyc2lvblNlbGVjdENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQYWNrYWdlTGFiZWxQaXBlLFxuICAgIExpc3RGaWx0ZXJzQ29tcG9uZW50XG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBBZGRBcHBsaWNhdGlvbkNvbXBvbmVudCxcbiAgICBBcHBsaWNhdGlvblByb3BlcnRpZXNGb3JtQ29tcG9uZW50LFxuICAgIFVwbG9hZEFyY2hpdmVDb21wb25lbnQsXG4gICAgQXBwbGljYXRpb25DYXJkQ29tcG9uZW50LFxuICAgIER1cGxpY2F0ZUFwcGxpY2F0aW9uTGlzdENvbXBvbmVudCxcbiAgICBEdXBsaWNhdGVBcHBsaWNhdGlvblByb3BlcnRpZXNDb21wb25lbnQsXG4gICAgRHVwbGljYXRlQXBwbGljYXRpb25Db21wb25lbnQsXG4gICAgUGFja2FnZVZlcnNpb25TZWxlY3RDb21wb25lbnQsXG4gICAgVHJhbnNsYXRlUGFja2FnZUxhYmVsUGlwZSxcbiAgICBMaXN0RmlsdGVyc0NvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBob29rV2l6YXJkKHtcbiAgICAgIHdpemFyZElkOiBFY29zeXN0ZW1XaXphcmRzLkFQUExJQ0FUSU9OX1VQTE9BRCxcbiAgICAgIGNvbXBvbmVudDogRHVwbGljYXRlQXBwbGljYXRpb25Db21wb25lbnQsXG4gICAgICBuYW1lOiAnRHVwbGljYXRlIGV4aXN0aW5nIGFwcGxpY2F0aW9uJyxcbiAgICAgIGM4eUljb246ICdjb3B5J1xuICAgIH0pLFxuICAgIGhvb2tXaXphcmQoe1xuICAgICAgd2l6YXJkSWQ6ICdkdXBsaWNhdGVBcHBsaWNhdGlvbicsXG4gICAgICBjb21wb25lbnQ6IER1cGxpY2F0ZUFwcGxpY2F0aW9uQ29tcG9uZW50LFxuICAgICAgbmFtZTogJ0R1cGxpY2F0ZSBleGlzdGluZyBhcHBsaWNhdGlvbicsXG4gICAgICBjOHlJY29uOiAnY29weSdcbiAgICB9KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZEVjb3N5c3RlbU1vZHVsZSB7fVxuIl19
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWVjb3N5c3RlbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY29zeXN0ZW0vc2hhcmVkL3NoYXJlZC1lY29zeXN0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5RkFBeUYsQ0FBQztBQUM1SSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxxR0FBcUcsQ0FBQztBQUM5SixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVB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YXIvY29yZSc7XG5pbXBvcnQgeyBDb3JlTW9kdWxlLCBob29rV2l6YXJkIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBJY29uU2VsZWN0b3JNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ljb24tc2VsZWN0b3InO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBBZGRBcHBsaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYWRkLWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL2FwcGxpY2F0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXBsb2FkQXJjaGl2ZUNvbXBvbmVudCB9IGZyb20gJy4vdXBsb2FkLWFyY2hpdmUuY29tcG9uZW50JztcbmltcG9ydCB7IER1cGxpY2F0ZUFwcGxpY2F0aW9uTGlzdENvbXBvbmVudCB9IGZyb20gJy4vZHVwbGljYXRlLWFwcGxpY2F0aW9uL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1saXN0L2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEdXBsaWNhdGVBcHBsaWNhdGlvblByb3BlcnRpZXNDb21wb25lbnQgfSBmcm9tICcuL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi9kdXBsaWNhdGUtYXBwbGljYXRpb24tcHJvcGVydGllcy9kdXBsaWNhdGUtYXBwbGljYXRpb24tcHJvcGVydGllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHVwbGljYXRlQXBwbGljYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2R1cGxpY2F0ZS1hcHBsaWNhdGlvbi9kdXBsaWNhdGUtYXBwbGljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFBhY2thZ2VWZXJzaW9uU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9wYWNrYWdlLXZlcnNpb24tc2VsZWN0L3BhY2thZ2UtdmVyc2lvbi1zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IEVjb3N5c3RlbVdpemFyZHMgfSBmcm9tICcuL2Vjb3N5c3RlbS5tb2RlbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQYWNrYWdlTGFiZWxQaXBlIH0gZnJvbSAnLi90cmFuc2xhdGUtcGFja2FnZS1sYWJlbC5waXBlJztcbmltcG9ydCB7IExpc3RGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9saXN0LWZpbHRlcnMvbGlzdC1maWx0ZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFyY2hpdmVkRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9hcmNoaXZlZC1maWx0ZXIvYXJjaGl2ZWQtZmlsdGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb3JlTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBJY29uU2VsZWN0b3JNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQWRkQXBwbGljYXRpb25Db21wb25lbnQsXG4gICAgQXBwbGljYXRpb25Qcm9wZXJ0aWVzRm9ybUNvbXBvbmVudCxcbiAgICBVcGxvYWRBcmNoaXZlQ29tcG9uZW50LFxuICAgIEFwcGxpY2F0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBEdXBsaWNhdGVBcHBsaWNhdGlvbkxpc3RDb21wb25lbnQsXG4gICAgRHVwbGljYXRlQXBwbGljYXRpb25Qcm9wZXJ0aWVzQ29tcG9uZW50LFxuICAgIER1cGxpY2F0ZUFwcGxpY2F0aW9uQ29tcG9uZW50LFxuICAgIFBhY2thZ2VWZXJzaW9uU2VsZWN0Q29tcG9uZW50LFxuICAgIFRyYW5zbGF0ZVBhY2thZ2VMYWJlbFBpcGUsXG4gICAgTGlzdEZpbHRlcnNDb21wb25lbnQsXG4gICAgQXJjaGl2ZWRGaWx0ZXJDb21wb25lbnRcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEFkZEFwcGxpY2F0aW9uQ29tcG9uZW50LFxuICAgIEFwcGxpY2F0aW9uUHJvcGVydGllc0Zvcm1Db21wb25lbnQsXG4gICAgVXBsb2FkQXJjaGl2ZUNvbXBvbmVudCxcbiAgICBBcHBsaWNhdGlvbkNhcmRDb21wb25lbnQsXG4gICAgRHVwbGljYXRlQXBwbGljYXRpb25MaXN0Q29tcG9uZW50LFxuICAgIER1cGxpY2F0ZUFwcGxpY2F0aW9uUHJvcGVydGllc0NvbXBvbmVudCxcbiAgICBEdXBsaWNhdGVBcHBsaWNhdGlvbkNvbXBvbmVudCxcbiAgICBQYWNrYWdlVmVyc2lvblNlbGVjdENvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVQYWNrYWdlTGFiZWxQaXBlLFxuICAgIExpc3RGaWx0ZXJzQ29tcG9uZW50LFxuICAgIEFyY2hpdmVkRmlsdGVyQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIGhvb2tXaXphcmQoe1xuICAgICAgd2l6YXJkSWQ6IEVjb3N5c3RlbVdpemFyZHMuQVBQTElDQVRJT05fVVBMT0FELFxuICAgICAgY29tcG9uZW50OiBEdXBsaWNhdGVBcHBsaWNhdGlvbkNvbXBvbmVudCxcbiAgICAgIG5hbWU6ICdEdXBsaWNhdGUgZXhpc3RpbmcgYXBwbGljYXRpb24nLFxuICAgICAgYzh5SWNvbjogJ2NvcHknXG4gICAgfSksXG4gICAgaG9va1dpemFyZCh7XG4gICAgICB3aXphcmRJZDogJ2R1cGxpY2F0ZUFwcGxpY2F0aW9uJyxcbiAgICAgIGNvbXBvbmVudDogRHVwbGljYXRlQXBwbGljYXRpb25Db21wb25lbnQsXG4gICAgICBuYW1lOiAnRHVwbGljYXRlIGV4aXN0aW5nIGFwcGxpY2F0aW9uJyxcbiAgICAgIGM4eUljb246ICdjb3B5J1xuICAgIH0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2hhcmVkRWNvc3lzdGVtTW9kdWxlIHt9XG4iXX0=
@@ -8,9 +8,9 @@ export class TranslatePackageLabelPipe {
8
8
  this.translate = translate;
9
9
  }
10
10
  transform(rawPackageLabel) {
11
- const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel];
11
+ const isOneOfTheKnownOnes = !!PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()];
12
12
  if (isOneOfTheKnownOnes) {
13
- return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel].label);
13
+ return this.translate.instant(PACKAGE_TYPE_LABELS[rawPackageLabel?.toUpperCase()].label);
14
14
  }
15
15
  return rawPackageLabel;
16
16
  }
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
21
21
  type: Pipe,
22
22
  args: [{ name: 'translatePackageLabel' }]
23
23
  }], ctorParameters: () => [{ type: i1.TranslateService }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLXBhY2thZ2UtbGFiZWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvdHJhbnNsYXRlLXBhY2thZ2UtbGFiZWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRzVELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRW5ELFNBQVMsQ0FBQyxlQUFzRTtRQUM5RSxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNuRSxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs4R0FUVSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFBhY2thZ2VUeXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQQUNLQUdFX1RZUEVfTEFCRUxTIH0gZnJvbSAnLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcblxuQFBpcGUoeyBuYW1lOiAndHJhbnNsYXRlUGFja2FnZUxhYmVsJyB9KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBhY2thZ2VMYWJlbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKHJhd1BhY2thZ2VMYWJlbDogUGFja2FnZVR5cGUuT0ZGSUNJQUwgfCBQYWNrYWdlVHlwZS5DT01NVU5JVFkgfCBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzT25lT2ZUaGVLbm93bk9uZXMgPSAhIVBBQ0tBR0VfVFlQRV9MQUJFTFNbcmF3UGFja2FnZUxhYmVsXTtcbiAgICBpZiAoaXNPbmVPZlRoZUtub3duT25lcykge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoUEFDS0FHRV9UWVBFX0xBQkVMU1tyYXdQYWNrYWdlTGFiZWxdLmxhYmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhd1BhY2thZ2VMYWJlbDtcbiAgfVxufVxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLXBhY2thZ2UtbGFiZWwucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9zaGFyZWQvdHJhbnNsYXRlLXBhY2thZ2UtbGFiZWwucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRzVELE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7SUFBRyxDQUFDO0lBRW5ELFNBQVMsQ0FDUCxlQUE2RjtRQUU3RixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixDQUFDO1FBQ0QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQzs4R0FYVSx5QkFBeUI7NEdBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFBhY2thZ2VUeXBlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBQQUNLQUdFX1RZUEVfTEFCRUxTIH0gZnJvbSAnLi9lY29zeXN0ZW0uY29uc3RhbnRzJztcblxuQFBpcGUoeyBuYW1lOiAndHJhbnNsYXRlUGFja2FnZUxhYmVsJyB9KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZVBhY2thZ2VMYWJlbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgdHJhbnNmb3JtKFxuICAgIHJhd1BhY2thZ2VMYWJlbDogUGFja2FnZVR5cGUuT0ZGSUNJQUwgfCBQYWNrYWdlVHlwZS5DT01NVU5JVFkgfCBQYWNrYWdlVHlwZS5BUkNISVZFRCB8IHN0cmluZ1xuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGlzT25lT2ZUaGVLbm93bk9uZXMgPSAhIVBBQ0tBR0VfVFlQRV9MQUJFTFNbcmF3UGFja2FnZUxhYmVsPy50b1VwcGVyQ2FzZSgpXTtcbiAgICBpZiAoaXNPbmVPZlRoZUtub3duT25lcykge1xuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoUEFDS0FHRV9UWVBFX0xBQkVMU1tyYXdQYWNrYWdlTGFiZWw/LnRvVXBwZXJDYXNlKCldLmxhYmVsKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhd1BhY2thZ2VMYWJlbDtcbiAgfVxufVxuIl19
@@ -72,7 +72,7 @@ export class FilesRepositoryComponent {
72
72
  }
73
73
  async onDataSourceModifier(dataSourceModifier) {
74
74
  const { res, data, paging } = await this.filesRepositoryService.getData(dataSourceModifier.columns, dataSourceModifier.pagination, dataSourceModifier.searchText);
75
- const filteredSize = await this.filesRepositoryService.getCount(dataSourceModifier.columns, dataSourceModifier.pagination);
75
+ const filteredSize = paging.totalElements;
76
76
  const size = await this.filesRepositoryService.getTotal();
77
77
  const serverSideDataResult = { res, data, paging, filteredSize, size };
78
78
  this.isLoading = false;
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
158
158
  type: ViewChild,
159
159
  args: [DataGridComponent, { static: true }]
160
160
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWxlcy1yZXBvc2l0b3J5L2ZpbGVzLXJlcG9zaXRvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZmlsZXMtcmVwb3NpdG9yeS9maWxlcy1yZXBvc2l0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFFTCxZQUFZLEVBQ1osaUJBQWlCLEVBR2pCLGlCQUFpQixFQUdqQixZQUFZLEVBQ1osT0FBTyxFQUVQLFlBQVksRUFLWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyx3QkFBd0I7SUFzRG5DLFlBQ1Usc0JBQThDLEVBQzlDLHNCQUE4QyxFQUM5QyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixjQUE4QixFQUM5QixXQUF5QixFQUN6QixnQkFBa0M7UUFObEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlD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VSx3QkFBd0I7a0dBQXhCLHdCQUF3QixzR0FDeEIsaUJBQWlCLDhEQ2pDOUIsMDFHQXVHQTs7MkZEdkVhLHdCQUF3QjtrQkFKcEMsU0FBUzsrQkFDRSxzQkFBc0I7NlFBSWdCLFFBQVE7c0JBQXZELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3RCaW5hcnksIEludmVudG9yeUJpbmFyeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBY3Rpb25Db250cm9sLFxuICBBbGVydFNlcnZpY2UsXG4gIEJ1aWx0SW5BY3Rpb25UeXBlLFxuICBCdWxrQWN0aW9uQ29udHJvbCxcbiAgQ29sdW1uLFxuICBEYXRhR3JpZENvbXBvbmVudCxcbiAgRGF0YVNvdXJjZU1vZGlmaWVyLFxuICBEaXNwbGF5T3B0aW9ucyxcbiAgRmlsZXNTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBMb2FkTW9yZU1vZGUsXG4gIE1vZGFsU2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgUm93LFxuICBTZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrLFxuICBTZXJ2ZXJTaWRlRGF0YVJlc3VsdCxcbiAgU3RhdHVzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UsIE1vZGFsT3B0aW9ucyB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRmlsZXNSZXBvc2l0b3J5VXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlcy1yZXBvc2l0b3J5LXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZXNSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4vZmlsZXMtcmVwb3NpdG9yeS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWZpbGVzLXJlcG9zaXRvcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZXMtcmVwb3NpdG9yeS5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZXNSZXBvc2l0b3J5Q29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZChEYXRhR3JpZENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgZGF0YUdyaWQ6IERhdGFHcmlkQ29tcG9uZW50O1xuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHRpdGxlOiBzdHJpbmcgPSBnZXR0ZXh0KCdGaWxlcyByZXBvc2l0b3J5Jyk7XG4gIG1hbmFnZW1lbnRUaXRsZTogc3RyaW5nID0gZ2V0dGV4dCgnTWFuYWdlbWVudCcpO1xuICBsb2FkTW9yZUl0ZW1zTGFiZWw6IHN0cmluZyA9IGdldHRleHQoJ0xvYWQgbW9yZSBmaWxlcycpO1xuICBsb2FkaW5nSXRlbXNMYWJlbDogc3RyaW5nID0gZ2V0dGV4dCgnTG9hZGluZyBmaWxlc+KApicpO1xuXG4gIGlzTG9hZGluZyA9IHRydWU7XG5cbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zID0ge1xuICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICBzdHJpcGVkOiB0cnVlLFxuICAgIGZpbHRlcjogdHJ1ZSxcbiAgICBncmlkSGVhZGVyOiB0cnVlLFxuICAgIGhvdmVyOiB0cnVlXG4gIH07XG5cbiAgY29sdW1uczogQ29sdW1uW10gPSB0aGlzLmZpbGVzUmVwb3NpdG9yeVNlcnZpY2UuZ2V0Q29sdW1ucygpO1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5maWxlc1JlcG9zaXRvcnlTZXJ2aWNlLmdldFBhZ2luYXRpb24oKTtcbiAgaW5maW5pdGVTY3JvbGw6IExvYWRNb3JlTW9kZSA9ICdhdXRvJztcbiAgc2VydmVyU2lkZURhdGFDYWxsYmFjazogU2VydmVyU2lkZURhdGFDYWxsYmFjaztcbiAgcmV0dXJuZWREYXRhU2l6ZTogbnVtYmVyO1xuICBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdEZWxldGUnKSxcbiAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICB0eXBlOiBCdWlsdEluQWN0aW9uVHlwZS5EZWxldGUsXG4gICAgICBzaG93SWY6IHNlbGVjdGVkSXRlbSA9PlxuICAgICAgICAhdGhpcy5maWxlc1JlcG9zaXRvcnlTZXJ2aWNlLmhhc0FwcGxpY2F0aW9uU3RvcmFnZUZyYWdtZW50KHNlbGVjdGVkSXRlbSksXG4gICAgICBjYWxsYmFjazogc2VsZWN0ZWRJdGVtID0+IHRoaXMub25EZWxldGVJdGVtKHNlbGVjdGVkSXRlbSlcbiAgICB9LFxuICAgIHtcbiAgICAgIHRleHQ6IGdldHRleHQoJ0Rvd25sb2FkJyksXG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRXhwb3J0LFxuICAgICAgY2FsbGJhY2s6IHNlbGVjdGVkSXRlbSA9PiB0aGlzLm9uRG93bmxvYWRJdGVtKHNlbGVjdGVkSXRlbSBhcyBJTWFuYWdlZE9iamVjdEJpbmFyeSlcbiAgICB9XG4gIF07XG4gIGJ1bGtBY3Rpb25Db250cm9sczogQnVsa0FjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiBCdWlsdEluQWN0aW9uVHlwZS5EZWxldGUsXG4gICAgICBjYWxsYmFjazogc2VsZWN0ZWRJdGVtSWRzID0+IHRoaXMub25EZWxldGVJdGVtcyhzZWxlY3RlZEl0ZW1JZHMpXG4gICAgfVxuICBdO1xuXG4gIHJlZnJlc2g6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBub1Jlc3VsdHNNZXNzYWdlID0gZ2V0dGV4dCgnTm8gcmVzdWx0cyB0byBkaXNwbGF5LicpO1xuICBub0RhdGFNZXNzYWdlID0gZ2V0dGV4dCgnTm8gZmlsZXMgdG8gZGlzcGxheS4nKTtcbiAgbm9SZXN1bHRzU3VidGl0bGUgPSBnZXR0ZXh0KCdSZWZpbmUgeW91ciBzZWFyY2ggdGVybXMgb3IgY2hlY2sgeW91ciBzcGVsbGluZy4nKTtcbiAgbm9EYXRhU3VidGl0bGUgPSBnZXR0ZXh0KCdBZGQgYSBuZXcgZmlsZSBieSBjbGlja2luZyBiZWxvdy4nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZpbGVzUmVwb3NpdG9yeVNlcnZpY2U6IEZpbGVzUmVwb3NpdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlCaW5hcnlTZXJ2aWNlOiBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIC8vIHdlJ3JlIHNldHRpbmcgdXAgYHNlcnZlclNpZGVEYXRhQ2FsbGJhY2tgIHRvIGV4ZWN1dGUgYSBtZXRob2QgZnJvbSB0aGlzIGNvbXBvbmVudCB3aXRoIGJvdW5kIGB0aGlzYFxuICAgIHRoaXMuc2VydmVyU2lkZURhdGFDYWxsYmFjayA9IHRoaXMub25EYXRhU291cmNlTW9kaWZpZXIuYmluZCh0aGlzKTtcbiAgfVxuXG4gIGFzeW5jIG9uRGF0YVNvdXJjZU1vZGlmaWVyKFxuICAgIGRhdGFTb3VyY2VNb2RpZmllcjogRGF0YVNvdXJjZU1vZGlmaWVyXG4gICk6IFByb21pc2U8U2VydmVyU2lkZURhdGFSZXN1bHQ+IHtcbiAgICBjb25zdCB7IHJlcywgZGF0YSwgcGFnaW5nIH0gPSBhd2FpdCB0aGlzLmZpbGVzUmVwb3NpdG9yeVNlcnZpY2UuZ2V0RGF0YShcbiAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICBkYXRhU291cmNlTW9kaWZpZXIuc2VhcmNoVGV4dFxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFNpemU6IG51bWJlciA9IGF3YWl0IHRoaXMuZmlsZXNSZXBvc2l0b3J5U2VydmljZS5nZXRDb3VudChcbiAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb25cbiAgICApO1xuICAgIGNvbnN0IHNpemU6IG51bWJlciA9IGF3YWl0IHRoaXMuZmlsZXNSZXBvc2l0b3J5U2VydmljZS5nZXRUb3RhbCgpO1xuICAgIGNvbnN0IHNlcnZlclNpZGVEYXRhUmVzdWx0OiBTZXJ2ZXJTaWRlRGF0YVJlc3VsdCA9IHsgcmVzLCBkYXRhLCBwYWdpbmcsIGZpbHRlcmVkU2l6ZSwgc2l6ZSB9O1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5yZXR1cm5lZERhdGFTaXplID0gc2VydmVyU2lkZURhdGFSZXN1bHQuc2l6ZTtcblxuICAgIHJldHVybiBzZXJ2ZXJTaWRlRGF0YVJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIG9uRGVsZXRlSXRlbShzZWxlY3RlZEl0ZW06IFJvdykge1xuICAgIHJldHVybiB0aGlzLmRlbGV0ZUl0ZW1zV2l0aENvbmZpcm1hdGlvbihbc2VsZWN0ZWRJdGVtLmlkXSwge1xuICAgICAgdGl0bGU6IGdldHRleHQoJ0RlbGV0ZSBmaWxlJyksXG4gICAgICBib2R5OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgZ2V0dGV4dCgnWW91IGFyZSBhYm91dCB0byBkZWxldGUgZmlsZSBcInt7IG5hbWUgfX1cIi4gRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nKSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtXG4gICAgICApLFxuICAgICAgc3VjY2Vzc1RleHQ6IGdldHRleHQoJ0ZpbGUgZGVsZXRlZC4nKVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgb25EZWxldGVJdGVtcyhzZWxlY3RlZEl0ZW1zSWRzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGRhdGFHcmlkRGF0YVNvdXJjZURhdGEgPSBhd2FpdCB0aGlzLmRhdGFHcmlkLmRhdGFTb3VyY2UuZGF0YSQucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICBjb25zdCBkZWxldGFibGVJdGVtc0lkcyA9IHRoaXMuZmlsZXNSZXBvc2l0b3J5U2VydmljZS5nZXREZWxldGFibGVJdGVtc0lkcyhcbiAgICAgIHNlbGVjdGVkSXRlbXNJZHMsXG4gICAgICBkYXRhR3JpZERhdGFTb3VyY2VEYXRhXG4gICAgKTtcbiAgICBsZXQgYm9keTogc3RyaW5nO1xuICAgIGlmIChkZWxldGFibGVJdGVtc0lkcy5sZW5ndGggPCBzZWxlY3RlZEl0ZW1zSWRzLmxlbmd0aCkge1xuICAgICAgYm9keSA9IGdldHRleHQoYFxuICAgICAgICBZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZmlsZXMuXG4gICAgICAgIE5vdGU6IHRoZSBzZWxlY3RlZCBmaWxlcyBvZiB0eXBlIFwiYzh5X2FwcGxpY2F0aW9uc19zdG9yYWdlXypcIiB3b24ndCBiZSBkZWxldGVkIHRob3VnaFxuICAgICAgICAtIHN1Y2ggZmlsZXMgY2FuIGJlIGRlbGV0ZWQgb25seSBmcm9tIHRoZSBcIkFjdGl2aXR5IGxvZ1wiIG9mIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLlxuICAgICAgICBEbyB5b3Ugd2FudCB0byBwcm9jZWVkP1xuICAgICAgYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJvZHkgPSBnZXR0ZXh0KCdZb3UgYXJlIGFib3V0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZmlsZXMuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlSXRlbXNXaXRoQ29uZmlybWF0aW9uKGRlbGV0YWJsZUl0ZW1zSWRzLCB7XG4gICAgICB0aXRsZTogZ2V0dGV4dCgnRGVsZXRlIGZpbGVzJyksXG4gICAgICBib2R5LFxuICAgICAgc3VjY2Vzc1RleHQ6IGdldHRleHQoJ0ZpbGVzIGRlbGV0ZWQuJylcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uRG93bmxvYWRJdGVtKHNlbGVjdGVkSXRlbTogSU1hbmFnZWRPYmplY3RCaW5hcnkpIHtcbiAgICByZXR1cm4gdGhpcy5maWxlU2VydmljZS5kb3dubG9hZChzZWxlY3RlZEl0ZW0pO1xuICB9XG5cbiAgb3BlbkZpbGVVcGxvYWRDb21wb25lbnQoKSB7XG4gICAgY29uc3QgbW9kYWxPcHRpb25zOiBNb2RhbE9wdGlvbnM8RmlsZXNSZXBvc2l0b3J5VXBsb2FkQ29tcG9uZW50PiA9IHtcbiAgICAgIGNsYXNzOiAnbW9kYWwtc20nLFxuICAgICAgYXJpYURlc2NyaWJlZGJ5OiAnbW9kYWwtYm9keScsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWVcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5ic01vZGFsU2VydmljZS5zaG93KEZpbGVzUmVwb3NpdG9yeVVwbG9hZENvbXBvbmVudCwgbW9kYWxPcHRpb25zKTtcbiAgICBtb2RhbFJlZi5jb250ZW50Lm9uQ2xvc2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoeyB1cGxvYWRlZCB9KSA9PiB7XG4gICAgICBpZiAodXBsb2FkZWQpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICAgIH1cbiAgICAgIG1vZGFsUmVmLmhpZGUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVsZXRlSXRlbXNXaXRoQ29uZmlybWF0aW9uKFxuICAgIHNlbGVjdGVkSXRlbXNJZHM6IHN0cmluZ1tdLFxuICAgIG9wdGlvbnM6IHsgdGl0bGU6IHN0cmluZzsgYm9keTogc3RyaW5nOyBzdWNjZXNzVGV4dDogc3RyaW5nIH1cbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuY29uZmlybUl0ZW1zRGVsZXRpb24ob3B0aW9ucyk7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICBjb25zdCBwcm9taXNlcyA9IHNlbGVjdGVkSXRlbXNJZHMubWFwKHNlbGVjdGVkSXRlbUlkID0+XG4gICAgICAgIHRoaXMuaW52ZW50b3J5QmluYXJ5U2VydmljZS5kZWxldGUoc2VsZWN0ZWRJdGVtSWQpXG4gICAgICApO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhvcHRpb25zLnN1Y2Nlc3NUZXh0KTtcbiAgICAgIHRoaXMucmVmcmVzaC5uZXh0KCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIGlmIChleCkge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbmZpcm1JdGVtc0RlbGV0aW9uKHsgdGl0bGUsIGJvZHkgfTogeyB0aXRsZTogc3RyaW5nOyBib2R5OiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IHN0YXR1cyA9IFN0YXR1cy5EQU5HRVI7XG4gICAgY29uc3QgbGFiZWxzID0geyBvazogZ2V0dGV4dCgnRGVsZXRlJyksIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJykgfTtcbiAgICBhd2FpdCB0aGlzLm1vZGFsU2VydmljZS5jb25maXJtKHRpdGxlLCBib2R5LCBzdGF0dXMsIGxhYmVscyk7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+XG4gIHt7IHRpdGxlIHwgdHJhbnNsYXRlIH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIGljb249XCJjOHktbWFuYWdlbWVudFwiXG4gICAgW2xhYmVsXT1cIm1hbmFnZW1lbnRUaXRsZSB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIFtsYWJlbF09XCJ0aXRsZSB8IHRyYW5zbGF0ZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ1VwbG9hZCBmaWxlcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICpjOHlJZkFsbG93ZWQ9XCJbJ1JPTEVfSU5WRU5UT1JZX0FETUlOJywgJ1JPTEVfSU5WRU5UT1JZX0NSRUFURSddOyBhbGxvd0FueTogdHJ1ZVwiXG4gICAgKGNsaWNrKT1cIm9wZW5GaWxlVXBsb2FkQ29tcG9uZW50KClcIlxuICAgIGRhdGEtY3k9XCJjOHktZmlsZXMtcmVwb3NpdG9yeS0tb3Blbi1maWxlLXVwbG9hZC1jb21wb25lbnRcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgICB7eyAnVXBsb2FkIGZpbGVzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1oZWxwIHNyYz1cIi9kb2NzL3N0YW5kYXJkLXRlbmFudC9tYW5hZ2luZy1kYXRhLyNmaWxlLXJlcG9zaXRvcnlcIj48L2M4eS1oZWxwPlxuXG48ZGl2IGNsYXNzPVwiY29udGVudC1mdWxscGFnZSBib3JkZXItdG9wIGJvcmRlci1ib3R0b21cIj5cbiAgPGM4eS1kYXRhLWdyaWRcbiAgICBbdGl0bGVdPVwidGl0bGVcIlxuICAgIFtsb2FkTW9yZUl0ZW1zTGFiZWxdPVwibG9hZE1vcmVJdGVtc0xhYmVsXCJcbiAgICBbbG9hZGluZ0l0ZW1zTGFiZWxdPVwibG9hZGluZ0l0ZW1zTGFiZWxcIlxuICAgIFtkaXNwbGF5T3B0aW9uc109XCJkaXNwbGF5T3B0aW9uc1wiXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gICAgW2luZmluaXRlU2Nyb2xsXT1cImluZmluaXRlU2Nyb2xsXCJcbiAgICBbc2VydmVyU2lkZURhdGFDYWxsYmFja109XCJzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrXCJcbiAgICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICAgIFtzZWxlY3RhYmxlXT1cInNlbGVjdGFibGVcIlxuICAgIFtzaG93U2VhcmNoXT1cInRydWVcIlxuICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgIFtidWxrQWN0aW9uQ29udHJvbHNdPVwiYnVsa0FjdGlvbkNvbnRyb2xzXCJcbiAgPlxuICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgIFtpY29uXT1cInN0YXRzPy5zaXplID4gMCA/ICdzZWFyY2gnIDogJ2M4eS1hcmNoaXZlJ1wiXG4gICAgICBbdGl0bGVdPVwic3RhdHM/LnNpemUgPiAwID8gKG5vUmVzdWx0c01lc3NhZ2UgfCB0cmFuc2xhdGUpIDogKG5vRGF0YU1lc3NhZ2UgfCB0cmFuc2xhdGUpXCJcbiAgICAgIFtzdWJ0aXRsZV09XCJzdGF0cz8uc2l6ZSA+IDAgPyAobm9SZXN1bHRzU3VidGl0bGUgfCB0cmFuc2xhdGUpIDogKG5vRGF0YVN1YnRpdGxlIHwgdHJhbnNsYXRlKVwiXG4gICAgICAqZW1wdHlTdGF0ZUNvbnRleHQ9XCJsZXQgc3RhdHNcIlxuICAgICAgW2hvcml6b250YWxdPVwic3RhdHM/LnNpemUgPiAwXCJcbiAgICA+XG4gICAgICA8cCAqbmdJZj1cInN0YXRzPy5zaXplID09PSAwXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnVXBsb2FkIGZpbGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbGVVcGxvYWRDb21wb25lbnQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAge3sgJ1VwbG9hZCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvcD5cbiAgICA8L2M4eS11aS1lbXB0eS1zdGF0ZT5cblxuICAgIDxjOHktY29sdW1uIG5hbWU9XCJuYW1lXCI+XG4gICAgICA8bmctY29udGFpbmVyICpjOHlDZWxsUmVuZGVyZXJEZWY9XCJsZXQgY29udGV4dFwiPlxuICAgICAgICA8c3BhbiB0aXRsZT1cInt7IGNvbnRleHQudmFsdWUgfX1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGotYy1iZXR3ZWVuIGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7IGNvbnRleHQudmFsdWUgfX1cbiAgICAgICAgICAgIDxjOHktZmlsZS1wcmV2aWV3XG4gICAgICAgICAgICAgIGNsYXNzPVwibS1sLWF1dG9cIlxuICAgICAgICAgICAgICBbbW9dPVwiY29udGV4dC5pdGVtXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1lbXBoYXNpcyBidG4taWNvblwiXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIidQcmV2aWV3IGZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjdXN0b21CdXR0b25cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJzZWFyY2hcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9jOHktZmlsZS1wcmV2aWV3PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2M4eS1jb2x1bW4+XG5cbiAgICA8Yzh5LWNvbHVtbiBuYW1lPVwibGVuZ3RoXCI+XG4gICAgICA8bmctY29udGFpbmVyICpjOHlDZWxsUmVuZGVyZXJEZWY9XCJsZXQgY29udGV4dFwiPlxuICAgICAgICA8c3BhbiB0aXRsZT1cInt7IGNvbnRleHQudmFsdWUgfX0gQlwiPlxuICAgICAgICAgIHt7IGNvbnRleHQudmFsdWUgfCBieXRlcyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2M4eS1jb2x1bW4+XG5cbiAgICA8Yzh5LWNvbHVtbiBuYW1lPVwibGFzdFVwZGF0ZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKmM4eUNlbGxSZW5kZXJlckRlZj1cImxldCBjb250ZXh0XCI+XG4gICAgICAgIDxzcGFuIHRpdGxlPVwie3sgY29udGV4dC52YWx1ZSB8IGM4eURhdGUgfX1cIj5cbiAgICAgICAgICB7eyBjb250ZXh0LnZhbHVlIHwgYzh5RGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2M4eS1jb2x1bW4+XG4gIDwvYzh5LWRhdGEtZ3JpZD5cbjwvZGl2PlxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtcmVwb3NpdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWxlcy1yZXBvc2l0b3J5L2ZpbGVzLXJlcG9zaXRvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZmlsZXMtcmVwb3NpdG9yeS9maWxlcy1yZXBvc2l0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQXdCLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNFLE9BQU8sRUFFTCxZQUFZLEVBQ1osaUJBQWlCLEVBR2pCLGlCQUFpQixFQUdqQixZQUFZLEVBQ1osT0FBTyxFQUVQLFlBQVksRUFLWixNQUFNLEVBQ1AsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBTXBFLE1BQU0sT0FBTyx3QkFBd0I7SUFzRG5DLFlBQ1Usc0JBQThDLEVBQzlDLHNCQUE4QyxFQUM5QyxZQUEwQixFQUMxQixZQUEwQixFQUMxQixjQUE4QixFQUM5QixXQUF5QixFQUN6QixnQkFBa0M7UUFObEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlD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a0JBSnBDLFNBQVM7K0JBQ0Usc0JBQXNCOzZRQUlnQixRQUFRO3NCQUF2RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0QmluYXJ5LCBJbnZlbnRvcnlCaW5hcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29udHJvbCxcbiAgQWxlcnRTZXJ2aWNlLFxuICBCdWlsdEluQWN0aW9uVHlwZSxcbiAgQnVsa0FjdGlvbkNvbnRyb2wsXG4gIENvbHVtbixcbiAgRGF0YUdyaWRDb21wb25lbnQsXG4gIERhdGFTb3VyY2VNb2RpZmllcixcbiAgRGlzcGxheU9wdGlvbnMsXG4gIEZpbGVzU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTG9hZE1vcmVNb2RlLFxuICBNb2RhbFNlcnZpY2UsXG4gIFBhZ2luYXRpb24sXG4gIFJvdyxcbiAgU2VydmVyU2lkZURhdGFDYWxsYmFjayxcbiAgU2VydmVyU2lkZURhdGFSZXN1bHQsXG4gIFN0YXR1c1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlLCBNb2RhbE9wdGlvbnMgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZpbGVzUmVwb3NpdG9yeVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZXMtcmVwb3NpdG9yeS11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVzUmVwb3NpdG9yeVNlcnZpY2UgfSBmcm9tICcuL2ZpbGVzLXJlcG9zaXRvcnkuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1maWxlcy1yZXBvc2l0b3J5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGVzLXJlcG9zaXRvcnkuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVzUmVwb3NpdG9yeUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoRGF0YUdyaWRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGFHcmlkOiBEYXRhR3JpZENvbXBvbmVudDtcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICB0aXRsZTogc3RyaW5nID0gZ2V0dGV4dCgnRmlsZXMgcmVwb3NpdG9yeScpO1xuICBtYW5hZ2VtZW50VGl0bGU6IHN0cmluZyA9IGdldHRleHQoJ01hbmFnZW1lbnQnKTtcbiAgbG9hZE1vcmVJdGVtc0xhYmVsOiBzdHJpbmcgPSBnZXR0ZXh0KCdMb2FkIG1vcmUgZmlsZXMnKTtcbiAgbG9hZGluZ0l0ZW1zTGFiZWw6IHN0cmluZyA9IGdldHRleHQoJ0xvYWRpbmcgZmlsZXPigKYnKTtcblxuICBpc0xvYWRpbmcgPSB0cnVlO1xuXG4gIGRpc3BsYXlPcHRpb25zOiBEaXNwbGF5T3B0aW9ucyA9IHtcbiAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgc3RyaXBlZDogdHJ1ZSxcbiAgICBmaWx0ZXI6IHRydWUsXG4gICAgZ3JpZEhlYWRlcjogdHJ1ZSxcbiAgICBob3ZlcjogdHJ1ZVxuICB9O1xuXG4gIGNvbHVtbnM6IENvbHVtbltdID0gdGhpcy5maWxlc1JlcG9zaXRvcnlTZXJ2aWNlLmdldENvbHVtbnMoKTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHRoaXMuZmlsZXNSZXBvc2l0b3J5U2VydmljZS5nZXRQYWdpbmF0aW9uKCk7XG4gIGluZmluaXRlU2Nyb2xsOiBMb2FkTW9yZU1vZGUgPSAnYXV0byc7XG4gIHNlcnZlclNpZGVEYXRhQ2FsbGJhY2s6IFNlcnZlclNpZGVEYXRhQ2FsbGJhY2s7XG4gIHJldHVybmVkRGF0YVNpemU6IG51bWJlcjtcbiAgc2VsZWN0YWJsZSA9IHRydWU7XG4gIGFjdGlvbkNvbnRyb2xzOiBBY3Rpb25Db250cm9sW10gPSBbXG4gICAge1xuICAgICAgdGV4dDogZ2V0dGV4dCgnRGVsZXRlJyksXG4gICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRGVsZXRlLFxuICAgICAgc2hvd0lmOiBzZWxlY3RlZEl0ZW0gPT5cbiAgICAgICAgIXRoaXMuZmlsZXNSZXBvc2l0b3J5U2VydmljZS5oYXNBcHBsaWNhdGlvblN0b3JhZ2VGcmFnbWVudChzZWxlY3RlZEl0ZW0pLFxuICAgICAgY2FsbGJhY2s6IHNlbGVjdGVkSXRlbSA9PiB0aGlzLm9uRGVsZXRlSXRlbShzZWxlY3RlZEl0ZW0pXG4gICAgfSxcbiAgICB7XG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdEb3dubG9hZCcpLFxuICAgICAgaWNvbjogJ2Rvd25sb2FkJyxcbiAgICAgIHR5cGU6IEJ1aWx0SW5BY3Rpb25UeXBlLkV4cG9ydCxcbiAgICAgIGNhbGxiYWNrOiBzZWxlY3RlZEl0ZW0gPT4gdGhpcy5vbkRvd25sb2FkSXRlbShzZWxlY3RlZEl0ZW0gYXMgSU1hbmFnZWRPYmplY3RCaW5hcnkpXG4gICAgfVxuICBdO1xuICBidWxrQWN0aW9uQ29udHJvbHM6IEJ1bGtBY3Rpb25Db250cm9sW10gPSBbXG4gICAge1xuICAgICAgdHlwZTogQnVpbHRJbkFjdGlvblR5cGUuRGVsZXRlLFxuICAgICAgY2FsbGJhY2s6IHNlbGVjdGVkSXRlbUlkcyA9PiB0aGlzLm9uRGVsZXRlSXRlbXMoc2VsZWN0ZWRJdGVtSWRzKVxuICAgIH1cbiAgXTtcblxuICByZWZyZXNoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbm9SZXN1bHRzTWVzc2FnZSA9IGdldHRleHQoJ05vIHJlc3VsdHMgdG8gZGlzcGxheS4nKTtcbiAgbm9EYXRhTWVzc2FnZSA9IGdldHRleHQoJ05vIGZpbGVzIHRvIGRpc3BsYXkuJyk7XG4gIG5vUmVzdWx0c1N1YnRpdGxlID0gZ2V0dGV4dCgnUmVmaW5lIHlvdXIgc2VhcmNoIHRlcm1zIG9yIGNoZWNrIHlvdXIgc3BlbGxpbmcuJyk7XG4gIG5vRGF0YVN1YnRpdGxlID0gZ2V0dGV4dCgnQWRkIGEgbmV3IGZpbGUgYnkgY2xpY2tpbmcgYmVsb3cuJyk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaWxlc1JlcG9zaXRvcnlTZXJ2aWNlOiBGaWxlc1JlcG9zaXRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5QmluYXJ5U2VydmljZTogSW52ZW50b3J5QmluYXJ5U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBic01vZGFsU2VydmljZTogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmaWxlU2VydmljZTogRmlsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHtcbiAgICAvLyB3ZSdyZSBzZXR0aW5nIHVwIGBzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrYCB0byBleGVjdXRlIGEgbWV0aG9kIGZyb20gdGhpcyBjb21wb25lbnQgd2l0aCBib3VuZCBgdGhpc2BcbiAgICB0aGlzLnNlcnZlclNpZGVEYXRhQ2FsbGJhY2sgPSB0aGlzLm9uRGF0YVNvdXJjZU1vZGlmaWVyLmJpbmQodGhpcyk7XG4gIH1cblxuICBhc3luYyBvbkRhdGFTb3VyY2VNb2RpZmllcihcbiAgICBkYXRhU291cmNlTW9kaWZpZXI6IERhdGFTb3VyY2VNb2RpZmllclxuICApOiBQcm9taXNlPFNlcnZlclNpZGVEYXRhUmVzdWx0PiB7XG4gICAgY29uc3QgeyByZXMsIGRhdGEsIHBhZ2luZyB9ID0gYXdhaXQgdGhpcy5maWxlc1JlcG9zaXRvcnlTZXJ2aWNlLmdldERhdGEoXG4gICAgICBkYXRhU291cmNlTW9kaWZpZXIuY29sdW1ucyxcbiAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5wYWdpbmF0aW9uLFxuICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnNlYXJjaFRleHRcbiAgICApO1xuICAgIGNvbnN0IGZpbHRlcmVkU2l6ZTogbnVtYmVyID0gcGFnaW5nLnRvdGFsRWxlbWVudHM7XG4gICAgY29uc3Qgc2l6ZTogbnVtYmVyID0gYXdhaXQgdGhpcy5maWxlc1JlcG9zaXRvcnlTZXJ2aWNlLmdldFRvdGFsKCk7XG5cbiAgICBjb25zdCBzZXJ2ZXJTaWRlRGF0YVJlc3VsdDogU2VydmVyU2lkZURhdGFSZXN1bHQgPSB7IHJlcywgZGF0YSwgcGFnaW5nLCBmaWx0ZXJlZFNpemUsIHNpemUgfTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMucmV0dXJuZWREYXRhU2l6ZSA9IHNlcnZlclNpZGVEYXRhUmVzdWx0LnNpemU7XG5cbiAgICByZXR1cm4gc2VydmVyU2lkZURhdGFSZXN1bHQ7XG4gIH1cblxuICBhc3luYyBvbkRlbGV0ZUl0ZW0oc2VsZWN0ZWRJdGVtOiBSb3cpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVJdGVtc1dpdGhDb25maXJtYXRpb24oW3NlbGVjdGVkSXRlbS5pZF0sIHtcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdEZWxldGUgZmlsZScpLFxuICAgICAgYm9keTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgIGdldHRleHQoJ1lvdSBhcmUgYWJvdXQgdG8gZGVsZXRlIGZpbGUgXCJ7eyBuYW1lIH19XCIuIERvIHlvdSB3YW50IHRvIHByb2NlZWQ/JyksXG4gICAgICAgIHNlbGVjdGVkSXRlbVxuICAgICAgKSxcbiAgICAgIHN1Y2Nlc3NUZXh0OiBnZXR0ZXh0KCdGaWxlIGRlbGV0ZWQuJylcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uRGVsZXRlSXRlbXMoc2VsZWN0ZWRJdGVtc0lkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBkYXRhR3JpZERhdGFTb3VyY2VEYXRhID0gYXdhaXQgdGhpcy5kYXRhR3JpZC5kYXRhU291cmNlLmRhdGEkLnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XG4gICAgY29uc3QgZGVsZXRhYmxlSXRlbXNJZHMgPSB0aGlzLmZpbGVzUmVwb3NpdG9yeVNlcnZpY2UuZ2V0RGVsZXRhYmxlSXRlbXNJZHMoXG4gICAgICBzZWxlY3RlZEl0ZW1zSWRzLFxuICAgICAgZGF0YUdyaWREYXRhU291cmNlRGF0YVxuICAgICk7XG4gICAgbGV0IGJvZHk6IHN0cmluZztcbiAgICBpZiAoZGVsZXRhYmxlSXRlbXNJZHMubGVuZ3RoIDwgc2VsZWN0ZWRJdGVtc0lkcy5sZW5ndGgpIHtcbiAgICAgIGJvZHkgPSBnZXR0ZXh0KGBcbiAgICAgICAgWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGZpbGVzLlxuICAgICAgICBOb3RlOiB0aGUgc2VsZWN0ZWQgZmlsZXMgb2YgdHlwZSBcImM4eV9hcHBsaWNhdGlvbnNfc3RvcmFnZV8qXCIgd29uJ3QgYmUgZGVsZXRlZCB0aG91Z2hcbiAgICAgICAgLSBzdWNoIGZpbGVzIGNhbiBiZSBkZWxldGVkIG9ubHkgZnJvbSB0aGUgXCJBY3Rpdml0eSBsb2dcIiBvZiB0aGUgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cbiAgICAgICAgRG8geW91IHdhbnQgdG8gcHJvY2VlZD9cbiAgICAgIGApO1xuICAgIH0gZWxzZSB7XG4gICAgICBib2R5ID0gZ2V0dGV4dCgnWW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGZpbGVzLiBEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlbGV0ZUl0ZW1zV2l0aENvbmZpcm1hdGlvbihkZWxldGFibGVJdGVtc0lkcywge1xuICAgICAgdGl0bGU6IGdldHRleHQoJ0RlbGV0ZSBmaWxlcycpLFxuICAgICAgYm9keSxcbiAgICAgIHN1Y2Nlc3NUZXh0OiBnZXR0ZXh0KCdGaWxlcyBkZWxldGVkLicpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBvbkRvd25sb2FkSXRlbShzZWxlY3RlZEl0ZW06IElNYW5hZ2VkT2JqZWN0QmluYXJ5KSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZVNlcnZpY2UuZG93bmxvYWQoc2VsZWN0ZWRJdGVtKTtcbiAgfVxuXG4gIG9wZW5GaWxlVXBsb2FkQ29tcG9uZW50KCkge1xuICAgIGNvbnN0IG1vZGFsT3B0aW9uczogTW9kYWxPcHRpb25zPEZpbGVzUmVwb3NpdG9yeVVwbG9hZENvbXBvbmVudD4gPSB7XG4gICAgICBjbGFzczogJ21vZGFsLXNtJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMuYnNNb2RhbFNlcnZpY2Uuc2hvdyhGaWxlc1JlcG9zaXRvcnlVcGxvYWRDb21wb25lbnQsIG1vZGFsT3B0aW9ucyk7XG4gICAgbW9kYWxSZWYuY29udGVudC5vbkNsb3NlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHsgdXBsb2FkZWQgfSkgPT4ge1xuICAgICAgaWYgKHVwbG9hZGVkKSB7XG4gICAgICAgIHRoaXMucmVmcmVzaC5lbWl0KCk7XG4gICAgICB9XG4gICAgICBtb2RhbFJlZi5oaWRlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlbGV0ZUl0ZW1zV2l0aENvbmZpcm1hdGlvbihcbiAgICBzZWxlY3RlZEl0ZW1zSWRzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiB7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZzsgc3VjY2Vzc1RleHQ6IHN0cmluZyB9XG4gICkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpcm1JdGVtc0RlbGV0aW9uKG9wdGlvbnMpO1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSBzZWxlY3RlZEl0ZW1zSWRzLm1hcChzZWxlY3RlZEl0ZW1JZCA9PlxuICAgICAgICB0aGlzLmludmVudG9yeUJpbmFyeVNlcnZpY2UuZGVsZXRlKHNlbGVjdGVkSXRlbUlkKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3Mob3B0aW9ucy5zdWNjZXNzVGV4dCk7XG4gICAgICB0aGlzLnJlZnJlc2gubmV4dCgpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICBpZiAoZXgpIHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb25maXJtSXRlbXNEZWxldGlvbih7IHRpdGxlLCBib2R5IH06IHsgdGl0bGU6IHN0cmluZzsgYm9keTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCBzdGF0dXMgPSBTdGF0dXMuREFOR0VSO1xuICAgIGNvbnN0IGxhYmVscyA9IHsgb2s6IGdldHRleHQoJ0RlbGV0ZScpLCBjYW5jZWw6IGdldHRleHQoJ0NhbmNlbCcpIH07XG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2UuY29uZmlybSh0aXRsZSwgYm9keSwgc3RhdHVzLCBsYWJlbHMpO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyB0aXRsZSB8IHRyYW5zbGF0ZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBpY29uPVwiYzh5LW1hbmFnZW1lbnRcIlxuICAgIFtsYWJlbF09XCJtYW5hZ2VtZW50VGl0bGUgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBbbGFiZWxdPVwidGl0bGUgfCB0cmFuc2xhdGVcIj48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdVcGxvYWQgZmlsZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAqYzh5SWZBbGxvd2VkPVwiWydST0xFX0lOVkVOVE9SWV9BRE1JTicsICdST0xFX0lOVkVOVE9SWV9DUkVBVEUnXTsgYWxsb3dBbnk6IHRydWVcIlxuICAgIChjbGljayk9XCJvcGVuRmlsZVVwbG9hZENvbXBvbmVudCgpXCJcbiAgICBkYXRhLWN5PVwiYzh5LWZpbGVzLXJlcG9zaXRvcnktLW9wZW4tZmlsZS11cGxvYWQtY29tcG9uZW50XCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJ1cGxvYWRcIj48L2k+XG4gICAge3sgJ1VwbG9hZCBmaWxlcycgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvZG9jcy9zdGFuZGFyZC10ZW5hbnQvbWFuYWdpbmctZGF0YS8jZmlsZS1yZXBvc2l0b3J5XCI+PC9jOHktaGVscD5cblxuPGRpdiBjbGFzcz1cImNvbnRlbnQtZnVsbHBhZ2UgYm9yZGVyLXRvcCBib3JkZXItYm90dG9tXCI+XG4gIDxjOHktZGF0YS1ncmlkXG4gICAgW3RpdGxlXT1cInRpdGxlXCJcbiAgICBbbG9hZE1vcmVJdGVtc0xhYmVsXT1cImxvYWRNb3JlSXRlbXNMYWJlbFwiXG4gICAgW2xvYWRpbmdJdGVtc0xhYmVsXT1cImxvYWRpbmdJdGVtc0xhYmVsXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgIFtpbmZpbml0ZVNjcm9sbF09XCJpbmZpbml0ZVNjcm9sbFwiXG4gICAgW3NlcnZlclNpZGVEYXRhQ2FsbGJhY2tdPVwic2VydmVyU2lkZURhdGFDYWxsYmFja1wiXG4gICAgW2FjdGlvbkNvbnRyb2xzXT1cImFjdGlvbkNvbnRyb2xzXCJcbiAgICBbc2VsZWN0YWJsZV09XCJzZWxlY3RhYmxlXCJcbiAgICBbc2hvd1NlYXJjaF09XCJ0cnVlXCJcbiAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICBbYnVsa0FjdGlvbkNvbnRyb2xzXT1cImJ1bGtBY3Rpb25Db250cm9sc1wiXG4gID5cbiAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICBbaWNvbl09XCJzdGF0cz8uc2l6ZSA+IDAgPyAnc2VhcmNoJyA6ICdjOHktYXJjaGl2ZSdcIlxuICAgICAgW3RpdGxlXT1cInN0YXRzPy5zaXplID4gMCA/IChub1Jlc3VsdHNNZXNzYWdlIHwgdHJhbnNsYXRlKSA6IChub0RhdGFNZXNzYWdlIHwgdHJhbnNsYXRlKVwiXG4gICAgICBbc3VidGl0bGVdPVwic3RhdHM/LnNpemUgPiAwID8gKG5vUmVzdWx0c1N1YnRpdGxlIHwgdHJhbnNsYXRlKSA6IChub0RhdGFTdWJ0aXRsZSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgKmVtcHR5U3RhdGVDb250ZXh0PVwibGV0IHN0YXRzXCJcbiAgICAgIFtob3Jpem9udGFsXT1cInN0YXRzPy5zaXplID4gMFwiXG4gICAgPlxuICAgICAgPHAgKm5nSWY9XCJzdGF0cz8uc2l6ZSA9PT0gMFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1VwbG9hZCBmaWxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWxlVXBsb2FkQ29tcG9uZW50KClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgIHt7ICdVcGxvYWQgZmlsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L3A+XG4gICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICA8Yzh5LWNvbHVtbiBuYW1lPVwibmFtZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqYzh5Q2VsbFJlbmRlcmVyRGVmPVwibGV0IGNvbnRleHRcIj5cbiAgICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBjb250ZXh0LnZhbHVlIH19XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqLWMtYmV0d2VlbiBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICB7eyBjb250ZXh0LnZhbHVlIH19XG4gICAgICAgICAgICA8Yzh5LWZpbGUtcHJldmlld1xuICAgICAgICAgICAgICBjbGFzcz1cIm0tbC1hdXRvXCJcbiAgICAgICAgICAgICAgW21vXT1cImNvbnRleHQuaXRlbVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZW1waGFzaXMgYnRuLWljb25cIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInUHJldmlldyBmaWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY3VzdG9tQnV0dG9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwic2VhcmNoXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvYzh5LWZpbGUtcHJldmlldz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jOHktY29sdW1uPlxuXG4gICAgPGM4eS1jb2x1bW4gbmFtZT1cImxlbmd0aFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqYzh5Q2VsbFJlbmRlcmVyRGVmPVwibGV0IGNvbnRleHRcIj5cbiAgICAgICAgPHNwYW4gdGl0bGU9XCJ7eyBjb250ZXh0LnZhbHVlIH19IEJcIj5cbiAgICAgICAgICB7eyBjb250ZXh0LnZhbHVlIHwgYnl0ZXMgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jOHktY29sdW1uPlxuXG4gICAgPGM4eS1jb2x1bW4gbmFtZT1cImxhc3RVcGRhdGVkXCI+XG4gICAgICA8bmctY29udGFpbmVyICpjOHlDZWxsUmVuZGVyZXJEZWY9XCJsZXQgY29udGV4dFwiPlxuICAgICAgICA8c3BhbiB0aXRsZT1cInt7IGNvbnRleHQudmFsdWUgfCBjOHlEYXRlIH19XCI+XG4gICAgICAgICAge3sgY29udGV4dC52YWx1ZSB8IGM4eURhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9jOHktY29sdW1uPlxuICA8L2M4eS1kYXRhLWdyaWQ+XG48L2Rpdj5cbiJdfQ==