@mediusinc/mng-commons 6.2.1 → 7.0.0-rc.1

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 (333) hide show
  1. package/core/index.d.ts +1743 -84
  2. package/fesm2022/mediusinc-mng-commons-core.mjs +104 -91
  3. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  4. package/fesm2022/mediusinc-mng-commons-filter.mjs +20 -0
  5. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  6. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  7. package/fesm2022/mediusinc-mng-commons-form.mjs +186 -103
  8. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  9. package/fesm2022/mediusinc-mng-commons-model-class.mjs.map +1 -1
  10. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  11. package/fesm2022/mediusinc-mng-commons-table-api-class.mjs.map +1 -1
  12. package/fesm2022/mediusinc-mng-commons-table-api.mjs +0 -2
  13. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  14. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs +30 -0
  15. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-0Dtv48mq.mjs.map +1 -0
  16. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs +2417 -0
  17. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BsAwyXiN.mjs.map +1 -0
  18. package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
  19. package/fesm2022/mediusinc-mng-commons-tableview-api-class.mjs.map +1 -1
  20. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +19 -6
  21. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  22. package/fesm2022/mediusinc-mng-commons-tableview.mjs +326 -314
  23. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  24. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  25. package/filter/index.d.ts +411 -5
  26. package/form/api/index.d.ts +134 -7
  27. package/form/index.d.ts +343 -6
  28. package/i18n/en.json +5 -2
  29. package/i18n/sl.json +5 -2
  30. package/index.d.ts +11 -1
  31. package/model/class/index.d.ts +25 -4
  32. package/model/index.d.ts +71 -5
  33. package/package.json +10 -10
  34. package/table/api/class/index.d.ts +77 -5
  35. package/table/api/index.d.ts +1161 -14
  36. package/table/index.d.ts +580 -17
  37. package/tableview/api/class/index.d.ts +141 -10
  38. package/tableview/api/index.d.ts +2540 -63
  39. package/tableview/index.d.ts +1265 -54
  40. package/version-info.json +6 -6
  41. package/core/action/action-data.model.d.ts +0 -3
  42. package/core/action/action-parameters.model.d.ts +0 -44
  43. package/core/components/notification/notification-wrapper.component.d.ts +0 -14
  44. package/core/data-list/data-list-params-helpers.d.ts +0 -93
  45. package/core/data-list/data-list.model.d.ts +0 -28
  46. package/core/data-list/filter-match.model.d.ts +0 -36
  47. package/core/data-list/filter-metadata.model.d.ts +0 -20
  48. package/core/data-providers/base.data-provider.d.ts +0 -17
  49. package/core/data-providers/lookup.data-provider.d.ts +0 -10
  50. package/core/descriptors/action.descriptor.d.ts +0 -12
  51. package/core/descriptors/column.descriptor.d.ts +0 -3
  52. package/core/descriptors/editor.descriptor.d.ts +0 -11
  53. package/core/descriptors/enum.descriptor.d.ts +0 -6
  54. package/core/descriptors/filter.descriptor.d.ts +0 -3
  55. package/core/descriptors/lookup.descriptor.d.ts +0 -12
  56. package/core/descriptors/model.descriptor.d.ts +0 -5
  57. package/core/descriptors/table.descriptor.d.ts +0 -11
  58. package/core/descriptors/tableview.descriptor.d.ts +0 -11
  59. package/core/directives/component.directive.d.ts +0 -18
  60. package/core/directives/rerender.directive.d.ts +0 -9
  61. package/core/directives/template.directive.d.ts +0 -8
  62. package/core/enum/enum-helpers.d.ts +0 -54
  63. package/core/enum/enum.model.d.ts +0 -8
  64. package/core/error/error-handler.d.ts +0 -6
  65. package/core/error/error-helpers.d.ts +0 -136
  66. package/core/error/error.model.d.ts +0 -53
  67. package/core/helpers/coercion.d.ts +0 -10
  68. package/core/helpers/date.d.ts +0 -14
  69. package/core/helpers/notification.d.ts +0 -18
  70. package/core/helpers/number.d.ts +0 -5
  71. package/core/helpers/object.d.ts +0 -27
  72. package/core/helpers/route.d.ts +0 -34
  73. package/core/helpers/string.d.ts +0 -7
  74. package/core/helpers/templates.d.ts +0 -3
  75. package/core/helpers/type-helpers.d.ts +0 -37
  76. package/core/i18n/i18n-common.d.ts +0 -6
  77. package/core/i18n/i18n-error.d.ts +0 -3
  78. package/core/i18n/i18n-type.d.ts +0 -11
  79. package/core/log/log-publisher-console.service.d.ts +0 -4
  80. package/core/log/log.model.d.ts +0 -40
  81. package/core/log/logger.service.d.ts +0 -33
  82. package/core/models/class-attribute.model.d.ts +0 -6
  83. package/core/models/class-service.model.d.ts +0 -7
  84. package/core/models/getter.model.d.ts +0 -2
  85. package/core/models/i18n.model.d.ts +0 -1
  86. package/core/models/menu.model.d.ts +0 -42
  87. package/core/models/user.model.d.ts +0 -8
  88. package/core/models/version.model.d.ts +0 -31
  89. package/core/pipes/boolean.pipe.d.ts +0 -7
  90. package/core/pipes/class-map.pipe.d.ts +0 -7
  91. package/core/pipes/enum.pipe.d.ts +0 -8
  92. package/core/pipes/enumerate-async.pipe.d.ts +0 -9
  93. package/core/pipes/enumerate.pipe.d.ts +0 -16
  94. package/core/pipes/getter.pipe.d.ts +0 -8
  95. package/core/pipes/i18n-property.pipe.d.ts +0 -8
  96. package/core/pipes/json-path.pipe.d.ts +0 -13
  97. package/core/pipes/parametrize.pipe.d.ts +0 -16
  98. package/core/pipes/template.pipe.d.ts +0 -8
  99. package/core/provide.d.ts +0 -13
  100. package/core/reactivity/effect.d.ts +0 -16
  101. package/core/reflect/type-enum-decorator.d.ts +0 -2
  102. package/core/reflect/type-enum-metadata.d.ts +0 -32
  103. package/core/registry/registry.model.d.ts +0 -8
  104. package/core/registry/type-registry.d.ts +0 -27
  105. package/core/router/route-builder.d.ts +0 -187
  106. package/core/router/router.model.d.ts +0 -13
  107. package/core/router/routes-builder.d.ts +0 -33
  108. package/core/rxjs/map-data-list-result-operator.d.ts +0 -9
  109. package/core/security/permission-helpers.d.ts +0 -3
  110. package/core/security/permission.guard.d.ts +0 -2
  111. package/core/security/permission.service.d.ts +0 -25
  112. package/core/security/permissions.model.d.ts +0 -82
  113. package/core/services/commons-configuration.service.d.ts +0 -81
  114. package/core/services/commons-init.service.d.ts +0 -30
  115. package/core/services/commons-router.service.d.ts +0 -37
  116. package/core/services/commons-storage.service.d.ts +0 -12
  117. package/core/services/commons.service.d.ts +0 -47
  118. package/core/services/providers/commons-init.provider.d.ts +0 -4
  119. package/core/services/tokens/browser-storage.token.d.ts +0 -2
  120. package/core/services/tokens/commons-init.token.d.ts +0 -3
  121. package/core/services/tokens/log-publisher.token.d.ts +0 -3
  122. package/core/services/tokens/module-config.token.d.ts +0 -28
  123. package/core/styles/style-constants.d.ts +0 -11
  124. package/core/styles/style.model.d.ts +0 -18
  125. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-CCyGSxaD.mjs +0 -30
  126. package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-CCyGSxaD.mjs.map +0 -1
  127. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-8TdW6NCC.mjs +0 -2145
  128. package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-8TdW6NCC.mjs.map +0 -1
  129. package/filter/descriptors/filter-generic.descriptor.d.ts +0 -14
  130. package/filter/descriptors/filter-lookup.descriptor.d.ts +0 -97
  131. package/filter/descriptors/filter.descriptor.d.ts +0 -264
  132. package/filter/models/filter-generic-property.model.d.ts +0 -7
  133. package/filter/models/filter.model.d.ts +0 -16
  134. package/form/api/data-providers/lookup-data-provider.factory.d.ts +0 -19
  135. package/form/api/data-providers/lookup.data-provider.d.ts +0 -7
  136. package/form/api/descriptors/action-button.descriptor.d.ts +0 -23
  137. package/form/api/descriptors/button-style.builder.d.ts +0 -54
  138. package/form/api/models/button.model.d.ts +0 -19
  139. package/form/api/models/empty-value.model.d.ts +0 -7
  140. package/form/api/models/trim.model.d.ts +0 -1
  141. package/form/components/autocomplete/autocomplete.component.d.ts +0 -99
  142. package/form/components/date-range/date-range.component.d.ts +0 -37
  143. package/form/components/dropdown/dropdown.component.d.ts +0 -89
  144. package/form/components/number-range/number-range.component.d.ts +0 -35
  145. package/form/directives/input-empty-value.directive.d.ts +0 -40
  146. package/form/directives/input-trim.directive.d.ts +0 -9
  147. package/model/class/data-providers/base-from-class-data-provider.factory.d.ts +0 -3
  148. package/model/class/descriptors/model-class.descriptor.d.ts +0 -12
  149. package/model/class/descriptors/type-class.descriptor.d.ts +0 -3
  150. package/model/class/helpers/model.d.ts +0 -4
  151. package/model/data-providers/base-from-type-data-provider.factory.d.ts +0 -15
  152. package/model/descriptors/enum.descriptor.d.ts +0 -13
  153. package/model/descriptors/model.descriptor.d.ts +0 -25
  154. package/model/descriptors/type.descriptor.d.ts +0 -3
  155. package/model/helpers/i18n.d.ts +0 -13
  156. package/provide.d.ts +0 -7
  157. package/table/api/class/class-table-attribute-converter.d.ts +0 -15
  158. package/table/api/class/class-table-attribute.model.d.ts +0 -8
  159. package/table/api/class/class-table-data-provider.factory.d.ts +0 -4
  160. package/table/api/class/class-table-descriptor-helpers.d.ts +0 -42
  161. package/table/api/class/class-table-descriptor.factory.d.ts +0 -11
  162. package/table/api/data-providers/table-data-provider.factory.d.ts +0 -19
  163. package/table/api/data-providers/table.data-provider.d.ts +0 -27
  164. package/table/api/descriptors/column.descriptor.d.ts +0 -269
  165. package/table/api/descriptors/sort.descriptor.d.ts +0 -39
  166. package/table/api/descriptors/table-descriptor.factory.d.ts +0 -12
  167. package/table/api/descriptors/table.descriptor.d.ts +0 -672
  168. package/table/api/helpers/column-converter.d.ts +0 -7
  169. package/table/api/helpers/table-data-provider-descriptor-convert.d.ts +0 -20
  170. package/table/api/models/column-value.model.d.ts +0 -7
  171. package/table/api/models/column.model.d.ts +0 -18
  172. package/table/api/models/row-expandable-component.model.d.ts +0 -4
  173. package/table/api/models/table-columns.model.d.ts +0 -42
  174. package/table/api/models/table-event.model.d.ts +0 -18
  175. package/table/api/models/table.model.d.ts +0 -22
  176. package/table/components/column-filter/column-filter.component.d.ts +0 -81
  177. package/table/components/column-toggle/column-toggle.component.d.ts +0 -12
  178. package/table/components/column-value/column-value.component.d.ts +0 -33
  179. package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +0 -20
  180. package/table/components/filter/filter-form/filter-form.component.d.ts +0 -56
  181. package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +0 -54
  182. package/table/components/table/table.component.d.ts +0 -83
  183. package/table/helpers/filters.d.ts +0 -37
  184. package/table/helpers/notification.d.ts +0 -13
  185. package/table/helpers/table-layout-prefs.d.ts +0 -7
  186. package/table/helpers/table.d.ts +0 -6
  187. package/table/models/column-preferences.model.d.ts +0 -12
  188. package/table/models/filter.model.d.ts +0 -36
  189. package/table/pipes/filter-value.pipe.d.ts +0 -19
  190. package/table/pipes/locale-default-row-class.pipe.d.ts +0 -10
  191. package/table/pipes/table-column-filter-class.pipe.d.ts +0 -8
  192. package/table/provide.d.ts +0 -15
  193. package/table/services/table-data.service.d.ts +0 -37
  194. package/table/services/table-feature-config.token.d.ts +0 -7
  195. package/table/services/table-metadata.service.d.ts +0 -31
  196. package/table/services/table-preferences.service.d.ts +0 -25
  197. package/tableview/action/components/action/action.component.d.ts +0 -63
  198. package/tableview/action/components/editor/action-editor.component.d.ts +0 -32
  199. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +0 -79
  200. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +0 -19
  201. package/tableview/action/components/route/action-route.component.d.ts +0 -26
  202. package/tableview/action/components/table/action-table.component.d.ts +0 -50
  203. package/tableview/action/guards/unsaved-changes.guard.d.ts +0 -3
  204. package/tableview/action/helpers/action-execution.d.ts +0 -7
  205. package/tableview/action/helpers/i18n.d.ts +0 -47
  206. package/tableview/action/helpers/inject.d.ts +0 -39
  207. package/tableview/action/helpers/notification.d.ts +0 -40
  208. package/tableview/action/helpers/styles.d.ts +0 -5
  209. package/tableview/action/models/action-editor-dialog-data.model.d.ts +0 -11
  210. package/tableview/action/models/can-component-deactivate.model.d.ts +0 -4
  211. package/tableview/action/models/execution/action-context.model.d.ts +0 -43
  212. package/tableview/action/models/execution/action-instance.model.d.ts +0 -56
  213. package/tableview/action/services/action-error-mapper.service.d.ts +0 -18
  214. package/tableview/action/services/action-executor.service.d.ts +0 -174
  215. package/tableview/action/services/component-action-executor.service.d.ts +0 -9
  216. package/tableview/action/services/data-provider-executor.service.d.ts +0 -23
  217. package/tableview/action/services/navigation.service.d.ts +0 -15
  218. package/tableview/action/services/providers/provide-action-executor.d.ts +0 -2
  219. package/tableview/action/services/providers/provide-view-container.d.ts +0 -2
  220. package/tableview/action/services/root-action-executor.service.d.ts +0 -9
  221. package/tableview/action/services/tokens/action-editor.token.d.ts +0 -2
  222. package/tableview/action/services/view-container.service.d.ts +0 -25
  223. package/tableview/api/action/descriptors/action-descriptor.factory.d.ts +0 -25
  224. package/tableview/api/action/descriptors/action-editor-descriptor.factory.d.ts +0 -24
  225. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +0 -105
  226. package/tableview/api/action/descriptors/action-link-descriptor.factory.d.ts +0 -23
  227. package/tableview/api/action/descriptors/action-link.descriptor.d.ts +0 -27
  228. package/tableview/api/action/descriptors/action.descriptor.d.ts +0 -118
  229. package/tableview/api/action/descriptors/editor-action-descriptor.factory.d.ts +0 -21
  230. package/tableview/api/action/descriptors/editor-action-editor-descriptor.factory.d.ts +0 -21
  231. package/tableview/api/action/descriptors/table-action-descriptor.factory.d.ts +0 -36
  232. package/tableview/api/action/descriptors/table-action-editor-descriptor.factory.d.ts +0 -40
  233. package/tableview/api/action/helpers/data-provider-executors.d.ts +0 -23
  234. package/tableview/api/action/models/action-component.model.d.ts +0 -12
  235. package/tableview/api/action/models/action-confirmation.model.d.ts +0 -16
  236. package/tableview/api/action/models/action-descriptor.types.d.ts +0 -10
  237. package/tableview/api/action/models/action-editor.model.d.ts +0 -4
  238. package/tableview/api/action/models/action-error.model.d.ts +0 -14
  239. package/tableview/api/action/models/action.type.d.ts +0 -21
  240. package/tableview/api/action/models/execution/action-context-validation.model.d.ts +0 -11
  241. package/tableview/api/action/models/execution/action-context.model.d.ts +0 -25
  242. package/tableview/api/action/models/execution/action-execution-error.model.d.ts +0 -4
  243. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +0 -30
  244. package/tableview/api/action/models/execution/action-instance.model.d.ts +0 -32
  245. package/tableview/api/action/models/execution/view-container.model.d.ts +0 -22
  246. package/tableview/api/action/models/tableview-action-default-categories.model.d.ts +0 -10
  247. package/tableview/api/action/services/data-provider-executor.service.d.ts +0 -39
  248. package/tableview/api/action/services/tokens/data-language-dropdown.token.d.ts +0 -2
  249. package/tableview/api/class/editor/class-editor-attribute-converter.d.ts +0 -21
  250. package/tableview/api/class/editor/class-editor-attribute.model.d.ts +0 -7
  251. package/tableview/api/class/editor/class-editor-data-provider.factory.d.ts +0 -4
  252. package/tableview/api/class/editor/class-editor-descriptor-helpers.d.ts +0 -40
  253. package/tableview/api/class/editor/class-editor-descriptor.factory.d.ts +0 -11
  254. package/tableview/api/class/tableview/class-tableview-attribute-converter.d.ts +0 -8
  255. package/tableview/api/class/tableview/class-tableview-attribute.model.d.ts +0 -3
  256. package/tableview/api/class/tableview/class-tableview-data-provider.factory.d.ts +0 -4
  257. package/tableview/api/class/tableview/class-tableview-descriptor-helpers.d.ts +0 -41
  258. package/tableview/api/class/tableview/class-tableview-descriptor.factory.d.ts +0 -12
  259. package/tableview/api/editor/data-providers/editor-data-provider.factory.d.ts +0 -19
  260. package/tableview/api/editor/data-providers/editor.data-provider.d.ts +0 -119
  261. package/tableview/api/editor/descriptors/editor-descriptor.factory.d.ts +0 -11
  262. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +0 -254
  263. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +0 -21
  264. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +0 -147
  265. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +0 -58
  266. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +0 -80
  267. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +0 -56
  268. package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +0 -16
  269. package/tableview/api/editor/descriptors/field.descriptor.d.ts +0 -239
  270. package/tableview/api/editor/descriptors/wrappers/editor-descriptor-nested-object-wrapper.d.ts +0 -25
  271. package/tableview/api/editor/models/editor-fields.model.d.ts +0 -42
  272. package/tableview/api/editor/models/editor.model.d.ts +0 -7
  273. package/tableview/api/editor/models/field-action-context.model.d.ts +0 -26
  274. package/tableview/api/editor/models/field-image-preview.model.d.ts +0 -4
  275. package/tableview/api/editor/models/field-validation.model.d.ts +0 -26
  276. package/tableview/api/editor/models/field.model.d.ts +0 -56
  277. package/tableview/api/editor/models/form-editor.event.d.ts +0 -74
  278. package/tableview/api/editor/models/form-editor.interface.d.ts +0 -53
  279. package/tableview/api/editor/models/formly-custom-field.model.d.ts +0 -30
  280. package/tableview/api/editor/models/formly-field.model.d.ts +0 -42
  281. package/tableview/api/editor/models/formly-options.model.d.ts +0 -15
  282. package/tableview/api/editor/models/radio.model.d.ts +0 -6
  283. package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +0 -24
  284. package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +0 -33
  285. package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +0 -23
  286. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +0 -153
  287. package/tableview/api/tableview/helpers/files-export.d.ts +0 -4
  288. package/tableview/api/tableview/helpers/tableview-create.d.ts +0 -29
  289. package/tableview/api/tableview/helpers/tableview-data-provider-descriptor-convert.d.ts +0 -20
  290. package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +0 -93
  291. package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +0 -192
  292. package/tableview/api/tableview/models/tableview-descriptor-fields-manage-helper.type.d.ts +0 -9
  293. package/tableview/api/tableview/models/tableview-descriptor-helper.type.d.ts +0 -2
  294. package/tableview/api/tableview/models/tableview-input.model.d.ts +0 -8
  295. package/tableview/api/tableview/models/tableview-route.model.d.ts +0 -20
  296. package/tableview/editor/components/editor/auto-save-status/auto-save-status.component.d.ts +0 -10
  297. package/tableview/editor/components/editor/form-editor.component.d.ts +0 -117
  298. package/tableview/editor/components/formly/constants.d.ts +0 -1
  299. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +0 -15
  300. package/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +0 -11
  301. package/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +0 -10
  302. package/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.d.ts +0 -24
  303. package/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -10
  304. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +0 -12
  305. package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +0 -33
  306. package/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.d.ts +0 -10
  307. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -36
  308. package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -22
  309. package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -37
  310. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +0 -10
  311. package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +0 -11
  312. package/tableview/editor/components/formly/fields/formly-group-type.abstract.component.d.ts +0 -7
  313. package/tableview/editor/components/formly/fields/formly-type.abstract.component.d.ts +0 -20
  314. package/tableview/editor/components/formly/pipes/formly-field-label.pipe.d.ts +0 -8
  315. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +0 -18
  316. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +0 -16
  317. package/tableview/editor/helpers/editor-autosave.d.ts +0 -17
  318. package/tableview/editor/helpers/editor-field.d.ts +0 -2
  319. package/tableview/editor/helpers/editor-formly.d.ts +0 -11
  320. package/tableview/editor/helpers/editor-validators.d.ts +0 -7
  321. package/tableview/editor/helpers/field-create.d.ts +0 -9
  322. package/tableview/editor/helpers/formly-config.d.ts +0 -18
  323. package/tableview/editor/helpers/notification.d.ts +0 -4
  324. package/tableview/editor/models/editor-auto-save-preview.model.d.ts +0 -10
  325. package/tableview/editor/models/formly-config.model.d.ts +0 -14
  326. package/tableview/editor/models/formly.model.d.ts +0 -23
  327. package/tableview/editor/services/form-editor.service.d.ts +0 -39
  328. package/tableview/editor/services/formly-config.provider.d.ts +0 -5
  329. package/tableview/provide.d.ts +0 -15
  330. package/tableview/tableview/components/route/tableview-route.component.d.ts +0 -7
  331. package/tableview/tableview/components/tableview/tableview.component.d.ts +0 -29
  332. package/tableview/tableview/router/tableview-route-builder.d.ts +0 -43
  333. package/tableview/tableview/services/tableview-feature-config.token.d.ts +0 -18
@@ -1 +1 @@
1
- {"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../../form/src/components/autocomplete/autocomplete.component.ts","../../form/src/components/autocomplete/autocomplete.component.html","../../form/src/components/date-range/date-range.component.ts","../../form/src/components/date-range/date-range.component.html","../../form/src/components/dropdown/dropdown.component.ts","../../form/src/components/dropdown/dropdown.component.html","../../form/src/components/number-range/number-range.component.ts","../../form/src/components/number-range/number-range.component.html","../../form/src/directives/input-empty-value.directive.ts","../../form/src/directives/input-trim.directive.ts","../../form/src/index.ts","../../form/src/mediusinc-mng-commons-form.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService, TranslationObject} from '@ngx-translate/core';\nimport {AutoComplete, AutoCompleteCompleteEvent, AutoCompleteSelectEvent, AutoCompleteUnselectEvent} from 'primeng/autocomplete';\nimport {Observable, ReplaySubject, Subscription, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, AutoComplete],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AutocompleteComponent implements ControlValueAccessor, OnInit {\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n private readonly logger = inject(LoggerService).create('AutocompleteComponent');\n\n public dataProvider = input.required<ILookupDataProvider<any, any, any, any>>();\n public optionsTrackProperty = input<string>();\n public optionsValuePropertyInit = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public inlineSearch = input(false, {transform: booleanAttribute});\n public openOnFocus = input(false, {transform: booleanAttribute});\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public className = input<string>();\n public dropdownClassName = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public autoClear = input(false, {transform: booleanAttribute});\n public selectFirst = input(false, {transform: booleanAttribute}); //on every input field change return first given value (or null)\n public searchTrim = input<InputTrimType | undefined>(undefined);\n public disabledInput = input<boolean, unknown>(false, {transform: booleanAttribute, alias: 'disabled'});\n\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n private primeAutocomplete = viewChild(AutoComplete);\n\n private isInited = false;\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private _value?: any | null;\n private _rawValue?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _disabled = signal(false);\n public disabled = computed(() => this._disabled() || this.disabledInput());\n\n public suggestions = signal<Array<any>>([]);\n private isPanelShown = false;\n private isFocused = false;\n private userSelectedItem?: any | any[];\n private queryResultCacheSubject?: ReplaySubject<any>;\n private currentQuery?: string;\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInit();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n\n onSearch(event?: AutoCompleteCompleteEvent, isInit = false) {\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n\n const params: DataListParams = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject<any>(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n } else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n\n private selectFirstItem() {\n if (!this.selectFirst() || this.multiselect()) return;\n\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n } else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event: AutoCompleteSelectEvent) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n } else if (this.multiselect()) {\n newValue = [newValue];\n }\n\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event: AutoCompleteUnselectEvent) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n } else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n this.isFocused = true;\n }\n\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event: Event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n } else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onShow() {\n this.isPanelShown = true;\n }\n\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n\n onClear() {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[optionsValuePropertyInit]: value};\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n } else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n } else {\n this.setValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n\n this.isInited = true;\n }\n\n private setValueFromWrite(value: any | any[] | null | undefined) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n } else {\n this.ngModelValue.set(value);\n }\n }\n\n private getLookup(params: DataListParams, query?: string): Observable<Array<any>> {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(\n switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translatedItems).pipe(map((translations: TranslationObject) => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: TranslationObject): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = i18nMap[label];\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = i18nMap[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n } else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n private setValue(value: any | any[] | null | undefined, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n } else {\n this.ngModelValue.set(value);\n }\n\n this.propagateValueChange(value);\n }\n\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n private propagateValueChange(value: any | any[] | null | undefined) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n\n private convertValueWithOptionsValuePropSetting(value: any | any[] | null | undefined) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item: any) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n } else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n } else {\n return value;\n }\n }\n}\n","<p-autoComplete\n [ngModel]=\"ngModelValue()\"\n [placeholder]=\"placeholder()\"\n [dropdown]=\"true\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [suggestions]=\"suggestions()\"\n [multiple]=\"multiselect()\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [minLength]=\"openOnFocus() ? 0 : 1\"\n [showClear]=\"showClear()\"\n [forceSelection]=\"autoClear()\"\n [disabled]=\"disabled()\"\n [completeOnFocus]=\"openOnFocus()\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onUnselect)=\"onUnselect($event)\"\n (onFocus)=\"onFocus($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear()\"\n (onShow)=\"onShow()\"\n (onHide)=\"onHide()\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n input\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {DatePicker} from 'primeng/datepicker';\nimport {merge} from 'rxjs';\n\nexport const DATE_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\nexport const DATE_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-date-range',\n templateUrl: './date-range.component.html',\n styleUrl: './date-range.component.css',\n providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, DatePicker],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'className()'\n }\n})\nexport class DateRangeComponent implements OnInit, ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public placeholder = input<string>();\n public showTime = input(false, {transform: booleanAttribute});\n public showSeconds = input(false, {transform: booleanAttribute});\n public dateFormat = input<string>();\n public className = input<string>();\n public required = input(false, {transform: booleanAttribute});\n public disabled = input(false, {\n transform: booleanAttribute\n });\n public vertical = input(false, {transform: booleanAttribute});\n\n private fromToFormControl!: FormGroup;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n public get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange') as FormControl;\n }\n\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n\n effect(\n () => {\n this.setDisabledState(this.disabled());\n },\n {injector: this.injector}\n );\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n writeValue(obj: any): void {\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n } else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, {emitEvent: false});\n this.toCtrl.setValue(endDate, {emitEvent: false});\n } else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], {emitEvent: false});\n } else {\n this.dateRangeCtrl.setValue(null, {emitEvent: false});\n }\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n } else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n\n return null;\n }\n\n private onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n } else {\n const date = this.dateRangeCtrl.value as Date[];\n this.onChangeFn(date);\n }\n }\n}\n","@if (showTime()) {\n <div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-date-picker\n appendTo=\"body\"\n [formControl]=\"fromCtrl\"\n [maxDate]=\"toCtrl.value\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [showTime]=\"true\"\n [showSeconds]=\"showSeconds()\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\"></p-date-picker>\n <p-date-picker\n appendTo=\"body\"\n [formControl]=\"toCtrl\"\n [minDate]=\"fromCtrl.value\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [showTime]=\"true\"\n [showSeconds]=\"showSeconds()\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\"></p-date-picker>\n </div>\n} @else {\n <p-date-picker\n appendTo=\"body\"\n [formControl]=\"dateRangeCtrl\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n selectionMode=\"range\"\n [showIcon]=\"true\"\n [firstDayOfWeek]=\"1\"\n (onBlur)=\"onBlur()\"></p-date-picker>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService, TranslationObject} from '@ngx-translate/core';\nimport {DropdownChangeEvent} from 'primeng/dropdown';\nimport {MultiSelect, MultiSelectBlurEvent, MultiSelectChangeEvent} from 'primeng/multiselect';\nimport {Select} from 'primeng/select';\nimport {Subject, Subscription, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap} from 'rxjs';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n toObservable as commonsToObservable,\n fromSubscribeError,\n getErrorLogLevel\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nexport const DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [DROPDOWN_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, Select, MultiSelect],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DropdownComponent implements ControlValueAccessor {\n private readonly logger = inject(LoggerService).create('DropdownComponent');\n\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n\n public dataProvider = input<ILookupDataProvider<any, any, any, any>>();\n public options = input<Array<any>>([]);\n public optionsTrackProperty = input<string>();\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public optionsValuePropertyInput = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsDisabledProperty = input<string>();\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public selectFirstItemInput = input(false, {transform: booleanAttribute, alias: 'selectFirstItem'});\n public className = input<string>();\n public dropdownClassName = input<string>();\n public changeValueOnBlur = input(false, {transform: booleanAttribute});\n public loadingInput = input(false, {alias: 'loading', transform: booleanAttribute});\n public disabledInput = input(false, {alias: 'disabled', transform: booleanAttribute});\n public allowInput = input(false, {transform: booleanAttribute});\n public appendTo = input<string | null>('body');\n\n public inlineSearch = input(false, {transform: booleanAttribute});\n public searchTrim = input<InputTrimType | undefined>(undefined);\n\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n public primeSelect = viewChild(Select);\n public primeMultiselect = viewChild(MultiSelect);\n\n private _value?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _loading = signal(false);\n private _disabled = signal(false);\n public loading = computed(() => this.loadingInput() || this._loading());\n public disabled = computed(() => this.disabledInput() || this._disabled());\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private dataProviderService: any = null;\n public items = signal<any[]>([]);\n private firstTimeSettingItems = true;\n\n private isDropdownPanelShown = false;\n\n // used with custom input functionality\n private fetchedItems: any[] = [];\n private optionsSubscription?: Subscription;\n private customInputSubject = new Subject<string | undefined>();\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInput();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.ngModelValue();\n });\n\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n\n this.fetchItems();\n\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`\n );\n }\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n\n onDropdownBlur(event: Event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onDropdownChange(event: DropdownChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value as string);\n this.customInputSubject.next(query);\n }\n }\n\n private searchItems(query?: string) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n } else {\n this.fetchItems(query);\n }\n }\n\n private fetchItems(query?: string) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, {injector: this.injector}), toObservable(this.options, {injector: this.injector})])\n .pipe(\n tap(() => this._loading.set(true)),\n switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n }\n\n const params: DataListParams = {\n limit: this.allowInput() ? 10 : 50\n };\n\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n } else {\n return of(options ?? []);\n }\n }),\n switchMap(items => this.transformItems(items)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n private setItems(items: Array<any>, query?: string) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`\n );\n }\n if (typeof items[0]?.[this.optionsValueProperty()!] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n } else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(\n `'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`\n );\n }\n }\n }\n\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n } else {\n this.items.set([...items]);\n }\n }\n\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n\n onMultiselectChange(event: MultiSelectChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n\n onMultiselectBlur(event: MultiSelectBlurEvent) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n\n private selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n\n private transformItems(items: any[]) {\n if (this.optionsLabelTranslate()) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n\n if (translationKeys.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translationKeys).pipe(\n map((translations: TranslationObject) =>\n items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = translations[label];\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n }\n\n private adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n } else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n\n private propagateValueChange(value: any) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n}\n","@if (!multiselect()) {\n <p-select\n [(ngModel)]=\"ngModelValue\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [showClear]=\"showClear()\"\n [editable]=\"allowInput()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [disabled]=\"disabled()\"\n [filter]=\"inlineSearch() && !allowInput()\"\n [filterBy]=\"optionsLabelProperty()\"\n (onBlur)=\"onDropdownBlur($event)\"\n (onChange)=\"onDropdownChange($event)\"\n (onShow)=\"onDropdownPanelShow()\"\n (onHide)=\"onDropdownPanelHide()\"\n [dropdownIcon]=\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n [appendTo]=\"appendTo()\">\n </p-select>\n} @else {\n <p-multiSelect\n [ngModel]=\"ngModelValue()\"\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n [disabled]=\"disabled()\"\n (onChange)=\"onMultiselectChange($event)\"\n (onPanelHide)=\"onMultiselectPanelHide()\"\n (onBlur)=\"onMultiselectBlur($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ExistingProvider,\n ViewEncapsulation,\n booleanAttribute,\n effect,\n forwardRef,\n inject,\n input,\n output\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {InputNumber} from 'primeng/inputnumber';\nimport {merge} from 'rxjs';\n\nimport {Nullable} from '@mediusinc/mng-commons/core';\n\nexport const NUMBER_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\nexport const NUMBER_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-number-range',\n templateUrl: './number-range.component.html',\n styleUrl: './number-range.component.css',\n providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, InputNumber],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NumberRangeComponent implements ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public placeholder = input<string>();\n public useGrouping = input(true, {transform: booleanAttribute});\n public minFractionDigits = input<number>();\n public maxFractionDigits = input<number>();\n public required = input(false, {transform: booleanAttribute});\n public disabled = input(false, {\n transform: booleanAttribute\n });\n public vertical = input(false, {transform: booleanAttribute});\n public keyDown = output<KeyboardEvent>();\n\n private fromToFormControl: FormGroup = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n constructor() {\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n let start: number | null = null;\n let end: number | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n } else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n\n this.fromCtrl.setValue(start, {emitEvent: false});\n this.toCtrl.setValue(end, {emitEvent: false});\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n\n return null;\n }\n\n onKeyDown(event: KeyboardEvent) {\n this.keyDown.emit(event);\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n private toNumber(val: Nullable<string | number>) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n\n private onValueChange() {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n }\n}\n","<div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-inputNumber\n [formControl]=\"fromCtrl\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [max]=\"toCtrl.value\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n <p-inputNumber\n [formControl]=\"toCtrl\"\n [placeholder]=\"placeholder()\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [min]=\"fromCtrl.value\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n</div>\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {EmptyValueType} from '@mediusinc/mng-commons/form/api';\n\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\n@Directive({\n selector: '[mngInputEmptyValue]',\n host: {'(blur)': 'onBlur()'}\n})\nexport class InputEmptyValueDirective {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n public mngInputEmptyValue = input<EmptyValueType>('undefined');\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n #afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, {emitEvent: false});\n }\n }\n }\n\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue(): undefined | null | string {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n}\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\n@Directive({\n selector: '[mngInputTrim]',\n host: {'(blur)': 'onBlur()'}\n})\nexport class InputTrimDirective {\n public readonly mngInputTrim = input<InputTrimType>();\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n #inputEl: HTMLInputElement = this.#el.nativeElement as HTMLInputElement;\n\n #afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#inputEl = inputChildElement as HTMLInputElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n\n protected onBlur() {\n const control = this.#ngControl?.control;\n const value = control ? control.value : this.#inputEl.value;\n let trimmedValue: string;\n\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, {emitEvent: false});\n } else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n }\n\n #getTrimmedValue(value: string): string {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n}\n","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\n\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["toObservable","commonsToObservable","map"],"mappings":"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"}
1
+ {"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../tmp-esm2022/form/components/autocomplete/autocomplete.component.js","../tmp-esm2022/form/components/date-range/date-range.component.js","../tmp-esm2022/form/components/dropdown/dropdown.component.js","../tmp-esm2022/form/components/number-range/number-range.component.js","../tmp-esm2022/form/directives/input-empty-value.directive.js","../tmp-esm2022/form/directives/input-trim.directive.js","../tmp-esm2022/form/components/autocomplete/autocomplete-template.directive.js","../tmp-esm2022/form/components/date-range/date-range-template.directive.js","../tmp-esm2022/form/components/dropdown/dropdown-template.directive.js","../tmp-esm2022/form/components/number-range/number-range-template.directive.js","../tmp-esm2022/form/index.js","../tmp-esm2022/form/mediusinc-mng-commons-form.js"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { AutoComplete } from 'primeng/autocomplete';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { ReplaySubject, of, switchMap, take } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation, toObservable } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\nexport class AutocompleteComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.logger = inject(LoggerService).create('AutocompleteComponent');\n this.dataProvider = input.required(...(ngDevMode ? [{ debugName: \"dataProvider\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsValuePropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInit\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.openOnFocus = input(false, ...(ngDevMode ? [{ debugName: \"openOnFocus\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.autoClear = input(false, ...(ngDevMode ? [{ debugName: \"autoClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirst = input(false, ...(ngDevMode ? [{ debugName: \"selectFirst\", transform: booleanAttribute }] : [{ transform: booleanAttribute }])); //on every input field change return first given value (or null)\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", transform: booleanAttribute, alias: 'disabled' }] : [{ transform: booleanAttribute, alias: 'disabled' }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeAutocomplete = viewChild(AutoComplete, ...(ngDevMode ? [{ debugName: \"primeAutocomplete\" }] : []));\n this.isInited = false;\n this.searchSubscription = null;\n this.dataProviderService = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.disabled = computed(() => this._disabled() || this.disabledInput(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.suggestions = signal([], ...(ngDevMode ? [{ debugName: \"suggestions\" }] : []));\n this.isPanelShown = false;\n this.isFocused = false;\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n return this.optionsValuePropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n ngOnInit() {\n this.setItemsAndDataProvider();\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n onSearch(event, isInit = false) {\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n const params = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n selectFirstItem() {\n if (!this.selectFirst() || this.multiselect())\n return;\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n }\n else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n }\n else if (this.multiselect()) {\n newValue = [newValue];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n }\n else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event) {\n this.isFocused = true;\n }\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n }\n else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onShow() {\n this.isPanelShown = true;\n }\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n onClear() {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n this.setItemsAndDataProvider();\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem = { [optionsValuePropertyInit]: value };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n }\n else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n }\n else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n }\n else {\n this.setValueFromWrite(value);\n }\n }\n setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n this.isInited = true;\n }\n setValueFromWrite(value) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n }\n else {\n this.ngModelValue.set(value);\n }\n }\n getLookup(params, query) {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n return this.translate.stream(translatedItems).pipe(map((translations) => this.i18nPopulateItems(items, translations)));\n }\n else {\n return of(items);\n }\n }));\n }\n i18nGetItemsKeys(items) {\n return items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n }\n i18nPopulateItems(items, i18nMap) {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(i18nMap, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = narrowI18nToTranslation(i18nMap, item);\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n });\n }\n setSuggestionsFromItems(items, query) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n }\n else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n setValue(value, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n }\n else {\n this.ngModelValue.set(value);\n }\n this.propagateValueChange(value);\n }\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n propagateValueChange(value) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n convertValueWithOptionsValuePropSetting(value) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n }\n else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n }\n else {\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: AutocompleteComponent, isStandalone: true, selector: \"mng-autocomplete\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: true, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInit: { classPropertyName: \"optionsValuePropertyInit\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, openOnFocus: { classPropertyName: \"openOnFocus\", publicName: \"openOnFocus\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, autoClear: { classPropertyName: \"autoClear\", publicName: \"autoClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirst: { classPropertyName: \"selectFirst\", publicName: \"selectFirst\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeAutocomplete\", first: true, predicate: AutoComplete, descendants: true, isSignal: true }], ngImport: i0, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n <p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n </p-autoComplete>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: AutoComplete, selector: \"p-autoComplete, p-autocomplete, p-auto-complete\", inputs: [\"minLength\", \"minQueryLength\", \"delay\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"readonly\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"autoHighlight\", \"forceSelection\", \"type\", \"autoZIndex\", \"baseZIndex\", \"ariaLabel\", \"dropdownAriaLabel\", \"ariaLabelledBy\", \"dropdownIcon\", \"unique\", \"group\", \"completeOnFocus\", \"showClear\", \"dropdown\", \"showEmptyMessage\", \"dropdownMode\", \"multiple\", \"tabindex\", \"dataKey\", \"emptyMessage\", \"showTransitionOptions\", \"hideTransitionOptions\", \"autofocus\", \"autocomplete\", \"optionGroupChildren\", \"optionGroupLabel\", \"overlayOptions\", \"suggestions\", \"optionLabel\", \"optionValue\", \"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"selectOnFocus\", \"searchLocale\", \"optionDisabled\", \"focusOnHover\", \"typeahead\", \"appendTo\"], outputs: [\"completeMethod\", \"onSelect\", \"onUnselect\", \"onFocus\", \"onBlur\", \"onDropdownClick\", \"onClear\", \"onKeyUp\", \"onShow\", \"onHide\", \"onLazyLoad\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-autocomplete', providers: [AUTOCOMPLETE_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, AutoComplete, InputGroup, InputGroupAddon, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n <p-autoComplete\\n [ngModel]=\\\"ngModelValue()\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dropdown]=\\\"true\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [suggestions]=\\\"suggestions()\\\"\\n [multiple]=\\\"multiselect()\\\"\\n [showEmptyMessage]=\\\"true\\\"\\n [emptyMessage]=\\\"'mngAutocomplete.noMatches' | translate\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [minLength]=\\\"openOnFocus() ? 0 : 1\\\"\\n [showClear]=\\\"showClear()\\\"\\n [forceSelection]=\\\"autoClear()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [completeOnFocus]=\\\"openOnFocus()\\\"\\n (completeMethod)=\\\"onSearch($event)\\\"\\n (onSelect)=\\\"onSelect($event)\\\"\\n (onUnselect)=\\\"onUnselect($event)\\\"\\n (onFocus)=\\\"onFocus($event)\\\"\\n (onBlur)=\\\"onBlur($event)\\\"\\n (onClear)=\\\"onClear()\\\"\\n (onShow)=\\\"onShow()\\\"\\n (onHide)=\\\"onHide()\\\"\\n appendTo=\\\"body\\\"\\n dropdownMode=\\\"current\\\">\\n </p-autoComplete>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQXVCLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXBGLE9BQU8sRUFBb0IsYUFBYSxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQzFHLE9BQU8sRUFBQyxZQUFZLEVBQWdGLE1BQU0sc0JBQXNCLENBQUM7QUFDakksT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQWEsYUFBYSxFQUFnQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkMsT0FBTyxFQUNILG9CQUFvQixFQUVwQixlQUFlLEVBRWYsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDZixNQUFNLDZCQUE2QixDQUFDOzs7QUFLckMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXFCO0lBQ3pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztJQUNwRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFTRixNQUFNLE9BQU8scUJBQXFCO0lBcUY5QixJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEO1FBeEZpQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFekUsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSx1REFBMkMsQ0FBQztRQUN6RSx5QkFBb0IsR0FBRyxLQUFLLDBFQUFVLENBQUM7UUFDdkMsNkJBQXdCLEdBQUcsS0FBSyxDQUFxQixTQUFTLDREQUFHLEtBQUssRUFBRSxzQkFBc0IsT0FBOUIsRUFBQyxLQUFLLEVBQUUsc0JBQXNCLEVBQUMsR0FBQyxDQUFDO1FBQ2pHLDZCQUF3QixHQUFHLEtBQUssQ0FBcUIsU0FBUyw0REFBRyxLQUFLLEVBQUUsc0JBQXNCLE9BQTlCLEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFDLEdBQUMsQ0FBQztRQUNqRywwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyx5REFBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUNwRSxpQkFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLGdEQUFHLFNBQVMsRUFBRSxnQkFBZ0IsT0FBNUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsR0FBQyxDQUFDO1FBQzNELGdCQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssK0NBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxLQUFLLENBQUMsS0FBSywrQ0FBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUMxRCxnQkFBVyxHQUFHLEtBQUssaUVBQVUsQ0FBQztRQUM5QixjQUFTLEdBQUcsS0FBSywrREFBVSxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLEtBQUssdUVBQVUsQ0FBQztRQUNwQyxjQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssNkNBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDeEQsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLDZDQUFHLFNBQVMsRUFBRSxnQkFBZ0IsT0FBNUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsR0FBQyxDQUFDO1FBQ3hELGdCQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssK0NBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUMsQ0FBQyxnRUFBZ0U7UUFDM0gsZUFBVSxHQUFHLEtBQUssQ0FBNEIsU0FBUyxzREFBQyxDQUFDO1FBQ3pELGtCQUFhLEdBQUcsS0FBSyxDQUFtQixLQUFLLGlEQUFHLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxPQUEvQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLEdBQUMsQ0FBQztRQUN4RixjQUFTLEdBQUcsS0FBSyxDQUFrQyxFQUFFLHFEQUFDLENBQUM7UUFDaEUsZ0JBQVcsR0FBRyxNQUFNLEVBQU8sQ0FBQztRQUNuQyw0REFBNEQ7UUFDckQsU0FBSSxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBRXRCLHNCQUFpQixHQUFHLFNBQVMsQ0FBQyxZQUFZLDZEQUFDLENBQUM7UUFFNUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQix1QkFBa0IsR0FBd0IsSUFBSSxDQUFDO1FBQy9DLHdCQUFtQixHQUFRLElBQUksQ0FBQztRQUN4QyxnRUFBZ0U7UUFDeEQsZUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNuQyxnRUFBZ0U7UUFDeEQsZ0JBQVcsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFJN0IsaUJBQVksR0FBRyxNQUFNLENBQXlCLFNBQVMsd0RBQUMsQ0FBQztRQUV4RCxjQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUsscURBQUMsQ0FBQztRQUMzQixhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLG9EQUFDLENBQUM7UUFFcEUsZ0JBQVcsR0FBRyxNQUFNLENBQWEsRUFBRSx1REFBQyxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFLVixxQkFBZ0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxTQUFTLENBQUMsNERBQUMsQ0FBQztRQUN4RixvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLFFBQVEsQ0FBQywyREFBQyxDQUFDO1FBRS9GLHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2dCQUMvQiwrQkFBK0I7Z0JBQy9CLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztvQkFDbEMsT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUM7Z0JBQ3JELENBQUM7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLEVBQUUsQ0FBQztvQkFDOUUsT0FBTyxZQUFZLENBQUM7Z0JBQ3hCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLElBQUksb0JBQW9CLENBQUMsMkJBQTJCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFO3dCQUN6SixJQUFJLEVBQUUsNEJBQTRCO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzNDLENBQUMsZ0VBQUMsQ0FBQztRQUNJLHlCQUFvQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2dCQUMvQiwrQkFBK0I7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7b0JBQ3ZFLE9BQU8sT0FBTyxDQUFDO2dCQUNuQixDQUFDO3FCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO29CQUMxQyxNQUFNLElBQUksb0JBQW9CLENBQUMsMkJBQTJCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG1CQUFtQixFQUFFO3dCQUN6SixJQUFJLEVBQUUsNEJBQTRCO3FCQUNyQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzNDLENBQUMsZ0VBQUMsQ0FBQztRQU9DLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyx1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNoRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUMsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzNDLENBQUM7UUFDRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTFCLE1BQU0sTUFBTSxHQUFtQjtZQUMzQixLQUFLLEVBQUUsRUFBRTtTQUNaLENBQUM7UUFDRixJQUFJLG9CQUFvQixFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLG9CQUFvQixFQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUNwRCxNQUFNLENBQUMsT0FBTyxHQUFHO2dCQUNiLENBQUMsb0JBQW9CLENBQUMsRUFBRTtvQkFDcEIsS0FBSyxFQUFFLEtBQUs7b0JBQ1osU0FBUyxFQUFFLGVBQWUsQ0FBQyxVQUFVO2lCQUN4QzthQUNKLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksYUFBYSxDQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzdELENBQUM7WUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2lCQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN6QyxTQUFTLENBQUM7Z0JBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNWLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQzNDLElBQUksTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQzNCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ1QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFeEMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLDRCQUE0QixFQUFFO3dCQUNoRSxNQUFNLEVBQUUsS0FBSzt3QkFDYixNQUFNLEVBQUUsTUFBTTtxQkFDakIsQ0FBQyxDQUFDO29CQUNILElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO2FBQ0osQ0FBQyxDQUFDO1FBQ1gsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNwRixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU87UUFFdEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDaEMsb0pBQW9KO1lBQ3BKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVEsQ0FBQyxLQUE4QjtRQUNuQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25GLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLEtBQWdDO1FBQ3ZDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNuRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUMzRSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvRyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxLQUFZO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFZO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxJQUFJLGNBQWMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQy9GLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTTtRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNoQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFFL0IsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDakUsSUFBSSx3QkFBd0IsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sV0FBVyxHQUFRLEVBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEtBQUssRUFBQyxDQUFDO1lBQzdELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDekQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUN2QixXQUFXLENBQUMsb0JBQW9CLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDOUMsQ0FBQztZQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztZQUN4RixJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDWCxLQUFLLEVBQUUsRUFBRTtvQkFDVCxPQUFPLEVBQUU7d0JBQ0wsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFOzRCQUN4QixLQUFLLEVBQUUsS0FBSzs0QkFDWixTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU07eUJBQ3BDO3FCQUNKO2lCQUNKLENBQUM7cUJBQ0csSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDYixTQUFTLENBQUM7b0JBQ1AsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO3dCQUNWLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDOzRCQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2pDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ25CLENBQUM7NkJBQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUMxQixtREFBbUQ7NEJBQ25ELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQzs0QkFDM0UsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQ0FDZCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7Z0NBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUM7NEJBQ25CLENBQUM7d0JBQ0wsQ0FBQzt3QkFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ1gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN4QyxDQUFDO29CQUNMLENBQUM7b0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTt3QkFDUixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3hDLENBQUM7aUJBQ0osQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDTCxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBTSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU5RyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBcUM7UUFDM0QsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUN4QyxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkcsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3hELG1HQUFtRztZQUNuRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBc0IsRUFBRSxLQUFjO1FBQ3BELE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekYsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JELElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7Z0JBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBK0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUksQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWlCO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FDWixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFrQixDQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBVyxDQUM3SixDQUFDO0lBQ04sQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWlCLEVBQUUsT0FBMEI7UUFDbkUsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7Z0JBQzlELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQWtCLENBQVcsQ0FBQztnQkFDOUUsTUFBTSxXQUFXLEdBQXVCLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDaEYsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDZCxPQUFPLEVBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBQyxDQUFDO2dCQUNsRSxDQUFDO2dCQUNELE9BQU8sRUFBQyxHQUFHLElBQUksRUFBQyxDQUFDO1lBQ3JCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLFdBQVcsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzNELE9BQU87b0JBQ0gsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUcsQ0FBQyxFQUFFLFdBQVcsSUFBSSxJQUFJO29CQUNuRCxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRyxDQUFDLEVBQUUsSUFBSTtpQkFDdkMsQ0FBQztZQUNOLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFpQixFQUFFLEtBQWM7UUFDN0QsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN2QywwRUFBMEU7WUFDMUUsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLG9CQUFvQixJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNoRCxTQUFTLEdBQUcsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQ0QsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sY0FBYyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQzVELENBQUM7Z0JBQ0QsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDaEMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUN0QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssUUFBUSxDQUFDLEtBQXFDLEVBQUUsUUFBUSxHQUFHLEtBQUs7UUFDcEUsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBeUI7UUFDdkMsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN4QixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDOUIsS0FBSyxLQUFLO2dCQUNOLE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzVCLEtBQUssTUFBTTtnQkFDUCxPQUFPLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6QjtnQkFDSSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssb0JBQW9CLENBQUMsS0FBcUM7UUFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsdUNBQXVDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyx1Q0FBdUMsQ0FBQyxLQUFxQztRQUNqRixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQzNCLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVDLE9BQU8sS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0lBQ0wsQ0FBQzs4R0E1Y1EscUJBQXFCO2tHQUFyQixxQkFBcUIsd2lGQUpuQixDQUFDLDJCQUEyQixDQUFDLDZFQStCRixZQUFZLGdFQ25GdEQsdWtEQXlDQSwyQ0RZNkIsV0FBVywrVkFBRSxZQUFZLGtvQ0FBRSxVQUFVLDhHQUFFLGVBQWUsbUhBQUUsZ0JBQWdCLCtJQUF2RixhQUFhOzsyRkFHZCxxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0ksa0JBQWtCLGFBRWpCLENBQUMsMkJBQTJCLENBQUMsV0FDL0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLG1CQUNqRix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtTdHJpY3RUcmFuc2xhdGlvbiwgVHJhbnNsYXRlUGlwZSwgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRpb25PYmplY3R9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtBdXRvQ29tcGxldGUsIEF1dG9Db21wbGV0ZUNvbXBsZXRlRXZlbnQsIEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50LCBBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50fSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge0lucHV0R3JvdXB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XG5pbXBvcnQge0lucHV0R3JvdXBBZGRvbn0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24sIG9mLCBzd2l0Y2hNYXAsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBEYXRhTGlzdFBhcmFtcyxcbiAgICBGaWx0ZXJNYXRjaE1vZGUsXG4gICAgSUxvb2t1cERhdGFQcm92aWRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIGZyb21TdWJzY3JpYmVFcnJvcixcbiAgICBnZXRFcnJvckxvZ0xldmVsLFxuICAgIG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uLFxuICAgIHRvT2JzZXJ2YWJsZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtJbnB1dFRyaW1UeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcblxuaW1wb3J0IHtBdXRvY29tcGxldGVUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9hdXRvY29tcGxldGUtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IEFVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBdXRvY29tcGxldGVDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hdXRvY29tcGxldGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW0FVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZVBpcGUsIEZvcm1zTW9kdWxlLCBBdXRvQ29tcGxldGUsIElucHV0R3JvdXAsIElucHV0R3JvdXBBZGRvbiwgTmdUZW1wbGF0ZU91dGxldF0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gaW5qZWN0KExvZ2dlclNlcnZpY2UpLmNyZWF0ZSgnQXV0b2NvbXBsZXRlQ29tcG9uZW50Jyk7XG5cbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQucmVxdWlyZWQ8SUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueSwgYW55LCBhbnk+PigpO1xuICAgIHB1YmxpYyBvcHRpb25zVHJhY2tQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNWYWx1ZVByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwge2FsaWFzOiAnb3B0aW9uc0xhYmVsUHJvcGVydHknfSk7XG4gICAgcHVibGljIG9wdGlvbnNMYWJlbFRyYW5zbGF0ZSA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIGlubGluZVNlYXJjaCA9IGlucHV0KGZhbHNlLCB7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSk7XG4gICAgcHVibGljIG9wZW5PbkZvY3VzID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBkcm9wZG93bkNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgc2hvd0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgYXV0b0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2VsZWN0Rmlyc3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pOyAvL29uIGV2ZXJ5IGlucHV0IGZpZWxkIGNoYW5nZSByZXR1cm4gZmlyc3QgZ2l2ZW4gdmFsdWUgKG9yIG51bGwpXG4gICAgcHVibGljIHNlYXJjaFRyaW0gPSBpbnB1dDxJbnB1dFRyaW1UeXBlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHB1YmxpYyBkaXNhYmxlZElucHV0ID0gaW5wdXQ8Ym9vbGVhbiwgdW5rbm93bj4oZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsIGFsaWFzOiAnZGlzYWJsZWQnfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlcyA9IGlucHV0PEF1dG9jb21wbGV0ZVRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2UgPSBvdXRwdXQ8YW55PigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIHB1YmxpYyBibHVyID0gb3V0cHV0PEV2ZW50PigpO1xuXG4gICAgcHJpdmF0ZSBwcmltZUF1dG9jb21wbGV0ZSA9IHZpZXdDaGlsZChBdXRvQ29tcGxldGUpO1xuXG4gICAgcHJpdmF0ZSBpc0luaXRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIGRhdGFQcm92aWRlclNlcnZpY2U6IGFueSA9IG51bGw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25DaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25Ub3VjaGVkRm46IGFueSA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBfdmFsdWU/OiBhbnkgfCBudWxsO1xuICAgIHByaXZhdGUgX3Jhd1ZhbHVlPzogYW55IHwgbnVsbDtcbiAgICBwdWJsaWMgbmdNb2RlbFZhbHVlID0gc2lnbmFsPHVuZGVmaW5lZCB8IG51bGwgfCBhbnk+KHVuZGVmaW5lZCk7XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHVibGljIGRpc2FibGVkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fZGlzYWJsZWQoKSB8fCB0aGlzLmRpc2FibGVkSW5wdXQoKSk7XG5cbiAgICBwdWJsaWMgc3VnZ2VzdGlvbnMgPSBzaWduYWw8QXJyYXk8YW55Pj4oW10pO1xuICAgIHByaXZhdGUgaXNQYW5lbFNob3duID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHVzZXJTZWxlY3RlZEl0ZW0/OiBhbnkgfCBhbnlbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0PzogUmVwbGF5U3ViamVjdDxhbnk+O1xuICAgIHByaXZhdGUgY3VycmVudFF1ZXJ5Pzogc3RyaW5nO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHByZXBlbmRUZW1wbGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRlbXBsYXRlcygpLmZpbHRlcih0ID0+IHQubmFtZSgpID09PSAncHJlcGVuZCcpKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ2FwcGVuZCcpKTtcblxuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9X2kxOG5gO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndGl0bGVfaTE4bic7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpO1xuICAgIH0pO1xuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVQcm9wZXJ0eSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIC8vIHNldHVwIHRyYW5zbGF0aW9uIHByb3BlcnRpZXNcbiAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpO1xuICAgIH0pO1xuXG4gICAgcHVibGljIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZVdpdGhPcHRpb25zVmFsdWVQcm9wU2V0dGluZyh0aGlzLm5nTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgICAgIHRoaXMuX3Jhd1ZhbHVlID0gdGhpcy5uZ01vZGVsVmFsdWUoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0SXRlbXNBbmREYXRhUHJvdmlkZXIoKTtcblxuICAgICAgICBpZiAodGhpcy5zZWxlY3RGaXJzdCgpICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5vblNlYXJjaCh1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWFyY2goZXZlbnQ/OiBBdXRvQ29tcGxldGVDb21wbGV0ZUV2ZW50LCBpc0luaXQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIXRoaXMuaW5saW5lU2VhcmNoKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICBjb25zdCBxdWVyeSA9IHRoaXMudHJpbVZhbHVlKGV2ZW50Py5xdWVyeSk7XG4gICAgICAgIHRoaXMuY3VycmVudFF1ZXJ5ID0gcXVlcnk7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zOiBEYXRhTGlzdFBhcmFtcyA9IHtcbiAgICAgICAgICAgIGxpbWl0OiA1MFxuICAgICAgICB9O1xuICAgICAgICBpZiAob3B0aW9uc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gW3twcm9wZXJ0eTogb3B0aW9uc0xhYmVsUHJvcGVydHl9XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiBvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgW29wdGlvbnNMYWJlbFByb3BlcnR5XToge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGhcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0IHx8ICF0aGlzLmlubGluZVNlYXJjaCgpKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucXVlcnlSZXN1bHRDYWNoZVN1YmplY3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5nZXRMb29rdXAocGFyYW1zLCBxdWVyeSlcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdD8ubmV4dChpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN1Z2dlc3Rpb25zRnJvbUl0ZW1zKGl0ZW1zLCBxdWVyeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbml0ICYmICF0aGlzLl92YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RJdGVtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhbXSwgcXVlcnkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IGZyb21TdWJzY3JpYmVFcnJvcihlcnIsICdBdXRvY29tcGxldGVDb21wb25lbnRFcnJvcicsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2g6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmxvZyhlcnJvciwgZ2V0RXJyb3JMb2dMZXZlbChlcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5xdWVyeVJlc3VsdENhY2hlU3ViamVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSB0aGlzLnF1ZXJ5UmVzdWx0Q2FjaGVTdWJqZWN0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhyZXN1bHQsIHF1ZXJ5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RGaXJzdCgpIHx8IHRoaXMubXVsdGlzZWxlY3QoKSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gdGhpcy5zdWdnZXN0aW9ucygpO1xuICAgICAgICBpZiAoc3VnZ2VzdGlvbnMubGVuZ3RoID4gMCAmJiAhdGhpcy51c2VyU2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKHN1Z2dlc3Rpb25zWzBdKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy51c2VyU2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAvLyBoYW5kbGVzIHRoZSBjYXNlIGlmIHRoZSB1c2VyIHByb3ZpZGVzIGFuIGlucHV0IGFuZCBkZS1mb2N1c2VzIHRoZSBpbnB1dCBmaWVsZCBiZWZvcmUgc3VnZ2VzdGlvbnMgYXJlIGxvYWRlZCBvciBpZiB0aGVyZSBhcmUgbm8gc3VnZ2VzdGlvbnMgYXQgYWxsXG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcmVkIGJ5IHVzZXIgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBmcm9tIGFuIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIGxpc3QuXG4gICAgICovXG4gICAgb25TZWxlY3QoZXZlbnQ6IEF1dG9Db21wbGV0ZVNlbGVjdEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodGhpcy5fcmF3VmFsdWUpICYmIHRoaXMuX3Jhd1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gWy4uLnRoaXMuX3Jhd1ZhbHVlLCBuZXdWYWx1ZV07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXNlbGVjdCgpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IFtuZXdWYWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VyZWQgYnkgdXNlciB3aGVuIHNlbGVjdGluZyBhbiBpdGVtIGZyb20gYW4gYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gbGlzdC5cbiAgICAgKi9cbiAgICBvblVuc2VsZWN0KGV2ZW50OiBBdXRvQ29tcGxldGVVbnNlbGVjdEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KCkgJiYgQXJyYXkuaXNBcnJheSh0aGlzLl9yYXdWYWx1ZSkgJiYgdGhpcy5fcmF3VmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY21wUHJvcCA9IHRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSA/PyB0aGlzLm9wdGlvbnNUcmFja1Byb3BlcnR5KCk7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMuX3Jhd1ZhbHVlLmZpbHRlcihpID0+IChjbXBQcm9wID8gaVtjbXBQcm9wXSAhPT0gZXZlbnQudmFsdWVbY21wUHJvcF0gOiBpICE9PSBldmVudC52YWx1ZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlzZWxlY3QoKSkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlLCB0cnVlKTtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBzZWxlY3RGaXJzdCBpdGVtIGFueXRpbWUgdGhlIGlucHV0IGZpZWxkIGdvZXMgb3V0IG9mIGZvY3VzIGFuZCBpZiB0aGUgc3VnZ2VzdGlvbnMgcGFuZWwgaXMgbm90IGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGlucHV0U2VhcmNoVmFsID0gdGhpcy5wcmltZUF1dG9jb21wbGV0ZSgpPy5pbnB1dEVMPy5uYXRpdmVFbGVtZW50Py52YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b0NsZWFyKCkgJiYgdGhpcy5fdmFsdWUgIT0gbnVsbCAmJiAoaW5wdXRTZWFyY2hWYWwgPT0gbnVsbCB8fCBpbnB1dFNlYXJjaFZhbCA9PT0gJycpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmlzUGFuZWxTaG93bikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaXJzdEl0ZW0oKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvblNob3coKSB7XG4gICAgICAgIHRoaXMuaXNQYW5lbFNob3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxscyB0aGUgc2VsZWN0Rmlyc3QgaXRlbSBhbnl0aW1lIHRoZSBzdWdnZXN0aW9ucyBwYW5lbCBpcyBjbG9zZWQgYW5kIGlucHV0IGZpZWxkIGlzbid0IGZvY3VzZWQuXG4gICAgICovXG4gICAgb25IaWRlKCkge1xuICAgICAgICB0aGlzLmlzUGFuZWxTaG93biA9IGZhbHNlO1xuICAgICAgICBpZiAoIXRoaXMuaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWx1ZUNoYW5nZSh0aGlzLm11bHRpc2VsZWN0KCkgPyBbXSA6IG51bGwpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9kaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCkpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEl0ZW1zQW5kRGF0YVByb3ZpZGVyKCk7XG5cbiAgICAgICAgLy8gd3JpdGUgdmFsdWUgaW1tZWRpYXRlbHkgLSBpdCBpcyBpbXBvcnRhbnQgc28gdGhhdCBmaXJzdCBzZWxlY3QgaXMgbm90IHRyaWdnZXJlZCFcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCBvcHRpb25zVmFsdWVQcm9wZXJ0eUluaXQgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdCgpO1xuICAgICAgICBpZiAob3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0ICYmIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdEl0ZW06IGFueSA9IHtbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XTogdmFsdWV9O1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICBpZiAob3B0aW9uc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0SXRlbVtvcHRpb25zTGFiZWxQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEl0ZW0gPSB0aGlzLnN1Z2dlc3Rpb25zKCkuZmluZChpID0+IGlbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XSA9PT0gdmFsdWUpO1xuICAgICAgICAgICAgaWYgKG1hdGNoZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZyb21Xcml0ZShtYXRjaGVkSXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG9va3VwKHtcbiAgICAgICAgICAgICAgICAgICAgbGltaXQ6IDUwLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc1ZhbHVlUHJvcGVydHlJbml0XToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZS5FcXVhbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpc01hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKGl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBsb29rdXAgZGF0YSBwcm92aWRlcnMgbm90IHVzaW5nIHF1ZXJ5IHBhcmFtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkSXRlbSA9IGl0ZW1zLmZpbmQoaSA9PiBpW29wdGlvbnNWYWx1ZVByb3BlcnR5SW5pdF0gPT09IHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbVdyaXRlKG1hdGNoZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUoZGVmYXVsdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUoZGVmYXVsdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVGcm9tV3JpdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJdGVtc0FuZERhdGFQcm92aWRlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNJbml0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IHRoaXMuZGF0YVByb3ZpZGVyKCk7XG4gICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyU2VydmljZSA9IGRhdGFQcm92aWRlci5zZXJ2aWNlVHlwZSA/IHRoaXMuaW5qZWN0b3IuZ2V0PGFueT4oZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlKSA6IG51bGw7XG5cbiAgICAgICAgdGhpcy5pc0luaXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRWYWx1ZUZyb21Xcml0ZSh2YWx1ZTogYW55IHwgYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMuaTE4blBvcHVsYXRlSXRlbXMoW3ZhbHVlXSwgdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmkxOG5HZXRJdGVtc0tleXMoW3ZhbHVlXSkpKVswXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZ01vZGVsVmFsdWUoKSA9PSBudWxsICYmIHRoaXMuX3Jhd1ZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIHZhbHVlIG11c3QgZmlyc3QgYmUgc2V0IHRvIHN5bmNocm9uaXNlIHN0YXRlcywgdGhlbiBpbiBuZXh0IGFzeW5jIGN5Y2xlIHNldCB0byB3YW50ZWQgbnVsbCB2YWx1ZVxuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHRoaXMuX3Jhd1ZhbHVlKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExvb2t1cChwYXJhbXM6IERhdGFMaXN0UGFyYW1zLCBxdWVyeT86IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8YW55Pj4ge1xuICAgICAgICByZXR1cm4gdG9PYnNlcnZhYmxlKHRoaXMuZGF0YVByb3ZpZGVyKCkubG9va3VwKHBhcmFtcywgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlLCBxdWVyeSkpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRJdGVtcyA9IHRoaXMuaTE4bkdldEl0ZW1zS2V5cyhpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLnN0cmVhbSh0cmFuc2xhdGVkSXRlbXMpLnBpcGUobWFwKCh0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0KSA9PiB0aGlzLmkxOG5Qb3B1bGF0ZUl0ZW1zKGl0ZW1zLCB0cmFuc2xhdGlvbnMpKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGl0ZW1zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaTE4bkdldEl0ZW1zS2V5cyhpdGVtczogQXJyYXk8YW55Pik6IEFycmF5PHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMubWFwKFxuICAgICAgICAgICAgaXRlbSA9PiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgPyAoaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nKSA6IGl0ZW0pIGFzIHN0cmluZ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaTE4blBvcHVsYXRlSXRlbXMoaXRlbXM6IEFycmF5PGFueT4sIGkxOG5NYXA6IFN0cmljdFRyYW5zbGF0aW9uKTogQXJyYXk8YW55PiB7XG4gICAgICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGl0ZW1bdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSBhcyBrZXlvZiBvYmplY3RdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gbmFycm93STE4blRvVHJhbnNsYXRpb24oaTE4bk1hcCwgbGFiZWwpO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIFt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCkhXTogdHJhbnNsYXRpb259O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gey4uLml0ZW19O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uKGkxOG5NYXAsIGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCkhXTogdHJhbnNsYXRpb24gPz8gaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSFdOiBpdGVtXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdWdnZXN0aW9uc0Zyb21JdGVtcyhpdGVtczogQXJyYXk8YW55PiwgcXVlcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHF1ZXJ5ICYmIHF1ZXJ5ICE9PSB0aGlzLmN1cnJlbnRRdWVyeSkge1xuICAgICAgICAgICAgLy8gU2tpcCBwcm9jZXNzaW5nIHRvIGF2b2lkIG91dGRhdGVkIHF1ZXJpZXMgZHVyaW5nIGlubGluZSBzZWFyY2ggdXBkYXRlcy5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgY29uc3QgcXVlcnlMb3dlckNhc2UgPSBxdWVyeT8udG9Mb3dlckNhc2UoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXMgPSBpdGVtcy5maWx0ZXIoaSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1MYWJlbCA9IGk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5KCk7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnNMYWJlbFByb3BlcnR5ICYmIHR5cGVvZiBpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtTGFiZWwgPSBpW29wdGlvbnNMYWJlbFByb3BlcnR5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1MYWJlbCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeUxvd2VyQ2FzZSA9PSBudWxsIHx8ICFxdWVyeUxvd2VyQ2FzZS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbUxhYmVsICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtTGFiZWwgPSBpdGVtTGFiZWwudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1MYWJlbC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgocXVlcnlMb3dlckNhc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25zLnNldChbLi4uZmlsdGVyZWRJdGVtc10pO1xuICAgICAgICAgICAgdGhpcy51c2VyU2VsZWN0ZWRJdGVtID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9ucy5zZXQoWy4uLml0ZW1zXSk7XG4gICAgICAgICAgICB0aGlzLnVzZXJTZWxlY3RlZEl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIGFuZCBzZXRzIG5ldyB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBSZXByZXNlbnRzIHRoZSBvYmplY3QgdmFsdWUuXG4gICAgICogQHBhcmFtIGZyb21Vc2VyIElmIHNldCB2YWx1ZSBpcyB0cmlnZ2VyZWQgZnJvbSB1c2VyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VmFsdWUodmFsdWU6IGFueSB8IGFueVtdIHwgbnVsbCB8IHVuZGVmaW5lZCwgZnJvbVVzZXIgPSBmYWxzZSkge1xuICAgICAgICBpZiAoZnJvbVVzZXIpIHtcbiAgICAgICAgICAgIHRoaXMudXNlclNlbGVjdGVkSXRlbSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJpbVZhbHVlKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnNlYXJjaFRyaW0oKSkge1xuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbVN0YXJ0KCk7XG4gICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZT8udHJpbUVuZCgpO1xuICAgICAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltKCk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3BhZ2F0ZXMgZmluYWwgdmFsdWUgdG8gX3ZhbHVlLCBvbiBjaGFuZ2UgZm4gYW5kIG91dHB1dHMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVWYWx1ZUNoYW5nZSh2YWx1ZTogYW55IHwgYW55W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWVXaXRoT3B0aW9uc1ZhbHVlUHJvcFNldHRpbmcodmFsdWUpO1xuICAgICAgICB0aGlzLl9yYXdWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4odGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFZhbHVlV2l0aE9wdGlvbnNWYWx1ZVByb3BTZXR0aW5nKHZhbHVlOiBhbnkgfCBhbnlbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uc1ZhbHVlUHJvcGVydHkgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCk7XG4gICAgICAgIGlmICghb3B0aW9uc1ZhbHVlUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCgpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSAmJiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bb3B0aW9uc1ZhbHVlUHJvcGVydHldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZVtvcHRpb25zVmFsdWVQcm9wZXJ0eV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8cC1pbnB1dGdyb3VwPlxuICAgIEBmb3IgKHB0IG9mIHByZXBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuICAgIDxwLWF1dG9Db21wbGV0ZVxuICAgICAgICBbbmdNb2RlbF09XCJuZ01vZGVsVmFsdWUoKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICBbZGF0YUtleV09XCJvcHRpb25zVHJhY2tQcm9wZXJ0eSgpXCJcbiAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbnNMYWJlbFByb3BlcnR5KClcIlxuICAgICAgICBbc3VnZ2VzdGlvbnNdPVwic3VnZ2VzdGlvbnMoKVwiXG4gICAgICAgIFttdWx0aXBsZV09XCJtdWx0aXNlbGVjdCgpXCJcbiAgICAgICAgW3Nob3dFbXB0eU1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgIFtlbXB0eU1lc3NhZ2VdPVwiJ21uZ0F1dG9jb21wbGV0ZS5ub01hdGNoZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3N0eWxlQ2xhc3NdPVwiY2xhc3NOYW1lKClcIlxuICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgICAgICBbaW5wdXRTdHlsZV09XCJ7Ym9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICcwJ31cIlxuICAgICAgICBbbWluTGVuZ3RoXT1cIm9wZW5PbkZvY3VzKCkgPyAwIDogMVwiXG4gICAgICAgIFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIlxuICAgICAgICBbZm9yY2VTZWxlY3Rpb25dPVwiYXV0b0NsZWFyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gICAgICAgIFtjb21wbGV0ZU9uRm9jdXNdPVwib3Blbk9uRm9jdXMoKVwiXG4gICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKG9uU2VsZWN0KT1cIm9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25VbnNlbGVjdCk9XCJvblVuc2VsZWN0KCRldmVudClcIlxuICAgICAgICAob25Gb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAob25CbHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xlYXIpPVwib25DbGVhcigpXCJcbiAgICAgICAgKG9uU2hvdyk9XCJvblNob3coKVwiXG4gICAgICAgIChvbkhpZGUpPVwib25IaWRlKClcIlxuICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICBkcm9wZG93bk1vZGU9XCJjdXJyZW50XCI+XG4gICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICBAZm9yIChhdCBvZiBhcHBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9wLWlucHV0Z3JvdXA+XG4iXX0=","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, Injector, ViewEncapsulation, booleanAttribute, computed, effect, forwardRef, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DatePicker } from 'primeng/datepicker';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DATE_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport const DATE_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\nexport class DateRangeComponent {\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showTime = input(false, ...(ngDevMode ? [{ debugName: \"showTime\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.showSeconds = input(false, ...(ngDevMode ? [{ debugName: \"showSeconds\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.dateFormat = input(...(ngDevMode ? [undefined, { debugName: \"dateFormat\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n }\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange');\n }\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n effect(() => {\n this.setDisabledState(this.disabled());\n }, { injector: this.injector });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n registerOnValidatorChange(fn) {\n this.onValidatorChangeFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n onBlur() {\n this.onTouchedFn();\n }\n writeValue(obj) {\n let startDate = null;\n let endDate = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n }\n else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, { emitEvent: false });\n this.toCtrl.setValue(endDate, { emitEvent: false });\n }\n else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], { emitEvent: false });\n }\n else {\n this.dateRangeCtrl.setValue(null, { emitEvent: false });\n }\n }\n validate() {\n if (!this.required())\n return null;\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n return null;\n }\n onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n else {\n const date = this.dateRangeCtrl.value;\n this.onChangeFn(date);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DateRangeComponent, isStandalone: true, selector: \"mng-date-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showTime: { classPropertyName: \"showTime\", publicName: \"showTime\", isSignal: true, isRequired: false, transformFunction: null }, showSeconds: { classPropertyName: \"showSeconds\", publicName: \"showSeconds\", isSignal: true, isRequired: false, transformFunction: null }, dateFormat: { classPropertyName: \"dateFormat\", publicName: \"dateFormat\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { \"class\": \"className()\" } }, providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], ngImport: i0, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n </div>\\n} @else {\\n <p-input-group>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-input-group>\\n}\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: DatePicker, selector: \"p-datePicker, p-datepicker, p-date-picker\", inputs: [\"iconDisplay\", \"styleClass\", \"inputStyle\", \"inputId\", \"inputStyleClass\", \"placeholder\", \"ariaLabelledBy\", \"ariaLabel\", \"iconAriaLabel\", \"dateFormat\", \"multipleSeparator\", \"rangeSeparator\", \"inline\", \"showOtherMonths\", \"selectOtherMonths\", \"showIcon\", \"icon\", \"readonlyInput\", \"shortYearCutoff\", \"hourFormat\", \"timeOnly\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"showOnFocus\", \"showWeek\", \"startWeekFromFirstDayOfYear\", \"showClear\", \"dataType\", \"selectionMode\", \"maxDateCount\", \"showButtonBar\", \"todayButtonStyleClass\", \"clearButtonStyleClass\", \"autofocus\", \"autoZIndex\", \"baseZIndex\", \"panelStyleClass\", \"panelStyle\", \"keepInvalid\", \"hideOnDateTimeSelect\", \"touchUI\", \"timeSeparator\", \"focusTrap\", \"showTransitionOptions\", \"hideTransitionOptions\", \"tabindex\", \"minDate\", \"maxDate\", \"disabledDates\", \"disabledDays\", \"showTime\", \"responsiveOptions\", \"numberOfMonths\", \"firstDayOfWeek\", \"view\", \"defaultDate\", \"appendTo\"], outputs: [\"onFocus\", \"onBlur\", \"onClose\", \"onSelect\", \"onClear\", \"onInput\", \"onTodayClick\", \"onClearClick\", \"onMonthChange\", \"onYearChange\", \"onClickOutside\", \"onShow\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-date-range', providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, DatePicker, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n '[class]': 'className()'\n }, template: \"@if (showTime()) {\\n <div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"fromCtrl\\\"\\n [maxDate]=\\\"toCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"toCtrl\\\"\\n [minDate]=\\\"fromCtrl.value\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n [showTime]=\\\"true\\\"\\n [showSeconds]=\\\"showSeconds()\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n </div>\\n} @else {\\n <p-input-group>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-date-picker\\n appendTo=\\\"body\\\"\\n [formControl]=\\\"dateRangeCtrl\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dateFormat]=\\\"dateFormat()\\\"\\n selectionMode=\\\"range\\\"\\n [showIcon]=\\\"true\\\"\\n [inputStyle]=\\\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\\\"\\n [firstDayOfWeek]=\\\"1\\\"\\n (onBlur)=\\\"onBlur()\\\"></p-date-picker>\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-input-group>\\n}\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-date-range.ng-dirty.ng-invalid p-date-picker>.p-datepicker>.p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUVWLFFBQVEsRUFFUixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ1IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUVILFdBQVcsRUFHWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQUkzQixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBcUI7SUFDdkQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFxQjtJQUNsRCxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQWNGLE1BQU0sT0FBTyxrQkFBa0I7SUFaL0I7UUFhcUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUxQyxnQkFBVyxHQUFHLEtBQUssaUVBQVUsQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssNENBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDdkQsZ0JBQVcsR0FBRyxLQUFLLENBQUMsS0FBSywrQ0FBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUMxRCxlQUFVLEdBQUcsS0FBSyxnRUFBVSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxLQUFLLCtEQUFVLENBQUM7UUFDNUIsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLDRDQUFHLFNBQVMsRUFBRSxnQkFBZ0IsT0FBNUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsR0FBQyxDQUFDO1FBQ3ZELGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyw0Q0FDekIsU0FBUyxFQUFFLGdCQUFnQixPQURBO2dCQUMzQixTQUFTLEVBQUUsZ0JBQWdCO2FBQzlCLEdBQUMsQ0FBQztRQUNJLGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyw0Q0FBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsS0FBSyxDQUErQixFQUFFLHFEQUFDLENBQUM7UUFFcEQscUJBQWdCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssU0FBUyxDQUFDLDREQUFDLENBQUM7UUFDeEYsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxRQUFRLENBQUMsMkRBQUMsQ0FBQztRQUl0RyxnRUFBZ0U7UUFDeEQsZUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNuQyxnRUFBZ0U7UUFDeEQsZ0JBQVcsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDcEMsZ0VBQWdFO1FBQ3hELHdCQUFtQixHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQWdIL0M7SUE5R0csSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBZ0IsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDbEUsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDNUMsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDL0IsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUNGLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDLEVBQ0QsRUFBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxDQUM1QixDQUFDO1FBRUYsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO2FBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDekMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCx5QkFBeUIsQ0FBRSxFQUFjO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsQ0FBQzthQUFNLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2YsSUFBSSxTQUFTLEdBQWdCLElBQUksQ0FBQztRQUNsQyxJQUFJLE9BQU8sR0FBZ0IsSUFBSSxDQUFDO1FBRWhDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6RyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6RyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLEdBQUcsWUFBWSxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ25GLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sSUFBSSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLE9BQU87b0JBQ0gsUUFBUSxFQUFFLElBQUk7aUJBQ2pCLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE9BQU87b0JBQ0gsUUFBUSxFQUFFLElBQUk7aUJBQ2pCLENBQUM7WUFDTixDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7WUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFhLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFlLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQzs4R0EzSVEsa0JBQWtCO2tHQUFsQixrQkFBa0Isa3lDQVJoQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLDBCQ3hEaEUsa3lGQWtFQSxxTURUYyxXQUFXLHNJQUFFLG1CQUFtQixrTkFBRSxVQUFVLGdyQ0FBRSxVQUFVLDhHQUFFLGVBQWUsbUhBQUUsZ0JBQWdCLCtJQUFFLGFBQWE7OzJGQU8zRyxrQkFBa0I7a0JBWjlCLFNBQVM7K0JBQ0ksZ0JBQWdCLGFBR2YsQ0FBQyx5QkFBeUIsRUFBRSxvQkFBb0IsQ0FBQyxXQUNuRCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLENBQUMsbUJBQ3BHLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsU0FBUyxFQUFFLGFBQWE7cUJBQzNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFeGlzdGluZ1Byb3ZpZGVyLFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIEZvcm1CdWlsZGVyLFxuICAgIEZvcm1Db250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOR19WQUxJREFUT1JTLFxuICAgIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVmFsaWRhdGlvbkVycm9ycyxcbiAgICBWYWxpZGF0b3IsXG4gICAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlUGlwZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0RhdGVQaWNrZXJ9IGZyb20gJ3ByaW1lbmcvZGF0ZXBpY2tlcic7XG5pbXBvcnQge0lucHV0R3JvdXB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XG5pbXBvcnQge0lucHV0R3JvdXBBZGRvbn0gZnJvbSAncHJpbWVuZy9pbnB1dGdyb3VwYWRkb24nO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7RGF0ZVJhbmdlVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4vZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5leHBvcnQgY29uc3QgREFURV9SQU5HRV9WQUxJREFUT1I6IEV4aXN0aW5nUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEYXRlUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1kYXRlLXJhbmdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UuY29tcG9uZW50LmNzcycsXG4gICAgcHJvdmlkZXJzOiBbREFURV9SQU5HRV9WQUxVRV9BQ0NFU1NPUiwgREFURV9SQU5HRV9WQUxJREFUT1JdLFxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRGF0ZVBpY2tlciwgSW5wdXRHcm91cCwgSW5wdXRHcm91cEFkZG9uLCBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVQaXBlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzc10nOiAnY2xhc3NOYW1lKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHNob3dUaW1lID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2hvd1NlY29uZHMgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBkYXRlRm9ybWF0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICAgIHB1YmxpYyBjbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHJlcXVpcmVkID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgICB9KTtcbiAgICBwdWJsaWMgdmVydGljYWwgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxEYXRlUmFuZ2VUZW1wbGF0ZURpcmVjdGl2ZVtdPihbXSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgcHJlcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdwcmVwZW5kJykpO1xuICAgIHB1YmxpYyByZWFkb25seSBhcHBlbmRUZW1wbGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnRlbXBsYXRlcygpLmZpbHRlcih0ID0+IHQubmFtZSgpID09PSAnYXBwZW5kJykpO1xuXG4gICAgcHJpdmF0ZSBmcm9tVG9Gb3JtQ29udHJvbCE6IEZvcm1Hcm91cDtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uQ2hhbmdlRm46IGFueSA9ICgpID0+IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBwcml2YXRlIG9uVG91Y2hlZEZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblZhbGlkYXRvckNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHB1YmxpYyBnZXQgZnJvbUN0cmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmdldCgnZnJvbScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ3RvJykgYXMgRm9ybUNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlUmFuZ2VDdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ2RhdGVSYW5nZScpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBmcm9tOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB0bzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZGF0ZVJhbmdlOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGlzYWJsZWRTdGF0ZSh0aGlzLmRpc2FibGVkKCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtpbmplY3RvcjogdGhpcy5pbmplY3Rvcn1cbiAgICAgICAgKTtcblxuICAgICAgICBtZXJnZSh0aGlzLmZyb21DdHJsLnZhbHVlQ2hhbmdlcywgdGhpcy50b0N0cmwudmFsdWVDaGFuZ2VzLCB0aGlzLmRhdGVSYW5nZUN0cmwudmFsdWVDaGFuZ2VzKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMub25WYWx1ZUNoYW5nZSgpKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZT8oZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmIChpc0Rpc2FibGVkICYmIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2w/LmVuYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0Rpc2FibGVkICYmIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2w/LmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Ub0Zvcm1Db250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25CbHVyKCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xuICAgICAgICBsZXQgc3RhcnREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBlbmREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICAgICAgaWYgKG9iai5sZW5ndGggPiAwICYmIChvYmpbMF0gaW5zdGFuY2VvZiBEYXRlIHx8IHR5cGVvZiBvYmpbMF0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmpbMF0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKG9ialswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDEgJiYgKG9ialsxXSBpbnN0YW5jZW9mIERhdGUgfHwgdHlwZW9mIG9ialsxXSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9ialsxXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgZW5kRGF0ZSA9IG5ldyBEYXRlKG9ialsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSB8fCB0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3RhcnREYXRlID0gbmV3IERhdGUob2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbUN0cmwuc2V0VmFsdWUoc3RhcnREYXRlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgdGhpcy50b0N0cmwuc2V0VmFsdWUoZW5kRGF0ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGFydERhdGUgfHwgZW5kRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VDdHJsLnNldFZhbHVlKFtzdGFydERhdGUsIGVuZERhdGVdLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VDdHJsLnNldFZhbHVlKG51bGwsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5yZXF1aXJlZCgpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBpZiAodGhpcy5zaG93VGltZSgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mcm9tQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSB8fCB0aGlzLnRvQ3RybC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVSYW5nZUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3dUaW1lKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyb21EYXRlID0gdGhpcy5mcm9tQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICAgICAgY29uc3QgdG9EYXRlID0gdGhpcy50b0N0cmwudmFsdWUgYXMgRGF0ZTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2VGbihbZnJvbURhdGUsIHRvRGF0ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMuZGF0ZVJhbmdlQ3RybC52YWx1ZSBhcyBEYXRlW107XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKHNob3dUaW1lKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiIFtjbGFzcy5mbGV4LWNvbF09XCJ2ZXJ0aWNhbCgpXCI+XG4gICAgICAgIDxwLWlucHV0Z3JvdXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmcm9tQ3RybFwiXG4gICAgICAgICAgICAgICAgW21heERhdGVdPVwidG9DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VGcm9tJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXQoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJzaG93U2Vjb25kcygpXCJcbiAgICAgICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwie2JvcmRlclRvcFJpZ2h0UmFkaXVzOiAnMCcsIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAnMCd9XCJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiXG4gICAgICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhcHBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXA+XG4gICAgICAgIDxwLWlucHV0Z3JvdXA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0b0N0cmxcIlxuICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImZyb21DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VUbycgfCB0cmFuc2xhdGUpXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0KClcIlxuICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwic2hvd1NlY29uZHMoKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlXT1cIntib3JkZXJUb3BSaWdodFJhZGl1czogJzAnLCBib3JkZXJCb3R0b21SaWdodFJhZGl1czogJzAnfVwiXG4gICAgICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIj48L3AtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwPlxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPHAtaW5wdXQtZ3JvdXA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRhdGVSYW5nZUN0cmxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdCgpXCJcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICBbc2hvd0ljb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7Ym9yZGVyVG9wUmlnaHRSYWRpdXM6ICcwJywgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6ICcwJ31cIlxuICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cIjFcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJvbkJsdXIoKVwiPjwvcC1kYXRlLXBpY2tlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvcC1pbnB1dC1ncm91cD5cbn1cblxuPG5nLXRlbXBsYXRlICNwcmVwZW5kQWRkb25zPlxuICAgIEBmb3IgKHB0IG9mIHByZXBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYXBwZW5kQWRkb25zPlxuICAgIEBmb3IgKGF0IG9mIGFwcGVuZFRlbXBsYXRlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHAtaW5wdXRncm91cC1hZGRvbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhdC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3AtaW5wdXRncm91cC1hZGRvbj5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuIl19","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, Injector, booleanAttribute, computed, effect, forwardRef, inject, input, output, signal, viewChild } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { MultiSelect } from 'primeng/multiselect';\nimport { Select } from 'primeng/select';\nimport { Subject, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap } from 'rxjs';\nimport { CommonsInternalError, FilterMatchMode, LoggerService, toObservable as commonsToObservable, fromSubscribeError, getErrorLogLevel, narrowI18nToTranslation } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const DROPDOWN_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\nexport class DropdownComponent {\n get value() {\n return this._value;\n }\n constructor() {\n this.logger = inject(LoggerService).create('DropdownComponent');\n this.injector = inject(Injector);\n this.destroyRef = inject(DestroyRef);\n this.translate = inject(TranslateService);\n this.dataProvider = input(...(ngDevMode ? [undefined, { debugName: \"dataProvider\" }] : []));\n this.options = input([], ...(ngDevMode ? [{ debugName: \"options\" }] : []));\n this.optionsTrackProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsTrackProperty\" }] : []));\n this.optionsLabelPropertyInit = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsLabelPropertyInit\", alias: 'optionsLabelProperty' }] : [{ alias: 'optionsLabelProperty' }]));\n this.optionsLabelTranslate = input(false, ...(ngDevMode ? [{ debugName: \"optionsLabelTranslate\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.optionsValuePropertyInput = input(undefined, ...(ngDevMode ? [{ debugName: \"optionsValuePropertyInput\", alias: 'optionsValueProperty' }] : [{ alias: 'optionsValueProperty' }]));\n this.optionsDisabledProperty = input(...(ngDevMode ? [undefined, { debugName: \"optionsDisabledProperty\" }] : []));\n this.multiselect = input(false, ...(ngDevMode ? [{ debugName: \"multiselect\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.showClear = input(false, ...(ngDevMode ? [{ debugName: \"showClear\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.selectFirstItemInput = input(false, ...(ngDevMode ? [{ debugName: \"selectFirstItemInput\", transform: booleanAttribute, alias: 'selectFirstItem' }] : [{ transform: booleanAttribute, alias: 'selectFirstItem' }]));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.dropdownClassName = input(...(ngDevMode ? [undefined, { debugName: \"dropdownClassName\" }] : []));\n this.changeValueOnBlur = input(false, ...(ngDevMode ? [{ debugName: \"changeValueOnBlur\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.loadingInput = input(false, ...(ngDevMode ? [{ debugName: \"loadingInput\", alias: 'loading', transform: booleanAttribute }] : [{ alias: 'loading', transform: booleanAttribute }]));\n this.disabledInput = input(false, ...(ngDevMode ? [{ debugName: \"disabledInput\", alias: 'disabled', transform: booleanAttribute }] : [{ alias: 'disabled', transform: booleanAttribute }]));\n this.allowInput = input(false, ...(ngDevMode ? [{ debugName: \"allowInput\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.appendTo = input('body', ...(ngDevMode ? [{ debugName: \"appendTo\" }] : []));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.inlineSearch = input(false, ...(ngDevMode ? [{ debugName: \"inlineSearch\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.searchTrim = input(undefined, ...(ngDevMode ? [{ debugName: \"searchTrim\" }] : []));\n this.valueChange = output();\n // eslint-disable-next-line @angular-eslint/no-output-native\n this.blur = output();\n this.primeSelect = viewChild(Select, ...(ngDevMode ? [{ debugName: \"primeSelect\" }] : []));\n this.primeMultiselect = viewChild(MultiSelect, ...(ngDevMode ? [{ debugName: \"primeMultiselect\" }] : []));\n this.ngModelValue = signal(undefined, ...(ngDevMode ? [{ debugName: \"ngModelValue\" }] : []));\n this._loading = signal(false, ...(ngDevMode ? [{ debugName: \"_loading\" }] : []));\n this._disabled = signal(false, ...(ngDevMode ? [{ debugName: \"_disabled\" }] : []));\n this.loading = computed(() => this.loadingInput() || this._loading(), ...(ngDevMode ? [{ debugName: \"loading\" }] : []));\n this.disabled = computed(() => this.disabledInput() || this._disabled(), ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n this.dataProviderService = null;\n this.items = signal([], ...(ngDevMode ? [{ debugName: \"items\" }] : []));\n this.firstTimeSettingItems = true;\n this.isDropdownPanelShown = false;\n // used with custom input functionality\n this.fetchedItems = [];\n this.customInputSubject = new Subject();\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n }\n else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n }\n else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsLabelPropertyInit();\n }, ...(ngDevMode ? [{ debugName: \"optionsLabelProperty\" }] : []));\n this.optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n }\n else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n return this.optionsValuePropertyInput();\n }, ...(ngDevMode ? [{ debugName: \"optionsValueProperty\" }] : []));\n effect(() => {\n this._value = this.ngModelValue();\n });\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n this.fetchItems();\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`);\n }\n }\n });\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n writeValue(value) {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n onDropdownBlur(event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n onDropdownChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value);\n this.customInputSubject.next(query);\n }\n }\n searchItems(query) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n }\n else {\n this.fetchItems(query);\n }\n }\n fetchItems(query) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, { injector: this.injector }), toObservable(this.options, { injector: this.injector })])\n .pipe(tap(() => this._loading.set(true)), switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get(dataProvider.serviceType) : null;\n }\n const params = {\n limit: this.allowInput() ? 10 : 50\n };\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{ property: optionsLabelProperty }];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n }\n else {\n return of(options ?? []);\n }\n }), switchMap(items => this.transformItems(items)), takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n setItems(items, query) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(`allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`);\n }\n if (typeof items[0]?.[this.optionsValueProperty()] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n }\n else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(`'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`);\n }\n }\n }\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n }\n else {\n this.items.set([...items]);\n }\n }\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n onFocus() {\n this.onTouchedFn();\n }\n onMultiselectChange(event) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n onMultiselectBlur(event) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n transformItems(items) {\n if (this.optionsLabelTranslate()) {\n const translationKeys = items.map(item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? item[this.optionsLabelPropertyInit()] : item));\n if (translationKeys.length === 0) {\n return of([]);\n }\n return this.translate.stream(translationKeys).pipe(map(translations => items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit()];\n const translation = narrowI18nToTranslation(translations, label);\n if (translation) {\n return { ...item, [this.optionsLabelProperty()]: translation };\n }\n return { ...item };\n }\n else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()]: translation ?? item,\n [this.optionsValueProperty()]: item\n };\n }\n })));\n }\n else {\n return of(items);\n }\n }\n adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n }\n else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n propagateValueChange(value) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n trimValue(value) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: DropdownComponent, isStandalone: true, selector: \"mng-dropdown\", inputs: { dataProvider: { classPropertyName: \"dataProvider\", publicName: \"dataProvider\", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null }, optionsTrackProperty: { classPropertyName: \"optionsTrackProperty\", publicName: \"optionsTrackProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelPropertyInit: { classPropertyName: \"optionsLabelPropertyInit\", publicName: \"optionsLabelProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsLabelTranslate: { classPropertyName: \"optionsLabelTranslate\", publicName: \"optionsLabelTranslate\", isSignal: true, isRequired: false, transformFunction: null }, optionsValuePropertyInput: { classPropertyName: \"optionsValuePropertyInput\", publicName: \"optionsValueProperty\", isSignal: true, isRequired: false, transformFunction: null }, optionsDisabledProperty: { classPropertyName: \"optionsDisabledProperty\", publicName: \"optionsDisabledProperty\", isSignal: true, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: \"multiselect\", publicName: \"multiselect\", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: \"showClear\", publicName: \"showClear\", isSignal: true, isRequired: false, transformFunction: null }, selectFirstItemInput: { classPropertyName: \"selectFirstItemInput\", publicName: \"selectFirstItem\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null }, dropdownClassName: { classPropertyName: \"dropdownClassName\", publicName: \"dropdownClassName\", isSignal: true, isRequired: false, transformFunction: null }, changeValueOnBlur: { classPropertyName: \"changeValueOnBlur\", publicName: \"changeValueOnBlur\", isSignal: true, isRequired: false, transformFunction: null }, loadingInput: { classPropertyName: \"loadingInput\", publicName: \"loading\", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: \"disabledInput\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, allowInput: { classPropertyName: \"allowInput\", publicName: \"allowInput\", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: \"appendTo\", publicName: \"appendTo\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: \"inlineSearch\", publicName: \"inlineSearch\", isSignal: true, isRequired: false, transformFunction: null }, searchTrim: { classPropertyName: \"searchTrim\", publicName: \"searchTrim\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: \"valueChange\", blur: \"blur\" }, providers: [DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: \"primeSelect\", first: true, predicate: Select, descendants: true, isSignal: true }, { propertyName: \"primeMultiselect\", first: true, predicate: MultiSelect, descendants: true, isSignal: true }], ngImport: i0, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n @if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n } @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n }\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\", dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"component\", type: MultiSelect, selector: \"p-multiSelect, p-multiselect, p-multi-select\", inputs: [\"id\", \"ariaLabel\", \"styleClass\", \"panelStyle\", \"panelStyleClass\", \"inputId\", \"readonly\", \"group\", \"filter\", \"filterPlaceHolder\", \"filterLocale\", \"overlayVisible\", \"tabindex\", \"dataKey\", \"ariaLabelledBy\", \"displaySelectedLabel\", \"maxSelectedLabels\", \"selectionLimit\", \"selectedItemsLabel\", \"showToggleAll\", \"emptyFilterMessage\", \"emptyMessage\", \"resetFilterOnHide\", \"dropdownIcon\", \"chipIcon\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"showHeader\", \"filterBy\", \"scrollHeight\", \"lazy\", \"virtualScroll\", \"loading\", \"virtualScrollItemSize\", \"loadingIcon\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"autofocusFilter\", \"display\", \"autocomplete\", \"showClear\", \"autofocus\", \"placeholder\", \"options\", \"filterValue\", \"selectAll\", \"focusOnHover\", \"filterFields\", \"selectOnFocus\", \"autoOptionFocus\", \"highlightOnSelect\", \"size\", \"variant\", \"fluid\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onClear\", \"onPanelShow\", \"onPanelHide\", \"onLazyLoad\", \"onRemove\", \"onSelectAllChange\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-dropdown', providers: [DROPDOWN_VALUE_ACCESSOR], imports: [TranslatePipe, FormsModule, Select, MultiSelect, InputGroup, InputGroupAddon, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<p-inputgroup>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n @if (!multiselect()) {\\n <p-select\\n [(ngModel)]=\\\"ngModelValue\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [showClear]=\\\"showClear()\\\"\\n [editable]=\\\"allowInput()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [disabled]=\\\"disabled()\\\"\\n [filter]=\\\"inlineSearch() && !allowInput()\\\"\\n [filterBy]=\\\"optionsLabelProperty()\\\"\\n (onBlur)=\\\"onDropdownBlur($event)\\\"\\n (onChange)=\\\"onDropdownChange($event)\\\"\\n (onShow)=\\\"onDropdownPanelShow()\\\"\\n (onHide)=\\\"onDropdownPanelHide()\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n [dropdownIcon]=\\\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\\\"\\n [appendTo]=\\\"appendTo()\\\">\\n </p-select>\\n } @else {\\n <p-multiSelect\\n [ngModel]=\\\"ngModelValue()\\\"\\n [maxSelectedLabels]=\\\"1\\\"\\n [selectedItemsLabel]=\\\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\\\"\\n [placeholder]=\\\"placeholder()\\\"\\n [dataKey]=\\\"optionsTrackProperty()\\\"\\n [optionLabel]=\\\"optionsLabelProperty()\\\"\\n [optionValue]=\\\"optionsValueProperty()\\\"\\n [optionDisabled]=\\\"optionsDisabledProperty()\\\"\\n [options]=\\\"items()\\\"\\n [styleClass]=\\\"className()\\\"\\n [panelStyleClass]=\\\"dropdownClassName()\\\"\\n [filter]=\\\"true\\\"\\n [showToggleAll]=\\\"false\\\"\\n [disabled]=\\\"disabled()\\\"\\n (onChange)=\\\"onMultiselectChange($event)\\\"\\n (onPanelHide)=\\\"onMultiselectPanelHide()\\\"\\n (onBlur)=\\\"onMultiselectBlur($event)\\\"\\n (onFocus)=\\\"onFocus()\\\"\\n appendTo=\\\"body\\\">\\n </p-multiSelect>\\n }\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</p-inputgroup>\\n\" }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZm9ybS9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFFVixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBdUIsV0FBVyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBK0MsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQUMsTUFBTSxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxPQUFPLEVBQWdCLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXZILE9BQU8sRUFDSCxvQkFBb0IsRUFFcEIsZUFBZSxFQUVmLGFBQWEsRUFDYixZQUFZLElBQUksbUJBQW1CLEVBQ25DLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQzFCLE1BQU0sNkJBQTZCLENBQUM7OztBQUtyQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBcUI7SUFDckQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQVNGLE1BQU0sT0FBTyxpQkFBaUI7SUErRjFCLElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7UUFsR2lCLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFM0QsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvQyxpQkFBWSxHQUFHLEtBQUssa0VBQTJDLENBQUM7UUFDaEUsWUFBTyxHQUFHLEtBQUssQ0FBYSxFQUFFLG1EQUFDLENBQUM7UUFDaEMseUJBQW9CLEdBQUcsS0FBSywwRUFBVSxDQUFDO1FBQ3ZDLDZCQUF3QixHQUFHLEtBQUssQ0FBcUIsU0FBUyw0REFBRyxLQUFLLEVBQUUsc0JBQXNCLE9BQTlCLEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFDLEdBQUMsQ0FBQztRQUNqRywwQkFBcUIsR0FBRyxLQUFLLENBQUMsS0FBSyx5REFBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUNwRSw4QkFBeUIsR0FBRyxLQUFLLENBQXFCLFNBQVMsNkRBQUcsS0FBSyxFQUFFLHNCQUFzQixPQUE5QixFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBQyxHQUFDLENBQUM7UUFDbEcsNEJBQXVCLEdBQUcsS0FBSyw2RUFBVSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssK0NBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxLQUFLLGlFQUFVLENBQUM7UUFDOUIsY0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLDZDQUFHLFNBQVMsRUFBRSxnQkFBZ0IsT0FBNUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsR0FBQyxDQUFDO1FBQ3hELHlCQUFvQixHQUFHLEtBQUssQ0FBQyxLQUFLLHdEQUFHLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLE9BQXRELEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBQyxHQUFDLENBQUM7UUFDN0YsY0FBUyxHQUFHLEtBQUssK0RBQVUsQ0FBQztRQUM1QixzQkFBaUIsR0FBRyxLQUFLLHVFQUFVLENBQUM7UUFDcEMsc0JBQWlCLEdBQUcsS0FBSyxDQUFDLEtBQUsscURBQUcsU0FBUyxFQUFFLGdCQUFnQixPQUE1QixFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDaEUsaUJBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxnREFBRyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsT0FBOUMsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDN0Usa0JBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxpREFBRyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsT0FBL0MsRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxHQUFDLENBQUM7UUFDL0UsZUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLDhDQUFHLFNBQVMsRUFBRSxnQkFBZ0IsT0FBNUIsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUMsR0FBQyxDQUFDO1FBQ3pELGFBQVEsR0FBRyxLQUFLLENBQWdCLE1BQU0sb0RBQUMsQ0FBQztRQUMvQixjQUFTLEdBQUcsS0FBSyxDQUE4QixFQUFFLHFEQUFDLENBQUM7UUFFNUQsaUJBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxnREFBRyxTQUFTLEVBQUUsZ0JBQWdCLE9BQTVCLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDLEdBQUMsQ0FBQztRQUMzRCxlQUFVLEdBQUcsS0FBSyxDQUE0QixTQUFTLHNEQUFDLENBQUM7UUFFekQsZ0JBQVcsR0FBRyxNQUFNLEVBQU8sQ0FBQztRQUNuQyw0REFBNEQ7UUFDckQsU0FBSSxHQUFHLE1BQU0sRUFBUyxDQUFDO1FBRXZCLGdCQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sdURBQUMsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxTQUFTLENBQUMsV0FBVyw0REFBQyxDQUFDO1FBRzFDLGlCQUFZLEdBQUcsTUFBTSxDQUF5QixTQUFTLHdEQUFDLENBQUM7UUFFeEQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLG9EQUFDLENBQUM7UUFDekIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLHFEQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxtREFBQyxDQUFDO1FBQ2pFLGFBQVEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsb0RBQUMsQ0FBQztRQUUzRSxnRUFBZ0U7UUFDeEQsZUFBVSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNuQyxnRUFBZ0U7UUFDeEQsZ0JBQVcsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFNUIsd0JBQW1CLEdBQVEsSUFBSSxDQUFDO1FBQ2pDLFVBQUssR0FBRyxNQUFNLENBQVEsRUFBRSxpREFBQyxDQUFDO1FBQ3pCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQUU3Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFFckMsdUNBQXVDO1FBQy9CLGlCQUFZLEdBQVUsRUFBRSxDQUFDO1FBRXpCLHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBRS9DLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLFNBQVMsQ0FBQyw0REFBQyxDQUFDO1FBQ3hGLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssUUFBUSxDQUFDLDJEQUFDLENBQUM7UUFFL0YseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLCtCQUErQjtnQkFDL0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO29CQUNsQyxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDO29CQUMvRSxPQUFPLFlBQVksQ0FBQztnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLGdCQUFnQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUU7d0JBQzFKLElBQUksRUFBRSx3QkFBd0I7cUJBQ2pDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDM0MsQ0FBQyxnRUFBQyxDQUFDO1FBQ0kseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLCtCQUErQjtnQkFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsQ0FBQztvQkFDeEUsT0FBTyxPQUFPLENBQUM7Z0JBQ25CLENBQUM7cUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7b0JBQzFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQywyQkFBMkIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLGdCQUFnQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUU7d0JBQzFKLElBQUksRUFBRSx3QkFBd0I7cUJBQ2pDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDNUMsQ0FBQyxnRUFBQyxDQUFDO1FBT0MsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGtCQUFrQjthQUNsQixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQzthQUNyRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxCLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztvQkFDOUQsTUFBTSxJQUFJLG9CQUFvQixDQUMxQixzSkFBc0osQ0FDekosQ0FBQztnQkFDTixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNqQix5RUFBeUU7UUFDekUsdUNBQXVDO1FBQ3ZDLG1HQUFtRztRQUNuRyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxPQUFPO1FBQ1gsQ0FBQztRQUNELG1GQUFtRjtRQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsMkNBQTJDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFZO1FBQ3ZCLHFGQUFxRjtRQUNyRixrRkFBa0Y7UUFDbEYsSUFBSSxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNsRCx5QkFBeUI7WUFDekIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQXdCO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxLQUFLLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBZSxDQUFDLENBQUM7WUFDOUgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFjO1FBQzlCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDdEIsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNMLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBYztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDeEosSUFBSSxDQUNELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUNsQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ2xDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQU0sWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xILENBQUM7Z0JBRUQsTUFBTSxNQUFNLEdBQW1CO29CQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7aUJBQ3JDLENBQUM7Z0JBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO29CQUN2QixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBQyxRQUFRLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2dCQUNELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxvQkFBb0IsRUFBRSxDQUFDO29CQUN4QyxNQUFNLENBQUMsT0FBTyxHQUFHO3dCQUNiLENBQUMsb0JBQW9CLENBQUMsRUFBRTs0QkFDcEIsS0FBSyxFQUFFLEtBQUs7NEJBQ1osU0FBUyxFQUFFLGVBQWUsQ0FBQyxVQUFVO3lCQUN4QztxQkFDSixDQUFDO2dCQUNOLENBQUM7Z0JBRUQsT0FBTyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM3RixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDTCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzlDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDdEM7YUFDQSxTQUFTLENBQUM7WUFDUCxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMscUVBQXFFO2dCQUM3RixJQUFJLENBQUMsMkNBQTJDLEVBQUUsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNULElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUM7U0FDSixDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFFBQVEsQ0FBQyxLQUFpQixFQUFFLEtBQWM7UUFDOUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNwQixxRUFBcUU7WUFDckUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQixrR0FBa0c7Z0JBQ2xHLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO3dCQUMvQixNQUFNLElBQUksb0JBQW9CLENBQzFCLDJKQUEySixDQUM5SixDQUFDO29CQUNOLENBQUM7b0JBQ0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQy9ELE1BQU0sSUFBSSxvQkFBb0IsQ0FBQywrR0FBK0csQ0FBQyxDQUFDO29CQUNwSixDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3pHLE1BQU0sSUFBSSxvQkFBb0IsQ0FDMUIsb0xBQW9MLENBQ3ZMLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25DLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxvQkFBb0IsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDaEQsU0FBUyxHQUFHLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNwQixPQUFPLGNBQWMsSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO2dCQUM1RCxDQUFDO2dCQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ2hDLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3JDLENBQUM7Z0JBQ0QsT0FBTyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFDckMsQ0FBQztJQUVELG1CQUFtQjtRQUNmLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQTZCO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUEyQjtRQUN6QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZTtRQUNuQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3pELE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMseUJBQXlCO1lBQ3ZELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVk7UUFDL0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO1lBQy9CLE1BQU0sZUFBZSxHQUFhLEtBQUssQ0FBQyxHQUFHLENBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQWtCLENBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFXLENBQzdKLENBQUM7WUFFRixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDOUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDYixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO29CQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFrQixDQUFXLENBQUM7b0JBQzlFLE1BQU0sV0FBVyxHQUF1Qix1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ3JGLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2QsT0FBTyxFQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFHLENBQUMsRUFBRSxXQUFXLEVBQUMsQ0FBQztvQkFDbEUsQ0FBQztvQkFDRCxPQUFPLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQztnQkFDckIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdkMsT0FBTzt3QkFDSCxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRyxDQUFDLEVBQUUsV0FBVyxJQUFJLElBQUk7d0JBQ25ELENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFHLENBQUMsRUFBRSxJQUFJO3FCQUN2QyxDQUFDO2dCQUNOLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUNKLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRU8sMkNBQTJDLENBQUMsZUFBZSxHQUFHLEtBQUs7UUFDdkUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNyRCxJQUFJLGdCQUFnQixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xILElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDL0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDeEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdkksSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyRSxPQUFPO29CQUNYLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7aUJBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN6RSxrREFBa0Q7Z0JBQ2xELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN4SSxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxPQUFPO2dCQUNYLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEIscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLEtBQVU7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFNBQVMsQ0FBQyxLQUF5QjtRQUN2QyxRQUFRLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssT0FBTztnQkFDUixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUM5QixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pCO2dCQUNJLE9BQU8sS0FBSyxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDOzhHQXhaUSxpQkFBaUI7a0dBQWpCLGlCQUFpQix1b0dBSmYsQ0FBQyx1QkFBdUIsQ0FBQyx1RUFzQ0wsTUFBTSxtR0FDRCxXQUFXLGdFQzFGbkQsbzlFQTJEQSwyQ0RQNkIsV0FBVywrVkFBRSxNQUFNLGk5QkFBRSxXQUFXLGt2Q0FBRSxVQUFVLDhHQUFFLGVBQWUsbUhBQUUsZ0JBQWdCLCtJQUE5RixhQUFhOzsyRkFHZCxpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksY0FBYyxhQUViLENBQUMsdUJBQXVCLENBQUMsV0FDM0IsQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxtQkFDeEYsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXhpc3RpbmdQcm92aWRlcixcbiAgICBJbmplY3RvcixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXQsXG4gICAgc2lnbmFsLFxuICAgIHZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHtJbnB1dEdyb3VwQWRkb259IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7TXVsdGlTZWxlY3QsIE11bHRpU2VsZWN0Qmx1ckV2ZW50LCBNdWx0aVNlbGVjdENoYW5nZUV2ZW50fSBmcm9tICdwcmltZW5nL211bHRpc2VsZWN0JztcbmltcG9ydCB7U2VsZWN0LCBTZWxlY3RDaGFuZ2VFdmVudH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xuaW1wb3J0IHtTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgb2YsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBEYXRhTGlzdFBhcmFtcyxcbiAgICBGaWx0ZXJNYXRjaE1vZGUsXG4gICAgSUxvb2t1cERhdGFQcm92aWRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIHRvT2JzZXJ2YWJsZSBhcyBjb21tb25zVG9PYnNlcnZhYmxlLFxuICAgIGZyb21TdWJzY3JpYmVFcnJvcixcbiAgICBnZXRFcnJvckxvZ0xldmVsLFxuICAgIG5hcnJvd0kxOG5Ub1RyYW5zbGF0aW9uXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lucHV0VHJpbVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuXG5pbXBvcnQge0Ryb3Bkb3duVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IERST1BET1dOX1ZBTFVFX0FDQ0VTU09SOiBFeGlzdGluZ1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERyb3Bkb3duQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctZHJvcGRvd24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbRFJPUERPV05fVkFMVUVfQUNDRVNTT1JdLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVQaXBlLCBGb3Jtc01vZHVsZSwgU2VsZWN0LCBNdWx0aVNlbGVjdCwgSW5wdXRHcm91cCwgSW5wdXRHcm91cEFkZG9uLCBOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ0Ryb3Bkb3duQ29tcG9uZW50Jyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgICBwdWJsaWMgZGF0YVByb3ZpZGVyID0gaW5wdXQ8SUxvb2t1cERhdGFQcm92aWRlcjxhbnksIGFueSwgYW55LCBhbnk+PigpO1xuICAgIHB1YmxpYyBvcHRpb25zID0gaW5wdXQ8QXJyYXk8YW55Pj4oW10pO1xuICAgIHB1YmxpYyBvcHRpb25zVHJhY2tQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHlJbml0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNMYWJlbFByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zTGFiZWxUcmFuc2xhdGUgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBvcHRpb25zVmFsdWVQcm9wZXJ0eUlucHV0ID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQsIHthbGlhczogJ29wdGlvbnNWYWx1ZVByb3BlcnR5J30pO1xuICAgIHB1YmxpYyBvcHRpb25zRGlzYWJsZWRQcm9wZXJ0eSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3QgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgc2hvd0NsZWFyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgc2VsZWN0Rmlyc3RJdGVtSW5wdXQgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdzZWxlY3RGaXJzdEl0ZW0nfSk7XG4gICAgcHVibGljIGNsYXNzTmFtZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgICBwdWJsaWMgZHJvcGRvd25DbGFzc05hbWUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIGNoYW5nZVZhbHVlT25CbHVyID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgbG9hZGluZ0lucHV0ID0gaW5wdXQoZmFsc2UsIHthbGlhczogJ2xvYWRpbmcnLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWRJbnB1dCA9IGlucHV0KGZhbHNlLCB7YWxpYXM6ICdkaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBhbGxvd0lucHV0ID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgYXBwZW5kVG8gPSBpbnB1dDxzdHJpbmcgfCBudWxsPignYm9keScpO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxEcm9wZG93blRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcblxuICAgIHB1YmxpYyBpbmxpbmVTZWFyY2ggPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBzZWFyY2hUcmltID0gaW5wdXQ8SW5wdXRUcmltVHlwZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG91dHB1dDxhbnk+KCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgcHVibGljIGJsdXIgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgICBwdWJsaWMgcHJpbWVTZWxlY3QgPSB2aWV3Q2hpbGQoU2VsZWN0KTtcbiAgICBwdWJsaWMgcHJpbWVNdWx0aXNlbGVjdCA9IHZpZXdDaGlsZChNdWx0aVNlbGVjdCk7XG5cbiAgICBwcml2YXRlIF92YWx1ZT86IGFueSB8IG51bGw7XG4gICAgcHVibGljIG5nTW9kZWxWYWx1ZSA9IHNpZ25hbDx1bmRlZmluZWQgfCBudWxsIHwgYW55Pih1bmRlZmluZWQpO1xuXG4gICAgcHJpdmF0ZSBfbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBzaWduYWwoZmFsc2UpO1xuICAgIHB1YmxpYyBsb2FkaW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5sb2FkaW5nSW5wdXQoKSB8fCB0aGlzLl9sb2FkaW5nKCkpO1xuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZGlzYWJsZWRJbnB1dCgpIHx8IHRoaXMuX2Rpc2FibGVkKCkpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25DaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25Ub3VjaGVkRm46IGFueSA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSBkYXRhUHJvdmlkZXJTZXJ2aWNlOiBhbnkgPSBudWxsO1xuICAgIHB1YmxpYyBpdGVtcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICAgIHByaXZhdGUgZmlyc3RUaW1lU2V0dGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgaXNEcm9wZG93blBhbmVsU2hvd24gPSBmYWxzZTtcblxuICAgIC8vIHVzZWQgd2l0aCBjdXN0b20gaW5wdXQgZnVuY3Rpb25hbGl0eVxuICAgIHByaXZhdGUgZmV0Y2hlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgb3B0aW9uc1N1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGN1c3RvbUlucHV0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwcmVwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ3ByZXBlbmQnKSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGFwcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdhcHBlbmQnKSk7XG5cbiAgICBwdWJsaWMgb3B0aW9uc0xhYmVsUHJvcGVydHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnNMYWJlbFRyYW5zbGF0ZSgpKSB7XG4gICAgICAgICAgICAvLyBzZXR1cCB0cmFuc2xhdGlvbiBwcm9wZXJ0aWVzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfV9pMThuYDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgJiYgIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICd0aXRsZV9pMThuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBJbnZhbGlkIHVzZSB3aXRoIHZhbHVlICgke3RoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHlJbnB1dCgpfSkgYW5kIGxhYmVsICgke3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCl9KSBwcm9wZXJ0eSBzZXR1cC5gLCB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdEcm9wZG93bkNvbXBvbmVudEVycm9yJ1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCk7XG4gICAgfSk7XG4gICAgcHVibGljIG9wdGlvbnNWYWx1ZVByb3BlcnR5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxUcmFuc2xhdGUoKSkge1xuICAgICAgICAgICAgLy8gc2V0dXAgdHJhbnNsYXRpb24gcHJvcGVydGllc1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgSW52YWxpZCB1c2Ugd2l0aCB2YWx1ZSAoJHt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKX0pIGFuZCBsYWJlbCAoJHt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpfSkgcHJvcGVydHkgc2V0dXAuYCwge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnRHJvcGRvd25Db21wb25lbnRFcnJvcidcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5SW5wdXQoKTtcbiAgICB9KTtcblxuICAgIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ01vZGVsVmFsdWUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jdXN0b21JbnB1dFN1YmplY3RcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSh2ID0+IHRoaXMuc2VhcmNoSXRlbXModikpO1xuXG4gICAgICAgIHRoaXMuZmV0Y2hJdGVtcygpO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpICYmICF0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYGFsbG93SW5wdXQgaXMgbm90IHN1cHBvcnRlZCB3aGVuIG9wdGlvbnNMYWJlbFByb3BlcnR5IGlzIGRlZmluZWQgYnV0IG9wdGlvbnNWYWx1ZVByb3BlcnR5IGlzIG1pc3NpbmcuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcyBjaGVjayBpcyByZXF1aXJlZCBiZWNhdXNlIGFuZ3VsYXIgaW4gc29tZSBjYXNlcyB3cml0ZXMgbnVsbCB2YWx1ZVxuICAgICAgICAvLyBiZWZvcmUgdmFsdWUgYWNjZXNzb3IgaXMgaW5pdGlhbGl6ZWRcbiAgICAgICAgLy8gaWYgZm9ybSBjb250cm9sIHZhbHVlIGlzIG9mIHByaW1pdGl2ZSB0eXBlIChleDogZW51bXMpIHRoZW4gd3JpdGUgdmFsdWUgaXMgbm90IGNhbGxlZCAod2UgdGhpbmspXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsICYmIHRoaXMuX3ZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyB3cml0ZSB2YWx1ZSBpbW1lZGlhdGVseSAtIGl0IGlzIGltcG9ydGFudCBzbyB0aGF0IGZpcnN0IHNlbGVjdCBpcyBub3QgdHJpZ2dlcmVkIVxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmFkanVzdFZhbHVlT25JdGVtc1ZhbHVlUHJvcGVydHlUeXBlTWlzbWF0Y2godHJ1ZSk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkJsdXIoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGlmIGFsbG93Q3VzdG9tSW5wdXQgaXMgZW5hYmxlZCwgdGhlIGlucHV0IGVsZW1lbnQgbWlnaHQgc3RpbGwgYmUgaW4gZm9jdXMgd2l0aCB0aGVcbiAgICAgICAgLy8gZHJvcGRvd24gcGFuZWwgaGlkZGVuIC0gdGhhdCdzIHdoeSB0aGUgIXRoaXMuYWxsb3dDdXN0b21JbnB1dCgpIGNoZWNrIGlzIG5lZWRlZFxuICAgICAgICBpZiAodGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biAmJiAhdGhpcy5hbGxvd0lucHV0KCkpIHtcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIGJsdXIgZXZlbnRcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmltZURyb3Bkb3duID0gdGhpcy5wcmltZVNlbGVjdCgpO1xuICAgICAgICBpZiAodGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpICYmIHByaW1lRHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UocHJpbWVEcm9wZG93bi52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgICAgICB0aGlzLmJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkNoYW5nZShldmVudDogU2VsZWN0Q2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNoYW5nZVZhbHVlT25CbHVyKCkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UoZXZlbnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9IHR5cGVvZiBldmVudC52YWx1ZSAhPT0gJ3N0cmluZycgfHwgZXZlbnQudmFsdWUubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogdGhpcy50cmltVmFsdWUoZXZlbnQudmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tSW5wdXRTdWJqZWN0Lm5leHQocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hJdGVtcyhxdWVyeT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVTZWFyY2goKSkge1xuICAgICAgICAgICAgLy8gbm8gbmVlZCB0byByZWZldGNoLCBqdXN0IHNldCBpdGVtcyBmcm9tIGNhY2hlZCBmZXRjaGVkIGl0ZW1zXG4gICAgICAgICAgICB0aGlzLnNldEl0ZW1zKHRoaXMuZmV0Y2hlZEl0ZW1zLCBxdWVyeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZldGNoSXRlbXMocXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaEl0ZW1zKHF1ZXJ5Pzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub3B0aW9uc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU3Vic2NyaXB0aW9uID0gY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuZGF0YVByb3ZpZGVyLCB7aW5qZWN0b3I6IHRoaXMuaW5qZWN0b3J9KSwgdG9PYnNlcnZhYmxlKHRoaXMub3B0aW9ucywge2luamVjdG9yOiB0aGlzLmluamVjdG9yfSldKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX2xvYWRpbmcuc2V0KHRydWUpKSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKFtkYXRhUHJvdmlkZXIsIG9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXJTZXJ2aWNlID0gZGF0YVByb3ZpZGVyLnNlcnZpY2VUeXBlID8gdGhpcy5pbmplY3Rvci5nZXQ8YW55PihkYXRhUHJvdmlkZXIuc2VydmljZVR5cGUpIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zOiBEYXRhTGlzdFBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdDogdGhpcy5hbGxvd0lucHV0KCkgPyAxMCA6IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zTGFiZWxQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gW3twcm9wZXJ0eTogb3B0aW9uc0xhYmVsUHJvcGVydHl9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWVyeSAhPSBudWxsICYmIG9wdGlvbnNMYWJlbFByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zTGFiZWxQcm9wZXJ0eV06IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoTW9kZTogRmlsdGVyTWF0Y2hNb2RlLlN0YXJ0c1dpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21tb25zVG9PYnNlcnZhYmxlKGRhdGFQcm92aWRlci5sb29rdXAocGFyYW1zLCB0aGlzLmRhdGFQcm92aWRlclNlcnZpY2UsIHF1ZXJ5KSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Yob3B0aW9ucyA/PyBbXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoaXRlbXMgPT4gdGhpcy50cmFuc2Zvcm1JdGVtcyhpdGVtcykpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZldGNoZWRJdGVtcyA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhyZXMsIHF1ZXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEZpcnN0SXRlbSgpOyAvLyBvbmx5IHNlbGVjdHMgZmlyc3QgaXRlbSBpZiBzZWxlY3RGaXJzdEl0ZW1JbnB1dCBpcyBzZXQgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGp1c3RWYWx1ZU9uSXRlbXNWYWx1ZVByb3BlcnR5VHlwZU1pc21hdGNoKCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtcyhbXSwgcXVlcnkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZnJvbVN1YnNjcmliZUVycm9yKGVyciwgJ0Ryb3Bkb3duQ29tcG9uZW50RXJyb3InKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGVycm9yLCBnZXRFcnJvckxvZ0xldmVsKGVycm9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaXRlbXMgaW4gdGhlIGRyb3Bkb3duLiBJZiBhIHF1ZXJ5IGlzIHByb3ZpZGVkLCB0aGUgaXRlbXMgd2lsbCBiZSBmaWx0ZXJlZCBieSB0aGUgcXVlcnkgKHVzaW5nIGEgJ3N0YXJ0cyB3aXRoJyBmaWx0ZXIpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zIFRoZSBpdGVtcyB0byBzZXQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRJdGVtcyhpdGVtczogQXJyYXk8YW55PiwgcXVlcnk/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dJbnB1dCgpKSB7XG4gICAgICAgICAgICAvLyBqdXN0IHZhbGlkYXRlIHRoYXQgaXRlbXMgYXJlIGFzIGV4cGVjdGVkIGluIGNhc2Ugb2YgYWxsb3dpbmcgaW5wdXRcbiAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbXMgY2FuIGVpdGhlciBiZSBvYmplY3RzICh3aXRoIG9wdGlvbnNWYWx1ZVByb3BlcnR5IHNwZWNpZnlpbmcgYSBzdHJpbmcgcHJvcGVydHkpIG9yIHN0cmluZ3NcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1zWzBdID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBhbGxvd0lucHV0IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBvcHRpb25WYWx1ZVByb3BlcnR5IGlzIG5vdCBzZXQgYW5kIHRoZSBkcm9wZG93biBpdGVtcyBhcmUgb2YgdHlwZSBvYmplY3QuIFNldCBvcHRpb25zVmFsdWVQcm9wZXJ0eSB0byBlbmFibGUgYWxsb3dJbnB1dC5gXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbXNbMF0/Llt0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCkhXSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgYWxsb3dJbnB1dCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRoZSB2YWx1ZSBwcm9wZXJ0eSAoc3BlY2lmaWVkIHdpdGggb3B0aW9uc1ZhbHVlUHJvcGVydHkpIGlzIG9mIHR5cGUgc3RyaW5nLmApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKHR5cGVvZiBpdGVtc1swXSA9PT0gJ3N0cmluZycgJiYgIXRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKSAmJiAhdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBgJ2FsbG93SW5wdXQnIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBpdGVtcyBvZiB0eXBlIHN0cmluZyBvciBvYmplY3QuIEZvciBvYmplY3QgdHlwZXMsIGVuc3VyZSB0aGF0IHRoZSAnb3B0aW9uc1ZhbHVlUHJvcGVydHknIGlzIHNwZWNpZmllZCBhbmQgcmVwcmVzZW50cyBhIHByb3BlcnR5IG9mIHR5cGUgc3RyaW5nLmBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVlcnkgJiYgcXVlcnkubGVuZ3RoID4gMCAmJiAodGhpcy5pbmxpbmVTZWFyY2goKSB8fCB0aGlzLmFsbG93SW5wdXQoKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5TG93ZXJDYXNlID0gcXVlcnk/LnRvTG93ZXJDYXNlKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zID0gaXRlbXMuZmlsdGVyKGkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBpdGVtTGFiZWwgPSBpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnNMYWJlbFByb3BlcnR5ID0gdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSAmJiB0eXBlb2YgaSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaVtvcHRpb25zTGFiZWxQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChpdGVtTGFiZWwgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnlMb3dlckNhc2UgPT0gbnVsbCB8fCAhcXVlcnlMb3dlckNhc2UubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW1MYWJlbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbUxhYmVsID0gaXRlbUxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtTGFiZWwudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHF1ZXJ5TG93ZXJDYXNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5zZXQoWy4uLmZpbHRlcmVkSXRlbXNdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXMuc2V0KFsuLi5pdGVtc10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsU2hvdygpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93blBhbmVsSGlkZSgpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3Bkb3duUGFuZWxTaG93biA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9uRm9jdXMoKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgICB9XG5cbiAgICBvbk11bHRpc2VsZWN0Q2hhbmdlKGV2ZW50OiBNdWx0aVNlbGVjdENoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5jaGFuZ2VWYWx1ZU9uQmx1cigpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTXVsdGlzZWxlY3RCbHVyKGV2ZW50OiBNdWx0aVNlbGVjdEJsdXJFdmVudCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KGV2ZW50Lm9yaWdpbmFsRXZlbnQpO1xuICAgIH1cblxuICAgIG9uTXVsdGlzZWxlY3RQYW5lbEhpZGUoKSB7XG4gICAgICAgIGNvbnN0IHByaW1lTXVsdGlzZWxlY3QgPSB0aGlzLnByaW1lTXVsdGlzZWxlY3QoKTtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlVmFsdWVPbkJsdXIoKSAmJiBwcmltZU11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZVZhbHVlQ2hhbmdlKHByaW1lTXVsdGlzZWxlY3QudmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RGaXJzdEl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLmZpcnN0VGltZVNldHRpbmdJdGVtcyAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdEZpcnN0SXRlbUlucHV0KCkgJiYgIXRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zVmFsdWVQcm9wZXJ0eSA9IHRoaXMub3B0aW9uc1ZhbHVlUHJvcGVydHkoKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb3B0aW9uc1ZhbHVlUHJvcGVydHkgPyB0aGlzLml0ZW1zKClbMF1bb3B0aW9uc1ZhbHVlUHJvcGVydHldIDogdGhpcy5pdGVtcygpWzBdO1xuICAgICAgICAgICAgdGhpcy5uZ01vZGVsVmFsdWUuc2V0KHZhbHVlKTsgLy8gc2V0IHRvIHdyaXRlIGZvciBpbnB1dFxuICAgICAgICAgICAgdGhpcy5maXJzdFRpbWVTZXR0aW5nSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1JdGVtcyhpdGVtczogYW55W10pIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9uc0xhYmVsVHJhbnNsYXRlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5czogc3RyaW5nW10gPSBpdGVtcy5tYXAoXG4gICAgICAgICAgICAgICAgaXRlbSA9PiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIHRoaXMub3B0aW9uc0xhYmVsUHJvcGVydHlJbml0KCkgPyAoaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nKSA6IGl0ZW0pIGFzIHN0cmluZ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHRyYW5zbGF0aW9uS2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuc3RyZWFtKHRyYW5zbGF0aW9uS2V5cykucGlwZShcbiAgICAgICAgICAgICAgICBtYXAodHJhbnNsYXRpb25zID0+XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eUluaXQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gaXRlbVt0aGlzLm9wdGlvbnNMYWJlbFByb3BlcnR5SW5pdCgpIGFzIGtleW9mIG9iamVjdF0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBuYXJyb3dJMThuVG9UcmFuc2xhdGlvbih0cmFuc2xhdGlvbnMsIGxhYmVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtLCBbdGhpcy5vcHRpb25zTGFiZWxQcm9wZXJ0eSgpIV06IHRyYW5zbGF0aW9ufTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsuLi5pdGVtfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNsYXRpb24gPSB0cmFuc2xhdGlvbnNbaXRlbV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMub3B0aW9uc0xhYmVsUHJvcGVydHkoKSFdOiB0cmFuc2xhdGlvbiA/PyBpdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy5vcHRpb25zVmFsdWVQcm9wZXJ0eSgpIV06IGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGp1c3RWYWx1ZU9uSXRlbXNWYWx1ZVByb3BlcnR5VHlwZU1pc21hdGNoKHNldE5nTW9kZWxWYWx1ZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnNWYWx1ZVByb3AgPSB0aGlzLm9wdGlvbnNWYWx1ZVByb3BlcnR5KCk7XG4gICAgICAgIGlmIChvcHRpb25zVmFsdWVQcm9wICYmIHRoaXMuX3ZhbHVlICE9IG51bGwgJiYgdGhpcy5pdGVtcygpLmxlbmd0aCA+IDAgJiYgdGhpcy5pdGVtcygpWzBdW29wdGlvbnNWYWx1ZVByb3BdICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl92YWx1ZS5sZW5ndGggPiAwICYmIHR5cGVvZiB0aGlzLml0ZW1zKClbMF1bb3B0aW9uc1ZhbHVlUHJvcF0gIT09IHR5cGVvZiB0aGlzLl92YWx1ZVswXSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmdWYWx1ZXMgPSB0aGlzLl92YWx1ZS5tYXAodiA9PiB2LnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSB0aGlzLml0ZW1zKCkuZmlsdGVyKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wXSAhPSBudWxsICYmIHN0cmluZ1ZhbHVlcy5pbmNsdWRlcyhpW29wdGlvbnNWYWx1ZVByb3BdLnRvU3RyaW5nKCkpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQoc2VsZWN0ZWRPcHRpb25zLm1hcChpID0+IGlbb3B0aW9uc1ZhbHVlUHJvcF0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuaXRlbXMoKVswXVtvcHRpb25zVmFsdWVQcm9wXSAhPT0gdHlwZW9mIHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgLy8gdHlwZXMgZG9uJ3QgbWF0Y2gsIHNlYXJjaCBhbmQgY29tcGFyZSBieSBzdHJpbmdcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuaXRlbXMoKS5maW5kKGkgPT4gaVtvcHRpb25zVmFsdWVQcm9wXSAhPSBudWxsICYmIGlbb3B0aW9uc1ZhbHVlUHJvcF0udG9TdHJpbmcoKSA9PT0gdGhpcy5fdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmdNb2RlbFZhbHVlLnNldChzZWxlY3RlZE9wdGlvbltvcHRpb25zVmFsdWVQcm9wXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2V0TmdNb2RlbFZhbHVlKSB7XG4gICAgICAgICAgICAvLyBmb3JjZSB3cml0ZSB0byBuZ01vZGVsVmFsdWUgYW55d2F5XG4gICAgICAgICAgICB0aGlzLm5nTW9kZWxWYWx1ZS5zZXQodGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9wYWdhdGVWYWx1ZUNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VGbih2YWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpbXMgdGhlIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSB0aGUgZ2l2ZW4gdmFsdWUgYmFzZWQgb24gdGhlIHNlYXJjaCB0cmltbWluZyBtb2RlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIHRyaW1tZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0cmltVmFsdWUodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuc2VhcmNoVHJpbSgpKSB7XG4gICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy50cmltRW5kKCk7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU/LnRyaW0oKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPHAtaW5wdXRncm91cD5cbiAgICBAZm9yIChwdCBvZiBwcmVwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInB0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbiAgICBAaWYgKCFtdWx0aXNlbGVjdCgpKSB7XG4gICAgICAgIDxwLXNlbGVjdFxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZ01vZGVsVmFsdWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwib3B0aW9uc0xhYmVsUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwib3B0aW9uc1ZhbHVlUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uRGlzYWJsZWRdPVwib3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJpdGVtcygpXCJcbiAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwic2hvd0NsZWFyKClcIlxuICAgICAgICAgICAgW2VkaXRhYmxlXT1cImFsbG93SW5wdXQoKVwiXG4gICAgICAgICAgICBbc3R5bGVDbGFzc109XCJjbGFzc05hbWUoKVwiXG4gICAgICAgICAgICBbcGFuZWxTdHlsZUNsYXNzXT1cImRyb3Bkb3duQ2xhc3NOYW1lKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgW2ZpbHRlcl09XCJpbmxpbmVTZWFyY2goKSAmJiAhYWxsb3dJbnB1dCgpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJCeV09XCJvcHRpb25zTGFiZWxQcm9wZXJ0eSgpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25Ecm9wZG93bkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DaGFuZ2UpPVwib25Ecm9wZG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIChvblNob3cpPVwib25Ecm9wZG93blBhbmVsU2hvdygpXCJcbiAgICAgICAgICAgIChvbkhpZGUpPVwib25Ecm9wZG93blBhbmVsSGlkZSgpXCJcbiAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgICBbZHJvcGRvd25JY29uXT1cImxvYWRpbmcoKSA/ICdwaSBwaS1zcGlubmVyIHBpLXNwaW4nIDogJ3BpIHBpLWNoZXZyb24tZG93bidcIlxuICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvKClcIj5cbiAgICAgICAgPC9wLXNlbGVjdD5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgIFtuZ01vZGVsXT1cIm5nTW9kZWxWYWx1ZSgpXCJcbiAgICAgICAgICAgIFttYXhTZWxlY3RlZExhYmVsc109XCIxXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zTGFiZWxdPVwiJ21uZ0Ryb3Bkb3duLm11bHRpc2VsZWN0T3Zlck1heERpc3BsYXlMaW1pdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICAgW2RhdGFLZXldPVwib3B0aW9uc1RyYWNrUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwib3B0aW9uc0xhYmVsUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwib3B0aW9uc1ZhbHVlUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uRGlzYWJsZWRdPVwib3B0aW9uc0Rpc2FibGVkUHJvcGVydHkoKVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJpdGVtcygpXCJcbiAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImNsYXNzTmFtZSgpXCJcbiAgICAgICAgICAgIFtwYW5lbFN0eWxlQ2xhc3NdPVwiZHJvcGRvd25DbGFzc05hbWUoKVwiXG4gICAgICAgICAgICBbZmlsdGVyXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dUb2dnbGVBbGxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkKClcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uTXVsdGlzZWxlY3RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25QYW5lbEhpZGUpPVwib25NdWx0aXNlbGVjdFBhbmVsSGlkZSgpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25NdWx0aXNlbGVjdEJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAob25Gb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XG4gICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cbiAgICB9XG4gICAgQGZvciAoYXQgb2YgYXBwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImF0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbjwvcC1pbnB1dGdyb3VwPlxuIl19","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation, booleanAttribute, computed, effect, forwardRef, inject, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { InputGroup } from 'primeng/inputgroup';\nimport { InputGroupAddon } from 'primeng/inputgroupaddon';\nimport { InputNumber } from 'primeng/inputnumber';\nimport { merge } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nexport const NUMBER_RANGE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport const NUMBER_RANGE_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\nexport class NumberRangeComponent {\n get fromCtrl() {\n return this.fromToFormControl.get('from');\n }\n get toCtrl() {\n return this.fromToFormControl.get('to');\n }\n constructor() {\n this.formBuilder = inject(FormBuilder);\n this.cdr = inject(ChangeDetectorRef);\n this.placeholder = input(...(ngDevMode ? [undefined, { debugName: \"placeholder\" }] : []));\n this.useGrouping = input(true, ...(ngDevMode ? [{ debugName: \"useGrouping\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.minFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"minFractionDigits\" }] : []));\n this.maxFractionDigits = input(...(ngDevMode ? [undefined, { debugName: \"maxFractionDigits\" }] : []));\n this.required = input(false, ...(ngDevMode ? [{ debugName: \"required\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.disabled = input(false, ...(ngDevMode ? [{ debugName: \"disabled\", transform: booleanAttribute }] : [{\n transform: booleanAttribute\n }]));\n this.vertical = input(false, ...(ngDevMode ? [{ debugName: \"vertical\", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));\n this.templates = input([], ...(ngDevMode ? [{ debugName: \"templates\" }] : []));\n this.className = input(...(ngDevMode ? [undefined, { debugName: \"className\" }] : []));\n this.keyDown = output();\n this.prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'), ...(ngDevMode ? [{ debugName: \"prependTemplates\" }] : []));\n this.appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'), ...(ngDevMode ? [{ debugName: \"appendTemplates\" }] : []));\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onChangeFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onTouchedFn = () => { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onValidatorChangeFn = () => { };\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n setDisabledState(isDisabled) {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n }\n else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n writeValue(obj) {\n let start = null;\n let end = null;\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n }\n else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n this.fromCtrl.setValue(start, { emitEvent: false });\n this.toCtrl.setValue(end, { emitEvent: false });\n }\n validate() {\n if (!this.required())\n return null;\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n return null;\n }\n onKeyDown(event) {\n this.keyDown.emit(event);\n }\n onBlur() {\n this.onTouchedFn();\n }\n toNumber(val) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n onValueChange() {\n const fromDate = this.fromCtrl.value;\n const toDate = this.toCtrl.value;\n this.onChangeFn([fromDate, toDate]);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.7\", type: NumberRangeComponent, isStandalone: true, selector: \"mng-number-range\", inputs: { placeholder: { classPropertyName: \"placeholder\", publicName: \"placeholder\", isSignal: true, isRequired: false, transformFunction: null }, useGrouping: { classPropertyName: \"useGrouping\", publicName: \"useGrouping\", isSignal: true, isRequired: false, transformFunction: null }, minFractionDigits: { classPropertyName: \"minFractionDigits\", publicName: \"minFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, maxFractionDigits: { classPropertyName: \"maxFractionDigits\", publicName: \"maxFractionDigits\", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: \"required\", publicName: \"required\", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, vertical: { classPropertyName: \"vertical\", publicName: \"vertical\", isSignal: true, isRequired: false, transformFunction: null }, templates: { classPropertyName: \"templates\", publicName: \"templates\", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: \"className\", publicName: \"className\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keyDown: \"keyDown\" }, providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], ngImport: i0, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n</div>\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: InputNumber, selector: \"p-inputNumber, p-inputnumber, p-input-number\", inputs: [\"showButtons\", \"format\", \"buttonLayout\", \"inputId\", \"styleClass\", \"placeholder\", \"tabindex\", \"title\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"ariaLabel\", \"ariaRequired\", \"autocomplete\", \"incrementButtonClass\", \"decrementButtonClass\", \"incrementButtonIcon\", \"decrementButtonIcon\", \"readonly\", \"allowEmpty\", \"locale\", \"localeMatcher\", \"mode\", \"currency\", \"currencyDisplay\", \"useGrouping\", \"minFractionDigits\", \"maxFractionDigits\", \"prefix\", \"suffix\", \"inputStyle\", \"inputStyleClass\", \"showClear\", \"autofocus\"], outputs: [\"onInput\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onClear\"] }, { kind: \"component\", type: InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"component\", type: InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: TranslatePipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mng-number-range', providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR], imports: [FormsModule, ReactiveFormsModule, InputNumber, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"<div class=\\\"flex gap-1\\\" [class.flex-col]=\\\"vertical()\\\">\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"fromCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [max]=\\\"toCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n <p-inputgroup>\\n <ng-container *ngTemplateOutlet=\\\"prependAddons\\\"></ng-container>\\n <p-inputNumber\\n [formControl]=\\\"toCtrl\\\"\\n [placeholder]=\\\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\\\"\\n [useGrouping]=\\\"useGrouping()\\\"\\n [minFractionDigits]=\\\"minFractionDigits()\\\"\\n [maxFractionDigits]=\\\"maxFractionDigits()\\\"\\n [min]=\\\"fromCtrl.value\\\"\\n [inputStyleClass]=\\\"className()\\\"\\n (onKeyDown)=\\\"onKeyDown($event)\\\"\\n (onBlur)=\\\"onBlur()\\\" />\\n <ng-container *ngTemplateOutlet=\\\"appendAddons\\\"></ng-container>\\n </p-inputgroup>\\n</div>\\n\\n<ng-template #prependAddons>\\n @for (pt of prependTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"pt.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n<ng-template #appendAddons>\\n @for (at of appendTemplates(); track $index) {\\n <p-inputgroup-addon>\\n <ng-container *ngTemplateOutlet=\\\"at.template\\\"></ng-container>\\n </p-inputgroup-addon>\\n }\\n</ng-template>\\n\", styles: [\"mng-number-range.ng-dirty.ng-invalid>div>p-inputnumber .p-inputtext{border-color:var(--p-inputtext-invalid-border-color, #f87171)}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL251bWJlci1yYW5nZS9udW1iZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUVILFdBQVcsRUFHWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixtQkFBbUIsRUFHbkIsVUFBVSxFQUNiLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7OztBQU0zQixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBcUI7SUFDekQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXhpc3RpbmdQcm92aWRlcixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICBvdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQnVpbGRlcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3JtR3JvdXAsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTkdfVkFMSURBVE9SUyxcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yLFxuICAgIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVBpcGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtJbnB1dEdyb3VwfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHtJbnB1dEdyb3VwQWRkb259IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7SW5wdXROdW1iZXJ9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xuaW1wb3J0IHttZXJnZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7TnVsbGFibGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7TnVtYmVyUmFuZ2VUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi9udW1iZXItcmFuZ2UtdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuZXhwb3J0IGNvbnN0IE5VTUJFUl9SQU5HRV9WQUxVRV9BQ0NFU1NPUjogRXhpc3RpbmdQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJSYW5nZUNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfUkFOR0VfVkFMSURBVE9SOiBFeGlzdGluZ1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnVtYmVyUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1udW1iZXItcmFuZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9udW1iZXItcmFuZ2UuY29tcG9uZW50LmNzcycsXG4gICAgcHJvdmlkZXJzOiBbTlVNQkVSX1JBTkdFX1ZBTFVFX0FDQ0VTU09SLCBOVU1CRVJfUkFOR0VfVkFMSURBVE9SXSxcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElucHV0TnVtYmVyLCBJbnB1dEdyb3VwLCBJbnB1dEdyb3VwQWRkb24sIE5nVGVtcGxhdGVPdXRsZXQsIFRyYW5zbGF0ZVBpcGVdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyUmFuZ2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwdWJsaWMgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCk7XG4gICAgcHVibGljIHVzZUdyb3VwaW5nID0gaW5wdXQodHJ1ZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyBtaW5GcmFjdGlvbkRpZ2l0cyA9IGlucHV0PG51bWJlcj4oKTtcbiAgICBwdWJsaWMgbWF4RnJhY3Rpb25EaWdpdHMgPSBpbnB1dDxudW1iZXI+KCk7XG4gICAgcHVibGljIHJlcXVpcmVkID0gaW5wdXQoZmFsc2UsIHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KTtcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwge1xuICAgICAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGVcbiAgICB9KTtcbiAgICBwdWJsaWMgdmVydGljYWwgPSBpbnB1dChmYWxzZSwge3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pO1xuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXMgPSBpbnB1dDxOdW1iZXJSYW5nZVRlbXBsYXRlRGlyZWN0aXZlW10+KFtdKTtcbiAgICBwdWJsaWMgY2xhc3NOYW1lID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgcHVibGljIGtleURvd24gPSBvdXRwdXQ8S2V5Ym9hcmRFdmVudD4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSBwcmVwZW5kVGVtcGxhdGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50ZW1wbGF0ZXMoKS5maWx0ZXIodCA9PiB0Lm5hbWUoKSA9PT0gJ3ByZXBlbmQnKSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGFwcGVuZFRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGVtcGxhdGVzKCkuZmlsdGVyKHQgPT4gdC5uYW1lKCkgPT09ICdhcHBlbmQnKSk7XG5cbiAgICBwcml2YXRlIGZyb21Ub0Zvcm1Db250cm9sOiBGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgZnJvbTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB0bzogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgfSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUZuOiBhbnkgPSAoKSA9PiB7fTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoZWRGbjogYW55ID0gKCkgPT4ge307XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2VGbjogYW55ID0gKCkgPT4ge307XG5cbiAgICBwdWJsaWMgZ2V0IGZyb21DdHJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5nZXQoJ2Zyb20nKSBhcyBGb3JtQ29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvQ3RybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZ2V0KCd0bycpIGFzIEZvcm1Db250cm9sO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlZFN0YXRlKHRoaXMuZGlzYWJsZWQoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lcmdlKHRoaXMuZnJvbUN0cmwudmFsdWVDaGFuZ2VzLCB0aGlzLnRvQ3RybC52YWx1ZUNoYW5nZXMpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5vblZhbHVlQ2hhbmdlKCkpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzRGlzYWJsZWQgJiYgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbD8uZW5hYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzRGlzYWJsZWQgJiYgdGhpcy5mcm9tVG9Gb3JtQ29udHJvbD8uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZnJvbVRvRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCBzdGFydDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgICAgIGxldCBlbmQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIGlmIChvYmoubGVuZ3RoID4gMCAmJiAodHlwZW9mIG9ialswXSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9ialswXSA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLnRvTnVtYmVyKG9ialswXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2JqLmxlbmd0aCA+IDEgJiYgKHR5cGVvZiBvYmpbMV0gPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvYmpbMV0gPT09ICdudW1iZXInKSkge1xuICAgICAgICAgICAgICAgIGVuZCA9IHRoaXMudG9OdW1iZXIob2JqWzFdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc3RhcnQgPSB0aGlzLnRvTnVtYmVyKG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZyb21DdHJsLnNldFZhbHVlKHN0YXJ0LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICB0aGlzLnRvQ3RybC5zZXRWYWx1ZShlbmQsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMucmVxdWlyZWQoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKHRoaXMuZnJvbUN0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgfHwgdGhpcy50b0N0cmwuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5rZXlEb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRGbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9OdW1iZXIodmFsOiBOdWxsYWJsZTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gICAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbCA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlQWxsKCcsJywgJycpO1xuICAgICAgICBjb25zdCBudW1WYWwgPSBwYXJzZUZsb2F0KHZhbCk7XG4gICAgICAgIHJldHVybiBpc05hTihudW1WYWwpID8gbnVsbCA6IG51bVZhbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uVmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIGNvbnN0IGZyb21EYXRlID0gdGhpcy5mcm9tQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICBjb25zdCB0b0RhdGUgPSB0aGlzLnRvQ3RybC52YWx1ZSBhcyBEYXRlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlRm4oW2Zyb21EYXRlLCB0b0RhdGVdKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMVwiIFtjbGFzcy5mbGV4LWNvbF09XCJ2ZXJ0aWNhbCgpXCI+XG4gICAgPHAtaW5wdXRncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmcm9tQ3RybFwiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKSArICcgJyArICgnbW5nVGFibGUuZmlsdGVyUmFuZ2VGcm9tJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3VzZUdyb3VwaW5nXT1cInVzZUdyb3VwaW5nKClcIlxuICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cIm1pbkZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIm1heEZyYWN0aW9uRGlnaXRzKClcIlxuICAgICAgICAgICAgW21heF09XCJ0b0N0cmwudmFsdWVcIlxuICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJjbGFzc05hbWUoKVwiXG4gICAgICAgICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwZW5kQWRkb25zXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9wLWlucHV0Z3JvdXA+XG4gICAgPHAtaW5wdXRncm91cD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXBlbmRBZGRvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0b0N0cmxcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKCkgKyAnICcgKyAoJ21uZ1RhYmxlLmZpbHRlclJhbmdlVG8nIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdXNlR3JvdXBpbmddPVwidXNlR3JvdXBpbmcoKVwiXG4gICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwibWluRnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwibWF4RnJhY3Rpb25EaWdpdHMoKVwiXG4gICAgICAgICAgICBbbWluXT1cImZyb21DdHJsLnZhbHVlXCJcbiAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiY2xhc3NOYW1lKClcIlxuICAgICAgICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAob25CbHVyKT1cIm9uQmx1cigpXCIgLz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFwcGVuZEFkZG9uc1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvcC1pbnB1dGdyb3VwPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjcHJlcGVuZEFkZG9ucz5cbiAgICBAZm9yIChwdCBvZiBwcmVwZW5kVGVtcGxhdGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInB0LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FwcGVuZEFkZG9ucz5cbiAgICBAZm9yIChhdCBvZiBhcHBlbmRUZW1wbGF0ZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgIDxwLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXQudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\nexport class InputEmptyValueDirective {\n constructor() {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n this.mngInputEmptyValue = input('undefined', ...(ngDevMode ? [{ debugName: \"mngInputEmptyValue\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #afterNextRenderRef;\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, { emitEvent: false });\n }\n }\n }\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue() {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputEmptyValueDirective, isStandalone: true, selector: \"[mngInputEmptyValue]\", inputs: { mngInputEmptyValue: { classPropertyName: \"mngInputEmptyValue\", publicName: \"mngInputEmptyValue\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputEmptyValueDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputEmptyValue]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZW1wdHktdmFsdWUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vZm9ybS9zcmMvZGlyZWN0aXZlcy9pbnB1dC1lbXB0eS12YWx1ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFJekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBS0gsTUFBTSxPQUFPLHdCQUF3QjtJQUpyQztRQUtJOzs7O1dBSUc7UUFDSSx1QkFBa0IsR0FBRyxLQUFLLENBQWlCLFdBQVcsOERBQUMsQ0FBQztRQUV0RCxRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDakQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV2Qyx3QkFBbUIsR0FBRyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBNEIsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFL0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0tBdUNOO0lBbERZLEdBQUcsQ0FBc0I7SUFDekIsVUFBVSxDQUF1QztJQUNqRCxTQUFTLENBQXFCO0lBRXZDLG1CQUFtQixDQU9oQjtJQUVIOzs7O09BSUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFFN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ25ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUV6QyxpRkFBaUY7WUFDakYsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYztRQUNWLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztZQUNoQyxLQUFLLE1BQU07Z0JBQ1AsT0FBTyxJQUFJLENBQUM7WUFDaEIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sRUFBRSxDQUFDO1lBQ2QsS0FBSyxXQUFXLENBQUM7WUFDakI7Z0JBQ0ksT0FBTyxTQUFTLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7OEdBekRRLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUpwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7RW1wdHlWYWx1ZVR5cGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGNvbnZlcnRzIGVtcHR5IHN0cmluZyB2YWx1ZXMgdG8gdW5kZWZpbmVkIG9yIG51bGwgd2hlbiB0aGUgaW5wdXQgbG9zZXMgZm9jdXMuXG4gKiBDYW4gYWxzbyBiZSBjb25maWd1cmVkIHRvIGxlYXZlIGVtcHR5IHN0cmluZ3MgYXMgaXMuXG4gKlxuICogVXNhZ2U6XG4gKiBgYGBodG1sXG4gKiA8aW5wdXQgbW5nSW5wdXRFbXB0eVZhbHVlPVwidW5kZWZpbmVkXCIgLz5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gdW5kZWZpbmVkIChkZWZhdWx0IGJlaGF2aW9yKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZSAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDb252ZXJ0IGVtcHR5IHN0cmluZ3MgdG8gbnVsbFxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm51bGxcIiAvPlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBMZWF2ZSBlbXB0eSBzdHJpbmdzIGFzIGlzIChubyBjb252ZXJzaW9uKVxuICogPGlucHV0IG1uZ0lucHV0RW1wdHlWYWx1ZT1cIm5vbmVcIiAvPlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdJbnB1dEVtcHR5VmFsdWVdJyxcbiAgICBob3N0OiB7JyhibHVyKSc6ICdvbkJsdXIoKSd9XG59KVxuZXhwb3J0IGNsYXNzIElucHV0RW1wdHlWYWx1ZURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogSW5wdXQgcHJvcGVydHkgdGhhdCBzcGVjaWZpZXMgaG93IGVtcHR5IHN0cmluZyB2YWx1ZXMgc2hvdWxkIGJlIGhhbmRsZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAndW5kZWZpbmVkJ1xuICAgICAqL1xuICAgIHB1YmxpYyBtbmdJbnB1dEVtcHR5VmFsdWUgPSBpbnB1dDxFbXB0eVZhbHVlVHlwZT4oJ3VuZGVmaW5lZCcpO1xuXG4gICAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHJlYWRvbmx5ICNuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICByZWFkb25seSAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNyZW5kZXJlci5saXN0ZW4oaW5wdXRDaGlsZEVsZW1lbnQsICdibHVyJywgKCkgPT4gdGhpcy5vbkJsdXIoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXIgZm9yIHRoZSBibHVyIGV2ZW50LlxuICAgICAqIENoZWNrcyBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgYW4gZW1wdHkgc3RyaW5nIGFuZCBjb252ZXJ0cyBpdCB0byB1bmRlZmluZWQsIG51bGwsIG9yIGxlYXZlcyBpdCBhcyBpc1xuICAgICAqIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIG9uQmx1cigpIHtcbiAgICAgICAgaWYgKCF0aGlzLiNuZ0NvbnRyb2w/LmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbC52YWx1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICBjb25zdCBlbXB0eVZhbHVlID0gdGhpcy4jZ2V0RW1wdHlWYWx1ZSgpO1xuXG4gICAgICAgICAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdmFsdWUgaWYgd2UncmUgbm90IHVzaW5nICdub25lJyBvcHRpb24gKHdoaWNoIHdvdWxkIHJldHVybiAnJylcbiAgICAgICAgICAgIGlmIChlbXB0eVZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgICAgIHRoaXMuI25nQ29udHJvbC5jb250cm9sLnNldFZhbHVlKGVtcHR5VmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhcHByb3ByaWF0ZSBlbXB0eSB2YWx1ZSBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHVuZGVmaW5lZCwgbnVsbCwgb3IgZW1wdHkgc3RyaW5nIGJhc2VkIG9uIHRoZSBtbmdJbnB1dEVtcHR5VmFsdWUgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgICNnZXRFbXB0eVZhbHVlKCk6IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubW5nSW5wdXRFbXB0eVZhbHVlKCkpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY2FzZSAnbm9uZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==","import { Directive, ElementRef, Renderer2, afterNextRender, inject, input } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nexport class InputTrimDirective {\n constructor() {\n this.mngInputTrim = input(...(ngDevMode ? [undefined, { debugName: \"mngInputTrim\" }] : []));\n this.#el = inject(ElementRef);\n this.#ngControl = inject(NgControl, { optional: true });\n this.#renderer = inject(Renderer2);\n this.#inputEl = this.#el.nativeElement;\n this.#afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement;\n const inputChildElement = nativeElement.querySelector('input');\n if (inputChildElement) {\n this.#inputEl = inputChildElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n #el;\n #ngControl;\n #renderer;\n #inputEl;\n #afterNextRenderRef;\n onBlur() {\n const control = this.#ngControl?.control;\n const value = control ? control.value : this.#inputEl.value;\n let trimmedValue;\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, { emitEvent: false });\n }\n else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n }\n #getTrimmedValue(value) {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: InputTrimDirective, isStandalone: true, selector: \"[mngInputTrim]\", inputs: { mngInputTrim: { classPropertyName: \"mngInputTrim\", publicName: \"mngInputTrim\", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { \"blur\": \"onBlur()\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: InputTrimDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngInputTrim]',\n host: { '(blur)': 'onBlur()' }\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9mb3JtL3NyYy9kaXJlY3RpdmVzL2lucHV0LXRyaW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBUXpDLE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFLb0IsaUJBQVksR0FBRyxLQUFLLGtFQUFpQixDQUFDO1FBRTdDLFFBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZDLGFBQVEsR0FBcUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFpQyxDQUFDO1FBRXhFLHdCQUFtQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUE0QixDQUFDO1lBQzVELE1BQU0saUJBQWlCLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUvRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUJBQXFDLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FnQ047SUE5Q1ksR0FBRyxDQUFzQjtJQUN6QixVQUFVLENBQXVDO0lBQ2pELFNBQVMsQ0FBcUI7SUFFdkMsUUFBUSxDQUFnRTtJQUV4RSxtQkFBbUIsQ0FRaEI7SUFFTyxNQUFNO1FBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM1RCxJQUFJLFlBQW9CLENBQUM7UUFFekIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTVDLElBQUksWUFBWSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUNWLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7Z0JBQ3ZDLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDMUIsS0FBSyxNQUFNO2dCQUNQLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLEtBQUssT0FBTztnQkFDUixPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QixLQUFLLEtBQUs7Z0JBQ04sT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0I7Z0JBQ0ksT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQztJQUNMLENBQUM7OEdBaERRLGtCQUFrQjtrR0FBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7SW5wdXRUcmltVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21uZ0lucHV0VHJpbV0nLFxuICAgIGhvc3Q6IHsnKGJsdXIpJzogJ29uQmx1cigpJ31cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRUcmltRGlyZWN0aXZlIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW5nSW5wdXRUcmltID0gaW5wdXQ8SW5wdXRUcmltVHlwZT4oKTtcblxuICAgIHJlYWRvbmx5ICNlbCA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgICByZWFkb25seSAjbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAjaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgICNhZnRlck5leHRSZW5kZXJSZWYgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBuYXRpdmVFbGVtZW50ID0gdGhpcy4jZWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaW5wdXRDaGlsZEVsZW1lbnQgPSBuYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XG5cbiAgICAgICAgaWYgKGlucHV0Q2hpbGRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLiNpbnB1dEVsID0gaW5wdXRDaGlsZEVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLmxpc3RlbihpbnB1dENoaWxkRWxlbWVudCwgJ2JsdXInLCAoKSA9PiB0aGlzLm9uQmx1cigpKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIG9uQmx1cigpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuI25nQ29udHJvbD8uY29udHJvbDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sID8gY29udHJvbC52YWx1ZSA6IHRoaXMuI2lucHV0RWwudmFsdWU7XG4gICAgICAgIGxldCB0cmltbWVkVmFsdWU6IHN0cmluZztcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdHJpbW1lZFZhbHVlID0gdGhpcy4jZ2V0VHJpbW1lZFZhbHVlKHZhbHVlKTtcblxuICAgICAgICAgICAgaWYgKHRyaW1tZWRWYWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodHJpbW1lZFZhbHVlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2lucHV0RWwudmFsdWUgPSB0cmltbWVkVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgI2dldFRyaW1tZWRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgc3dpdGNoICh0aGlzLm1uZ0lucHV0VHJpbSgpKSB7XG4gICAgICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltU3RhcnQoKTtcbiAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRyaW1FbmQoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class AutocompleteTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: AutocompleteTemplateDirective, isStandalone: true, selector: \"[mngAutocompleteTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngAutocompleteTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: AutocompleteTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngAutocompleteTemplate]',\n exportAs: 'mngAutocompleteTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyw2QkFBOEIsU0FBUSxpQkFBMkI7SUFKOUU7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdBdXRvY29tcGxldGVUZW1wbGF0ZV0nLFxuICAgIGV4cG9ydEFzOiAnbW5nQXV0b2NvbXBsZXRlVGVtcGxhdGUnXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class DateRangeTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: DateRangeTemplateDirective, isStandalone: true, selector: \"[mngDateRangeTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngDateRangeTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DateRangeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngDateRangeTemplate]',\n exportAs: 'mngDateRangeTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9mb3JtL3NyYy9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBMkI7SUFKM0U7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdEYXRlUmFuZ2VUZW1wbGF0ZV0nLFxuICAgIGV4cG9ydEFzOiAnbW5nRGF0ZVJhbmdlVGVtcGxhdGUnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class DropdownTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: DropdownTemplateDirective, isStandalone: true, selector: \"[mngDropdownTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngDropdownTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: DropdownTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngDropdownTemplate]',\n exportAs: 'mngDropdownTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vZm9ybS9zcmMvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxpQkFBMkI7SUFKMUU7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFFBQVEsRUFBRSxxQkFBcUI7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdEcm9wZG93blRlbXBsYXRlXScsXG4gICAgZXhwb3J0QXM6ICdtbmdEcm9wZG93blRlbXBsYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93blRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","import { Directive, input } from '@angular/core';\nimport { TemplateDirective } from '@mediusinc/mng-commons/core';\nimport * as i0 from \"@angular/core\";\nexport class NumberRangeTemplateDirective extends TemplateDirective {\n constructor() {\n super(...arguments);\n this.name = input.required(...(ngDevMode ? [{ debugName: \"name\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeTemplateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: NumberRangeTemplateDirective, isStandalone: true, selector: \"[mngNumberRangeTemplate]\", inputs: { name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: true, transformFunction: null } }, exportAs: [\"mngNumberRangeTemplate\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NumberRangeTemplateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[mngNumberRangeTemplate]',\n exportAs: 'mngNumberRangeTemplate'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Zvcm0vc3JjL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS10ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7O0FBUTlELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxpQkFBMkI7SUFKN0U7O1FBSzZCLFNBQUksR0FBRyxLQUFLLENBQUMsUUFBUSwrQ0FBWSxDQUFDO0tBQzlEOzhHQUZZLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxudHlwZSBOYW1lVHlwZSA9ICdwcmVwZW5kJyB8ICdhcHBlbmQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1ttbmdOdW1iZXJSYW5nZVRlbXBsYXRlXScsXG4gICAgZXhwb3J0QXM6ICdtbmdOdW1iZXJSYW5nZVRlbXBsYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJSYW5nZVRlbXBsYXRlRGlyZWN0aXZlIGV4dGVuZHMgVGVtcGxhdGVEaXJlY3RpdmU8TmFtZVR5cGU+IHtcbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVhZG9ubHkgbmFtZSA9IGlucHV0LnJlcXVpcmVkPE5hbWVUeXBlPigpO1xufVxuIl19","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\nexport * from './components/autocomplete/autocomplete-template.directive';\nexport * from './components/date-range/date-range-template.directive';\nexport * from './components/dropdown/dropdown-template.directive';\nexport * from './components/number-range/number-range-template.directive';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSxhQUFhO0FBQ2IsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG1DQUFtQyxDQUFDO0FBRWxELGNBQWMsMkRBQTJELENBQUM7QUFDMUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsMkRBQTJELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RhdGUtcmFuZ2UvZGF0ZS1yYW5nZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvbnVtYmVyLXJhbmdlL251bWJlci1yYW5nZS5jb21wb25lbnQnO1xuXG4vLyBkaXJlY3RpdmVzXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtZW1wdHktdmFsdWUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9pbnB1dC10cmltLmRpcmVjdGl2ZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZS1yYW5nZS9kYXRlLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24vZHJvcGRvd24tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9udW1iZXItcmFuZ2UvbnVtYmVyLXJhbmdlLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaXVzaW5jLW1uZy1jb21tb25zLWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9mb3JtL3NyYy9tZWRpdXNpbmMtbW5nLWNvbW1vbnMtZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["toObservable","commonsToObservable","map"],"mappings":"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"}