@koobiq/components 18.28.0 → 18.30.0

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 (410) hide show
  1. package/accordion/accordion-trigger.component.scss +2 -0
  2. package/actions-panel/actions-panel-container.scss +4 -1
  3. package/actions-panel/actions-panel-tokens.scss +2 -1
  4. package/breadcrumbs/breadcrumbs.d.ts +1 -1
  5. package/checkbox/checkbox.scss +2 -0
  6. package/code-block/_code-block-theme.scss +4 -12
  7. package/code-block/code-block-tokens.scss +3 -2
  8. package/code-block/code-block.scss +41 -10
  9. package/core/common-behaviors/clipboard.d.ts +12 -0
  10. package/core/common-behaviors/index.d.ts +1 -0
  11. package/core/formatters/filesize/config.d.ts +66 -0
  12. package/core/formatters/filesize/formatter.d.ts +17 -0
  13. package/core/{utils/data-size → formatters/filesize}/index.d.ts +1 -1
  14. package/core/formatters/filesize/size.d.ts +52 -0
  15. package/core/formatters/index.d.ts +3 -1
  16. package/core/formatters/number/formatter.d.ts +13 -4
  17. package/core/forms/validators.d.ts +13 -0
  18. package/core/locales/formatters.d.ts +9 -1
  19. package/core/locales/locale-service.d.ts +9 -1
  20. package/core/locales/types.d.ts +14 -0
  21. package/core/pop-up/pop-up-trigger.d.ts +3 -4
  22. package/core/pop-up/pop-up.d.ts +2 -1
  23. package/core/select/common.d.ts +3 -3
  24. package/core/utils/public-api.d.ts +0 -1
  25. package/datepicker/calendar.scss +2 -0
  26. package/datepicker/datepicker-tokens.scss +1 -1
  27. package/dropdown/dropdown-item.component.d.ts +3 -1
  28. package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
  29. package/esm2022/accordion/accordion-content.mjs +4 -4
  30. package/esm2022/accordion/accordion-header.mjs +4 -4
  31. package/esm2022/accordion/accordion-item.mjs +4 -4
  32. package/esm2022/accordion/accordion-trigger.component.mjs +6 -6
  33. package/esm2022/accordion/accordion.component.mjs +4 -4
  34. package/esm2022/accordion/accordion.module.mjs +5 -5
  35. package/esm2022/actions-panel/actions-panel-container.mjs +6 -6
  36. package/esm2022/actions-panel/actions-panel.mjs +13 -13
  37. package/esm2022/actions-panel/module.mjs +5 -5
  38. package/esm2022/alert/alert.component.mjs +13 -13
  39. package/esm2022/alert/alert.module.mjs +5 -5
  40. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
  41. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
  42. package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
  43. package/esm2022/autocomplete/autocomplete.module.mjs +5 -5
  44. package/esm2022/badge/badge.component.mjs +10 -10
  45. package/esm2022/badge/badge.module.mjs +5 -5
  46. package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
  47. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +5 -5
  48. package/esm2022/button/button.component.mjs +7 -7
  49. package/esm2022/button/button.dropdown-trigger.directive.mjs +4 -4
  50. package/esm2022/button/button.module.mjs +5 -5
  51. package/esm2022/button-toggle/button-toggle.component.mjs +7 -7
  52. package/esm2022/button-toggle/button-toggle.module.mjs +5 -5
  53. package/esm2022/checkbox/checkbox-module.mjs +5 -5
  54. package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
  55. package/esm2022/checkbox/checkbox.mjs +5 -5
  56. package/esm2022/code-block/code-block-highlight.mjs +4 -4
  57. package/esm2022/code-block/code-block.mjs +8 -5
  58. package/esm2022/code-block/code-block.module.mjs +5 -5
  59. package/esm2022/core/common-behaviors/clipboard.mjs +31 -0
  60. package/esm2022/core/common-behaviors/color.mjs +4 -4
  61. package/esm2022/core/common-behaviors/common-module.mjs +5 -5
  62. package/esm2022/core/common-behaviors/index.mjs +2 -1
  63. package/esm2022/core/error/error-state-matcher.mjs +10 -10
  64. package/esm2022/core/formatters/date/formatter.mjs +4 -4
  65. package/esm2022/core/formatters/date/formatter.pipe.mjs +79 -79
  66. package/esm2022/core/formatters/filesize/config.mjs +32 -0
  67. package/esm2022/core/formatters/filesize/formatter.mjs +43 -0
  68. package/esm2022/core/formatters/filesize/index.mjs +4 -0
  69. package/esm2022/core/formatters/filesize/size.mjs +65 -0
  70. package/esm2022/core/formatters/index.mjs +15 -9
  71. package/esm2022/core/formatters/number/formatter.mjs +38 -36
  72. package/esm2022/core/forms/forms-module.mjs +5 -5
  73. package/esm2022/core/forms/forms.directive.mjs +7 -7
  74. package/esm2022/core/forms/validators.mjs +22 -1
  75. package/esm2022/core/highlight/highlight.pipe.mjs +4 -4
  76. package/esm2022/core/highlight/index.mjs +5 -5
  77. package/esm2022/core/line/line.mjs +8 -8
  78. package/esm2022/core/locales/formatters.mjs +21 -13
  79. package/esm2022/core/locales/locale-service.mjs +4 -4
  80. package/esm2022/core/locales/locale-service.module.mjs +5 -5
  81. package/esm2022/core/locales/types.mjs +1 -1
  82. package/esm2022/core/option/action.mjs +4 -4
  83. package/esm2022/core/option/optgroup.mjs +4 -4
  84. package/esm2022/core/option/option-module.mjs +5 -5
  85. package/esm2022/core/option/option.mjs +4 -4
  86. package/esm2022/core/pop-up/pop-up-trigger.mjs +22 -13
  87. package/esm2022/core/pop-up/pop-up.mjs +9 -5
  88. package/esm2022/core/select/common.mjs +21 -19
  89. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  90. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
  91. package/esm2022/core/services/measure-scrollbar.service.mjs +4 -4
  92. package/esm2022/core/services/theme.service.mjs +4 -4
  93. package/esm2022/core/utils/public-api.mjs +1 -2
  94. package/esm2022/core/version.mjs +2 -2
  95. package/esm2022/datepicker/calendar-body.component.mjs +4 -4
  96. package/esm2022/datepicker/calendar-header.component.mjs +4 -4
  97. package/esm2022/datepicker/calendar.component.mjs +5 -5
  98. package/esm2022/datepicker/datepicker-input.directive.mjs +4 -4
  99. package/esm2022/datepicker/datepicker-intl.mjs +4 -4
  100. package/esm2022/datepicker/datepicker-module.mjs +5 -5
  101. package/esm2022/datepicker/datepicker-toggle.component.mjs +7 -7
  102. package/esm2022/datepicker/datepicker.component.mjs +8 -8
  103. package/esm2022/datepicker/month-view.component.mjs +4 -4
  104. package/esm2022/divider/divider.component.mjs +4 -4
  105. package/esm2022/divider/divider.module.mjs +5 -5
  106. package/esm2022/dl/dl.component.mjs +10 -10
  107. package/esm2022/dl/dl.module.mjs +5 -5
  108. package/esm2022/dropdown/dropdown-content.directive.mjs +4 -4
  109. package/esm2022/dropdown/dropdown-item.component.mjs +9 -7
  110. package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
  111. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  112. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  113. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +20 -10
  114. package/esm2022/empty-state/empty-state.component.mjs +16 -16
  115. package/esm2022/empty-state/empty-state.module.mjs +5 -5
  116. package/esm2022/file-upload/file-drop.mjs +4 -4
  117. package/esm2022/file-upload/file-upload.mjs +2 -1
  118. package/esm2022/file-upload/file-upload.module.mjs +5 -5
  119. package/esm2022/file-upload/multiple-file-upload.component.mjs +23 -9
  120. package/esm2022/file-upload/single-file-upload.component.mjs +18 -9
  121. package/esm2022/filter-bar/filter-bar-button.mjs +4 -4
  122. package/esm2022/filter-bar/filter-bar.mjs +4 -4
  123. package/esm2022/filter-bar/filter-bar.module.mjs +5 -5
  124. package/esm2022/filter-bar/filter-bar.types.mjs +32 -1
  125. package/esm2022/filter-bar/filter-refresher.mjs +4 -4
  126. package/esm2022/filter-bar/filter-reset.mjs +4 -4
  127. package/esm2022/filter-bar/filter-search.mjs +5 -5
  128. package/esm2022/filter-bar/filters.mjs +27 -20
  129. package/esm2022/filter-bar/pipe-add.mjs +5 -5
  130. package/esm2022/filter-bar/pipe.directive.mjs +4 -4
  131. package/esm2022/filter-bar/pipes/base-pipe.mjs +7 -7
  132. package/esm2022/filter-bar/pipes/pipe-button.mjs +5 -5
  133. package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
  134. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
  135. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -11
  136. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +234 -0
  137. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
  138. package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
  139. package/esm2022/filter-bar/pipes/pipe-state.mjs +4 -4
  140. package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
  141. package/esm2022/filter-bar/pipes/pipe-title.mjs +4 -4
  142. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +136 -0
  143. package/esm2022/filter-bar/public-api.mjs +2 -1
  144. package/esm2022/form-field/cleaner.mjs +4 -4
  145. package/esm2022/form-field/form-field.mjs +16 -16
  146. package/esm2022/form-field/form-field.module.mjs +5 -5
  147. package/esm2022/form-field/hint.mjs +4 -4
  148. package/esm2022/form-field/password-hint.mjs +9 -7
  149. package/esm2022/form-field/password-toggle.mjs +4 -4
  150. package/esm2022/form-field/prefix.mjs +4 -4
  151. package/esm2022/form-field/stepper.mjs +23 -7
  152. package/esm2022/form-field/suffix.mjs +4 -4
  153. package/esm2022/form-field/validate.directive.mjs +4 -4
  154. package/esm2022/icon/icon-button.component.mjs +4 -4
  155. package/esm2022/icon/icon-item.component.mjs +4 -4
  156. package/esm2022/icon/icon.component.mjs +4 -4
  157. package/esm2022/icon/icon.module.mjs +5 -5
  158. package/esm2022/input/input-number-validators.mjs +7 -7
  159. package/esm2022/input/input-number.mjs +13 -12
  160. package/esm2022/input/input-password.mjs +4 -4
  161. package/esm2022/input/input.mjs +7 -7
  162. package/esm2022/input/input.module.mjs +5 -5
  163. package/esm2022/link/link.component.mjs +4 -4
  164. package/esm2022/link/link.module.mjs +5 -5
  165. package/esm2022/list/list-selection.component.mjs +10 -10
  166. package/esm2022/list/list.component.mjs +7 -7
  167. package/esm2022/list/list.module.mjs +5 -5
  168. package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
  169. package/esm2022/loader-overlay/loader-overlay.module.mjs +5 -5
  170. package/esm2022/markdown/markdown.component.mjs +4 -4
  171. package/esm2022/markdown/markdown.module.mjs +5 -5
  172. package/esm2022/markdown/markdown.service.mjs +4 -4
  173. package/esm2022/modal/css-unit.pipe.mjs +4 -4
  174. package/esm2022/modal/modal-control.service.mjs +4 -4
  175. package/esm2022/modal/modal.component.mjs +4 -4
  176. package/esm2022/modal/modal.directive.mjs +13 -13
  177. package/esm2022/modal/modal.module.mjs +5 -5
  178. package/esm2022/modal/modal.service.mjs +4 -4
  179. package/esm2022/modal/modal.type.mjs +1 -1
  180. package/esm2022/navbar/navbar-item.component.mjs +28 -28
  181. package/esm2022/navbar/navbar.component.mjs +10 -10
  182. package/esm2022/navbar/navbar.module.mjs +5 -5
  183. package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
  184. package/esm2022/overflow-items/module.mjs +5 -5
  185. package/esm2022/overflow-items/overflow-items.mjs +56 -83
  186. package/esm2022/popover/popover-confirm.component.mjs +7 -7
  187. package/esm2022/popover/popover.component.mjs +15 -9
  188. package/esm2022/popover/popover.module.mjs +5 -5
  189. package/esm2022/progress-bar/progress-bar.component.mjs +10 -10
  190. package/esm2022/progress-bar/progress-bar.module.mjs +5 -5
  191. package/esm2022/progress-spinner/progress-spinner.component.mjs +10 -10
  192. package/esm2022/progress-spinner/progress-spinner.module.mjs +5 -5
  193. package/esm2022/radio/radio.component.mjs +7 -7
  194. package/esm2022/radio/radio.module.mjs +5 -5
  195. package/esm2022/risk-level/risk-level.component.mjs +4 -4
  196. package/esm2022/risk-level/risk-level.module.mjs +5 -5
  197. package/esm2022/scrollbar/scrollbar.component.mjs +4 -4
  198. package/esm2022/scrollbar/scrollbar.directive.mjs +4 -4
  199. package/esm2022/scrollbar/scrollbar.module.mjs +5 -5
  200. package/esm2022/select/select-option.directive.mjs +4 -4
  201. package/esm2022/select/select.component.mjs +10 -11
  202. package/esm2022/select/select.module.mjs +5 -5
  203. package/esm2022/sidebar/sidebar.component.mjs +18 -12
  204. package/esm2022/sidebar/sidebar.module.mjs +5 -5
  205. package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
  206. package/esm2022/sidepanel/sidepanel-directives.mjs +16 -16
  207. package/esm2022/sidepanel/sidepanel.module.mjs +5 -5
  208. package/esm2022/sidepanel/sidepanel.service.mjs +4 -4
  209. package/esm2022/splitter/splitter.component.mjs +13 -13
  210. package/esm2022/splitter/splitter.module.mjs +5 -5
  211. package/esm2022/table/table.component.mjs +7 -7
  212. package/esm2022/table/table.module.mjs +5 -5
  213. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  214. package/esm2022/tabs/tab-body.component.mjs +7 -7
  215. package/esm2022/tabs/tab-content.directive.mjs +4 -4
  216. package/esm2022/tabs/tab-group.component.mjs +16 -16
  217. package/esm2022/tabs/tab-header.component.mjs +4 -4
  218. package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
  219. package/esm2022/tabs/tab-label.directive.mjs +4 -4
  220. package/esm2022/tabs/tab-nav-bar.mjs +10 -10
  221. package/esm2022/tabs/tab.component.mjs +4 -4
  222. package/esm2022/tabs/tabs.module.mjs +5 -5
  223. package/esm2022/tags/tag-input.mjs +4 -4
  224. package/esm2022/tags/tag-list.component.mjs +5 -5
  225. package/esm2022/tags/tag.component.mjs +13 -13
  226. package/esm2022/tags/tag.module.mjs +5 -5
  227. package/esm2022/textarea/textarea.component.mjs +4 -4
  228. package/esm2022/textarea/textarea.module.mjs +5 -5
  229. package/esm2022/timepicker/timepicker.directive.mjs +4 -4
  230. package/esm2022/timepicker/timepicker.module.mjs +5 -5
  231. package/esm2022/timezone/cities-by-filter.pipe.mjs +4 -4
  232. package/esm2022/timezone/timezone-option.component.mjs +4 -4
  233. package/esm2022/timezone/timezone-option.directive.mjs +4 -4
  234. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  235. package/esm2022/timezone/timezone.module.mjs +5 -5
  236. package/esm2022/timezone/utc-offset.pipe.mjs +4 -4
  237. package/esm2022/title/title.directive.mjs +4 -4
  238. package/esm2022/title/title.module.mjs +5 -5
  239. package/esm2022/toast/toast-container.component.mjs +4 -4
  240. package/esm2022/toast/toast.component.mjs +7 -7
  241. package/esm2022/toast/toast.module.mjs +5 -5
  242. package/esm2022/toast/toast.service.mjs +4 -4
  243. package/esm2022/toggle/toggle.component.mjs +4 -4
  244. package/esm2022/toggle/toggle.module.mjs +5 -5
  245. package/esm2022/tooltip/tooltip.component.mjs +23 -14
  246. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  247. package/esm2022/top-bar/module.mjs +5 -5
  248. package/esm2022/top-bar/top-bar.mjs +12 -12
  249. package/esm2022/tree/control/flat-tree-control.filters.mjs +10 -2
  250. package/esm2022/tree/node.mjs +4 -4
  251. package/esm2022/tree/outlet.mjs +4 -4
  252. package/esm2022/tree/padding.directive.mjs +4 -4
  253. package/esm2022/tree/toggle.mjs +10 -10
  254. package/esm2022/tree/tree-base.mjs +7 -7
  255. package/esm2022/tree/tree-option.component.mjs +11 -7
  256. package/esm2022/tree/tree-selection.component.mjs +6 -4
  257. package/esm2022/tree/tree.mjs +4 -4
  258. package/esm2022/tree/tree.module.mjs +5 -5
  259. package/esm2022/tree-select/tree-select.component.mjs +5 -5
  260. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  261. package/fesm2022/koobiq-components-accordion.mjs +21 -21
  262. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  263. package/fesm2022/koobiq-components-actions-panel.mjs +21 -21
  264. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  265. package/fesm2022/koobiq-components-alert.mjs +16 -16
  266. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  267. package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
  268. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  269. package/fesm2022/koobiq-components-badge.mjs +13 -13
  270. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  271. package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
  272. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  273. package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
  274. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  275. package/fesm2022/koobiq-components-button.mjs +13 -13
  276. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  277. package/fesm2022/koobiq-components-checkbox.mjs +11 -11
  278. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  279. package/fesm2022/koobiq-components-code-block.mjs +14 -11
  280. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  281. package/fesm2022/koobiq-components-core.mjs +452 -333
  282. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  283. package/fesm2022/koobiq-components-datepicker.mjs +36 -36
  284. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  285. package/fesm2022/koobiq-components-divider.mjs +7 -7
  286. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  287. package/fesm2022/koobiq-components-dl.mjs +13 -13
  288. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  289. package/fesm2022/koobiq-components-dropdown.mjs +21 -19
  290. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  291. package/fesm2022/koobiq-components-ellipsis-center.mjs +19 -9
  292. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  293. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  294. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  295. package/fesm2022/koobiq-components-file-upload.mjs +43 -21
  296. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  297. package/fesm2022/koobiq-components-filter-bar.mjs +481 -108
  298. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  299. package/fesm2022/koobiq-components-form-field.mjs +66 -49
  300. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  301. package/fesm2022/koobiq-components-icon.mjs +13 -13
  302. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  303. package/fesm2022/koobiq-components-input.mjs +32 -31
  304. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  305. package/fesm2022/koobiq-components-link.mjs +7 -7
  306. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  307. package/fesm2022/koobiq-components-list.mjs +19 -19
  308. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  309. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  310. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  311. package/fesm2022/koobiq-components-markdown.mjs +10 -10
  312. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  313. package/fesm2022/koobiq-components-modal.mjs +28 -28
  314. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  315. package/fesm2022/koobiq-components-navbar.mjs +43 -43
  316. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  317. package/fesm2022/koobiq-components-overflow-items.mjs +59 -86
  318. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  319. package/fesm2022/koobiq-components-popover.mjs +24 -18
  320. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  321. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  322. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  323. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  324. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  325. package/fesm2022/koobiq-components-radio.mjs +10 -10
  326. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  327. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  328. package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
  329. package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
  330. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  331. package/fesm2022/koobiq-components-select.mjs +16 -17
  332. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  333. package/fesm2022/koobiq-components-sidebar.mjs +21 -15
  334. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  335. package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
  336. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  337. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  338. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  339. package/fesm2022/koobiq-components-table.mjs +10 -10
  340. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  341. package/fesm2022/koobiq-components-tabs.mjs +52 -52
  342. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  343. package/fesm2022/koobiq-components-tags.mjs +23 -23
  344. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  345. package/fesm2022/koobiq-components-textarea.mjs +7 -7
  346. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  347. package/fesm2022/koobiq-components-timepicker.mjs +7 -7
  348. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  349. package/fesm2022/koobiq-components-timezone.mjs +24 -24
  350. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  351. package/fesm2022/koobiq-components-title.mjs +7 -7
  352. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  353. package/fesm2022/koobiq-components-toast.mjs +16 -16
  354. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  355. package/fesm2022/koobiq-components-toggle.mjs +7 -7
  356. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  357. package/fesm2022/koobiq-components-tooltip.mjs +26 -17
  358. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  359. package/fesm2022/koobiq-components-top-bar.mjs +15 -15
  360. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  361. package/fesm2022/koobiq-components-tree-select.mjs +8 -8
  362. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  363. package/fesm2022/koobiq-components-tree.mjs +54 -40
  364. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  365. package/file-upload/_file-upload-theme.scss +125 -32
  366. package/file-upload/file-upload-tokens.scss +42 -14
  367. package/file-upload/file-upload.d.ts +1 -0
  368. package/file-upload/multiple-file-upload.component.d.ts +12 -5
  369. package/file-upload/multiple-file-upload.component.scss +66 -69
  370. package/file-upload/single-file-upload.component.d.ts +7 -1
  371. package/file-upload/single-file-upload.component.scss +9 -0
  372. package/filter-bar/filter-bar.types.d.ts +28 -1
  373. package/filter-bar/filters.d.ts +3 -2
  374. package/filter-bar/filters.scss +4 -0
  375. package/filter-bar/pipes/base-pipe.scss +1 -0
  376. package/filter-bar/pipes/pipe-multi-select.d.ts +6 -1
  377. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +57 -0
  378. package/filter-bar/pipes/pipe-multi-tree-select.scss +19 -0
  379. package/filter-bar/pipes/pipe-tree-select.d.ts +41 -0
  380. package/filter-bar/pipes/pipe-tree-select.scss +9 -0
  381. package/filter-bar/public-api.d.ts +1 -0
  382. package/form-field/_form-field-theme.scss +12 -12
  383. package/form-field/form-field.d.ts +3 -1
  384. package/form-field/form-field.scss +58 -61
  385. package/form-field/stepper.d.ts +15 -1
  386. package/input/_input-theme.scss +6 -0
  387. package/input/input-number.d.ts +1 -0
  388. package/modal/modal.type.d.ts +1 -1
  389. package/overflow-items/overflow-items.d.ts +17 -26
  390. package/package.json +5 -5
  391. package/popover/popover.component.d.ts +4 -2
  392. package/prebuilt-themes/dark-theme.css +1 -1
  393. package/prebuilt-themes/light-theme.css +1 -1
  394. package/prebuilt-themes/theme.css +1 -1
  395. package/schematics/ng-add/index.js +5 -5
  396. package/select/_select-theme.scss +1 -1
  397. package/select/select.scss +2 -0
  398. package/tags/_tag-theme.scss +5 -0
  399. package/tags/tag-tokens.scss +17 -0
  400. package/tooltip/tooltip.component.d.ts +8 -1
  401. package/top-bar/top-bar.scss +1 -0
  402. package/tree/control/flat-tree-control.filters.d.ts +1 -0
  403. package/tree/tree-option.component.d.ts +3 -1
  404. package/core/utils/data-size/config.d.ts +0 -38
  405. package/core/utils/data-size/data-size.pipe.d.ts +0 -14
  406. package/core/utils/data-size/size.d.ts +0 -15
  407. package/esm2022/core/utils/data-size/config.mjs +0 -10
  408. package/esm2022/core/utils/data-size/data-size.pipe.mjs +0 -45
  409. package/esm2022/core/utils/data-size/index.mjs +0 -4
  410. package/esm2022/core/utils/data-size/size.mjs +0 -43
@@ -0,0 +1,65 @@
1
+ export const KBQ_INVALID_VALUE_ERROR = 'Argument "value" must be a finite number!';
2
+ /**
3
+ * @deprecated Will be removed in next major release. Use `getFormattedSizeParts` instead.
4
+ * @docs-private
5
+ */
6
+ export const formatDataSize = (value, precision, system) => {
7
+ const { result, unit } = getHumanizedBytes(value, system);
8
+ let volume;
9
+ if (system.abbreviations[0] === unit) {
10
+ volume = result.toString();
11
+ }
12
+ else {
13
+ volume = result.toFixed(precision).replace(/\./g, ',');
14
+ }
15
+ return {
16
+ value: volume,
17
+ unit
18
+ };
19
+ };
20
+ export function getFormattedSizeParts(value, _precision, system) {
21
+ let resolvedSystem = null;
22
+ if (arguments.length === 2 && typeof _precision === 'object') {
23
+ resolvedSystem = _precision;
24
+ }
25
+ if (arguments.length === 3 && typeof _precision === 'number' && system) {
26
+ resolvedSystem = system;
27
+ }
28
+ if (!resolvedSystem) {
29
+ throw new Error('Unexpected arguments size');
30
+ }
31
+ const { result, unit } = getHumanizedBytes(value, resolvedSystem);
32
+ return {
33
+ value: result.toString(),
34
+ unit
35
+ };
36
+ }
37
+ /**
38
+ * Converts bytes to Kb, Mb, Gb
39
+ *
40
+ * @param value the number of bytes
41
+ * @param system the measurement system
42
+ * @param threshold the lower counting threshold
43
+ */
44
+ export const getHumanizedBytes = (value, system, threshold) => {
45
+ if (!Number.isFinite(value)) {
46
+ throw new Error(KBQ_INVALID_VALUE_ERROR);
47
+ }
48
+ const calculatedThreshold = Number.isFinite(threshold) ? threshold : Math.pow(system.base, system.power);
49
+ const orderOfMagnitude = Math.pow(system.base, system.power);
50
+ let result = value;
51
+ let step = 0;
52
+ const len = system.abbreviations.length - 1;
53
+ while (step < len) {
54
+ if (calculatedThreshold !== undefined && result < calculatedThreshold) {
55
+ break;
56
+ }
57
+ step++;
58
+ result = value / Math.pow(orderOfMagnitude, step);
59
+ }
60
+ return {
61
+ result,
62
+ unit: system.abbreviations[step]
63
+ };
64
+ };
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9mb3JtYXR0ZXJzL2ZpbGVzaXplL3NpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsMkNBQTJDLENBQUM7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzFCLEtBQWEsRUFDYixTQUFpQixFQUNqQixNQUFxQixFQUNVLEVBQUU7SUFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFjLENBQUM7SUFFbkIsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUMsQ0FBQztBQStCRixNQUFNLFVBQVUscUJBQXFCLENBQ2pDLEtBQWEsRUFDYixVQUFrQyxFQUNsQyxNQUFzQjtJQUV0QixJQUFJLGNBQWMsR0FBeUIsSUFBSSxDQUFDO0lBRWhELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDM0QsY0FBYyxHQUFHLFVBQWtDLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3JFLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBRWxFLE9BQU87UUFDSCxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUN4QixJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUM3QixLQUFhLEVBQ2IsTUFBcUIsRUFDckIsU0FBa0IsRUFDYyxFQUFFO0lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RyxNQUFNLGdCQUFnQixHQUFXLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckUsSUFBSSxNQUFNLEdBQVcsS0FBSyxDQUFDO0lBQzNCLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLE1BQU0sR0FBRyxHQUFXLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVwRCxPQUFPLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLG1CQUFtQixLQUFLLFNBQVMsSUFBSSxNQUFNLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUNwRSxNQUFNO1FBQ1YsQ0FBQztRQUVELElBQUksRUFBRSxDQUFDO1FBQ1AsTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPO1FBQ0gsTUFBTTtRQUNOLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztLQUNuQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2JxVW5pdFN5c3RlbSB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGNvbnN0IEtCUV9JTlZBTElEX1ZBTFVFX0VSUk9SID0gJ0FyZ3VtZW50IFwidmFsdWVcIiBtdXN0IGJlIGEgZmluaXRlIG51bWJlciEnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHJlbGVhc2UuIFVzZSBgZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzYCBpbnN0ZWFkLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0RGF0YVNpemUgPSAoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBwcmVjaXNpb246IG51bWJlcixcbiAgICBzeXN0ZW06IEticVVuaXRTeXN0ZW1cbik6IHsgdmFsdWU6IHN0cmluZzsgdW5pdDogc3RyaW5nIH0gPT4ge1xuICAgIGNvbnN0IHsgcmVzdWx0LCB1bml0IH0gPSBnZXRIdW1hbml6ZWRCeXRlcyh2YWx1ZSwgc3lzdGVtKTtcbiAgICBsZXQgdm9sdW1lOiBzdHJpbmc7XG5cbiAgICBpZiAoc3lzdGVtLmFiYnJldmlhdGlvbnNbMF0gPT09IHVuaXQpIHtcbiAgICAgICAgdm9sdW1lID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdm9sdW1lID0gcmVzdWx0LnRvRml4ZWQocHJlY2lzaW9uKS5yZXBsYWNlKC9cXC4vZywgJywnKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogdm9sdW1lLFxuICAgICAgICB1bml0XG4gICAgfTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBieXRlIHZhbHVlIGludG8gbG9jYWxlLWluZGVwZW5kZW50IGZpbGUgc2l6ZSBwYXJ0czogbnVtZXJpYyB2YWx1ZSBhbmQgdW5pdCBhYmJyZXZpYXRpb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gc2l6ZSBpbiBieXRlcy5cbiAqIEBwYXJhbSBzeXN0ZW0gLSB1bml0IHN5c3RlbSBkZWZpbmluZyBhYmJyZXZpYXRpb25zIGFuZCBiYXNlIHNjYWxpbmcgKFNJL0lFQykuXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGVkIHNpemUgaW5mby5cbiAqXG4gKiBAZXhhbXBsZVxuICogZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKDE1MDAsICdTSScpOyAvLyB7IHZhbHVlOiBcIjEuNTBcIiwgdW5pdDogXCJLQlwiIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1hdHRlZFNpemVQYXJ0cyh2YWx1ZTogbnVtYmVyLCBzeXN0ZW06IEticVVuaXRTeXN0ZW0pOiB7IHZhbHVlOiBzdHJpbmc7IHVuaXQ6IHN0cmluZyB9O1xuLyoqXG4gKiBDb252ZXJ0cyBhIGJ5dGUgdmFsdWUgaW50byBsb2NhbGUtaW5kZXBlbmRlbnQgZmlsZSBzaXplIHBhcnRzOiBudW1lcmljIHZhbHVlIGFuZCB1bml0IGFiYnJldmlhdGlvbi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBzaXplIGluIGJ5dGVzLlxuICogQHBhcmFtIF9wcmVjaXNpb24gcGFyYW0gaXMgZGVwcmVjYXRlZCwgdXNlIGBJbnRsLk51bWJlckZvcm1hdGAgcm91bmRpbmcgb3B0aW9ucyBpbnN0ZWFkLlxuICogQHBhcmFtIHN5c3RlbSAtIHVuaXQgc3lzdGVtIGRlZmluaW5nIGFiYnJldmlhdGlvbnMgYW5kIGJhc2Ugc2NhbGluZyAoU0kvSUVDKS5cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIHRoZSBmb3JtYXR0ZWQgc2l6ZSBpbmZvLlxuICogQGRlcHJlY2F0ZWQgYF9wcmVjaXNpb25gIC0gdGhpcyBwYXJhbSB3aWxsIGJlIHJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG4gKiBAVE9ETyByZW1vdmUgZGVwcmVjYXRlZCAoI0RTLTM4NDkpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBnZXRGb3JtYXR0ZWRTaXplUGFydHMoMTUwMCwgMiwgJ1NJJyk7IC8vIHsgdmFsdWU6IFwiMS41MFwiLCB1bml0OiBcIktCXCIgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgX3ByZWNpc2lvbjogbnVtYmVyLFxuICAgIHN5c3RlbTogS2JxVW5pdFN5c3RlbVxuKTogeyB2YWx1ZTogc3RyaW5nOyB1bml0OiBzdHJpbmcgfTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRTaXplUGFydHMoXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBfcHJlY2lzaW9uOiBudW1iZXIgfCBLYnFVbml0U3lzdGVtLFxuICAgIHN5c3RlbT86IEticVVuaXRTeXN0ZW1cbik6IHsgdmFsdWU6IHN0cmluZzsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGxldCByZXNvbHZlZFN5c3RlbTogS2JxVW5pdFN5c3RlbSB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgdHlwZW9mIF9wcmVjaXNpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJlc29sdmVkU3lzdGVtID0gX3ByZWNpc2lvbiBzYXRpc2ZpZXMgS2JxVW5pdFN5c3RlbTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiB0eXBlb2YgX3ByZWNpc2lvbiA9PT0gJ251bWJlcicgJiYgc3lzdGVtKSB7XG4gICAgICAgIHJlc29sdmVkU3lzdGVtID0gc3lzdGVtO1xuICAgIH1cblxuICAgIGlmICghcmVzb2x2ZWRTeXN0ZW0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGFyZ3VtZW50cyBzaXplJyk7XG4gICAgfVxuXG4gICAgY29uc3QgeyByZXN1bHQsIHVuaXQgfSA9IGdldEh1bWFuaXplZEJ5dGVzKHZhbHVlLCByZXNvbHZlZFN5c3RlbSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogcmVzdWx0LnRvU3RyaW5nKCksXG4gICAgICAgIHVuaXRcbiAgICB9O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGJ5dGVzIHRvIEtiLCBNYiwgR2JcbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIG51bWJlciBvZiBieXRlc1xuICogQHBhcmFtIHN5c3RlbSB0aGUgbWVhc3VyZW1lbnQgc3lzdGVtXG4gKiBAcGFyYW0gdGhyZXNob2xkIHRoZSBsb3dlciBjb3VudGluZyB0aHJlc2hvbGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEh1bWFuaXplZEJ5dGVzID0gKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc3lzdGVtOiBLYnFVbml0U3lzdGVtLFxuICAgIHRocmVzaG9sZD86IG51bWJlclxuKTogeyByZXN1bHQ6IG51bWJlcjsgdW5pdDogc3RyaW5nIH0gPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoS0JRX0lOVkFMSURfVkFMVUVfRVJST1IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRUaHJlc2hvbGQgPSBOdW1iZXIuaXNGaW5pdGUodGhyZXNob2xkKSA/IHRocmVzaG9sZCA6IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuICAgIGNvbnN0IG9yZGVyT2ZNYWduaXR1ZGU6IG51bWJlciA9IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gdmFsdWU7XG4gICAgbGV0IHN0ZXAgPSAwO1xuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gc3lzdGVtLmFiYnJldmlhdGlvbnMubGVuZ3RoIC0gMTtcblxuICAgIHdoaWxlIChzdGVwIDwgbGVuKSB7XG4gICAgICAgIGlmIChjYWxjdWxhdGVkVGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0IDwgY2FsY3VsYXRlZFRocmVzaG9sZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGVwKys7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlIC8gTWF0aC5wb3cob3JkZXJPZk1hZ25pdHVkZSwgc3RlcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICB1bml0OiBzeXN0ZW0uYWJicmV2aWF0aW9uc1tzdGVwXVxuICAgIH07XG59O1xuIl19
@@ -2,11 +2,12 @@ import { NgModule } from '@angular/core';
2
2
  import { DateAdapter, KBQ_DATE_LOCALE } from '../datetime';
3
3
  import { DateFormatter } from './date/formatter';
4
4
  import { AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe } from './date/formatter.pipe';
5
+ import { KbqDataSizePipe } from './filesize';
5
6
  import { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './number/formatter';
6
7
  import * as i0 from "@angular/core";
7
8
  export class KbqFormattersModule {
8
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormattersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KbqFormattersModule, declarations: [KbqDecimalPipe,
9
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, declarations: [KbqDecimalPipe,
10
11
  KbqRoundDecimalPipe,
11
12
  KbqTableNumberPipe], imports: [AbsoluteDateFormatterPipe,
12
13
  AbsoluteDateTimeFormatterPipe,
@@ -33,7 +34,8 @@ export class KbqFormattersModule {
33
34
  RangeShortDateFormatterImpurePipe,
34
35
  RangeDateTimeFormatterImpurePipe,
35
36
  RangeShortDateTimeFormatterImpurePipe,
36
- RangeMiddleDateTimeFormatterImpurePipe], exports: [KbqDecimalPipe,
37
+ RangeMiddleDateTimeFormatterImpurePipe,
38
+ KbqDataSizePipe], exports: [KbqDecimalPipe,
37
39
  KbqRoundDecimalPipe,
38
40
  KbqTableNumberPipe,
39
41
  AbsoluteDateFormatterPipe,
@@ -61,10 +63,11 @@ export class KbqFormattersModule {
61
63
  RangeShortDateFormatterImpurePipe,
62
64
  RangeDateTimeFormatterImpurePipe,
63
65
  RangeShortDateTimeFormatterImpurePipe,
64
- RangeMiddleDateTimeFormatterImpurePipe] }); }
65
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormattersModule, providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }] }); }
66
+ RangeMiddleDateTimeFormatterImpurePipe,
67
+ KbqDataSizePipe] }); }
68
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }] }); }
66
69
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormattersModule, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, decorators: [{
68
71
  type: NgModule,
69
72
  args: [{
70
73
  imports: [
@@ -93,7 +96,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
93
96
  RangeShortDateFormatterImpurePipe,
94
97
  RangeDateTimeFormatterImpurePipe,
95
98
  RangeShortDateTimeFormatterImpurePipe,
96
- RangeMiddleDateTimeFormatterImpurePipe
99
+ RangeMiddleDateTimeFormatterImpurePipe,
100
+ KbqDataSizePipe
97
101
  ],
98
102
  declarations: [
99
103
  KbqDecimalPipe,
@@ -129,12 +133,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
129
133
  RangeShortDateFormatterImpurePipe,
130
134
  RangeDateTimeFormatterImpurePipe,
131
135
  RangeShortDateTimeFormatterImpurePipe,
132
- RangeMiddleDateTimeFormatterImpurePipe
136
+ RangeMiddleDateTimeFormatterImpurePipe,
137
+ KbqDataSizePipe
133
138
  ],
134
139
  providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }]
135
140
  }]
136
141
  }] });
137
142
  export * from './date/formatter';
138
143
  export * from './date/formatter.pipe';
144
+ export * from './filesize/index';
139
145
  export * from './number/formatter';
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixvQ0FBb0MsRUFDcEMsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0Isd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQywwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQywrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixtQ0FBbUMsRUFDbkMsNkJBQTZCLEVBQzdCLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNyQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFxRTdGLE1BQU0sT0FBTyxtQkFBbUI7aUlBQW5CLG1CQUFtQjtrSUFBbkIsbUJBQW1CLGlCQXJDeEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixrQkFBa0IsYUE5QmxCLHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0IsOEJBQThCO1lBQzlCLGtDQUFrQztZQUNsQyx5QkFBeUI7WUFDekIsNkJBQTZCO1lBQzdCLDhCQUE4QjtZ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dGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIEtCUV9EQVRFX0xPQ0FMRSB9IGZyb20gJy4uL2RhdGV0aW1lJztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGUvZm9ybWF0dGVyJztcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGVcbn0gZnJvbSAnLi9kYXRlL2Zvcm1hdHRlci5waXBlJztcbmltcG9ydCB7IEticURlY2ltYWxQaXBlLCBLYnFSb3VuZERlY2ltYWxQaXBlLCBLYnFUYWJsZU51bWJlclBpcGUgfSBmcm9tICcuL251bWJlci9mb3JtYXR0ZXInO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlTWlkZGxlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgS2JxRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVJvdW5kRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVRhYmxlTnVtYmVyUGlwZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBLYnFEZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxUm91bmREZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxVGFibGVOdW1iZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUZvcm1hdHRlciwgZGVwczogW0RhdGVBZGFwdGVyLCBLQlFfREFURV9MT0NBTEVdIH1dXG59KVxuZXhwb3J0IGNsYXNzIEticUZvcm1hdHRlcnNNb2R1bGUge31cblxuZXhwb3J0ICogZnJvbSAnLi9kYXRlL2Zvcm1hdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUvZm9ybWF0dGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9udW1iZXIvZm9ybWF0dGVyJztcbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixvQ0FBb0MsRUFDcEMsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0Isd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQywwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQywrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixtQ0FBbUMsRUFDbkMsNkJBQTZCLEVBQzdCLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNyQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXVFN0YsTUFBTSxPQUFPLG1CQUFtQjtrSUFBbkIsbUJBQW1CO21JQUFuQixtQkFBbUIsaUJBdEN4QixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGtCQUFrQixhQS9CbEIseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3Qiw4QkFBOEI7WUFDOUIsa0NBQWtD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Q2hGOztBQUdELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIEtCUV9EQVRFX0xPQ0FMRSB9IGZyb20gJy4uL2RhdGV0aW1lJztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGUvZm9ybWF0dGVyJztcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGVcbn0gZnJvbSAnLi9kYXRlL2Zvcm1hdHRlci5waXBlJztcbmltcG9ydCB7IEticURhdGFTaXplUGlwZSB9IGZyb20gJy4vZmlsZXNpemUnO1xuaW1wb3J0IHsgS2JxRGVjaW1hbFBpcGUsIEticVJvdW5kRGVjaW1hbFBpcGUsIEticVRhYmxlTnVtYmVyUGlwZSB9IGZyb20gJy4vbnVtYmVyL2Zvcm1hdHRlcic7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEticURhdGFTaXplUGlwZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEticURlY2ltYWxQaXBlLFxuICAgICAgICBLYnFSb3VuZERlY2ltYWxQaXBlLFxuICAgICAgICBLYnFUYWJsZU51bWJlclBpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVJvdW5kRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVRhYmxlTnVtYmVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlTWlkZGxlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBLYnFEYXRhU2l6ZVBpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUZvcm1hdHRlciwgZGVwczogW0RhdGVBZGFwdGVyLCBLQlFfREFURV9MT0NBTEVdIH1dXG59KVxuZXhwb3J0IGNsYXNzIEticUZvcm1hdHRlcnNNb2R1bGUge31cblxuZXhwb3J0ICogZnJvbSAnLi9kYXRlL2Zvcm1hdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUvZm9ybWF0dGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlc2l6ZS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL251bWJlci9mb3JtYXR0ZXInO1xuIl19
@@ -1,3 +1,4 @@
1
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
1
2
  import { Inject, Injectable, InjectionToken, Optional, Pipe } from '@angular/core';
2
3
  import { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KbqLocaleService } from '../../locales';
3
4
  import * as i0 from "@angular/core";
@@ -9,17 +10,28 @@ export const KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS = {
9
10
  minimumFractionDigits: 0,
10
11
  maximumFractionDigits: 3
11
12
  };
13
+ /** Formats a number value according to locale and formatting options */
14
+ export function formatNumberWithLocale(value, formatter, options) {
15
+ const num = strToNumber(value);
16
+ if (!options?.viewGroupSeparator)
17
+ return formatter.format(num);
18
+ const numberFormatParts = formatter.formatToParts(num);
19
+ for (const numberFormatPart of numberFormatParts) {
20
+ if (numberFormatPart.type === 'group') {
21
+ numberFormatPart.value = options.viewGroupSeparator;
22
+ }
23
+ }
24
+ return numberFormatParts.map(({ value }) => value).join('');
25
+ }
12
26
  function isEmpty(value) {
13
27
  return value == null || value === '' || value !== value;
14
28
  }
15
29
  function strToNumber(value) {
16
- if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
17
- return Number(value);
18
- }
19
- if (typeof value !== 'number') {
30
+ const coerced = coerceNumberProperty(value, null);
31
+ if (coerced === null) {
20
32
  throw new Error(`${value} is not a number`);
21
33
  }
22
- return value;
34
+ return coerced;
23
35
  }
24
36
  export const NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?(-(true|false))?)?$/;
25
37
  const minIntGroupPosition = 1;
@@ -113,27 +125,23 @@ export class KbqDecimalPipe {
113
125
  options.useGrouping = false;
114
126
  }
115
127
  try {
116
- const num = strToNumber(value);
117
- /* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
118
- * But by default in es-LA locale is used `comma`.
119
- * To reduce data manipulation, 'ru-RU' locale is used. */
120
- if (currentLocale === 'es-LA') {
121
- return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
122
- }
123
- return Intl.NumberFormat.call(this, currentLocale, options).format(num);
128
+ const formatter = new Intl.NumberFormat(currentLocale, options);
129
+ return formatNumberWithLocale(value, formatter, this.localeService?.locales[currentLocale]?.formatters.number.decimal);
124
130
  }
125
131
  catch (error) {
126
132
  throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
127
133
  }
128
134
  }
129
135
  isSpecialFormatForRULocale(locale, value, grouping) {
130
- return ['ru', 'ru-RU'].includes(locale) && grouping === undefined && value < defaultValueForGroupingInRULocale;
136
+ return (['ru', 'ru-RU'].includes(locale) &&
137
+ grouping === undefined &&
138
+ Math.abs(value) < defaultValueForGroupingInRULocale);
131
139
  }
132
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
133
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
134
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
141
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
142
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
135
143
  }
136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqDecimalPipe, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, decorators: [{
137
145
  type: Injectable,
138
146
  args: [{ providedIn: 'root' }]
139
147
  }, {
@@ -191,24 +199,18 @@ export class KbqTableNumberPipe {
191
199
  ...parsedDigitsInfo
192
200
  };
193
201
  try {
194
- const num = strToNumber(value);
195
- /* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
196
- * But by default in es-LA locale is used `comma`.
197
- * To reduce data manipulation, 'ru-RU' locale is used. */
198
- if (currentLocale === 'es-LA') {
199
- return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
200
- }
201
- return Intl.NumberFormat.call(this, currentLocale, options).format(num);
202
+ const formatter = new Intl.NumberFormat(currentLocale, options);
203
+ return formatNumberWithLocale(value, formatter, this.localeService?.locales[currentLocale]?.formatters.number.decimal);
202
204
  }
203
205
  catch (error) {
204
206
  throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);
205
207
  }
206
208
  }
207
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
208
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
209
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
209
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
210
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
211
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
210
212
  }
211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
212
214
  type: Injectable,
213
215
  args: [{ providedIn: 'root' }]
214
216
  }, {
@@ -244,7 +246,7 @@ export class KbqRoundDecimalPipe {
244
246
  return null;
245
247
  }
246
248
  const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
247
- this.roundingOptions = this.localeService.locales[currentLocale].formatters.number.rounding;
249
+ this.roundingOptions = this.localeService?.locales[currentLocale].formatters.number.rounding;
248
250
  try {
249
251
  const num = strToNumber(value);
250
252
  const unit = this.calculateUnit(num);
@@ -321,11 +323,11 @@ export class KbqRoundDecimalPipe {
321
323
  });
322
324
  return currentUnit;
323
325
  }
324
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
325
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
326
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
326
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
327
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
328
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
327
329
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
329
331
  type: Injectable,
330
332
  args: [{ providedIn: 'root' }]
331
333
  }, {
@@ -342,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
342
344
  type: Inject,
343
345
  args: [KBQ_LOCALE_SERVICE]
344
346
  }] }] });
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRTNHLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFTLDJCQUEyQixDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQXFCO0lBQ2xFLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLG9CQUFvQixFQUFFLENBQUM7SUFDdkIscUJBQXFCLEVBQUUsQ0FBQztJQUN4QixxQkFBcUIsRUFBRSxDQUFDO0NBQzNCLENBQUM7QUFFRixTQUFTLE9BQU8sQ0FBQyxLQUFVO0lBQ3ZCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQXNCO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGtCQUFrQixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyw2Q0FBNkMsQ0FBQztBQUVsRixNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUNuQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQThCOUIsTUFBTSxjQUFjLEdBQUc7SUFDbkIsUUFBUSxFQUFFLEdBQUc7SUFDYixXQUFXLEVBQUUsRUFBRSxHQUFHLEdBQUc7SUFDckIsT0FBTyxFQUFFLEdBQUc7SUFDWixrQkFBa0IsRUFBRSxHQUFHLEdBQUcsR0FBRztJQUM3QixPQUFPLEVBQUUsR0FBRztJQUNaLFFBQVEsRUFBRSxJQUFJO0NBQ2pCLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRztJQUNwQixrQkFBa0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDakUsU0FBUyxFQUFFO1FBQ1AsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFO1FBQ3BELEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRTtRQUMzRixFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzVFLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUU7UUFDM0YsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLE9BQU8sR0FBRyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxPQUFPLEVBQUU7S0FDaEY7Q0FDSixDQUFDO0FBRUYsTUFBTSxnQkFBZ0I7Q0FLckI7QUFFRCxNQUFNLGlDQUFpQyxHQUFXLEtBQUssQ0FBQztBQUV4RCxTQUFTLGVBQWUsQ0FBQyxVQUFrQjtJQUN2QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFckQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFVBQVUsNEJBQTRCLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDeEQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDeEQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0lBRXRDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0QsQ0FBQztTQUFNLElBQUksZUFBZSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDaEcsTUFBTSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7UUFDMUIsTUFBTSxDQUFDLFdBQVcsR0FBRyxlQUFlLEtBQUssTUFBTSxDQUFDO0lBQ3BELENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBSUQsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDK0MsRUFBVSxFQUNMLGFBQStCLEVBQ1osT0FBeUI7UUFGakQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNMLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUNaLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBRTVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxvQ0FBb0MsQ0FBQztRQUVwRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsU0FBUyxDQUFDLEtBQVUsRUFBRSxVQUFtQixFQUFFLE1BQWU7UUFDdEQsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUkscUJBQXFCLENBQUM7UUFFakUsSUFBSSxnQkFBZ0IsQ0FBQztRQUVyQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBd0I7WUFDakMsR0FBRyxJQUFJLENBQUMsT0FBTztZQUNmLEdBQUcsZ0JBQWdCO1NBQ3RCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDdkYsT0FBTyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvQjs7c0VBRTBEO1lBQzFELElBQUksYUFBYSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkcsQ0FBQztJQUNMLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxNQUFjLEVBQUUsS0FBYSxFQUFFLFFBQWtCO1FBQ3hFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksS0FBSyxHQUFHLGlDQUFpQyxDQUFDO0lBQ25ILENBQUM7aUlBakVRLGNBQWMsa0JBRUMsYUFBYSw2QkFDYixrQkFBa0IsNkJBQ2xCLDRCQUE0QjsrSEFKM0MsY0FBYztxSUFBZCxjQUFjLGNBRkQsTUFBTTs7MkZBRW5CLGNBQWM7a0JBRjFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztrQkFDakMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTs7MEJBRy9CLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ2hDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDckMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7O0FBa0V4RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQytDLEVBQVUsRUFDTCxhQUErQixFQUNaLE9BQXlCO1FBRmpELE9BQUUsR0FBRixFQUFFLENBQVE7UUFDTCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDWixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUU1RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksb0NBQW9DLENBQUM7UUFFcEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILFNBQVMsQ0FBQyxLQUFVLEVBQUUsVUFBbUIsRUFBRSxNQUFlO1FBQ3RELElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLHFCQUFxQixDQUFDO1FBRWpFLElBQUksZ0JBQWdCLENBQUM7UUFFckIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQXdCO1lBQ2pDLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDZixHQUFHLGdCQUFnQjtTQUN0QixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRS9COztzRUFFMEQ7WUFDMUQsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDbEIsTUFBTSxLQUFLLENBQUMscURBQXFELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RyxDQUFDO0lBQ0wsQ0FBQztpSUF6RFEsa0JBQWtCLGtCQUVILGFBQWEsNkJBQ2Isa0JBQWtCLDZCQUNsQiw0QkFBNEI7K0hBSjNDLGtCQUFrQjtxSUFBbEIsa0JBQWtCLGNBRkwsTUFBTTs7MkZBRW5CLGtCQUFrQjtrQkFGOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUdwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3JDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNEJBQTRCOztBQXdEeEQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsWUFBb0I7SUFDL0UsT0FBTyxVQUFVLElBQUksWUFBWSxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUM7QUFDakUsQ0FBQztBQUlELE1BQU0sT0FBTyxtQkFBbUI7SUFHNUIsWUFDK0MsRUFBVSxFQUNMLGFBQStCO1FBRHBDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFDTCxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFFL0UsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVUsRUFBRSxNQUFlO1FBQ2pDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFXLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLHFCQUFxQixDQUFDO1FBRXpFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFFNUYsSUFBSSxDQUFDO1lBQ0QsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsSUFBSSxLQUFLLEdBQXdDLEVBQUUsQ0FBQztZQUVwRCxJQUFJLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtvQkFDbkUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBRW5ELElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ1QsSUFBSSxTQUFTLEVBQUUsQ0FBQzs0QkFDWixLQUFLO2dDQUNELElBQUksS0FBSyxVQUFVO29DQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDO29DQUN0QyxDQUFDLENBQUM7d0NBQ0ksR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3Q0FDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3FDQUM3RCxDQUFDO3dCQUNoQixDQUFDOzZCQUFNLENBQUM7NEJBQ0osS0FBSyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzVELENBQUM7b0JBQ0wsQ0FBQztvQkFFRCxPQUFPLE1BQU0sQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBRUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHO2dCQUNiLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQztvQkFDSSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzdELENBQUM7WUFDUixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RyxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxRQUFRO2dCQUNsQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZFLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVyQixPQUFPLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM5RixDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNsQixNQUFNLEtBQUssQ0FBQyxzREFBc0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSywwQkFBMEIsQ0FBQyxHQUFXO1FBQzFDLE1BQU0sWUFBWSxHQUFHLEdBQUcsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ25ELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUMvRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsT0FBTyxRQUFRLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFO1lBQ2hELENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFXO1FBQzdCLElBQUksV0FBK0IsQ0FBQztRQUNwQyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTNELE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsSUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUVsQixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO2lJQTdHUSxtQkFBbUIsa0JBSUosYUFBYSw2QkFDYixrQkFBa0I7K0hBTGpDLG1CQUFtQjtxSUFBbkIsbUJBQW1CLGNBRk4sTUFBTTs7MkZBRW5CLG1CQUFtQjtrQkFGL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUtwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLQlFfREVGQVVMVF9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfU0VSVklDRSwgS2JxTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL2xvY2FsZXMnO1xuXG5leHBvcnQgY29uc3QgS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdLYnFOdW1iZXJGb3JtYXR0ZXJPcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM6IFBhcnNlZERpZ2l0c0luZm8gPSB7XG4gICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogM1xufTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkgLSBwYXJzZUZsb2F0KHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIE51bWJlckZvcm1hdE9wdGlvbnMge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcblxuICAgIGxvY2FsZU1hdGNoZXI/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG5cbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSb3VuZERlY2ltYWxPcHRpb25zIHtcbiAgICBzZXBhcmF0b3I6IHN0cmluZztcbiAgICBncm91cFNlcGFyYXRvcjogc3RyaW5nO1xuICAgIHRob3VzYW5kcz86IHN0cmluZztcbiAgICB0ZW5UaG91c2FuZD86IHN0cmluZztcbiAgICBtaWxsaW9uPzogc3RyaW5nO1xuICAgIG9uZUh1bmRyZWRNaWxsaW9ucz86IHN0cmluZztcbiAgICBiaWxsaW9uPzogc3RyaW5nO1xuICAgIHRyaWxsaW9uOiBzdHJpbmc7XG4gICAgcnRsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUk9VTkRJTkdfVU5JVFMgPSB7XG4gICAgdGhvdXNhbmQ6IDFlMyxcbiAgICB0ZW5UaG91c2FuZDogMTAgKiAxZTMsXG4gICAgbWlsbGlvbjogMWU2LFxuICAgIG9uZUh1bmRyZWRNaWxsaW9uczogMTAwICogMWU2LFxuICAgIGJpbGxpb246IDFlOSxcbiAgICB0cmlsbGlvbjogMWUxMlxufTtcblxuY29uc3QgaW50ZXJ2YWxzQ29uZmlnID0ge1xuICAgIHN1cHBvcnRlZExhbmd1YWdlczogWydydS1SVScsICdlbi1VUycsICdlcy1MQScsICdwdC1CUicsICdmYS1JUiddLFxuICAgIGludGVydmFsczogW1xuICAgICAgICB7IHN0YXJ0UmFuZ2U6IDEsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50aG91c2FuZCB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRlblRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24sIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uICogMTAsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLmJpbGxpb24gfVxuICAgIF1cbn07XG5cbmNsYXNzIFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBudW1iZXI7XG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRWYWx1ZUZvckdyb3VwaW5nSW5SVUxvY2FsZTogbnVtYmVyID0gMTAwMDA7XG5cbmZ1bmN0aW9uIHBhcnNlRGlnaXRzSW5mbyhkaWdpdHNJbmZvOiBzdHJpbmcpOiBQYXJzZWREaWdpdHNJbmZvIHtcbiAgICBjb25zdCBwYXJ0cyA9IGRpZ2l0c0luZm8ubWF0Y2goTlVNQkVSX0ZPUk1BVF9SRUdFWFApO1xuXG4gICAgaWYgKHBhcnRzID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtkaWdpdHNJbmZvfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWluSW50UGFydCA9IHBhcnRzW21pbkludEdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IG1pbkZyYWN0aW9uUGFydCA9IHBhcnRzW21pbkZyYWN0aW9uR3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWF4RnJhY3Rpb25QYXJ0ID0gcGFydHNbbWF4RnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCB1c2VHcm91cGluZ1BhcnQgPSBwYXJ0c1t1c2VHcm91cGluZ1Bvc2l0aW9uXTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQYXJzZWREaWdpdHNJbmZvKCk7XG5cbiAgICBpZiAobWluSW50UGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IHBhcnNlSW50KG1pbkludFBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWluRnJhY3Rpb25QYXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobWF4RnJhY3Rpb25QYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHBhcnNlSW50KG1heEZyYWN0aW9uUGFydCk7XG4gICAgfSBlbHNlIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCAmJiByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID4gcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBpZiAodXNlR3JvdXBpbmdQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0LnVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmdQYXJ0ID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticU51bWJlcicsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgS2JxRGVjaW1hbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnBhcnNlZERpZ2l0c0luZm9cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5pc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShjdXJyZW50TG9jYWxlLCB2YWx1ZSwgcGFyc2VkRGlnaXRzSW5mbz8udXNlR3JvdXBpbmcpKSB7XG4gICAgICAgICAgICBvcHRpb25zLnVzZUdyb3VwaW5nID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAvKiBHdWlkZWxpbmUgcmVxdWlyZXMgZm9yIGdyb3VwIHNlcGFyYXRvciB0byBiZSBgc3BhY2VgLCBhcyBpbiAncnUtUlUnIGxvY2FsZS5cbiAgICAgICAgICAgICAqIEJ1dCBieSBkZWZhdWx0IGluIGVzLUxBIGxvY2FsZSBpcyB1c2VkIGBjb21tYWAuXG4gICAgICAgICAgICAgKiBUbyByZWR1Y2UgZGF0YSBtYW5pcHVsYXRpb24sICdydS1SVScgbG9jYWxlIGlzIHVzZWQuICovXG4gICAgICAgICAgICBpZiAoY3VycmVudExvY2FsZSA9PT0gJ2VzLUxBJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsICdydS1SVScsIG9wdGlvbnMpLmZvcm1hdChudW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticURlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGxvY2FsZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBncm91cGluZz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFsncnUnLCAncnUtUlUnXS5pbmNsdWRlcyhsb2NhbGUpICYmIGdyb3VwaW5nID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPCBkZWZhdWx0VmFsdWVGb3JHcm91cGluZ0luUlVMb2NhbGU7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZERpZ2l0c0luZm9cbiAgICApIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUztcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIERlY2ltYWwgcmVwcmVzZW50YXRpb24gb3B0aW9ucywgc3BlY2lmaWVkIGJ5IGEgc3RyaW5nXG4gICAgICogaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PGJyPlxuICAgICAqIDxjb2RlPnttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c308L2NvZGU+LlxuICAgICAqICAgLSBgbWluSW50ZWdlckRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMWAuXG4gICAgICogICAtIGBtaW5GcmFjdGlvbkRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMGAuXG4gICAgICogICAtIGBtYXhGcmFjdGlvbkRpZ2l0c2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgM2AuXG4gICAgICogQHBhcmFtIGxvY2FsZSBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuXG4gICAgICogV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIGBLQlFfTE9DQUxFX0lEYCwgd2hpY2ggaXMgYHJ1YCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgbGV0IHBhcnNlZERpZ2l0c0luZm87XG5cbiAgICAgICAgaWYgKGRpZ2l0c0luZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZERpZ2l0c0luZm8gPSBwYXJzZURpZ2l0c0luZm8oZGlnaXRzSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiBOdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBzdHJUb051bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8qIEd1aWRlbGluZSByZXF1aXJlcyBmb3IgZ3JvdXAgc2VwYXJhdG9yIHRvIGJlIGBzcGFjZWAsIGFzIGluICdydS1SVScgbG9jYWxlLlxuICAgICAgICAgICAgICogQnV0IGJ5IGRlZmF1bHQgaW4gZXMtTEEgbG9jYWxlIGlzIHVzZWQgYGNvbW1hYC5cbiAgICAgICAgICAgICAqIFRvIHJlZHVjZSBkYXRhIG1hbmlwdWxhdGlvbiwgJ3J1LVJVJyBsb2NhbGUgaXMgdXNlZC4gKi9cbiAgICAgICAgICAgIGlmIChjdXJyZW50TG9jYWxlID09PSAnZXMtTEEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEludGwuTnVtYmVyRm9ybWF0LmNhbGwodGhpcywgJ3J1LVJVJywgb3B0aW9ucykuZm9ybWF0KG51bSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsIGN1cnJlbnRMb2NhbGUsIG9wdGlvbnMpLmZvcm1hdChudW0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxVGFibGVOdW1iZXJQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2l0aGluKHN0YXJ0UmFuZ2U6IG51bWJlciwgZW5kUmFuZ2U6IG51bWJlciwgdmFsdWVUb0NoZWNrOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhcnRSYW5nZSA8PSB2YWx1ZVRvQ2hlY2sgJiYgdmFsdWVUb0NoZWNrIDwgZW5kUmFuZ2U7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5AUGlwZSh7IG5hbWU6ICdrYnFSb3VuZE51bWJlcicsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgS2JxUm91bmREZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHJvdW5kaW5nT3B0aW9uczogUm91bmREZWNpbWFsT3B0aW9ucztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGxvY2FsZT86IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlOiBzdHJpbmcgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgdGhpcy5yb3VuZGluZ09wdGlvbnMgPSB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlc1tjdXJyZW50TG9jYWxlXS5mb3JtYXR0ZXJzLm51bWJlci5yb3VuZGluZztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuY2FsY3VsYXRlVW5pdChudW0pO1xuXG4gICAgICAgICAgICBpZiAoIXVuaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcnRzOiB7IG51bT86IG51bWJlcjsgZnJhY3Rpb24/OiBudW1iZXIgfSA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsc0NvbmZpZy5pbnRlcnZhbHMuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l0aGluID0gaXNXaXRoaW4oc3RhcnRSYW5nZSwgZW5kUmFuZ2UsIG51bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3Rob3VzYW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB7IG51bTogTWF0aC5yb3VuZChudW0gLyBST1VORElOR19VTklUU1t1bml0XSkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aXRoaW47XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubnVtXG4gICAgICAgICAgICAgICAgPyBwYXJ0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIG51bTogTWF0aC50cnVuYyhudW0gLyBST1VORElOR19VTklUU1t1bml0XSksXG4gICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJ0c1trZXldID0gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQocGFydHNba2V5XSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gcGFydHMuZnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGAke3BhcnRzLm51bX0ke3RoaXMucm91bmRpbmdPcHRpb25zLmdyb3VwU2VwYXJhdG9yfSR7cGFydHMuZnJhY3Rpb259YFxuICAgICAgICAgICAgICAgIDogYCR7cGFydHMubnVtfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtjYWxjdWxhdGVkVmFsdWV9JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5zZXBhcmF0b3J9JHt0aGlzLnJvdW5kaW5nT3B0aW9uc1t1bml0XX1gO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxUm91bmREZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURlY2ltYWwobnVtOiBudW1iZXIsIGRpdmlkZXI6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoKG51bSAvIGRpdmlkZXIpICUgMSkgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtIC8gUk9VTkRJTkdfVU5JVFNba2V5XSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBrZXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFVuaXQ7XG4gICAgfVxufVxuIl19
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNILHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVuQixNQUFNLGVBQWUsQ0FBQzs7O0FBRXZCLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQiwyQkFBMkIsQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsS0FBYyxFQUNkLFNBQTRCLEVBQzVCLE9BQWdDO0lBRWhDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQjtRQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUss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O1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO2tJQTdHUSxtQkFBbUIsa0JBSUosYUFBYSw2QkFDYixrQkFBa0I7Z0lBTGpDLG1CQUFtQjtzSUFBbkIsbUJBQW1CLGNBRk4sTUFBTTs7NEZBRW5CLG1CQUFtQjtrQkFGL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUtwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEtCUV9ERUZBVUxUX0xPQ0FMRV9JRCxcbiAgICBLQlFfTE9DQUxFX0lELFxuICAgIEtCUV9MT0NBTEVfU0VSVklDRSxcbiAgICBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgIEticU51bWJlckZvcm1hdE9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFBhcnNlZERpZ2l0c0luZm8+KCdLYnFOdW1iZXJGb3JtYXR0ZXJPcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM6IFBhcnNlZERpZ2l0c0luZm8gPSB7XG4gICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogM1xufTtcblxuLyoqIEZvcm1hdHMgYSBudW1iZXIgdmFsdWUgYWNjb3JkaW5nIHRvIGxvY2FsZSBhbmQgZm9ybWF0dGluZyBvcHRpb25zICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyV2l0aExvY2FsZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBmb3JtYXR0ZXI6IEludGwuTnVtYmVyRm9ybWF0LFxuICAgIG9wdGlvbnM/OiBLYnFOdW1iZXJGb3JtYXRPcHRpb25zXG4pOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bSA9IHN0clRvTnVtYmVyKHZhbHVlKTtcblxuICAgIGlmICghb3B0aW9ucz8udmlld0dyb3VwU2VwYXJhdG9yKSByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChudW0pO1xuXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0UGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhudW0pO1xuXG4gICAgZm9yIChjb25zdCBudW1iZXJGb3JtYXRQYXJ0IG9mIG51bWJlckZvcm1hdFBhcnRzKSB7XG4gICAgICAgIGlmIChudW1iZXJGb3JtYXRQYXJ0LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdFBhcnQudmFsdWUgPSBvcHRpb25zLnZpZXdHcm91cFNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudW1iZXJGb3JtYXRQYXJ0cy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIFNwZWNpYWwgY29udHJhY3QgYmV0d2VlbiBgS2JxRGVjaW1hbFBpcGVgIGFuZCBgS2JxVGFibGVOdW1iZXJQaXBlYCxcbiAqIHNvIHRoZXkgY2FuIGJlIGludGVyY2hhbmdlYWJsZSBpbiB0aGUgY2FzZXMgb2YgdXNhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFOdW1lcmljUGlwZSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBzdHJUb051bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB7XG4gICAgY29uc3QgY29lcmNlZCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBudWxsKTtcblxuICAgIGlmIChjb2VyY2VkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZXJjZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIFJvdW5kRGVjaW1hbE9wdGlvbnMge1xuICAgIHNlcGFyYXRvcjogc3RyaW5nO1xuICAgIGdyb3VwU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgdGhvdXNhbmRzPzogc3RyaW5nO1xuICAgIHRlblRob3VzYW5kPzogc3RyaW5nO1xuICAgIG1pbGxpb24/OiBzdHJpbmc7XG4gICAgb25lSHVuZHJlZE1pbGxpb25zPzogc3RyaW5nO1xuICAgIGJpbGxpb24/OiBzdHJpbmc7XG4gICAgdHJpbGxpb246IHN0cmluZztcbiAgICBydGw/OiBib29sZWFuO1xufVxuXG5jb25zdCBST1VORElOR19VTklUUyA9IHtcbiAgICB0aG91c2FuZDogMWUzLFxuICAgIHRlblRob3VzYW5kOiAxMCAqIDFlMyxcbiAgICBtaWxsaW9uOiAxZTYsXG4gICAgb25lSHVuZHJlZE1pbGxpb25zOiAxMDAgKiAxZTYsXG4gICAgYmlsbGlvbjogMWU5LFxuICAgIHRyaWxsaW9uOiAxZTEyXG59O1xuXG5jb25zdCBpbnRlcnZhbHNDb25maWcgPSB7XG4gICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBbJ3J1LVJVJywgJ2VuLVVTJywgJ2VzLUxBJywgJ3B0LUJSJywgJ2ZhLUlSJ10sXG4gICAgaW50ZXJ2YWxzOiBbXG4gICAgICAgIHsgc3RhcnRSYW5nZTogMSwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50ZW5UaG91c2FuZCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiAqIDEwLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMuYmlsbGlvbiB9XG4gICAgXVxufTtcblxuY2xhc3MgUGFyc2VkRGlnaXRzSW5mbyB7XG4gICAgdXNlR3JvdXBpbmc6IGJvb2xlYW47XG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlOiBudW1iZXIgPSAxMDAwMDtcblxuZnVuY3Rpb24gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm86IHN0cmluZyk6IFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIGNvbnN0IHBhcnRzID0gZGlnaXRzSW5mby5tYXRjaChOVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c0luZm99IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5JbnRQYXJ0ID0gcGFydHNbbWluSW50R3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWluRnJhY3Rpb25QYXJ0ID0gcGFydHNbbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCBtYXhGcmFjdGlvblBhcnQgPSBwYXJ0c1ttYXhGcmFjdGlvbkdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IHVzZUdyb3VwaW5nUGFydCA9IHBhcnRzW3VzZUdyb3VwaW5nUG9zaXRpb25dO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFBhcnNlZERpZ2l0c0luZm8oKTtcblxuICAgIGlmIChtaW5JbnRQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gcGFyc2VJbnQobWluSW50UGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBwYXJzZUludChtaW5GcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtYXhGcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWF4RnJhY3Rpb25QYXJ0KTtcbiAgICB9IGVsc2UgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsICYmIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPiByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIGlmICh1c2VHcm91cGluZ1BhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZ1BhcnQgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFEZWNpbWFsUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGN1cnJlbnRMb2NhbGUsIHZhbHVlLCBwYXJzZWREaWdpdHNJbmZvPy51c2VHcm91cGluZykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXNlR3JvdXBpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFEZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShsb2NhbGU6IHN0cmluZywgdmFsdWU6IG51bWJlciwgZ3JvdXBpbmc/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBbJ3J1JywgJ3J1LVJVJ10uaW5jbHVkZXMobG9jYWxlKSAmJlxuICAgICAgICAgICAgZ3JvdXBpbmcgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgTWF0aC5hYnModmFsdWUpIDwgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFUYWJsZU51bWJlclBpcGUgZm9yIHBpcGUgJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSl9J2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaXRoaW4oc3RhcnRSYW5nZTogbnVtYmVyLCBlbmRSYW5nZTogbnVtYmVyLCB2YWx1ZVRvQ2hlY2s6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGFydFJhbmdlIDw9IHZhbHVlVG9DaGVjayAmJiB2YWx1ZVRvQ2hlY2sgPCBlbmRSYW5nZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticVJvdW5kTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFSb3VuZERlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcm91bmRpbmdPcHRpb25zOiBSb3VuZERlY2ltYWxPcHRpb25zO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5zdWJzY3JpYmUoKG5ld0lkOiBzdHJpbmcpID0+ICh0aGlzLmlkID0gbmV3SWQpKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGU6IHN0cmluZyA9IGxvY2FsZSB8fCB0aGlzLmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRDtcblxuICAgICAgICB0aGlzLnJvdW5kaW5nT3B0aW9ucyA9IHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tjdXJyZW50TG9jYWxlXS5mb3JtYXR0ZXJzLm51bWJlci5yb3VuZGluZztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuY2FsY3VsYXRlVW5pdChudW0pO1xuXG4gICAgICAgICAgICBpZiAoIXVuaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcnRzOiB7IG51bT86IG51bWJlcjsgZnJhY3Rpb24/OiBudW1iZXIgfSA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsc0NvbmZpZy5pbnRlcnZhbHMuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l0aGluID0gaXNXaXRoaW4oc3RhcnRSYW5nZSwgZW5kUmFuZ2UsIG51bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3Rob3VzYW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB7IG51bTogTWF0aC5yb3VuZChudW0gLyBST1VORElOR19VTklUU1t1bml0XSkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aXRoaW47XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubnVtXG4gICAgICAgICAgICAgICAgPyBwYXJ0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIG51bTogTWF0aC50cnVuYyhudW0gLyBST1VORElOR19VTklUU1t1bml0XSksXG4gICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJ0c1trZXldID0gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQocGFydHNba2V5XSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gcGFydHMuZnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGAke3BhcnRzLm51bX0ke3RoaXMucm91bmRpbmdPcHRpb25zLmdyb3VwU2VwYXJhdG9yfSR7cGFydHMuZnJhY3Rpb259YFxuICAgICAgICAgICAgICAgIDogYCR7cGFydHMubnVtfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtjYWxjdWxhdGVkVmFsdWV9JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5zZXBhcmF0b3J9JHt0aGlzLnJvdW5kaW5nT3B0aW9uc1t1bml0XX1gO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxUm91bmREZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURlY2ltYWwobnVtOiBudW1iZXIsIGRpdmlkZXI6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoKG51bSAvIGRpdmlkZXIpICUgMSkgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtIC8gUk9VTkRJTkdfVU5JVFNba2V5XSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBrZXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFVuaXQ7XG4gICAgfVxufVxuIl19
@@ -2,13 +2,13 @@ import { NgModule } from '@angular/core';
2
2
  import { KbqForm, KbqFormElement } from './forms.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class KbqFormsModule {
5
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KbqFormsModule, declarations: [KbqForm,
5
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, declarations: [KbqForm,
7
7
  KbqFormElement], exports: [KbqForm,
8
8
  KbqFormElement] }); }
9
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormsModule }); }
9
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormsModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  exports: [
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
21
21
  ]
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1zL2Zvcm1zLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBWTVELE1BQU0sT0FBTyxjQUFjO2lJQUFkLGNBQWM7a0lBQWQsY0FBYyxpQkFKbkIsT0FBTztZQUNQLGNBQWMsYUFMZCxPQUFPO1lBQ1AsY0FBYztrSUFPVCxjQUFjOzsyRkFBZCxjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDVixPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticUZvcm0sIEticUZvcm1FbGVtZW50IH0gZnJvbSAnLi9mb3Jtcy5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxRm9ybSxcbiAgICAgICAgS2JxRm9ybUVsZW1lbnRcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBLYnFGb3JtLFxuICAgICAgICBLYnFGb3JtRWxlbWVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybXNNb2R1bGUge31cbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1zL2Zvcm1zLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBWTVELE1BQU0sT0FBTyxjQUFjO2tJQUFkLGNBQWM7bUlBQWQsY0FBYyxpQkFKbkIsT0FBTztZQUNQLGNBQWMsYUFMZCxPQUFPO1lBQ1AsY0FBYzttSUFPVCxjQUFjOzs0RkFBZCxjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDVixPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticUZvcm0sIEticUZvcm1FbGVtZW50IH0gZnJvbSAnLi9mb3Jtcy5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxRm9ybSxcbiAgICAgICAgS2JxRm9ybUVsZW1lbnRcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBLYnFGb3JtLFxuICAgICAgICBLYnFGb3JtRWxlbWVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybXNNb2R1bGUge31cbiJdfQ==
@@ -18,10 +18,10 @@ export class KbqFormElement {
18
18
  this.hasLegend = this.element.nativeElement.firstElementChild.classList.contains('kbq-form__legend');
19
19
  }
20
20
  }
21
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
22
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqFormElement"], ngImport: i0 }); }
21
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
22
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqFormElement"], ngImport: i0 }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqFormElement, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormElement, decorators: [{
25
25
  type: Directive,
26
26
  args: [{
27
27
  selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend',
@@ -47,10 +47,10 @@ export class KbqForm {
47
47
  element.margin = !!(nextElement && !nextElement.hasLegend);
48
48
  });
49
49
  }
50
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqForm, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqForm"], ngImport: i0 }); }
50
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqForm, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqForm"], ngImport: i0 }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KbqForm, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqForm, decorators: [{
54
54
  type: Directive,
55
55
  args: [{
56
56
  selector: '.kbq-form-vertical, .kbq-form-horizontal',
@@ -63,4 +63,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
63
63
  type: ContentChildren,
64
64
  args: [KbqFormElement]
65
65
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1zL2Zvcm1zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTcEcsTUFBTSxPQUFPLGNBQWM7SUFVdkIsWUFBNkIsT0FBZ0M7UUFBaEMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFUN0QsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFJMkMsQ0FBQztJQUVqRSxrQkFBa0I7UUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFFdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7SUFDTCxDQUFDO2lJQXZCUSxjQUFjO3FIQUFkLGNBQWMsd0xBUU4sY0FBYzs7MkZBUnRCLGNBQWM7a0JBUDFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdEQUF3RDtvQkFDbEUsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsSUFBSSxFQUFFO3dCQUNGLDZCQUE2QixFQUFFLFFBQVE7cUJBQzFDO2lCQUNKOytFQVNvQyxRQUFRO3NCQUF4QyxlQUFlO3VCQUFDLGNBQWM7O0FBeUJuQyxNQUFNLE9BQU8sT0FBTztJQUdoQixrQkFBa0I7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQW1DO1FBQzlDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQStCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXhFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztpSUFqQlEsT0FBTztxSEFBUCxPQUFPLCtJQUNDLGNBQWM7OzJGQUR0QixPQUFPO2tCQVBuQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFFBQVEsRUFBRSxTQUFTO29CQUNuQixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNKOzhCQUVvQyxRQUFRO3NCQUF4QyxlQUFlO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnLmticS1mb3JtX19yb3csIC5rYnEtZm9ybV9fZmllbGRzZXQsIC5rYnEtZm9ybV9fbGVnZW5kJyxcbiAgICBleHBvcnRBczogJ2ticUZvcm1FbGVtZW50JyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3Mua2JxLWZvcm0tcm93X21hcmdpbl0nOiAnbWFyZ2luJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybUVsZW1lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBtYXJnaW4gPSBmYWxzZTtcblxuICAgIGlzUm93ID0gZmFsc2U7XG4gICAgaXNGaWVsZFNldCA9IGZhbHNlO1xuICAgIGhhc0xlZ2VuZCA9IGZhbHNlO1xuICAgIGlzSG9yaXpvbnRhbCA9IGZhbHNlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFGb3JtRWxlbWVudCkgZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG5cbiAgICAgICAgdGhpcy5pc1JvdyA9IGNsYXNzTGlzdC5jb250YWlucygna2JxLWZvcm1fX3JvdycpO1xuICAgICAgICB0aGlzLmlzSG9yaXpvbnRhbCA9IGNsYXNzTGlzdC5jb250YWlucygna2JxLWhvcml6b250YWwnKTtcblxuICAgICAgICB0aGlzLmlzRmllbGRTZXQgPSBjbGFzc0xpc3QuY29udGFpbnMoJ2ticS1mb3JtX19maWVsZHNldCcpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmllbGRTZXQgJiYgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzTGVnZW5kID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdrYnEtZm9ybV9fbGVnZW5kJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnLmticS1mb3JtLXZlcnRpY2FsLCAua2JxLWZvcm0taG9yaXpvbnRhbCcsXG4gICAgZXhwb3J0QXM6ICdrYnFGb3JtJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWZvcm0nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFGb3JtIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFGb3JtRWxlbWVudCkgZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaGFuZGxlRWxlbWVudHMoZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFbGVtZW50OiBLYnFGb3JtRWxlbWVudCB8IHVuZGVmaW5lZCA9IGVsZW1lbnRzLmdldChpbmRleCArIDEpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pc0ZpZWxkU2V0ICYmICFlbGVtZW50LmlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudHMoZWxlbWVudC5lbGVtZW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnQubWFyZ2luID0gISEobmV4dEVsZW1lbnQgJiYgIW5leHRFbGVtZW50Lmhhc0xlZ2VuZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1zL2Zvcm1zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGVBQWUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTcEcsTUFBTSxPQUFPLGNBQWM7SUFVdkIsWUFBNkIsT0FBZ0M7UUFBaEMsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFUN0QsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7SUFJMkMsQ0FBQztJQUVqRSxrQkFBa0I7UUFDZCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7UUFFdkQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXpELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7SUFDTCxDQUFDO2tJQXZCUSxjQUFjO3NIQUFkLGNBQWMsd0xBUU4sY0FBYzs7NEZBUnRCLGNBQWM7a0JBUDFCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHdEQUF3RDtvQkFDbEUsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsSUFBSSxFQUFFO3dCQUNGLDZCQUE2QixFQUFFLFFBQVE7cUJBQzFDO2lCQUNKOytFQVNvQyxRQUFRO3NCQUF4QyxlQUFlO3VCQUFDLGNBQWM7O0FBeUJuQyxNQUFNLE9BQU8sT0FBTztJQUdoQixrQkFBa0I7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQW1DO1FBQzlDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQStCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXhFLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztrSUFqQlEsT0FBTztzSEFBUCxPQUFPLCtJQUNDLGNBQWM7OzRGQUR0QixPQUFPO2tCQVBuQixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwwQ0FBMEM7b0JBQ3BELFFBQVEsRUFBRSxTQUFTO29CQUNuQixJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLFVBQVU7cUJBQ3BCO2lCQUNKOzhCQUVvQyxRQUFRO3NCQUF4QyxlQUFlO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnLmticS1mb3JtX19yb3csIC5rYnEtZm9ybV9fZmllbGRzZXQsIC5rYnEtZm9ybV9fbGVnZW5kJyxcbiAgICBleHBvcnRBczogJ2ticUZvcm1FbGVtZW50JyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3Mua2JxLWZvcm0tcm93X21hcmdpbl0nOiAnbWFyZ2luJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybUVsZW1lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBtYXJnaW4gPSBmYWxzZTtcblxuICAgIGlzUm93ID0gZmFsc2U7XG4gICAgaXNGaWVsZFNldCA9IGZhbHNlO1xuICAgIGhhc0xlZ2VuZCA9IGZhbHNlO1xuICAgIGlzSG9yaXpvbnRhbCA9IGZhbHNlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFGb3JtRWxlbWVudCkgZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG5cbiAgICAgICAgdGhpcy5pc1JvdyA9IGNsYXNzTGlzdC5jb250YWlucygna2JxLWZvcm1fX3JvdycpO1xuICAgICAgICB0aGlzLmlzSG9yaXpvbnRhbCA9IGNsYXNzTGlzdC5jb250YWlucygna2JxLWhvcml6b250YWwnKTtcblxuICAgICAgICB0aGlzLmlzRmllbGRTZXQgPSBjbGFzc0xpc3QuY29udGFpbnMoJ2ticS1mb3JtX19maWVsZHNldCcpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmllbGRTZXQgJiYgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzTGVnZW5kID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdrYnEtZm9ybV9fbGVnZW5kJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnLmticS1mb3JtLXZlcnRpY2FsLCAua2JxLWZvcm0taG9yaXpvbnRhbCcsXG4gICAgZXhwb3J0QXM6ICdrYnFGb3JtJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWZvcm0nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBLYnFGb3JtIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihLYnFGb3JtRWxlbWVudCkgZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudHModGhpcy5lbGVtZW50cyk7XG4gICAgfVxuXG4gICAgaGFuZGxlRWxlbWVudHMoZWxlbWVudHM6IFF1ZXJ5TGlzdDxLYnFGb3JtRWxlbWVudD4pOiB2b2lkIHtcbiAgICAgICAgZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRFbGVtZW50OiBLYnFGb3JtRWxlbWVudCB8IHVuZGVmaW5lZCA9IGVsZW1lbnRzLmdldChpbmRleCArIDEpO1xuXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5pc0ZpZWxkU2V0ICYmICFlbGVtZW50LmlzSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRWxlbWVudHMoZWxlbWVudC5lbGVtZW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGVsZW1lbnQubWFyZ2luID0gISEobmV4dEVsZW1lbnQgJiYgIW5leHRFbGVtZW50Lmhhc0xlZ2VuZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==