@coreui/angular-pro 5.2.22 → 5.2.25

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 (268) hide show
  1. package/esm2022/lib/accordion/accordion/accordion.component.mjs +4 -4
  2. package/esm2022/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
  3. package/esm2022/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
  4. package/esm2022/lib/accordion/accordion.module.mjs +5 -5
  5. package/esm2022/lib/accordion/accordion.service.mjs +4 -4
  6. package/esm2022/lib/alert/alert-heading.directive.mjs +4 -4
  7. package/esm2022/lib/alert/alert-link.directive.mjs +4 -4
  8. package/esm2022/lib/alert/alert.component.mjs +4 -4
  9. package/esm2022/lib/alert/alert.module.mjs +5 -5
  10. package/esm2022/lib/avatar/avatar.component.mjs +4 -4
  11. package/esm2022/lib/avatar/avatar.module.mjs +5 -5
  12. package/esm2022/lib/backdrop/backdrop.service.mjs +4 -4
  13. package/esm2022/lib/badge/badge.component.mjs +4 -4
  14. package/esm2022/lib/badge/badge.module.mjs +5 -5
  15. package/esm2022/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +4 -4
  16. package/esm2022/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
  17. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +4 -4
  18. package/esm2022/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
  19. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  20. package/esm2022/lib/button/button-close.directive.mjs +4 -4
  21. package/esm2022/lib/button/button.directive.mjs +4 -4
  22. package/esm2022/lib/button/button.module.mjs +5 -5
  23. package/esm2022/lib/button-group/button-group/button-group.component.mjs +4 -4
  24. package/esm2022/lib/button-group/button-group.module.mjs +5 -5
  25. package/esm2022/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
  26. package/esm2022/lib/calendar/calendar/calendar-class-view.pipe.mjs +4 -4
  27. package/esm2022/lib/calendar/calendar/calendar.component.mjs +4 -4
  28. package/esm2022/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +4 -4
  29. package/esm2022/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +4 -4
  30. package/esm2022/lib/calendar/calendar-month/calendar-class-row.pipe.mjs +4 -4
  31. package/esm2022/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +4 -4
  32. package/esm2022/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +4 -4
  33. package/esm2022/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
  34. package/esm2022/lib/calendar/calendar-month/calendar-day.pipe.mjs +4 -4
  35. package/esm2022/lib/calendar/calendar-month/calendar-month.component.mjs +4 -4
  36. package/esm2022/lib/calendar/calendar-month/calendar-row.directive.mjs +4 -4
  37. package/esm2022/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +4 -4
  38. package/esm2022/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
  39. package/esm2022/lib/calendar/calendar.module.mjs +5 -5
  40. package/esm2022/lib/calendar/calendar.service.mjs +4 -4
  41. package/esm2022/lib/callout/callout.component.mjs +4 -4
  42. package/esm2022/lib/callout/callout.module.mjs +5 -5
  43. package/esm2022/lib/card/card-body.component.mjs +4 -4
  44. package/esm2022/lib/card/card-footer.component.mjs +4 -4
  45. package/esm2022/lib/card/card-group.component.mjs +4 -4
  46. package/esm2022/lib/card/card-header-actions.component.mjs +4 -4
  47. package/esm2022/lib/card/card-header.component.mjs +4 -4
  48. package/esm2022/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
  49. package/esm2022/lib/card/card-img.directive.mjs +4 -4
  50. package/esm2022/lib/card/card-link.directive.mjs +4 -4
  51. package/esm2022/lib/card/card-subtitle.directive.mjs +4 -4
  52. package/esm2022/lib/card/card-text.directive.mjs +4 -4
  53. package/esm2022/lib/card/card-title.directive.mjs +4 -4
  54. package/esm2022/lib/card/card.component.mjs +4 -4
  55. package/esm2022/lib/card/card.module.mjs +5 -5
  56. package/esm2022/lib/carousel/carousel/carousel.component.mjs +4 -4
  57. package/esm2022/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
  58. package/esm2022/lib/carousel/carousel-control/carousel-control.component.mjs +4 -4
  59. package/esm2022/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +4 -4
  60. package/esm2022/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
  61. package/esm2022/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
  62. package/esm2022/lib/carousel/carousel-state.mjs +4 -4
  63. package/esm2022/lib/carousel/carousel.config.mjs +4 -4
  64. package/esm2022/lib/carousel/carousel.module.mjs +5 -5
  65. package/esm2022/lib/carousel/carousel.service.mjs +4 -4
  66. package/esm2022/lib/collapse/collapse.directive.mjs +4 -4
  67. package/esm2022/lib/collapse/collapse.module.mjs +5 -5
  68. package/esm2022/lib/date-picker/date-picker.component.mjs +4 -4
  69. package/esm2022/lib/date-picker/date-picker.module.mjs +5 -5
  70. package/esm2022/lib/date-range-picker/date-range-picker/custom-range-key.pipe.mjs +4 -4
  71. package/esm2022/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +4 -4
  72. package/esm2022/lib/date-range-picker/date-range-picker.module.mjs +5 -5
  73. package/esm2022/lib/dropdown/dropdown/dropdown.component.mjs +7 -7
  74. package/esm2022/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
  75. package/esm2022/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
  76. package/esm2022/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
  77. package/esm2022/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
  78. package/esm2022/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
  79. package/esm2022/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
  80. package/esm2022/lib/dropdown/dropdown.module.mjs +5 -5
  81. package/esm2022/lib/dropdown/dropdown.service.mjs +4 -4
  82. package/esm2022/lib/element-cover/element-cover.component.mjs +4 -4
  83. package/esm2022/lib/element-cover/element-cover.module.mjs +5 -5
  84. package/esm2022/lib/footer/footer.component.mjs +4 -4
  85. package/esm2022/lib/footer/footer.module.mjs +5 -5
  86. package/esm2022/lib/form/form/form.directive.mjs +4 -4
  87. package/esm2022/lib/form/form-check/form-check-input.directive.mjs +4 -4
  88. package/esm2022/lib/form/form-check/form-check-label.directive.mjs +4 -4
  89. package/esm2022/lib/form/form-check/form-check.component.mjs +4 -4
  90. package/esm2022/lib/form/form-control/form-control.directive.mjs +4 -4
  91. package/esm2022/lib/form/form-feedback/form-feedback.component.mjs +4 -4
  92. package/esm2022/lib/form/form-floating/form-floating.directive.mjs +4 -4
  93. package/esm2022/lib/form/form-label/form-label.directive.mjs +4 -4
  94. package/esm2022/lib/form/form-select/form-select.directive.mjs +4 -4
  95. package/esm2022/lib/form/form-text/form-text.directive.mjs +4 -4
  96. package/esm2022/lib/form/form.module.mjs +5 -5
  97. package/esm2022/lib/form/input-group/input-group.component.mjs +4 -4
  98. package/esm2022/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
  99. package/esm2022/lib/grid/col.component.mjs +4 -4
  100. package/esm2022/lib/grid/col.directive.mjs +4 -4
  101. package/esm2022/lib/grid/container.component.mjs +4 -4
  102. package/esm2022/lib/grid/grid.module.mjs +5 -5
  103. package/esm2022/lib/grid/gutter.directive.mjs +4 -4
  104. package/esm2022/lib/grid/row.component.mjs +4 -4
  105. package/esm2022/lib/grid/row.directive.mjs +4 -4
  106. package/esm2022/lib/header/header/header.component.mjs +4 -4
  107. package/esm2022/lib/header/header-brand/header-brand.component.mjs +4 -4
  108. package/esm2022/lib/header/header-divider/header-divider.component.mjs +4 -4
  109. package/esm2022/lib/header/header-nav/header-nav.component.mjs +4 -4
  110. package/esm2022/lib/header/header-text/header-text.component.mjs +4 -4
  111. package/esm2022/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
  112. package/esm2022/lib/header/header.module.mjs +5 -5
  113. package/esm2022/lib/image/img.directive.mjs +4 -4
  114. package/esm2022/lib/image/img.module.mjs +5 -5
  115. package/esm2022/lib/list-group/list-group-item.directive.mjs +4 -4
  116. package/esm2022/lib/list-group/list-group.directive.mjs +4 -4
  117. package/esm2022/lib/list-group/list-group.module.mjs +5 -5
  118. package/esm2022/lib/loading-button/loading-button.component.mjs +4 -4
  119. package/esm2022/lib/loading-button/loading-button.module.mjs +5 -5
  120. package/esm2022/lib/modal/modal/modal.component.mjs +4 -4
  121. package/esm2022/lib/modal/modal-body/modal-body.component.mjs +4 -4
  122. package/esm2022/lib/modal/modal-content/modal-content.component.mjs +4 -4
  123. package/esm2022/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
  124. package/esm2022/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
  125. package/esm2022/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
  126. package/esm2022/lib/modal/modal-header/modal-header.component.mjs +4 -4
  127. package/esm2022/lib/modal/modal-title/modal-title.directive.mjs +4 -4
  128. package/esm2022/lib/modal/modal.module.mjs +5 -5
  129. package/esm2022/lib/modal/modal.service.mjs +4 -4
  130. package/esm2022/lib/multi-select/multi-select/multi-select-search.directive.mjs +4 -4
  131. package/esm2022/lib/multi-select/multi-select/multi-select.component.mjs +8 -6
  132. package/esm2022/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
  133. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
  134. package/esm2022/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +4 -4
  135. package/esm2022/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
  136. package/esm2022/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
  137. package/esm2022/lib/multi-select/multi-select.module.mjs +5 -5
  138. package/esm2022/lib/multi-select/multi-select.service.mjs +4 -4
  139. package/esm2022/lib/nav/nav-item.component.mjs +4 -4
  140. package/esm2022/lib/nav/nav-link.directive.mjs +4 -4
  141. package/esm2022/lib/nav/nav.component.mjs +4 -4
  142. package/esm2022/lib/nav/nav.module.mjs +5 -5
  143. package/esm2022/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
  144. package/esm2022/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
  145. package/esm2022/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
  146. package/esm2022/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
  147. package/esm2022/lib/navbar/navbar.component.mjs +4 -4
  148. package/esm2022/lib/navbar/navbar.module.mjs +5 -5
  149. package/esm2022/lib/offcanvas/offcanvas/offcanvas.component.mjs +4 -4
  150. package/esm2022/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
  151. package/esm2022/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +4 -4
  152. package/esm2022/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
  153. package/esm2022/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
  154. package/esm2022/lib/offcanvas/offcanvas.module.mjs +5 -5
  155. package/esm2022/lib/offcanvas/offcanvas.service.mjs +4 -4
  156. package/esm2022/lib/pagination/page-item/page-item.component.mjs +4 -4
  157. package/esm2022/lib/pagination/page-item/page-item.directive.mjs +4 -4
  158. package/esm2022/lib/pagination/page-link/page-link.directive.mjs +4 -4
  159. package/esm2022/lib/pagination/pagination/pagination.component.mjs +4 -4
  160. package/esm2022/lib/pagination/pagination.module.mjs +5 -5
  161. package/esm2022/lib/placeholder/placeholder-animation.directive.mjs +4 -4
  162. package/esm2022/lib/placeholder/placeholder.directive.mjs +4 -4
  163. package/esm2022/lib/placeholder/placeholder.module.mjs +5 -5
  164. package/esm2022/lib/popover/popover/popover.component.mjs +4 -4
  165. package/esm2022/lib/popover/popover.directive.mjs +4 -4
  166. package/esm2022/lib/popover/popover.module.mjs +5 -5
  167. package/esm2022/lib/progress/progress-bar.component.mjs +4 -4
  168. package/esm2022/lib/progress/progress-bar.directive.mjs +4 -4
  169. package/esm2022/lib/progress/progress-stacked.component.mjs +4 -4
  170. package/esm2022/lib/progress/progress.component.mjs +4 -4
  171. package/esm2022/lib/progress/progress.module.mjs +5 -5
  172. package/esm2022/lib/rating/rating-item-label/rating-item-label.component.mjs +4 -4
  173. package/esm2022/lib/rating/rating.component.mjs +4 -4
  174. package/esm2022/lib/rating/rating.module.mjs +5 -5
  175. package/esm2022/lib/services/class-toggle.service.mjs +4 -4
  176. package/esm2022/lib/services/color-mode.service.mjs +4 -4
  177. package/esm2022/lib/services/in-memory-storage.service.mjs +4 -4
  178. package/esm2022/lib/services/intersection.service.mjs +4 -4
  179. package/esm2022/lib/services/listeners.service.mjs +4 -4
  180. package/esm2022/lib/services/local-storage.service.mjs +4 -4
  181. package/esm2022/lib/shared/element-ref.directive.mjs +4 -4
  182. package/esm2022/lib/shared/html-attr.directive.mjs +29 -28
  183. package/esm2022/lib/shared/shared.module.mjs +5 -5
  184. package/esm2022/lib/shared/template-id.directive.mjs +4 -4
  185. package/esm2022/lib/shared/theme.directive.mjs +4 -4
  186. package/esm2022/lib/sidebar/sidebar/sidebar.component.mjs +4 -4
  187. package/esm2022/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
  188. package/esm2022/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
  189. package/esm2022/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +4 -4
  190. package/esm2022/lib/sidebar/sidebar-header/sidebar-header.component.mjs +4 -4
  191. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
  192. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
  193. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +4 -4
  194. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
  195. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
  196. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
  197. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +7 -7
  198. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
  199. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
  200. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +7 -7
  201. package/esm2022/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
  202. package/esm2022/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
  203. package/esm2022/lib/sidebar/sidebar-toggler/sidebar-toggler.directive.mjs +4 -4
  204. package/esm2022/lib/sidebar/sidebar.module.mjs +5 -5
  205. package/esm2022/lib/sidebar/sidebar.service.mjs +4 -4
  206. package/esm2022/lib/smart-pagination/smart-pagination.component.mjs +4 -4
  207. package/esm2022/lib/smart-pagination/smart-pagination.module.mjs +5 -5
  208. package/esm2022/lib/smart-table/smart-table/smart-table.component.mjs +4 -4
  209. package/esm2022/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +4 -4
  210. package/esm2022/lib/smart-table/smart-table-filter/filter-input.directive.mjs +4 -4
  211. package/esm2022/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +4 -4
  212. package/esm2022/lib/smart-table/smart-table-head/smart-table-column-label.pipe.mjs +4 -4
  213. package/esm2022/lib/smart-table/smart-table-head/smart-table-head.component.mjs +4 -4
  214. package/esm2022/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +4 -4
  215. package/esm2022/lib/smart-table/smart-table.module.mjs +5 -5
  216. package/esm2022/lib/spinner/spinner.component.mjs +4 -4
  217. package/esm2022/lib/spinner/spinner.module.mjs +5 -5
  218. package/esm2022/lib/table/table-active.directive.mjs +4 -4
  219. package/esm2022/lib/table/table-color.directive.mjs +4 -4
  220. package/esm2022/lib/table/table.directive.mjs +4 -4
  221. package/esm2022/lib/table/table.module.mjs +5 -5
  222. package/esm2022/lib/tabs/tab-content/tab-content.component.mjs +4 -4
  223. package/esm2022/lib/tabs/tab-content-ref.directive.mjs +4 -4
  224. package/esm2022/lib/tabs/tab-pane/tab-pane.component.mjs +4 -4
  225. package/esm2022/lib/tabs/tab.service.mjs +4 -4
  226. package/esm2022/lib/tabs/tabs.module.mjs +5 -5
  227. package/esm2022/lib/tabs-2/tab/tab.directive.mjs +4 -4
  228. package/esm2022/lib/tabs-2/tab-panel/tab-panel.component.mjs +7 -7
  229. package/esm2022/lib/tabs-2/tabs-content/tabs-content.component.mjs +4 -4
  230. package/esm2022/lib/tabs-2/tabs-list/tabs-list.component.mjs +6 -6
  231. package/esm2022/lib/tabs-2/tabs.component.mjs +4 -4
  232. package/esm2022/lib/tabs-2/tabs.service.mjs +4 -4
  233. package/esm2022/lib/tabs-2/tabs2.module.mjs +5 -5
  234. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +7 -7
  235. package/esm2022/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +7 -7
  236. package/esm2022/lib/time-picker/time-picker.component.mjs +4 -4
  237. package/esm2022/lib/time-picker/time-picker.module.mjs +5 -5
  238. package/esm2022/lib/toast/toast/toast.component.mjs +4 -4
  239. package/esm2022/lib/toast/toast-body/toast-body.component.mjs +4 -4
  240. package/esm2022/lib/toast/toast-close.directive.mjs +4 -4
  241. package/esm2022/lib/toast/toast-header/toast-header.component.mjs +4 -4
  242. package/esm2022/lib/toast/toast.module.mjs +5 -5
  243. package/esm2022/lib/toast/toaster/toaster-host.directive.mjs +4 -4
  244. package/esm2022/lib/toast/toaster/toaster.component.mjs +4 -4
  245. package/esm2022/lib/toast/toaster/toaster.service.mjs +4 -4
  246. package/esm2022/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
  247. package/esm2022/lib/tooltip/tooltip.directive.mjs +4 -4
  248. package/esm2022/lib/tooltip/tooltip.module.mjs +5 -5
  249. package/esm2022/lib/utilities/align.directive.mjs +4 -4
  250. package/esm2022/lib/utilities/bg-color.directive.mjs +4 -4
  251. package/esm2022/lib/utilities/border.directive.mjs +4 -4
  252. package/esm2022/lib/utilities/rounded.directive.mjs +4 -4
  253. package/esm2022/lib/utilities/shadow-on-scroll.directive.mjs +4 -4
  254. package/esm2022/lib/utilities/text-bg-color.directive.mjs +4 -4
  255. package/esm2022/lib/utilities/text-color.directive.mjs +4 -4
  256. package/esm2022/lib/utilities/utilities.module.mjs +5 -5
  257. package/esm2022/lib/widget/widget-stat-a/widget-stat-a.component.mjs +4 -4
  258. package/esm2022/lib/widget/widget-stat-b/widget-stat-b.component.mjs +4 -4
  259. package/esm2022/lib/widget/widget-stat-c/widget-stat-c.component.mjs +4 -4
  260. package/esm2022/lib/widget/widget-stat-d/widget-stat-d.component.mjs +4 -4
  261. package/esm2022/lib/widget/widget-stat-e/widget-stat-e.component.mjs +4 -4
  262. package/esm2022/lib/widget/widget-stat-f/widget-stat-f.component.mjs +4 -4
  263. package/esm2022/lib/widget/widget.module.mjs +5 -5
  264. package/fesm2022/coreui-angular-pro.mjs +886 -883
  265. package/fesm2022/coreui-angular-pro.mjs.map +1 -1
  266. package/lib/multi-select/multi-select/multi-select.component.d.ts +1 -1
  267. package/lib/shared/html-attr.directive.d.ts +5 -10
  268. package/package.json +3 -3
@@ -44,8 +44,8 @@ export class DatePickerComponent extends DateRangePickerComponent {
44
44
  subscription?.unsubscribe();
45
45
  });
46
46
  }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: DatePickerComponent, isStandalone: true, selector: "c-date-picker", inputs: { calendars: { classPropertyName: "calendars", publicName: "calendars", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, startDateModel: { classPropertyName: "startDateModel", publicName: "date", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateChange: "dateChange", startDateModel: "dateChange" }, providers: [
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: DatePickerComponent, isStandalone: true, selector: "c-date-picker", inputs: { calendars: { classPropertyName: "calendars", publicName: "calendars", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, startDateModel: { classPropertyName: "startDateModel", publicName: "date", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateChange: "dateChange", startDateModel: "dateChange" }, providers: [
49
49
  {
50
50
  provide: NG_VALUE_ACCESSOR,
51
51
  useExisting: forwardRef(() => DatePickerComponent),
@@ -53,7 +53,7 @@ export class DatePickerComponent extends DateRangePickerComponent {
53
53
  }
54
54
  ], exportAs: ["cDatePicker"], usesInheritance: true, ngImport: i0, template: "<fieldset [formGroup]=\"dateRangeGroup\">\n <c-dropdown #dropdown=\"cDropdown\" [(visible)]=\"visible\" [autoClose]=\"'outside'\" [ngClass]=\"datePickerClasses\"\n [popperOptions]=\"popperjsOptions()\" class=\"date-picker picker\">\n <div [caret]=\"false\"\n [disabled]=\"disabled() ?? dropdown.visible\"\n cDropdownToggle\n class=\"date-picker-input-group\"\n >\n <input #startDateElementRef\n (change)=\"handleStartDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputStartHoverValue()}\"\n [placeholder]=\"startDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"range() ? undefined : valid()\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"startDateInput\"\n pattern=\"[1-9]*\"\n >\n @if (range() && separator()) {\n <div class=\"date-picker-separator\"></div>\n }\n @if (range()) {\n <input #endDateElementRef\n (change)=\"handleEndDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputEndHoverValue()}\"\n [placeholder]=\"endDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"valid() ?? undefined\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"endDateInput\"\n pattern=\"[1-9]*\"\n >\n }\n @if (indicator()) {\n <div class=\"date-picker-indicator\"></div>\n }\n @if (cleaner() && startDateElementRef.value && !disabled()) {\n <div (click)=\"!disabled() && handleClear($event)\" class=\"date-picker-cleaner\" role=\"button\"></div>\n }\n </div>\n <div cDropdownMenu class=\"date-picker-dropdown py-0\">\n <div class=\"date-picker-body\">\n @if (!showRanges) {\n @if (ranges() && customRanges.length > 0) {\n <div class=\"date-picker-ranges\">\n @for (customRange of customRanges; track customRange) {\n <button (click)=\"setCustomRange(customRange)\"\n [color]=\"rangesButtonsColor()\"\n [size]=\"rangesButtonsSize()\"\n [variant]=\"rangesButtonsVariant()\"\n cButton>\n {{ customRange | customRangeKey }}\n </button>\n }\n </div>\n }\n }\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars()\"\n [dateFilter]=\"dateFilter()\"\n [dayFormat]=\"dayFormat()\"\n [disabledDates]=\"disabledDates()\"\n [endDate]=\"endDate()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [locale]=\"locale()\"\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [navYearFirst]=\"navYearFirst()\"\n [navigation]=\"navigation()\"\n [range]=\"range()\"\n [selectAdjacentDays]=\"selectAdjacentDays()\"\n [selectionType]=\"selectionType()\"\n [showAdjacentDays]=\"showAdjacentDays()\"\n [showWeekNumber]=\"showWeekNumber()\"\n [startDate]=\"startDate()\"\n [weekNumbersLabel]=\"weekNumbersLabel()\"\n [weekdayFormat]=\"weekdayFormat()\"\n class=\"date-picker-calendars\"\n />\n @if (false && timepicker) {\n <div class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!startDate()\"\n [time]=\"startDate() ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n />\n @if (range()) {\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!endDate()\"\n [time]=\"endDate() ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n />\n }\n </div>\n }\n </div>\n @let footer = templates()?.['datePickerFooter'];\n @if (footer) {\n <div class=\"date-picker-footer\">\n <ng-container *ngTemplateOutlet=\"footer; context: {$implicit: dropdown}\" />\n </div>\n }\n </div>\n <ng-content />\n </c-dropdown>\n</fieldset>\n", styles: [".form-control.date-picker-input:focus{box-shadow:0 0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter", "selectAdjacentDays", "showAdjacentDays", "selectionType", "showWeekNumber", "weekNumbersLabel", "ariaNextMonthLabel", "ariaNextYearLabel", "ariaPrevMonthLabel", "ariaPrevYearLabel"], outputs: ["calendarDateChange", "endDateChange", "startDateChange", "viewChange", "calendarCellHover"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "pipe", type: CustomRangeKeyPipe, name: "customRangeKey" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatePickerComponent, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
57
57
  type: Component,
58
58
  args: [{ selector: 'c-date-picker', exportAs: 'cDatePicker', standalone: true, imports: [
59
59
  NgClass,
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
77
77
  }
78
78
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<fieldset [formGroup]=\"dateRangeGroup\">\n <c-dropdown #dropdown=\"cDropdown\" [(visible)]=\"visible\" [autoClose]=\"'outside'\" [ngClass]=\"datePickerClasses\"\n [popperOptions]=\"popperjsOptions()\" class=\"date-picker picker\">\n <div [caret]=\"false\"\n [disabled]=\"disabled() ?? dropdown.visible\"\n cDropdownToggle\n class=\"date-picker-input-group\"\n >\n <input #startDateElementRef\n (change)=\"handleStartDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputStartHoverValue()}\"\n [placeholder]=\"startDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"range() ? undefined : valid()\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"startDateInput\"\n pattern=\"[1-9]*\"\n >\n @if (range() && separator()) {\n <div class=\"date-picker-separator\"></div>\n }\n @if (range()) {\n <input #endDateElementRef\n (change)=\"handleEndDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputEndHoverValue()}\"\n [placeholder]=\"endDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"valid() ?? undefined\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"endDateInput\"\n pattern=\"[1-9]*\"\n >\n }\n @if (indicator()) {\n <div class=\"date-picker-indicator\"></div>\n }\n @if (cleaner() && startDateElementRef.value && !disabled()) {\n <div (click)=\"!disabled() && handleClear($event)\" class=\"date-picker-cleaner\" role=\"button\"></div>\n }\n </div>\n <div cDropdownMenu class=\"date-picker-dropdown py-0\">\n <div class=\"date-picker-body\">\n @if (!showRanges) {\n @if (ranges() && customRanges.length > 0) {\n <div class=\"date-picker-ranges\">\n @for (customRange of customRanges; track customRange) {\n <button (click)=\"setCustomRange(customRange)\"\n [color]=\"rangesButtonsColor()\"\n [size]=\"rangesButtonsSize()\"\n [variant]=\"rangesButtonsVariant()\"\n cButton>\n {{ customRange | customRangeKey }}\n </button>\n }\n </div>\n }\n }\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars()\"\n [dateFilter]=\"dateFilter()\"\n [dayFormat]=\"dayFormat()\"\n [disabledDates]=\"disabledDates()\"\n [endDate]=\"endDate()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [locale]=\"locale()\"\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [navYearFirst]=\"navYearFirst()\"\n [navigation]=\"navigation()\"\n [range]=\"range()\"\n [selectAdjacentDays]=\"selectAdjacentDays()\"\n [selectionType]=\"selectionType()\"\n [showAdjacentDays]=\"showAdjacentDays()\"\n [showWeekNumber]=\"showWeekNumber()\"\n [startDate]=\"startDate()\"\n [weekNumbersLabel]=\"weekNumbersLabel()\"\n [weekdayFormat]=\"weekdayFormat()\"\n class=\"date-picker-calendars\"\n />\n @if (false && timepicker) {\n <div class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!startDate()\"\n [time]=\"startDate() ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n />\n @if (range()) {\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!endDate()\"\n [time]=\"endDate() ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n />\n }\n </div>\n }\n </div>\n @let footer = templates()?.['datePickerFooter'];\n @if (footer) {\n <div class=\"date-picker-footer\">\n <ng-container *ngTemplateOutlet=\"footer; context: {$implicit: dropdown}\" />\n </div>\n }\n </div>\n <ng-content />\n </c-dropdown>\n</fieldset>\n", styles: [".form-control.date-picker-input:focus{box-shadow:0 0}\n"] }]
79
79
  }] });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUVMLGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7QUFnQ2xHLE1BQU0sT0FBTyxt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aGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE1vZGVsU2lnbmFsLFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIG91dHB1dCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtcmFuZ2UtcGlja2VyJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi90aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBDdXN0b21SYW5nZUtleVBpcGUgfSBmcm9tICcuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9jdXN0b20tcmFuZ2Uta2V5LnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NEYXRlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgQnV0dG9uRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duTWVudURpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlLFxuICAgIEN1c3RvbVJhbmdlS2V5UGlwZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQge1xuICByZWFkb25seSBkYXRlQ2hhbmdlID0gb3V0cHV0PERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGNhbGVuZGFycyA9IGlucHV0KDEsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJ1NlbGVjdCBkYXRlJyk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcmFuZ2UgPSBzaWduYWwoZmFsc2UpO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGVuZERhdGUgPSBzaWduYWwobnVsbCk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc3RhcnREYXRlTW9kZWw6IE1vZGVsU2lnbmFsPERhdGUgfCBudWxsPiA9IG1vZGVsPERhdGUgfCBudWxsPihudWxsLCB7XG4gICAgYWxpYXM6ICdkYXRlJ1xuICB9KTtcblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydERhdGUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGVNb2RlbC5zZXQodmFsdWUpO1xuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgc3Vic2NyaWJlRGF0ZUNoYW5nZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUoKG5leHQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zdGFydERhdGVNb2RlbCgpPy5nZXRUaW1lKCkgIT09IG5leHQ/LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVNb2RlbC5zZXQobmV4dCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG5leHQpO1xuICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGZpZWxkc2V0IFtmb3JtR3JvdXBdPVwiZGF0ZVJhbmdlR3JvdXBcIj5cbiAgPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBbbmdDbGFzc109XCJkYXRlUGlja2VyQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgIFtwb3BwZXJPcHRpb25zXT1cInBvcHBlcmpzT3B0aW9ucygpXCIgY2xhc3M9XCJkYXRlLXBpY2tlciBwaWNrZXJcIj5cbiAgICA8ZGl2IFtjYXJldF09XCJmYWxzZVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSA/PyBkcm9wZG93bi52aXNpYmxlXCJcbiAgICAgICAgIGNEcm9wZG93blRvZ2dsZVxuICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dC1ncm91cFwiXG4gICAgPlxuICAgICAgPGlucHV0ICNzdGFydERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVTdGFydERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCgpID8gLTEgOiAwXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRTdGFydEhvdmVyVmFsdWUoKX1cIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkoKSA/PyBudWxsXCJcbiAgICAgICAgICAgICBbdmFsaWRdPVwicmFuZ2UoKSA/IHVuZGVmaW5lZCA6IHZhbGlkKClcIlxuICAgICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItaW5wdXRcIlxuICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0RGF0ZUlucHV0XCJcbiAgICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgID5cbiAgICAgIEBpZiAocmFuZ2UoKSAmJiBzZXBhcmF0b3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItc2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKHJhbmdlKCkpIHtcbiAgICAgICAgPGlucHV0ICNlbmREYXRlRWxlbWVudFJlZlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCgpID8gLTEgOiAwXCJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dEVuZEhvdmVyVmFsdWUoKX1cIlxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSgpID8/IG51bGxcIlxuICAgICAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkKCkgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dFwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgID5cbiAgICAgIH1cbiAgICAgIEBpZiAoaW5kaWNhdG9yKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjbGVhbmVyKCkgJiYgc3RhcnREYXRlRWxlbWVudFJlZi52YWx1ZSAmJiAhZGlzYWJsZWQoKSkge1xuICAgICAgICA8ZGl2IChjbGljayk9XCIhZGlzYWJsZWQoKSAmJiBoYW5kbGVDbGVhcigkZXZlbnQpXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY0Ryb3Bkb3duTWVudSBjbGFzcz1cImRhdGUtcGlja2VyLWRyb3Bkb3duIHB5LTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1ib2R5XCI+XG4gICAgICAgIEBpZiAoIXNob3dSYW5nZXMpIHtcbiAgICAgICAgICBAaWYgKHJhbmdlcygpICYmIGN1c3RvbVJhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItcmFuZ2VzXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlczsgdHJhY2sgY3VzdG9tUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInJhbmdlc0J1dHRvbnNDb2xvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwicmFuZ2VzQnV0dG9uc1ZhcmlhbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjQnV0dG9uPlxuICAgICAgICAgICAgICAgICAge3sgY3VzdG9tUmFuZ2UgfCBjdXN0b21SYW5nZUtleSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPGMtY2FsZW5kYXJcbiAgICAgICAgICAoY2FsZW5kYXJDZWxsSG92ZXIpPVwiaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGVuZERhdGVDaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoc3RhcnREYXRlQ2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY2FsZW5kYXJEYXRlXT1cImNhbGVuZGFyRGF0ZVwiXG4gICAgICAgICAgW2NhbGVuZGFyc109XCJpc01vYmlsZSA/IDEgOiBjYWxlbmRhcnMoKVwiXG4gICAgICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlcigpXCJcbiAgICAgICAgICBbZGF5Rm9ybWF0XT1cImRheUZvcm1hdCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzKClcIlxuICAgICAgICAgIFtlbmREYXRlXT1cImVuZERhdGUoKVwiXG4gICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrKClcIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlKClcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUoKVwiXG4gICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSgpXCJcbiAgICAgICAgICBbbmF2WWVhckZpcnN0XT1cIm5hdlllYXJGaXJzdCgpXCJcbiAgICAgICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uKClcIlxuICAgICAgICAgIFtyYW5nZV09XCJyYW5nZSgpXCJcbiAgICAgICAgICBbc2VsZWN0QWRqYWNlbnREYXlzXT1cInNlbGVjdEFkamFjZW50RGF5cygpXCJcbiAgICAgICAgICBbc2VsZWN0aW9uVHlwZV09XCJzZWxlY3Rpb25UeXBlKClcIlxuICAgICAgICAgIFtzaG93QWRqYWNlbnREYXlzXT1cInNob3dBZGphY2VudERheXMoKVwiXG4gICAgICAgICAgW3Nob3dXZWVrTnVtYmVyXT1cInNob3dXZWVrTnVtYmVyKClcIlxuICAgICAgICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlKClcIlxuICAgICAgICAgIFt3ZWVrTnVtYmVyc0xhYmVsXT1cIndlZWtOdW1iZXJzTGFiZWwoKVwiXG4gICAgICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdCgpXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWNhbGVuZGFyc1wiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoZmFsc2UgJiYgdGltZXBpY2tlcikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgICAgICAgICAgPCEtLSB0b2RvLS0+XG4gICAgICAgICAgICA8Yy10aW1lLXBpY2tlclxuICAgICAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RhcnREYXRlKClcIlxuICAgICAgICAgICAgICBbdGltZV09XCJzdGFydERhdGUoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVTdGFydFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChyYW5nZSgpKSB7XG4gICAgICAgICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmREYXRlKClcIlxuICAgICAgICAgICAgICAgIFt0aW1lXT1cImVuZERhdGUoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZUVuZFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGxldCBmb290ZXIgPSB0ZW1wbGF0ZXMoKT8uWydkYXRlUGlja2VyRm9vdGVyJ107XG4gICAgICBAaWYgKGZvb3Rlcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItZm9vdGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9jLWRyb3Bkb3duPlxuPC9maWVsZHNldD5cbiJdfQ==
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUVMLGVBQWUsRUFDZixNQUFNLEVBQ04sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7QUFnQ2xHLE1BQU0sT0FBTyxt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aGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBmb3J3YXJkUmVmLFxuICBpbnB1dCxcbiAgbW9kZWwsXG4gIE1vZGVsU2lnbmFsLFxuICBudW1iZXJBdHRyaWJ1dGUsXG4gIG91dHB1dCxcbiAgc2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtcmFuZ2UtcGlja2VyJztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FsZW5kYXInO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi90aW1lLXBpY2tlcic7XG5pbXBvcnQgeyBDdXN0b21SYW5nZUtleVBpcGUgfSBmcm9tICcuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9jdXN0b20tcmFuZ2Uta2V5LnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLWRhdGUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NEYXRlUGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIENhbGVuZGFyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgQnV0dG9uRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duTWVudURpcmVjdGl2ZSxcbiAgICBJbnB1dEdyb3VwQ29tcG9uZW50LFxuICAgIEZvcm1Db250cm9sRGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBUZXh0RGlyZWN0aXZlLFxuICAgIEN1c3RvbVJhbmdlS2V5UGlwZVxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQge1xuICByZWFkb25seSBkYXRlQ2hhbmdlID0gb3V0cHV0PERhdGUgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGNhbGVuZGFycyA9IGlucHV0KDEsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmcgfCBzdHJpbmdbXT4oJ1NlbGVjdCBkYXRlJyk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgcmFuZ2UgPSBzaWduYWwoZmFsc2UpO1xuXG4gIG92ZXJyaWRlIHJlYWRvbmx5IGVuZERhdGUgPSBzaWduYWwobnVsbCk7XG5cbiAgb3ZlcnJpZGUgcmVhZG9ubHkgc3RhcnREYXRlTW9kZWw6IE1vZGVsU2lnbmFsPERhdGUgfCBudWxsPiA9IG1vZGVsPERhdGUgfCBudWxsPihudWxsLCB7XG4gICAgYWxpYXM6ICdkYXRlJ1xuICB9KTtcblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydERhdGUoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydERhdGVNb2RlbC5zZXQodmFsdWUpO1xuICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgb3ZlcnJpZGUgc3Vic2NyaWJlRGF0ZUNoYW5nZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgaWYgKHN1YnNjcmliZSkge1xuICAgICAgdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZUNoYW5nZS5zdWJzY3JpYmUoKG5leHQpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zdGFydERhdGVNb2RlbCgpPy5nZXRUaW1lKCkgIT09IG5leHQ/LmdldFRpbWUoKSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVNb2RlbC5zZXQobmV4dCk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG5leHQpO1xuICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kYXRlQ2hhbmdlU3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGZpZWxkc2V0IFtmb3JtR3JvdXBdPVwiZGF0ZVJhbmdlR3JvdXBcIj5cbiAgPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgWyh2aXNpYmxlKV09XCJ2aXNpYmxlXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBbbmdDbGFzc109XCJkYXRlUGlja2VyQ2xhc3Nlc1wiXG4gICAgICAgICAgICAgIFtwb3BwZXJPcHRpb25zXT1cInBvcHBlcmpzT3B0aW9ucygpXCIgY2xhc3M9XCJkYXRlLXBpY2tlciBwaWNrZXJcIj5cbiAgICA8ZGl2IFtjYXJldF09XCJmYWxzZVwiXG4gICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKSA/PyBkcm9wZG93bi52aXNpYmxlXCJcbiAgICAgICAgIGNEcm9wZG93blRvZ2dsZVxuICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dC1ncm91cFwiXG4gICAgPlxuICAgICAgPGlucHV0ICNzdGFydERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVTdGFydERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCgpID8gLTEgOiAwXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7aG92ZXI6ICEhaW5wdXRTdGFydEhvdmVyVmFsdWUoKX1cIlxuICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzdGFydERhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkoKSA/PyBudWxsXCJcbiAgICAgICAgICAgICBbdmFsaWRdPVwicmFuZ2UoKSA/IHVuZGVmaW5lZCA6IHZhbGlkKClcIlxuICAgICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItaW5wdXRcIlxuICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXJ0RGF0ZUlucHV0XCJcbiAgICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgID5cbiAgICAgIEBpZiAocmFuZ2UoKSAmJiBzZXBhcmF0b3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItc2VwYXJhdG9yXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKHJhbmdlKCkpIHtcbiAgICAgICAgPGlucHV0ICNlbmREYXRlRWxlbWVudFJlZlxuICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVFbmREYXRlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCgpID8gLTEgOiAwXCJcbiAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dEVuZEhvdmVyVmFsdWUoKX1cIlxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVuZERhdGVQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSgpID8/IG51bGxcIlxuICAgICAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkKCkgPz8gdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dFwiXG4gICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmREYXRlSW5wdXRcIlxuICAgICAgICAgICAgICAgcGF0dGVybj1cIlsxLTldKlwiXG4gICAgICAgID5cbiAgICAgIH1cbiAgICAgIEBpZiAoaW5kaWNhdG9yKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChjbGVhbmVyKCkgJiYgc3RhcnREYXRlRWxlbWVudFJlZi52YWx1ZSAmJiAhZGlzYWJsZWQoKSkge1xuICAgICAgICA8ZGl2IChjbGljayk9XCIhZGlzYWJsZWQoKSAmJiBoYW5kbGVDbGVhcigkZXZlbnQpXCIgY2xhc3M9XCJkYXRlLXBpY2tlci1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY0Ryb3Bkb3duTWVudSBjbGFzcz1cImRhdGUtcGlja2VyLWRyb3Bkb3duIHB5LTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1ib2R5XCI+XG4gICAgICAgIEBpZiAoIXNob3dSYW5nZXMpIHtcbiAgICAgICAgICBAaWYgKHJhbmdlcygpICYmIGN1c3RvbVJhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItcmFuZ2VzXCI+XG4gICAgICAgICAgICAgIEBmb3IgKGN1c3RvbVJhbmdlIG9mIGN1c3RvbVJhbmdlczsgdHJhY2sgY3VzdG9tUmFuZ2UpIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cInJhbmdlc0J1dHRvbnNDb2xvcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInJhbmdlc0J1dHRvbnNTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhcmlhbnRdPVwicmFuZ2VzQnV0dG9uc1ZhcmlhbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjQnV0dG9uPlxuICAgICAgICAgICAgICAgICAge3sgY3VzdG9tUmFuZ2UgfCBjdXN0b21SYW5nZUtleSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPGMtY2FsZW5kYXJcbiAgICAgICAgICAoY2FsZW5kYXJDZWxsSG92ZXIpPVwiaGFuZGxlQ2FsZW5kYXJDZWxsSG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKGNhbGVuZGFyRGF0ZUNoYW5nZSk9XCJoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGVuZERhdGVDaGFuZ2UpPVwiaGFuZGxlRW5kRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoc3RhcnREYXRlQ2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbY2FsZW5kYXJEYXRlXT1cImNhbGVuZGFyRGF0ZVwiXG4gICAgICAgICAgW2NhbGVuZGFyc109XCJpc01vYmlsZSA/IDEgOiBjYWxlbmRhcnMoKVwiXG4gICAgICAgICAgW2RhdGVGaWx0ZXJdPVwiZGF0ZUZpbHRlcigpXCJcbiAgICAgICAgICBbZGF5Rm9ybWF0XT1cImRheUZvcm1hdCgpXCJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzKClcIlxuICAgICAgICAgIFtlbmREYXRlXT1cImVuZERhdGUoKVwiXG4gICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrKClcIlxuICAgICAgICAgIFtsb2NhbGVdPVwibG9jYWxlKClcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGUoKVwiXG4gICAgICAgICAgW21pbkRhdGVdPVwibWluRGF0ZSgpXCJcbiAgICAgICAgICBbbmF2WWVhckZpcnN0XT1cIm5hdlllYXJGaXJzdCgpXCJcbiAgICAgICAgICBbbmF2aWdhdGlvbl09XCJuYXZpZ2F0aW9uKClcIlxuICAgICAgICAgIFtyYW5nZV09XCJyYW5nZSgpXCJcbiAgICAgICAgICBbc2VsZWN0QWRqYWNlbnREYXlzXT1cInNlbGVjdEFkamFjZW50RGF5cygpXCJcbiAgICAgICAgICBbc2VsZWN0aW9uVHlwZV09XCJzZWxlY3Rpb25UeXBlKClcIlxuICAgICAgICAgIFtzaG93QWRqYWNlbnREYXlzXT1cInNob3dBZGphY2VudERheXMoKVwiXG4gICAgICAgICAgW3Nob3dXZWVrTnVtYmVyXT1cInNob3dXZWVrTnVtYmVyKClcIlxuICAgICAgICAgIFtzdGFydERhdGVdPVwic3RhcnREYXRlKClcIlxuICAgICAgICAgIFt3ZWVrTnVtYmVyc0xhYmVsXT1cIndlZWtOdW1iZXJzTGFiZWwoKVwiXG4gICAgICAgICAgW3dlZWtkYXlGb3JtYXRdPVwid2Vla2RheUZvcm1hdCgpXCJcbiAgICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWNhbGVuZGFyc1wiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoZmFsc2UgJiYgdGltZXBpY2tlcikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiPlxuICAgICAgICAgICAgPCEtLSB0b2RvLS0+XG4gICAgICAgICAgICA8Yy10aW1lLXBpY2tlclxuICAgICAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc3RhcnREYXRlKClcIlxuICAgICAgICAgICAgICBbdGltZV09XCJzdGFydERhdGUoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAodGltZUNoYW5nZSk9XCJoYW5kbGVTdGFydFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChyYW5nZSgpKSB7XG4gICAgICAgICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFlbmREYXRlKClcIlxuICAgICAgICAgICAgICAgIFt0aW1lXT1cImVuZERhdGUoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZUVuZFRpbWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgQGxldCBmb290ZXIgPSB0ZW1wbGF0ZXMoKT8uWydkYXRlUGlja2VyRm9vdGVyJ107XG4gICAgICBAaWYgKGZvb3Rlcikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItZm9vdGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgPC9jLWRyb3Bkb3duPlxuPC9maWVsZHNldD5cbiJdfQ==
@@ -2,15 +2,15 @@ import { NgModule } from '@angular/core';
2
2
  import { DatePickerComponent } from './date-picker.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export class DatePickerModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: DatePickerModule, imports: [DatePickerComponent], exports: [DatePickerComponent] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatePickerModule, imports: [DatePickerComponent] }); }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: DatePickerModule, imports: [DatePickerComponent], exports: [DatePickerComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DatePickerModule, imports: [DatePickerComponent] }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatePickerModule, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DatePickerModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  imports: [DatePickerComponent],
13
13
  exports: [DatePickerComponent]
14
14
  }]
15
15
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLGdCQUFnQjs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsWUFIakIsbUJBQW1CLGFBQ25CLG1CQUFtQjsrR0FFbEIsZ0JBQWdCLFlBSGpCLG1CQUFtQjs7MkZBR2xCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtEYXRlUGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RhdGVQaWNrZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJNb2R1bGUge31cbiJdfQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXBpY2tlci9kYXRlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLGdCQUFnQjsrR0FBaEIsZ0JBQWdCO2dIQUFoQixnQkFBZ0IsWUFIakIsbUJBQW1CLGFBQ25CLG1CQUFtQjtnSEFFbEIsZ0JBQWdCLFlBSGpCLG1CQUFtQjs7NEZBR2xCLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtEYXRlUGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RhdGVQaWNrZXJDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJNb2R1bGUge31cbiJdfQ==
@@ -4,14 +4,14 @@ export class CustomRangeKeyPipe {
4
4
  transform(customRange, ...args) {
5
5
  return customRange[0];
6
6
  }
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomRangeKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: CustomRangeKeyPipe, isStandalone: true, name: "customRangeKey" }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CustomRangeKeyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: CustomRangeKeyPipe, isStandalone: true, name: "customRangeKey" }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CustomRangeKeyPipe, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CustomRangeKeyPipe, decorators: [{
11
11
  type: Pipe,
12
12
  args: [{
13
13
  name: 'customRangeKey',
14
14
  standalone: true
15
15
  }]
16
16
  }] });
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlLWtleS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9jdXN0b20tcmFuZ2Uta2V5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsU0FBUyxDQUFDLFdBQXlCLEVBQUUsR0FBRyxJQUFlO1FBQ3JELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7OEdBSlUsa0JBQWtCOzRHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEN1c3RvbVJhbmdlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdjdXN0b21SYW5nZUtleScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmFuZ2VLZXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGN1c3RvbVJhbmdlOiBUQ3VzdG9tUmFuZ2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24ge1xuICAgIHJldHVybiBjdXN0b21SYW5nZVswXTtcbiAgfVxuXG59XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXJhbmdlLWtleS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9jdXN0b20tcmFuZ2Uta2V5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBT3BELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0IsU0FBUyxDQUFDLFdBQXlCLEVBQUUsR0FBRyxJQUFlO1FBQ3JELE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7K0dBSlUsa0JBQWtCOzZHQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVEN1c3RvbVJhbmdlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdjdXN0b21SYW5nZUtleScsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmFuZ2VLZXlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgdHJhbnNmb3JtKGN1c3RvbVJhbmdlOiBUQ3VzdG9tUmFuZ2UsIC4uLmFyZ3M6IHVua25vd25bXSk6IHVua25vd24ge1xuICAgIHJldHVybiBjdXN0b21SYW5nZVswXTtcbiAgfVxuXG59XG4iXX0=
@@ -552,8 +552,8 @@ export class DateRangePickerComponent {
552
552
  }
553
553
  this.endDateModel.set(time ?? this.endDate());
554
554
  }
555
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
556
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: DateRangePickerComponent, isStandalone: true, selector: "c-date-range-picker", inputs: { dayFormat: { classPropertyName: "dayFormat", publicName: "dayFormat", isSignal: true, isRequired: false, transformFunction: null }, calendars: { classPropertyName: "calendars", publicName: "calendars", isSignal: true, isRequired: false, transformFunction: null }, cleaner: { classPropertyName: "cleaner", publicName: "cleaner", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, inputDateFormat: { classPropertyName: "inputDateFormat", publicName: "inputDateFormat", isSignal: true, isRequired: false, transformFunction: null }, inputDateParse: { classPropertyName: "inputDateParse", publicName: "inputDateParse", isSignal: true, isRequired: false, transformFunction: null }, inputReadOnlyInput: { classPropertyName: "inputReadOnlyInput", publicName: "inputReadOnly", isSignal: true, isRequired: false, transformFunction: null }, navYearFirst: { classPropertyName: "navYearFirst", publicName: "navYearFirst", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsColor: { classPropertyName: "rangesButtonsColor", publicName: "rangesButtonsColor", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsSize: { classPropertyName: "rangesButtonsSize", publicName: "rangesButtonsSize", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsVariant: { classPropertyName: "rangesButtonsVariant", publicName: "rangesButtonsVariant", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, timepickerInput: { classPropertyName: "timepickerInput", publicName: "timepicker", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: true, isRequired: false, transformFunction: null }, visibleInput: { classPropertyName: "visibleInput", publicName: "visibleInput", isSignal: true, isRequired: false, transformFunction: null }, startDateModel: { classPropertyName: "startDateModel", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDateModel: { classPropertyName: "endDateModel", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, calendarDate: { classPropertyName: "calendarDate", publicName: "calendarDate", isSignal: false, isRequired: false, transformFunction: dateTransform }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null }, rangeInput: { classPropertyName: "rangeInput", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, weekdayFormat: { classPropertyName: "weekdayFormat", publicName: "weekdayFormat", isSignal: true, isRequired: false, transformFunction: null }, popperjsOptions: { classPropertyName: "popperjsOptions", publicName: "popperOptions", isSignal: true, isRequired: false, transformFunction: null }, selectAdjacentDays: { classPropertyName: "selectAdjacentDays", publicName: "selectAdjacentDays", isSignal: true, isRequired: false, transformFunction: null }, showAdjacentDays: { classPropertyName: "showAdjacentDays", publicName: "showAdjacentDays", isSignal: true, isRequired: false, transformFunction: null }, selectionType: { classPropertyName: "selectionType", publicName: "selectionType", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", isSignal: true, isRequired: false, transformFunction: null }, weekNumbersLabel: { classPropertyName: "weekNumbersLabel", publicName: "weekNumbersLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDateModel: "startDateChange", endDateModel: "endDateChange", valueChange: "valueChange", calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange" }, host: { listeners: { "focusout": "onBlur()" }, properties: { "class": "this.datePickerClasses" } }, providers: [
555
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
556
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "c-date-range-picker", inputs: { dayFormat: { classPropertyName: "dayFormat", publicName: "dayFormat", isSignal: true, isRequired: false, transformFunction: null }, calendars: { classPropertyName: "calendars", publicName: "calendars", isSignal: true, isRequired: false, transformFunction: null }, cleaner: { classPropertyName: "cleaner", publicName: "cleaner", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, inputDateFormat: { classPropertyName: "inputDateFormat", publicName: "inputDateFormat", isSignal: true, isRequired: false, transformFunction: null }, inputDateParse: { classPropertyName: "inputDateParse", publicName: "inputDateParse", isSignal: true, isRequired: false, transformFunction: null }, inputReadOnlyInput: { classPropertyName: "inputReadOnlyInput", publicName: "inputReadOnly", isSignal: true, isRequired: false, transformFunction: null }, navYearFirst: { classPropertyName: "navYearFirst", publicName: "navYearFirst", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsColor: { classPropertyName: "rangesButtonsColor", publicName: "rangesButtonsColor", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsSize: { classPropertyName: "rangesButtonsSize", publicName: "rangesButtonsSize", isSignal: true, isRequired: false, transformFunction: null }, rangesButtonsVariant: { classPropertyName: "rangesButtonsVariant", publicName: "rangesButtonsVariant", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, timepickerInput: { classPropertyName: "timepickerInput", publicName: "timepicker", isSignal: true, isRequired: false, transformFunction: null }, valid: { classPropertyName: "valid", publicName: "valid", isSignal: true, isRequired: false, transformFunction: null }, visibleInput: { classPropertyName: "visibleInput", publicName: "visibleInput", isSignal: true, isRequired: false, transformFunction: null }, startDateModel: { classPropertyName: "startDateModel", publicName: "startDate", isSignal: true, isRequired: false, transformFunction: null }, endDateModel: { classPropertyName: "endDateModel", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, calendarDate: { classPropertyName: "calendarDate", publicName: "calendarDate", isSignal: false, isRequired: false, transformFunction: dateTransform }, disabledDates: { classPropertyName: "disabledDates", publicName: "disabledDates", isSignal: true, isRequired: false, transformFunction: null }, firstDayOfWeek: { classPropertyName: "firstDayOfWeek", publicName: "firstDayOfWeek", isSignal: true, isRequired: false, transformFunction: null }, locale: { classPropertyName: "locale", publicName: "locale", isSignal: true, isRequired: false, transformFunction: null }, maxDate: { classPropertyName: "maxDate", publicName: "maxDate", isSignal: true, isRequired: false, transformFunction: null }, minDate: { classPropertyName: "minDate", publicName: "minDate", isSignal: true, isRequired: false, transformFunction: null }, navigation: { classPropertyName: "navigation", publicName: "navigation", isSignal: true, isRequired: false, transformFunction: null }, rangeInput: { classPropertyName: "rangeInput", publicName: "range", isSignal: true, isRequired: false, transformFunction: null }, dateFilter: { classPropertyName: "dateFilter", publicName: "dateFilter", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, weekdayFormat: { classPropertyName: "weekdayFormat", publicName: "weekdayFormat", isSignal: true, isRequired: false, transformFunction: null }, popperjsOptions: { classPropertyName: "popperjsOptions", publicName: "popperOptions", isSignal: true, isRequired: false, transformFunction: null }, selectAdjacentDays: { classPropertyName: "selectAdjacentDays", publicName: "selectAdjacentDays", isSignal: true, isRequired: false, transformFunction: null }, showAdjacentDays: { classPropertyName: "showAdjacentDays", publicName: "showAdjacentDays", isSignal: true, isRequired: false, transformFunction: null }, selectionType: { classPropertyName: "selectionType", publicName: "selectionType", isSignal: true, isRequired: false, transformFunction: null }, showWeekNumber: { classPropertyName: "showWeekNumber", publicName: "showWeekNumber", isSignal: true, isRequired: false, transformFunction: null }, weekNumbersLabel: { classPropertyName: "weekNumbersLabel", publicName: "weekNumbersLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { startDateModel: "startDateChange", endDateModel: "endDateChange", valueChange: "valueChange", calendarCellHover: "calendarCellHover", calendarDateChange: "calendarDateChange" }, host: { listeners: { "focusout": "onBlur()" }, properties: { "class": "this.datePickerClasses" } }, providers: [
557
557
  {
558
558
  provide: NG_VALUE_ACCESSOR,
559
559
  useExisting: forwardRef(() => DateRangePickerComponent),
@@ -561,7 +561,7 @@ export class DateRangePickerComponent {
561
561
  }
562
562
  ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "startDateElementRef", first: true, predicate: ["startDateElementRef"], descendants: true, isSignal: true }, { propertyName: "endDateElementRef", first: true, predicate: ["endDateElementRef"], descendants: true, isSignal: true }], exportAs: ["cDateRangePicker"], ngImport: i0, template: "<fieldset [formGroup]=\"dateRangeGroup\">\n <c-dropdown #dropdown=\"cDropdown\" [(visible)]=\"visible\" [autoClose]=\"'outside'\" [ngClass]=\"datePickerClasses\"\n [popperOptions]=\"popperjsOptions()\" class=\"date-picker picker\">\n <div [caret]=\"false\"\n [disabled]=\"disabled() ?? dropdown.visible\"\n cDropdownToggle\n class=\"date-picker-input-group\"\n >\n <input #startDateElementRef\n (change)=\"handleStartDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputStartHoverValue()}\"\n [placeholder]=\"startDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"range() ? undefined : valid()\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"startDateInput\"\n pattern=\"[1-9]*\"\n >\n @if (range() && separator()) {\n <div class=\"date-picker-separator\"></div>\n }\n @if (range()) {\n <input #endDateElementRef\n (change)=\"handleEndDateInputChange($event)\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [ngClass]=\"{hover: !!inputEndHoverValue()}\"\n [placeholder]=\"endDatePlaceholder\"\n [readonly]=\"inputReadOnly() ?? null\"\n [valid]=\"valid() ?? undefined\"\n cFormControl\n class=\"date-picker-input\"\n formControlName=\"endDateInput\"\n pattern=\"[1-9]*\"\n >\n }\n @if (indicator()) {\n <div class=\"date-picker-indicator\"></div>\n }\n @if (cleaner() && startDateElementRef.value && !disabled()) {\n <div (click)=\"!disabled() && handleClear($event)\" class=\"date-picker-cleaner\" role=\"button\"></div>\n }\n </div>\n <div cDropdownMenu class=\"date-picker-dropdown py-0\">\n <div class=\"date-picker-body\">\n @if (!showRanges) {\n @if (ranges() && customRanges.length > 0) {\n <div class=\"date-picker-ranges\">\n @for (customRange of customRanges; track customRange) {\n <button (click)=\"setCustomRange(customRange)\"\n [color]=\"rangesButtonsColor()\"\n [size]=\"rangesButtonsSize()\"\n [variant]=\"rangesButtonsVariant()\"\n cButton>\n {{ customRange | customRangeKey }}\n </button>\n }\n </div>\n }\n }\n <c-calendar\n (calendarCellHover)=\"handleCalendarCellHover($event)\"\n (calendarDateChange)=\"handleCalendarDateChange($event)\"\n (endDateChange)=\"handleEndDateChange($event)\"\n (startDateChange)=\"handleStartDateChange($event)\"\n [calendarDate]=\"calendarDate\"\n [calendars]=\"isMobile ? 1 : calendars()\"\n [dateFilter]=\"dateFilter()\"\n [dayFormat]=\"dayFormat()\"\n [disabledDates]=\"disabledDates()\"\n [endDate]=\"endDate()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\"\n [locale]=\"locale()\"\n [maxDate]=\"maxDate()\"\n [minDate]=\"minDate()\"\n [navYearFirst]=\"navYearFirst()\"\n [navigation]=\"navigation()\"\n [range]=\"range()\"\n [selectAdjacentDays]=\"selectAdjacentDays()\"\n [selectionType]=\"selectionType()\"\n [showAdjacentDays]=\"showAdjacentDays()\"\n [showWeekNumber]=\"showWeekNumber()\"\n [startDate]=\"startDate()\"\n [weekNumbersLabel]=\"weekNumbersLabel()\"\n [weekdayFormat]=\"weekdayFormat()\"\n class=\"date-picker-calendars\"\n />\n @if (false && timepicker) {\n <div class=\"date-picker-timepickers\">\n <!-- todo-->\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!startDate()\"\n [time]=\"startDate() ?? undefined\"\n (timeChange)=\"handleStartTimeChange($event)\"\n />\n @if (range()) {\n <c-time-picker\n variant=\"select\"\n [locale]=\"locale()\"\n [disabled]=\"!endDate()\"\n [time]=\"endDate() ?? undefined\"\n (timeChange)=\"handleEndTimeChange($event)\"\n />\n }\n </div>\n }\n </div>\n @let footer = templates()?.['datePickerFooter'];\n @if (footer) {\n <div class=\"date-picker-footer\">\n <ng-container *ngTemplateOutlet=\"footer; context: {$implicit: dropdown}\" />\n </div>\n }\n </div>\n <ng-content />\n </c-dropdown>\n</fieldset>\n", styles: [".form-control.date-picker-input:focus{box-shadow:0 0}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CalendarComponent, selector: "c-calendar", inputs: ["calendarDate", "calendars", "dayFormat", "disabledDates", "startDate", "endDate", "firstDayOfWeek", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "range", "view", "weekdayFormat", "dateFilter", "selectAdjacentDays", "showAdjacentDays", "selectionType", "showWeekNumber", "weekNumbersLabel", "ariaNextMonthLabel", "ariaNextYearLabel", "ariaPrevMonthLabel", "ariaPrevYearLabel"], outputs: ["calendarDateChange", "endDateChange", "startDateChange", "viewChange", "calendarCellHover"], exportAs: ["cCalendar"] }, { kind: "component", type: TimePickerComponent, selector: "c-time-picker", inputs: ["cleaner", "dateTimeFormatOptions", "disabled", "filterHours", "filterMinutes", "filterSeconds", "indicator", "inputReadOnly", "locale", "placeholder", "seconds", "size", "time", "variant", "valid", "visible"], outputs: ["timeChange"], exportAs: ["cTimePicker"] }, { kind: "directive", type: ButtonDirective, selector: "[cButton]", inputs: ["active", "color", "disabled", "shape", "size", "type", "variant"], exportAs: ["cButton"] }, { kind: "component", type: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "pipe", type: CustomRangeKeyPipe, name: "customRangeKey" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
563
563
  }
564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerComponent, decorators: [{
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
565
565
  type: Component,
566
566
  args: [{ selector: 'c-date-range-picker', exportAs: 'cDateRangePicker', standalone: true, imports: [
567
567
  NgClass,
@@ -596,4 +596,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
596
596
  type: HostBinding,
597
597
  args: ['class']
598
598
  }] } });
599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBRU4sVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLGVBQWUsRUFHZixNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1Ysc0JBQXNCLEVB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dUJBQXVCLDBKQUN2QixxQkFBcUIsMkhBRXJCLG9CQUFvQixxSUFFcEIsa0JBQWtCOzsyRkFXVCx3QkFBd0I7a0JBOUJwQyxTQUFTOytCQUNFLHFCQUFxQixZQUdyQixrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjtxQkFDbkIsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBdU1WLFlBQVk7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO2dCQWlEL0IsS0FBSztzQkFEUixLQUFLO2dCQXdIb0IsTUFBTTtzQkFBL0IsWUFBWTt1QkFBQyxVQUFVO2dCQWtEcEIsaUJBQWlCO3NCQURwQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0LFxuICBtb2RlbCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZvcm1hdERhdGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2J1dHRvbic7XG5pbXBvcnQge1xuICBkYXRlVHJhbnNmb3JtLFxuICBlcXVhbERhdGVzLFxuICBnZXRMb2NhbERhdGVGcm9tU3RyaW5nLFxuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNWYWxpZERhdGVcbn0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHtcbiAgRGF0ZUZpbHRlclR5cGUsXG4gIERheUZvcm1hdFR5cGUsXG4gIERheXNPZldlZWssXG4gIFNlbGVjdGlvblR5cGUsXG4gIFdlZWtkYXlGb3JtYXRUeXBlXG59IGZyb20gJy4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBDb2xvcnMgfSBmcm9tICcuLi8uLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9mb3JtJztcbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RpbWUtcGlja2VyJztcbmltcG9ydCB7IEN1c3RvbVJhbmdlS2V5UGlwZSB9IGZyb20gJy4vY3VzdG9tLXJhbmdlLWtleS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJSYW5nZXMge1xuICBba2V5OiBzdHJpbmddOiBEYXRlW107XG59XG5cbmV4cG9ydCB0eXBlIFRDdXN0b21SYW5nZSA9IFtzdHJpbmcsIERhdGVbXV07XG5cbi8qKiBNdXN0IGJlIGEgdmFsaWQgZGF0ZSBzdHJpbmcgKi9cbi8vIHRvZG86IHZhbGlkYXRpb25cbi8vIGV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcihsb2NhbGU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbi8vICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4vLyAgICAgLy8gY29uc3QgdmFsaWREYXRlID0gIWlzTmFOKERhdGUucGFyc2UoY29udHJvbC52YWx1ZSkpO1xuLy8gICAgIHN0cmluZ1RvRGF0ZUNvbnZlcnQoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCBkYXRlU2hpbSA9IGN2dERhdGUoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICAvLyBAdHMtaWdub3JlXG4vLyAgICAgLy8gY29udHJvbC5zZXRWYWx1ZShuZXcgRGF0ZShkYXRlU2hpbS55ZWFyLCBkYXRlU2hpbS5tb250aCwgZGF0ZVNoaW0uZGF5KSlcbi8vICAgICBjb25zb2xlLmxvZygnZGF0ZVNoaW0nLCBkYXRlU2hpbSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCB2YWxpZERhdGUgPSBpc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKTtcbi8vICAgICBjb25zb2xlLmxvZygnaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3InLCBjb250cm9sLCBjb250cm9sLnZhbHVlLCB2YWxpZERhdGUpO1xuLy8gICAgIHJldHVybiB2YWxpZERhdGUgPyB7IGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yOiB7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0gfSA6IG51bGw7XG4vLyAgIH07XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtZGF0ZS1yYW5nZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NEYXRlUmFuZ2VQaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgICBCdXR0b25EaXJlY3RpdmUsXG4gICAgRHJvcGRvd25Db21wb25lbnQsXG4gICAgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUsXG4gICAgRHJvcGRvd25NZW51RGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cFRleHREaXJlY3RpdmUsXG4gICAgQ3VzdG9tUmFuZ2VLZXlQaXBlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICByZWFkb25seSAjYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXG4gICAqIEB0eXBlIERheUZvcm1hdFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGRheUZvcm1hdCA9IGlucHV0PERheUZvcm1hdFR5cGU+KCdudW1lcmljJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGNhbGVuZGFycyA9IGlucHV0KDIsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW5lciA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgdmFsdWUgc2V0dGluZy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvc2VPblNlbGVjdCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogU2V0IGRhdGUgZm9ybWF0LlxuICAgKiBXZSB1c2UgQW5ndWxhciBmb3JtYXREYXRlKCkgZnVuY3Rpb24sIHNlZTpcbiAgICogLSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9mb3JtYXREYXRlXG4gICAqIC0gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGUjcHJlLWRlZmluZWQtZm9ybWF0LW9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBpbnB1dCBpbmRpY2F0b3IuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kaWNhdG9yID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgaW50byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjdXN0b20gZm9ybWF0LlxuICAgKiBAc2luY2UgdjUuMC4wXG4gICAqL1xuICByZWFkb25seSBpbnB1dERhdGVGb3JtYXQgPSBpbnB1dDwoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZnVuY3Rpb24gdG8gcGFyc2UgdGhlIGlucHV0IHZhbHVlIGludG8gYSB2YWxpZCBEYXRlIG9iamVjdC5cbiAgICogQHNpbmNlIHY1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXREYXRlUGFyc2UgPSBpbnB1dDwoZGF0ZTogc3RyaW5nIHwgRGF0ZSkgPT4gRGF0ZT4oKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRSZWFkT25seUlucHV0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ2lucHV0UmVhZE9ubHknIH0pO1xuXG4gIHJlYWRvbmx5IGlucHV0UmVhZE9ubHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRSZWFkT25seUlucHV0KCkgfHwgdHlwZW9mIHRoaXMuZm9ybWF0KCkgPT09ICdzdHJpbmcnO1xuICB9KTtcblxuICAvKipcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbmF2WWVhckZpcnN0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc2hvcnQgaGludHMgdGhhdCBhcmUgdmlzaWJsZSBpbiBzdGFydCBkYXRlIGFuZCBlbmQgZGF0ZSBpbnB1dHMuXG4gICAqIHR5cGUgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPihbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXSk7XG5cbiAgLyoqXG4gICAqIFByZWRlZmluZWQgZGF0ZSByYW5nZXMgdGhlIHVzZXIgY2FuIHNlbGVjdCBmcm9tLlxuICAgKiBAdHlwZSBJQ2FsZW5kYXJSYW5nZXNcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlcyA9IGlucHV0PElDYWxlbmRhclJhbmdlcz4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29sb3IgY29udGV4dCBvZiB0aGUgY2FuY2VsIGJ1dHRvbiB0byBvbmUgb2YgQ29yZVVJ4oCZcyB0aGVtZWQgY29sb3JzLlxuICAgKiBAdHlwZSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ2RhcmsnIHwgJ2xpZ2h0JyB8IHN0cmluZ1xuICAgKiBAZGVmYXVsdCAnc2Vjb25kYXJ5J1xuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2VzQnV0dG9uc0NvbG9yID0gaW5wdXQ8Q29sb3JzPignc2Vjb25kYXJ5Jyk7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIHJhbmdlcyBidXR0b24gc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgJydcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlc0J1dHRvbnNTaXplID0gaW5wdXQ8J3NtJyB8ICdsZycgfCAnJz4oJycpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJhbmdlcyBidXR0b24gdmFyaWFudCB0byBhbiBvdXRsaW5lZCBidXR0b24gb3IgYSBnaG9zdCBidXR0b24uXG4gICAqIEB0eXBlICdvdXRsaW5lJyB8ICdnaG9zdCcgfCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlc0J1dHRvbnNWYXJpYW50ID0gaW5wdXQ8J291dGxpbmUnIHwgJ2dob3N0Jz4oJ2dob3N0Jyk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaWNvbiBvciBjaGFyYWN0ZXIgdGhhdCBzZXBhcmF0ZXMgdHdvIGRhdGVzLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcGFyYXRvciA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PCdzbScgfCAnbGcnPigpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGFkZGl0aW9uYWwgdGltZSBzZWxlY3Rpb24gYnkgYWRkaW5nIHNlbGVjdCBib3hlcyB0byBjaG9vc2UgdGltZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZXBpY2tlcklucHV0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ3RpbWVwaWNrZXInIH0pO1xuXG4gIGdldCB0aW1lcGlja2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gdGhpcy50aW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2YWxpZCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gZGF0ZS1waWNrZXIgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2aXNpYmxlSW5wdXQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZUlucHV0RWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHRoaXMudmlzaWJsZS5zZXQodGhpcy52aXNpYmxlSW5wdXQoKSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcblxuICByZWFkb25seSB2aXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBzdGFydERhdGVNb2RlbCA9IG1vZGVsPERhdGUgfCBudWxsPihudWxsLCB7XG4gICAgYWxpYXM6ICdzdGFydERhdGUnXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRhdGVNb2RlbEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLmRhdGVSYW5nZUdyb3VwLnBhdGNoVmFsdWUoeyBzdGFydERhdGVJbnB1dDogdGhpcy5zdGFydERhdGVWYWx1ZSgpLCBlbmREYXRlSW5wdXQ6IHRoaXMuZW5kRGF0ZVZhbHVlKCkgfSk7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZSgpO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UoKSA/IHsgc3RhcnREYXRlOiBzdGFydERhdGUsIGVuZERhdGU6IGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcbiAgICAgIHRoaXMuc3RhcnREYXRlTW9kZWwuc2V0KHN0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLmVuZERhdGVNb2RlbC5zZXQoZW5kRGF0ZSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcblxuICByZWFkb25seSBzdGFydERhdGUgPSBjb21wdXRlZChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZU1vZGVsKCk7XG4gICAgICByZXR1cm4gc3RhcnREYXRlID8gbmV3IERhdGUoc3RhcnREYXRlKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBlcXVhbERhdGVzIH1cbiAgKTtcblxuICByZWFkb25seSBzdGFydERhdGVDaGFuZ2UgPSB0b09ic2VydmFibGUodGhpcy5zdGFydERhdGUpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmREYXRlTW9kZWwgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCwge1xuICAgIGFsaWFzOiAnZW5kRGF0ZSdcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZW5kRGF0ZSA9IGNvbXB1dGVkKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmVuZERhdGVNb2RlbCgpO1xuICAgICAgcmV0dXJuIGVuZERhdGUgPyBuZXcgRGF0ZShlbmREYXRlKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBlcXVhbERhdGVzIH1cbiAgKTtcblxuICByZWFkb25seSBlbmREYXRlQ2hhbmdlID0gdG9PYnNlcnZhYmxlKHRoaXMuZW5kRGF0ZSk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBkYXRlVHJhbnNmb3JtIH0pIGNhbGVuZGFyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlcyA9IGlucHV0PChEYXRlW10gfCBEYXRlKVtdPihbXSk7XG5cbiAgLyoqXG4gICAqIFNldCBmaXJzdCBkYXkgb2Ygd2Vlay5cbiAgICogQHR5cGUgRGF5c09mV2Vla1xuICAgKiBAZGVmYXVsdCAxIChNb25kYXkpXG4gICAqL1xuICByZWFkb25seSBmaXJzdERheU9mV2VlayA9IGlucHV0PERheXNPZldlZWs+KDEpO1xuXG4gIHJlYWRvbmx5IGxvY2FsZSA9IGlucHV0KCdkZWZhdWx0Jyk7XG5cbiAgcmVhZG9ubHkgbWF4RGF0ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogU2hvdyBjYWxlbmRhciBuYXZpZ2F0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogQWxsb3cgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlSW5wdXQgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdyYW5nZScgfSk7XG5cbiAgcmVhZG9ubHkgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2VJbnB1dCgpO1xuICB9KTtcblxuICByZWFkb25seSBkYXRlRmlsdGVyID0gaW5wdXQ8RGF0ZUZpbHRlclR5cGU+KCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWRJbnB1dCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdkaXNhYmxlZCcgfSk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuZGlzYWJsZWQoKSA/IHRoaXMuZGF0ZVJhbmdlR3JvdXAuZGlzYWJsZSgpIDogdGhpcy5kYXRlUmFuZ2VHcm91cC5lbmFibGUoKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuI2Rpc2FibGVkKCkgfHwgdGhpcy5kaXNhYmxlZElucHV0KCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5ICNkaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucmFuZ2UoKSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl92YWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KCkgJiYgdGhpcy52aXNpYmxlKCkpIHtcbiAgICAgICAgY29uc3QgaGFzVmFsdWUgPSB0aGlzLnJhbmdlKCkgPyAhISh0aGlzLl92YWx1ZS5zdGFydERhdGUgJiYgdGhpcy5fdmFsdWUuZW5kRGF0ZSkgOiAhIXRoaXMuX3ZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGUuc2V0KCFoYXNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIFdlZWtkYXlGb3JtYXRUeXBlXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIHJlYWRvbmx5IHdlZWtkYXlGb3JtYXQgPSBpbnB1dDxXZWVrZGF5Rm9ybWF0VHlwZT4oJ3Nob3J0Jyk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBvcHBlciBPcHRpb25zIG9iamVjdFxuICAgKiBAdHlwZSBQYXJ0aWFsPE9wdGlvbnM+XG4gICAqL1xuICByZWFkb25seSBwb3BwZXJqc09wdGlvbnMgPSBpbnB1dDxQYXJ0aWFsPE9wdGlvbnM+Pih7IHN0cmF0ZWd5OiAnYWJzb2x1dGUnIH0sIHsgYWxpYXM6ICdwb3BwZXJPcHRpb25zJyB9KTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgZGF5cyBpbiBhZGphY2VudCBtb250aHMgc2hvd24gYmVmb3JlIG9yIGFmdGVyIHRoZSBjdXJyZW50IG1vbnRoIGFyZSBzZWxlY3RhYmxlLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgYHNob3dBZGphY2VudERheXNgIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc2luY2UgNC40LjEwXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RBZGphY2VudERheXMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIHRvIGRpc3BsYXkgZGF0ZXMgaW4gYWRqYWNlbnQgbW9udGhzIChub24tc2VsZWN0YWJsZSkgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGN1cnJlbnQgbW9udGguXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc2luY2UgNC40LjEwXG4gICAqL1xuICByZWFkb25seSBzaG93QWRqYWNlbnREYXlzID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHR5cGUgb2YgZGF0ZSBzZWxlY3Rpb24gYXMgZGF5LCB3ZWVrLCBtb250aCwgb3IgeWVhci5cbiAgICogQHR5cGUgJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInXG4gICAqIEBkZWZhdWx0ICdkYXknXG4gICAqIEBzaW5jZSA1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0aW9uVHlwZSA9IGlucHV0PFNlbGVjdGlvblR5cGU+KCdkYXknKTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgdG8gZGlzcGxheSB3ZWVrIG51bWJlcnMgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzaW5jZSA1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd1dlZWtOdW1iZXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIExhYmVsIGRpc3BsYXllZCBvdmVyIHdlZWsgbnVtYmVycyBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHNpbmNlIDUuMC4wXG4gICAqL1xuICByZWFkb25seSB3ZWVrTnVtYmVyc0xhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PERhdGUgfCBEYXRlW10gfCB1bmRlZmluZWQ+KCk7XG5cbiAgcmVhZG9ubHkgY2FsZW5kYXJDZWxsSG92ZXIgPSBvdXRwdXQ8RGF0ZSB8IG51bGw+KCk7XG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZUNoYW5nZSA9IG91dHB1dDxEYXRlPigpO1xuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZUVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3N0YXJ0RGF0ZUVsZW1lbnRSZWYnKTtcbiAgcmVhZG9ubHkgZW5kRGF0ZUVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2VuZERhdGVFbGVtZW50UmVmJyk7XG5cbiAgcmVhZG9ubHkgY29udGVudFRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZUlkRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGVzKCkucmVkdWNlKFxuICAgICAgKGFjYywgY2hpbGQpID0+IHtcbiAgICAgICAgYWNjW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+XG4gICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVEYXRlQ2hhbmdlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICAvLyB0b2RvXG4gICAgICAvLyB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLnN1YnNjcmliZSgobmV4dCkgPT4ge1xuICAgICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydERhdGVDaGFuZ2UnLCBuZXh0KTtcbiAgICAgIC8vICAgICAvLyB0aGlzLnN0YXJ0RGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgICAgLy8gdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICk7XG4gICAgICAvLyB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5zdWJzY3JpYmUoKG5leHQpID0+IHtcbiAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZygnZW5kRGF0ZUNoYW5nZScsIG5leHQpO1xuICAgICAgLy8gICAgIC8vIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgICAgLy8gdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlID0gdHJ1ZTtcbiAgcHVibGljIGN1c3RvbVJhbmdlcyE6IFRDdXN0b21SYW5nZVtdO1xuICBwdWJsaWMgc2hvd1JhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlKCkgPz8gJ2RlZmF1bHQnO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5zdGFydERhdGUoKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVuZERhdGVWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZSgpID8/ICdkZWZhdWx0JztcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW5kRGF0ZSgpKTtcbiAgfSk7XG5cbiAgcHVibGljIGdldCBzdGFydERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBsYWNlaG9sZGVyKSA/IHBsYWNlaG9sZGVyWzBdIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBsYWNlaG9sZGVyKSA/IHBsYWNlaG9sZGVyWzFdIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvLyB0b2RvOiB2YWxpZGF0aW9uXG4gIC8vIHN0YXJ0RGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlVmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgLy8gICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gIC8vICAgLy8gVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXG4gIC8vICAgLy8gVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLFxuICAvLyAgIC8vIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKHRoaXMubG9jYWxlKVxuICAvLyBdKTtcbiAgLy8gZW5kRGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuZW5kRGF0ZVZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gIC8vICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAvLyAgIC8vIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxuICAvLyAgIC8vIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSxcbiAgLy8gICAvLyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcih0aGlzLmxvY2FsZSlcbiAgLy8gXSk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydERhdGVJbnB1dDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgZW5kRGF0ZUlucHV0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICB9KTtcblxuICByZWFkb25seSBpbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGlucHV0RW5kSG92ZXJWYWx1ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBkYXRlUGlja2VyQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2RhdGUtcGlja2VyJzogdHJ1ZSxcbiAgICAgIFtgZGF0ZS1waWNrZXItJHt0aGlzLnNpemUoKX1gXTogdGhpcy5zaXplKCksXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpLFxuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCgpID09PSB0cnVlLFxuICAgICAgJ2lzLWludmFsaWQnOiB0aGlzLnZhbGlkKCkgPT09IGZhbHNlXG4gICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdCgpO1xuICAgIGNvbnN0IGlucHV0RGF0ZUZvcm1hdCA9IHRoaXMuaW5wdXREYXRlRm9ybWF0KCk7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGUoKTtcblxuICAgIHJldHVybiAhZGF0ZSB8fCAhaXNWYWxpZERhdGUoZGF0ZSlcbiAgICAgID8gJydcbiAgICAgIDogdHlwZW9mIGlucHV0RGF0ZUZvcm1hdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGlucHV0RGF0ZUZvcm1hdChkYXRlKVxuICAgICAgICA6ICEhZm9ybWF0ICYmICEhbG9jYWxlICYmIGxvY2FsZSAhPT0gJ2RlZmF1bHQnXG4gICAgICAgICAgPyBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICAgIDogdGhpcy50aW1lcGlja2VyXG4gICAgICAgICAgICA/IGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlKVxuICAgICAgICAgICAgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuICB9XG5cbiAgcmVhZG9ubHkgI2JyZWFrcG9pbnRzID0ge1xuICAgIE9uZUNhbGVuZGFyUmFuZ2VzOiAnKG1pbi13aWR0aDogNDgwcHgpJyxcbiAgICBUd29DYWxlbmRhcnM6ICcobWF4LXdpZHRoOiA2NTBweCknLFxuICAgIFR3b0NhbGVuZGFyc1JhbmdlczogJyhtYXgtd2lkdGg6IDgxMHB4KSdcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCByYW5nZXMgPSB0aGlzLnJhbmdlcygpO1xuICAgIHRoaXMuY3VzdG9tUmFuZ2VzID0gcmFuZ2VzID8gT2JqZWN0LmVudHJpZXMocmFuZ2VzKSA6IFtdO1xuXG4gICAgY29uc3QgYnJlYWtwb2ludHMgPSB0aGlzLiNicmVha3BvaW50cztcblxuICAgIHRoaXMuI2JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW2JyZWFrcG9pbnRzLk9uZUNhbGVuZGFyUmFuZ2VzLCBicmVha3BvaW50cy5Ud29DYWxlbmRhcnMsIGJyZWFrcG9pbnRzLlR3b0NhbGVuZGFyc1Jhbmdlc10pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgICAgdGhpcy5pc01vYmlsZSA9XG4gICAgICAgICAgICAodGhpcy5jdXN0b21SYW5nZXM/Lmxlbmd0aCA+IDAgJiYgcmVzdWx0LmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRzLlR3b0NhbGVuZGFyc1Jhbmdlc10pIHx8XG4gICAgICAgICAgICByZXN1bHQuYnJlYWtwb2ludHNbYnJlYWtwb2ludHMuVHdvQ2FsZW5kYXJzXTtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21SYW5nZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1JhbmdlcyA9ICFyZXN1bHQuYnJlYWtwb2ludHNbYnJlYWtwb2ludHMuT25lQ2FsZW5kYXJSYW5nZXNdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmliZURhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZShmYWxzZSk7XG4gIH1cblxuICBjb252ZXJ0VmFsdWVUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnB1dFBhcnNlKHZhbHVlKSA/PyBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG5cbiAgaW5wdXRQYXJzZShkYXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbnB1dERhdGVQYXJzZSA9IHRoaXMuaW5wdXREYXRlUGFyc2UoKTtcblxuICAgIGlmICh0eXBlb2YgaW5wdXREYXRlUGFyc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBpbnB1dERhdGVQYXJzZShkYXRlKTtcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZShwYXJzZWREYXRlKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkRGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdldExvY2FsRGF0ZUZyb21TdHJpbmcoZGF0ZSwgdGhpcy5sb2NhbGUoKSwgdGhpcy50aW1lcGlja2VyKTtcbiAgfVxuXG4gIGdldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlOiBhbnkpIHtcbiAgICByZXR1cm4gY3VzdG9tUmFuZ2VbMF07XG4gIH1cblxuICBzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMF0pO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShjdXN0b21SYW5nZVsxXVsxXSk7XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQ6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy5jYWxlbmRhckNlbGxIb3Zlci5lbWl0KCRldmVudCk7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5zdGFydERhdGVFbGVtZW50UmVmKCksICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlLnNldCgkZXZlbnQpO1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYoKSwgbnVsbCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZS5zZXQobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLmVuZERhdGVFbGVtZW50UmVmKCksICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZS5zZXQoJGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gJGV2ZW50LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuc3RhcnREYXRlTW9kZWwuc2V0KGRhdGUgPz8gbnVsbCk7XG4gICAgdGhpcy5pbnB1dFN0YXJ0SG92ZXJWYWx1ZS5zZXQobnVsbCk7XG4gIH1cblxuICBoYW5kbGVFbmREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbmREYXRlTW9kZWwuc2V0KGRhdGUgPz8gbnVsbCk7XG4gICAgdGhpcy5pbnB1dEVuZEhvdmVyVmFsdWUuc2V0KG51bGwpO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXIoJGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9ICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlucHV0UGFyc2UoaW5wdXRWYWx1ZSk7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmIGRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5lbmREYXRlKCk7XG4gICAgICBpZiAoISh0aGlzLmZvcmJpZGRlbkRhdGUoZGF0ZSkgfHwgKGVuZERhdGUgJiYgZW5kRGF0ZSA8IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSh0aGlzLnN0YXJ0RGF0ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgaGFuZGxlRW5kRGF0ZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9ICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlucHV0UGFyc2UoaW5wdXRWYWx1ZSk7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUoKTtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAoc3RhcnREYXRlICYmIHN0YXJ0RGF0ZSA+IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKHRoaXMuZW5kRGF0ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgZm9yYmlkZGVuRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgZGF0ZUZpbHRlciA9IHRoaXMuZGF0ZUZpbHRlcigpO1xuICAgIHJldHVybiAoXG4gICAgICBpc0RhdGVEaXNhYmxlZChkYXRlLCB0aGlzLm1pbkRhdGUoKSwgdGhpcy5tYXhEYXRlKCksIHRoaXMuZGlzYWJsZWREYXRlcygpKSB8fFxuICAgICAgKGRhdGVGaWx0ZXIgPyAhZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICBzZXRJbnB1dFZhbHVlID0gKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQsIGRhdGU6IERhdGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZShkYXRlKTtcbiAgICAvLyBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWVBc0RhdGUgPSBkYXRlO1xuICAgIHJldHVybjtcbiAgfTtcblxuICBvbkNoYW5nZTogYW55ID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAvKiBlbXB0eSAqL1xuICB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHtcbiAgICAvKiBlbXB0eSAqL1xuICB9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4jZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCEhdmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKHRoaXMucmFuZ2UoKSA/IHZhbHVlLnN0YXJ0RGF0ZSA6IHZhbHVlKTtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZSh0aGlzLnJhbmdlKCkgPyB2YWx1ZS5lbmREYXRlIDogbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RhcnRUaW1lQ2hhbmdlKHRpbWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZU1vZGVsLnNldCh0aW1lID8/IHRoaXMuc3RhcnREYXRlKCkpO1xuICB9XG5cbiAgaGFuZGxlRW5kVGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbmREYXRlTW9kZWwuc2V0KHRpbWUgPz8gdGhpcy5lbmREYXRlKCkpO1xuICB9XG59XG4iLCI8ZmllbGRzZXQgW2Zvcm1Hcm91cF09XCJkYXRlUmFuZ2VHcm91cFwiPlxuICA8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIFtuZ0NsYXNzXT1cImRhdGVQaWNrZXJDbGFzc2VzXCJcbiAgICAgICAgICAgICAgW3BvcHBlck9wdGlvbnNdPVwicG9wcGVyanNPcHRpb25zKClcIiBjbGFzcz1cImRhdGUtcGlja2VyIHBpY2tlclwiPlxuICAgIDxkaXYgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgY0Ryb3Bkb3duVG9nZ2xlXG4gICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWlucHV0LWdyb3VwXCJcbiAgICA+XG4gICAgICA8aW5wdXQgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZSgpfVwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInN0YXJ0RGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSgpID8/IG51bGxcIlxuICAgICAgICAgICAgIFt2YWxpZF09XCJyYW5nZSgpID8gdW5kZWZpbmVkIDogdmFsaWQoKVwiXG4gICAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dFwiXG4gICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlSW5wdXRcIlxuICAgICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgPlxuICAgICAgQGlmIChyYW5nZSgpICYmIHNlcGFyYXRvcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAocmFuZ2UoKSkge1xuICAgICAgICA8aW5wdXQgI2VuZERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyOiAhIWlucHV0RW5kSG92ZXJWYWx1ZSgpfVwiXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW5kRGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5KCkgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICBbdmFsaWRdPVwidmFsaWQoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWlucHV0XCJcbiAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZERhdGVJbnB1dFwiXG4gICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgPlxuICAgICAgfVxuICAgICAgQGlmIChpbmRpY2F0b3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNsZWFuZXIoKSAmJiBzdGFydERhdGVFbGVtZW50UmVmLnZhbHVlICYmICFkaXNhYmxlZCgpKSB7XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cIiFkaXNhYmxlZCgpICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiBjbGFzcz1cImRhdGUtcGlja2VyLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjRHJvcGRvd25NZW51IGNsYXNzPVwiZGF0ZS1waWNrZXItZHJvcGRvd24gcHktMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWJvZHlcIj5cbiAgICAgICAgQGlmICghc2hvd1Jhbmdlcykge1xuICAgICAgICAgIEBpZiAocmFuZ2VzKCkgJiYgY3VzdG9tUmFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICAgICAgQGZvciAoY3VzdG9tUmFuZ2Ugb2YgY3VzdG9tUmFuZ2VzOyB0cmFjayBjdXN0b21SYW5nZSkge1xuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldEN1c3RvbVJhbmdlKGN1c3RvbVJhbmdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwicmFuZ2VzQnV0dG9uc1NpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJyYW5nZXNCdXR0b25zVmFyaWFudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICAgICAgICB7eyBjdXN0b21SYW5nZSB8IGN1c3RvbVJhbmdlS2V5IH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8Yy1jYWxlbmRhclxuICAgICAgICAgIChjYWxlbmRhckNlbGxIb3Zlcik9XCJoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2FsZW5kYXJEYXRlQ2hhbmdlKT1cImhhbmRsZUNhbGVuZGFyRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoZW5kRGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtjYWxlbmRhckRhdGVdPVwiY2FsZW5kYXJEYXRlXCJcbiAgICAgICAgICBbY2FsZW5kYXJzXT1cImlzTW9iaWxlID8gMSA6IGNhbGVuZGFycygpXCJcbiAgICAgICAgICBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyKClcIlxuICAgICAgICAgIFtkYXlGb3JtYXRdPVwiZGF5Rm9ybWF0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXMoKVwiXG4gICAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZSgpXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWsoKVwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSgpXCJcbiAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlKClcIlxuICAgICAgICAgIFtuYXZZZWFyRmlyc3RdPVwibmF2WWVhckZpcnN0KClcIlxuICAgICAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb24oKVwiXG4gICAgICAgICAgW3JhbmdlXT1cInJhbmdlKClcIlxuICAgICAgICAgIFtzZWxlY3RBZGphY2VudERheXNdPVwic2VsZWN0QWRqYWNlbnREYXlzKClcIlxuICAgICAgICAgIFtzZWxlY3Rpb25UeXBlXT1cInNlbGVjdGlvblR5cGUoKVwiXG4gICAgICAgICAgW3Nob3dBZGphY2VudERheXNdPVwic2hvd0FkamFjZW50RGF5cygpXCJcbiAgICAgICAgICBbc2hvd1dlZWtOdW1iZXJdPVwic2hvd1dlZWtOdW1iZXIoKVwiXG4gICAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGUoKVwiXG4gICAgICAgICAgW3dlZWtOdW1iZXJzTGFiZWxdPVwid2Vla051bWJlcnNMYWJlbCgpXCJcbiAgICAgICAgICBbd2Vla2RheUZvcm1hdF09XCJ3ZWVrZGF5Rm9ybWF0KClcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXJzXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChmYWxzZSAmJiB0aW1lcGlja2VyKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLXRpbWVwaWNrZXJzXCI+XG4gICAgICAgICAgICA8IS0tIHRvZG8tLT5cbiAgICAgICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdGFydERhdGUoKVwiXG4gICAgICAgICAgICAgIFt0aW1lXT1cInN0YXJ0RGF0ZSgpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKHJhbmdlKCkpIHtcbiAgICAgICAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuZERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3RpbWVdPVwiZW5kRGF0ZSgpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAbGV0IGZvb3RlciA9IHRlbXBsYXRlcygpPy5bJ2RhdGVQaWNrZXJGb290ZXInXTtcbiAgICAgIEBpZiAoZm9vdGVyKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1mb290ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2MtZHJvcGRvd24+XG48L2ZpZWxkc2V0PlxuIl19
599
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFVBQVUsRUFDVixNQUFNLEVBRU4sVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLGVBQWUsRUFHZixNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1Ysc0JBQXNCLEVB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dUJBQXVCLDBKQUN2QixxQkFBcUIsMkhBRXJCLG9CQUFvQixxSUFFcEIsa0JBQWtCOzs0RkFXVCx3QkFBd0I7a0JBOUJwQyxTQUFTOytCQUNFLHFCQUFxQixZQUdyQixrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjtxQkFDbkIsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBdU1WLFlBQVk7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFO2dCQWlEL0IsS0FBSztzQkFEUixLQUFLO2dCQXdIb0IsTUFBTTtzQkFBL0IsWUFBWTt1QkFBQyxVQUFVO2dCQWtEcEIsaUJBQWlCO3NCQURwQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0LFxuICBtb2RlbCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB2aWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZvcm1hdERhdGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2J1dHRvbic7XG5pbXBvcnQge1xuICBkYXRlVHJhbnNmb3JtLFxuICBlcXVhbERhdGVzLFxuICBnZXRMb2NhbERhdGVGcm9tU3RyaW5nLFxuICBpc0RhdGVEaXNhYmxlZCxcbiAgaXNWYWxpZERhdGVcbn0gZnJvbSAnLi4vLi4vY2FsZW5kYXIvY2FsZW5kYXIudXRpbHMnO1xuaW1wb3J0IHtcbiAgRGF0ZUZpbHRlclR5cGUsXG4gIERheUZvcm1hdFR5cGUsXG4gIERheXNPZldlZWssXG4gIFNlbGVjdGlvblR5cGUsXG4gIFdlZWtkYXlGb3JtYXRUeXBlXG59IGZyb20gJy4uLy4uL2NhbGVuZGFyL2NhbGVuZGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jYWxlbmRhcic7XG5pbXBvcnQgeyBDb2xvcnMgfSBmcm9tICcuLi8uLi9jb3JldWkudHlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9mb3JtJztcbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RpbWUtcGlja2VyJztcbmltcG9ydCB7IEN1c3RvbVJhbmdlS2V5UGlwZSB9IGZyb20gJy4vY3VzdG9tLXJhbmdlLWtleS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2FsZW5kYXJSYW5nZXMge1xuICBba2V5OiBzdHJpbmddOiBEYXRlW107XG59XG5cbmV4cG9ydCB0eXBlIFRDdXN0b21SYW5nZSA9IFtzdHJpbmcsIERhdGVbXV07XG5cbi8qKiBNdXN0IGJlIGEgdmFsaWQgZGF0ZSBzdHJpbmcgKi9cbi8vIHRvZG86IHZhbGlkYXRpb25cbi8vIGV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcihsb2NhbGU6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcbi8vICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4vLyAgICAgLy8gY29uc3QgdmFsaWREYXRlID0gIWlzTmFOKERhdGUucGFyc2UoY29udHJvbC52YWx1ZSkpO1xuLy8gICAgIHN0cmluZ1RvRGF0ZUNvbnZlcnQoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCBkYXRlU2hpbSA9IGN2dERhdGUoY29udHJvbC52YWx1ZSwgbG9jYWxlKTtcbi8vICAgICAvLyBAdHMtaWdub3JlXG4vLyAgICAgLy8gY29udHJvbC5zZXRWYWx1ZShuZXcgRGF0ZShkYXRlU2hpbS55ZWFyLCBkYXRlU2hpbS5tb250aCwgZGF0ZVNoaW0uZGF5KSlcbi8vICAgICBjb25zb2xlLmxvZygnZGF0ZVNoaW0nLCBkYXRlU2hpbSwgbG9jYWxlKTtcbi8vICAgICBjb25zdCB2YWxpZERhdGUgPSBpc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKTtcbi8vICAgICBjb25zb2xlLmxvZygnaW52YWxpZERhdGVTdHJpbmdWYWxpZGF0b3InLCBjb250cm9sLCBjb250cm9sLnZhbHVlLCB2YWxpZERhdGUpO1xuLy8gICAgIHJldHVybiB2YWxpZERhdGUgPyB7IGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yOiB7IHZhbHVlOiBjb250cm9sLnZhbHVlIH0gfSA6IG51bGw7XG4vLyAgIH07XG4vLyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtZGF0ZS1yYW5nZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NEYXRlUmFuZ2VQaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgICBCdXR0b25EaXJlY3RpdmUsXG4gICAgRHJvcGRvd25Db21wb25lbnQsXG4gICAgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUsXG4gICAgRHJvcGRvd25NZW51RGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gICAgSW5wdXRHcm91cFRleHREaXJlY3RpdmUsXG4gICAgQ3VzdG9tUmFuZ2VLZXlQaXBlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICByZWFkb25seSAjYnJlYWtwb2ludE9ic2VydmVyID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gIHJlYWRvbmx5ICNkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZvcm1hdCBvZiBkYXkgbmFtZS5cbiAgICogQGRlZmF1bHQgJ251bWVyaWMnXG4gICAqIEB0eXBlIERheUZvcm1hdFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGRheUZvcm1hdCA9IGlucHV0PERheUZvcm1hdFR5cGU+KCdudW1lcmljJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgY2FsZW5kYXJzIHRoYXQgcmVuZGVyIG9uIGRlc2t0b3AgZGV2aWNlcy5cbiAgICogQHR5cGUgbnVtYmVyXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGNhbGVuZGFycyA9IGlucHV0KDIsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xlYW5lciA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgaWYgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBjbG9zZWQgYWZ0ZXIgdmFsdWUgc2V0dGluZy5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2xvc2VPblNlbGVjdCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogU2V0IGRhdGUgZm9ybWF0LlxuICAgKiBXZSB1c2UgQW5ndWxhciBmb3JtYXREYXRlKCkgZnVuY3Rpb24sIHNlZTpcbiAgICogLSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvbW1vbi9mb3JtYXREYXRlXG4gICAqIC0gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb21tb24vRGF0ZVBpcGUjcHJlLWRlZmluZWQtZm9ybWF0LW9wdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdCA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBpbnB1dCBpbmRpY2F0b3IuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kaWNhdG9yID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBmdW5jdGlvbiB0byBmb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGUgaW50byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjdXN0b20gZm9ybWF0LlxuICAgKiBAc2luY2UgdjUuMC4wXG4gICAqL1xuICByZWFkb25seSBpbnB1dERhdGVGb3JtYXQgPSBpbnB1dDwoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZnVuY3Rpb24gdG8gcGFyc2UgdGhlIGlucHV0IHZhbHVlIGludG8gYSB2YWxpZCBEYXRlIG9iamVjdC5cbiAgICogQHNpbmNlIHY1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXREYXRlUGFyc2UgPSBpbnB1dDwoZGF0ZTogc3RyaW5nIHwgRGF0ZSkgPT4gRGF0ZT4oKTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRSZWFkT25seUlucHV0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ2lucHV0UmVhZE9ubHknIH0pO1xuXG4gIHJlYWRvbmx5IGlucHV0UmVhZE9ubHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRSZWFkT25seUlucHV0KCkgfHwgdHlwZW9mIHRoaXMuZm9ybWF0KCkgPT09ICdzdHJpbmcnO1xuICB9KTtcblxuICAvKipcbiAgICogUmVvcmRlciB5ZWFyLW1vbnRoIG5hdmlnYXRpb24sIGFuZCByZW5kZXIgeWVhciBmaXJzdC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbmF2WWVhckZpcnN0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc2hvcnQgaGludHMgdGhhdCBhcmUgdmlzaWJsZSBpbiBzdGFydCBkYXRlIGFuZCBlbmQgZGF0ZSBpbnB1dHMuXG4gICAqIHR5cGUgc3RyaW5nXG4gICAqL1xuICByZWFkb25seSBwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdPihbJ1N0YXJ0IGRhdGUnLCAnRW5kIGRhdGUnXSk7XG5cbiAgLyoqXG4gICAqIFByZWRlZmluZWQgZGF0ZSByYW5nZXMgdGhlIHVzZXIgY2FuIHNlbGVjdCBmcm9tLlxuICAgKiBAdHlwZSBJQ2FsZW5kYXJSYW5nZXNcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlcyA9IGlucHV0PElDYWxlbmRhclJhbmdlcz4oKTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgY29sb3IgY29udGV4dCBvZiB0aGUgY2FuY2VsIGJ1dHRvbiB0byBvbmUgb2YgQ29yZVVJ4oCZcyB0aGVtZWQgY29sb3JzLlxuICAgKiBAdHlwZSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICdkYW5nZXInIHwgJ3dhcm5pbmcnIHwgJ2luZm8nIHwgJ2RhcmsnIHwgJ2xpZ2h0JyB8IHN0cmluZ1xuICAgKiBAZGVmYXVsdCAnc2Vjb25kYXJ5J1xuICAgKi9cbiAgcmVhZG9ubHkgcmFuZ2VzQnV0dG9uc0NvbG9yID0gaW5wdXQ8Q29sb3JzPignc2Vjb25kYXJ5Jyk7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIHJhbmdlcyBidXR0b24gc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgJydcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlc0J1dHRvbnNTaXplID0gaW5wdXQ8J3NtJyB8ICdsZycgfCAnJz4oJycpO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHJhbmdlcyBidXR0b24gdmFyaWFudCB0byBhbiBvdXRsaW5lZCBidXR0b24gb3IgYSBnaG9zdCBidXR0b24uXG4gICAqIEB0eXBlICdvdXRsaW5lJyB8ICdnaG9zdCcgfCB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlc0J1dHRvbnNWYXJpYW50ID0gaW5wdXQ8J291dGxpbmUnIHwgJ2dob3N0Jz4oJ2dob3N0Jyk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaWNvbiBvciBjaGFyYWN0ZXIgdGhhdCBzZXBhcmF0ZXMgdHdvIGRhdGVzLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNlcGFyYXRvciA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PCdzbScgfCAnbGcnPigpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGFuIGFkZGl0aW9uYWwgdGltZSBzZWxlY3Rpb24gYnkgYWRkaW5nIHNlbGVjdCBib3hlcyB0byBjaG9vc2UgdGltZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZXBpY2tlcklucHV0ID0gaW5wdXQoZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlLCBhbGlhczogJ3RpbWVwaWNrZXInIH0pO1xuXG4gIGdldCB0aW1lcGlja2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gdGhpcy50aW1lcGlja2VySW5wdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2YWxpZCA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgZHJvcGRvd24gZGF0ZS1waWNrZXIgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB2aXNpYmxlSW5wdXQgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZUlucHV0RWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIHRoaXMudmlzaWJsZS5zZXQodGhpcy52aXNpYmxlSW5wdXQoKSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcblxuICByZWFkb25seSB2aXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBzdGFydERhdGVNb2RlbCA9IG1vZGVsPERhdGUgfCBudWxsPihudWxsLCB7XG4gICAgYWxpYXM6ICdzdGFydERhdGUnXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGRhdGVNb2RlbEVmZmVjdCA9IGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICB0aGlzLmRhdGVSYW5nZUdyb3VwLnBhdGNoVmFsdWUoeyBzdGFydERhdGVJbnB1dDogdGhpcy5zdGFydERhdGVWYWx1ZSgpLCBlbmREYXRlSW5wdXQ6IHRoaXMuZW5kRGF0ZVZhbHVlKCkgfSk7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZSgpO1xuICAgICAgY29uc3QgZW5kRGF0ZSA9IHRoaXMuZW5kRGF0ZSgpO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmFuZ2UoKSA/IHsgc3RhcnREYXRlOiBzdGFydERhdGUsIGVuZERhdGU6IGVuZERhdGUgfSA6IHN0YXJ0RGF0ZTtcbiAgICAgIHRoaXMuc3RhcnREYXRlTW9kZWwuc2V0KHN0YXJ0RGF0ZSk7XG4gICAgICB0aGlzLmVuZERhdGVNb2RlbC5zZXQoZW5kRGF0ZSk7XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcblxuICByZWFkb25seSBzdGFydERhdGUgPSBjb21wdXRlZChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZU1vZGVsKCk7XG4gICAgICByZXR1cm4gc3RhcnREYXRlID8gbmV3IERhdGUoc3RhcnREYXRlKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBlcXVhbERhdGVzIH1cbiAgKTtcblxuICByZWFkb25seSBzdGFydERhdGVDaGFuZ2UgPSB0b09ic2VydmFibGUodGhpcy5zdGFydERhdGUpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlbmREYXRlTW9kZWwgPSBtb2RlbDxEYXRlIHwgbnVsbD4obnVsbCwge1xuICAgIGFsaWFzOiAnZW5kRGF0ZSdcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZW5kRGF0ZSA9IGNvbXB1dGVkKFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmVuZERhdGVNb2RlbCgpO1xuICAgICAgcmV0dXJuIGVuZERhdGUgPyBuZXcgRGF0ZShlbmREYXRlKSA6IG51bGw7XG4gICAgfSxcbiAgICB7IGVxdWFsOiBlcXVhbERhdGVzIH1cbiAgKTtcblxuICByZWFkb25seSBlbmREYXRlQ2hhbmdlID0gdG9PYnNlcnZhYmxlKHRoaXMuZW5kRGF0ZSk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBkYXRlVHJhbnNmb3JtIH0pIGNhbGVuZGFyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWREYXRlcyA9IGlucHV0PChEYXRlW10gfCBEYXRlKVtdPihbXSk7XG5cbiAgLyoqXG4gICAqIFNldCBmaXJzdCBkYXkgb2Ygd2Vlay5cbiAgICogQHR5cGUgRGF5c09mV2Vla1xuICAgKiBAZGVmYXVsdCAxIChNb25kYXkpXG4gICAqL1xuICByZWFkb25seSBmaXJzdERheU9mV2VlayA9IGlucHV0PERheXNPZldlZWs+KDEpO1xuXG4gIHJlYWRvbmx5IGxvY2FsZSA9IGlucHV0KCdkZWZhdWx0Jyk7XG5cbiAgcmVhZG9ubHkgbWF4RGF0ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgbWluRGF0ZSA9IGlucHV0PERhdGUgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogU2hvdyBjYWxlbmRhciBuYXZpZ2F0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcblxuICAvKipcbiAgICogQWxsb3cgcmFuZ2Ugc2VsZWN0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJhbmdlSW5wdXQgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdyYW5nZScgfSk7XG5cbiAgcmVhZG9ubHkgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2VJbnB1dCgpO1xuICB9KTtcblxuICByZWFkb25seSBkYXRlRmlsdGVyID0gaW5wdXQ8RGF0ZUZpbHRlclR5cGU+KCk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWRJbnB1dCA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSwgYWxpYXM6ICdkaXNhYmxlZCcgfSk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuZGlzYWJsZWQoKSA/IHRoaXMuZGF0ZVJhbmdlR3JvdXAuZGlzYWJsZSgpIDogdGhpcy5kYXRlUmFuZ2VHcm91cC5lbmFibGUoKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuI2Rpc2FibGVkKCkgfHwgdGhpcy5kaXNhYmxlZElucHV0KCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5ICNkaXNhYmxlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucmFuZ2UoKSA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl92YWx1ZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMub25DaGFuZ2UobmV3VmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLl92YWx1ZSk7XG4gICAgICBpZiAodGhpcy5jbG9zZU9uU2VsZWN0KCkgJiYgdGhpcy52aXNpYmxlKCkpIHtcbiAgICAgICAgY29uc3QgaGFzVmFsdWUgPSB0aGlzLnJhbmdlKCkgPyAhISh0aGlzLl92YWx1ZS5zdGFydERhdGUgJiYgdGhpcy5fdmFsdWUuZW5kRGF0ZSkgOiAhIXRoaXMuX3ZhbHVlO1xuICAgICAgICB0aGlzLnZpc2libGUuc2V0KCFoYXNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbHVlOiBhbnkgPSB7fTtcblxuICAvKipcbiAgICogU2V0IGxlbmd0aCBvciBmb3JtYXQgb2YgZGF5IG5hbWUuXG4gICAqIEB0eXBlIFdlZWtkYXlGb3JtYXRUeXBlXG4gICAqIEBkZWZhdWx0ICdzaG9ydCdcbiAgICovXG4gIHJlYWRvbmx5IHdlZWtkYXlGb3JtYXQgPSBpbnB1dDxXZWVrZGF5Rm9ybWF0VHlwZT4oJ3Nob3J0Jyk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHBvcHBlciBPcHRpb25zIG9iamVjdFxuICAgKiBAdHlwZSBQYXJ0aWFsPE9wdGlvbnM+XG4gICAqL1xuICByZWFkb25seSBwb3BwZXJqc09wdGlvbnMgPSBpbnB1dDxQYXJ0aWFsPE9wdGlvbnM+Pih7IHN0cmF0ZWd5OiAnYWJzb2x1dGUnIH0sIHsgYWxpYXM6ICdwb3BwZXJPcHRpb25zJyB9KTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgZGF5cyBpbiBhZGphY2VudCBtb250aHMgc2hvd24gYmVmb3JlIG9yIGFmdGVyIHRoZSBjdXJyZW50IG1vbnRoIGFyZSBzZWxlY3RhYmxlLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgYHNob3dBZGphY2VudERheXNgIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAc2luY2UgNC40LjEwXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RBZGphY2VudERheXMgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFNldCB3aGV0aGVyIHRvIGRpc3BsYXkgZGF0ZXMgaW4gYWRqYWNlbnQgbW9udGhzIChub24tc2VsZWN0YWJsZSkgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGN1cnJlbnQgbW9udGguXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKiBAc2luY2UgNC40LjEwXG4gICAqL1xuICByZWFkb25seSBzaG93QWRqYWNlbnREYXlzID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHR5cGUgb2YgZGF0ZSBzZWxlY3Rpb24gYXMgZGF5LCB3ZWVrLCBtb250aCwgb3IgeWVhci5cbiAgICogQHR5cGUgJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInXG4gICAqIEBkZWZhdWx0ICdkYXknXG4gICAqIEBzaW5jZSA1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0aW9uVHlwZSA9IGlucHV0PFNlbGVjdGlvblR5cGU+KCdkYXknKTtcblxuICAvKipcbiAgICogU2V0IHdoZXRoZXIgdG8gZGlzcGxheSB3ZWVrIG51bWJlcnMgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBzaW5jZSA1LjAuMFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvd1dlZWtOdW1iZXIgPSBpbnB1dChmYWxzZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG5cbiAgLyoqXG4gICAqIExhYmVsIGRpc3BsYXllZCBvdmVyIHdlZWsgbnVtYmVycyBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICogQHNpbmNlIDUuMC4wXG4gICAqL1xuICByZWFkb25seSB3ZWVrTnVtYmVyc0xhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gb3V0cHV0PERhdGUgfCBEYXRlW10gfCB1bmRlZmluZWQ+KCk7XG5cbiAgcmVhZG9ubHkgY2FsZW5kYXJDZWxsSG92ZXIgPSBvdXRwdXQ8RGF0ZSB8IG51bGw+KCk7XG4gIHJlYWRvbmx5IGNhbGVuZGFyRGF0ZUNoYW5nZSA9IG91dHB1dDxEYXRlPigpO1xuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZUVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ3N0YXJ0RGF0ZUVsZW1lbnRSZWYnKTtcbiAgcmVhZG9ubHkgZW5kRGF0ZUVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4oJ2VuZERhdGVFbGVtZW50UmVmJyk7XG5cbiAgcmVhZG9ubHkgY29udGVudFRlbXBsYXRlcyA9IGNvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZUlkRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IHRlbXBsYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZW50VGVtcGxhdGVzKCkucmVkdWNlKFxuICAgICAgKGFjYywgY2hpbGQpID0+IHtcbiAgICAgICAgYWNjW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+XG4gICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVEYXRlQ2hhbmdlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICAvLyB0b2RvXG4gICAgICAvLyB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAvLyAgIHRoaXMuc3RhcnREYXRlQ2hhbmdlLnN1YnNjcmliZSgobmV4dCkgPT4ge1xuICAgICAgLy8gICAgIC8vIGNvbnNvbGUubG9nKCdzdGFydERhdGVDaGFuZ2UnLCBuZXh0KTtcbiAgICAgIC8vICAgICAvLyB0aGlzLnN0YXJ0RGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgICAgLy8gdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICk7XG4gICAgICAvLyB0aGlzLmRhdGVDaGFuZ2VTdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAvLyAgIHRoaXMuZW5kRGF0ZUNoYW5nZS5zdWJzY3JpYmUoKG5leHQpID0+IHtcbiAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZygnZW5kRGF0ZUNoYW5nZScsIG5leHQpO1xuICAgICAgLy8gICAgIC8vIHRoaXMuZW5kRGF0ZSA9IG5leHQ7XG4gICAgICAvLyAgICAgLy8gdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICAgIC8vICAgfSlcbiAgICAgIC8vICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0ZUNoYW5nZVN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiB7XG4gICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1c291dCcpIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGlzTW9iaWxlID0gdHJ1ZTtcbiAgcHVibGljIGN1c3RvbVJhbmdlcyE6IFRDdXN0b21SYW5nZVtdO1xuICBwdWJsaWMgc2hvd1JhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVZhbHVlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMubG9jYWxlKCkgPz8gJ2RlZmF1bHQnO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUodGhpcy5zdGFydERhdGUoKSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGVuZERhdGVWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmxvY2FsZSgpID8/ICdkZWZhdWx0JztcbiAgICByZXR1cm4gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW5kRGF0ZSgpKTtcbiAgfSk7XG5cbiAgcHVibGljIGdldCBzdGFydERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBsYWNlaG9sZGVyKSA/IHBsYWNlaG9sZGVyWzBdIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVuZERhdGVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHBsYWNlaG9sZGVyKSA/IHBsYWNlaG9sZGVyWzFdIDogcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvLyB0b2RvOiB2YWxpZGF0aW9uXG4gIC8vIHN0YXJ0RGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc3RhcnREYXRlVmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgLy8gICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gIC8vICAgLy8gVmFsaWRhdG9ycy5taW5MZW5ndGgoOCksXG4gIC8vICAgLy8gVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApLFxuICAvLyAgIC8vIGludmFsaWREYXRlU3RyaW5nVmFsaWRhdG9yKHRoaXMubG9jYWxlKVxuICAvLyBdKTtcbiAgLy8gZW5kRGF0ZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuZW5kRGF0ZVZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gIC8vICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICAvLyAgIC8vIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpLFxuICAvLyAgIC8vIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwKSxcbiAgLy8gICAvLyBpbnZhbGlkRGF0ZVN0cmluZ1ZhbGlkYXRvcih0aGlzLmxvY2FsZSlcbiAgLy8gXSk7XG4gIHJlYWRvbmx5IGRhdGVSYW5nZUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBzdGFydERhdGVJbnB1dDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgZW5kRGF0ZUlucHV0OiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICB9KTtcblxuICByZWFkb25seSBpbnB1dFN0YXJ0SG92ZXJWYWx1ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGlucHV0RW5kSG92ZXJWYWx1ZSA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBkYXRlUGlja2VyQ2xhc3NlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2RhdGUtcGlja2VyJzogdHJ1ZSxcbiAgICAgIFtgZGF0ZS1waWNrZXItJHt0aGlzLnNpemUoKX1gXTogdGhpcy5zaXplKCksXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCgpLFxuICAgICAgJ2lzLXZhbGlkJzogdGhpcy52YWxpZCgpID09PSB0cnVlLFxuICAgICAgJ2lzLWludmFsaWQnOiB0aGlzLnZhbGlkKCkgPT09IGZhbHNlXG4gICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmZvcm1hdCgpO1xuICAgIGNvbnN0IGlucHV0RGF0ZUZvcm1hdCA9IHRoaXMuaW5wdXREYXRlRm9ybWF0KCk7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5sb2NhbGUoKTtcblxuICAgIHJldHVybiAhZGF0ZSB8fCAhaXNWYWxpZERhdGUoZGF0ZSlcbiAgICAgID8gJydcbiAgICAgIDogdHlwZW9mIGlucHV0RGF0ZUZvcm1hdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGlucHV0RGF0ZUZvcm1hdChkYXRlKVxuICAgICAgICA6ICEhZm9ybWF0ICYmICEhbG9jYWxlICYmIGxvY2FsZSAhPT0gJ2RlZmF1bHQnXG4gICAgICAgICAgPyBmb3JtYXREYXRlKGRhdGUsIGZvcm1hdCwgbG9jYWxlKVxuICAgICAgICAgIDogdGhpcy50aW1lcGlja2VyXG4gICAgICAgICAgICA/IGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlKVxuICAgICAgICAgICAgOiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xuICB9XG5cbiAgcmVhZG9ubHkgI2JyZWFrcG9pbnRzID0ge1xuICAgIE9uZUNhbGVuZGFyUmFuZ2VzOiAnKG1pbi13aWR0aDogNDgwcHgpJyxcbiAgICBUd29DYWxlbmRhcnM6ICcobWF4LXdpZHRoOiA2NTBweCknLFxuICAgIFR3b0NhbGVuZGFyc1JhbmdlczogJyhtYXgtd2lkdGg6IDgxMHB4KSdcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCByYW5nZXMgPSB0aGlzLnJhbmdlcygpO1xuICAgIHRoaXMuY3VzdG9tUmFuZ2VzID0gcmFuZ2VzID8gT2JqZWN0LmVudHJpZXMocmFuZ2VzKSA6IFtdO1xuXG4gICAgY29uc3QgYnJlYWtwb2ludHMgPSB0aGlzLiNicmVha3BvaW50cztcblxuICAgIHRoaXMuI2JyZWFrcG9pbnRPYnNlcnZlclxuICAgICAgLm9ic2VydmUoW2JyZWFrcG9pbnRzLk9uZUNhbGVuZGFyUmFuZ2VzLCBicmVha3BvaW50cy5Ud29DYWxlbmRhcnMsIGJyZWFrcG9pbnRzLlR3b0NhbGVuZGFyc1Jhbmdlc10pXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy4jZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdC5tYXRjaGVzKSB7XG4gICAgICAgICAgdGhpcy5pc01vYmlsZSA9XG4gICAgICAgICAgICAodGhpcy5jdXN0b21SYW5nZXM/Lmxlbmd0aCA+IDAgJiYgcmVzdWx0LmJyZWFrcG9pbnRzW2JyZWFrcG9pbnRzLlR3b0NhbGVuZGFyc1Jhbmdlc10pIHx8XG4gICAgICAgICAgICByZXN1bHQuYnJlYWtwb2ludHNbYnJlYWtwb2ludHMuVHdvQ2FsZW5kYXJzXTtcbiAgICAgICAgICBpZiAodGhpcy5jdXN0b21SYW5nZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1JhbmdlcyA9ICFyZXN1bHQuYnJlYWtwb2ludHNbYnJlYWtwb2ludHMuT25lQ2FsZW5kYXJSYW5nZXNdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmliZURhdGVDaGFuZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaWJlRGF0ZUNoYW5nZShmYWxzZSk7XG4gIH1cblxuICBjb252ZXJ0VmFsdWVUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5pbnB1dFBhcnNlKHZhbHVlKSA/PyBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpO1xuICB9XG5cbiAgaW5wdXRQYXJzZShkYXRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbnB1dERhdGVQYXJzZSA9IHRoaXMuaW5wdXREYXRlUGFyc2UoKTtcblxuICAgIGlmICh0eXBlb2YgaW5wdXREYXRlUGFyc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBpbnB1dERhdGVQYXJzZShkYXRlKTtcbiAgICAgIGlmIChpc1ZhbGlkRGF0ZShwYXJzZWREYXRlKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkRGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdldExvY2FsRGF0ZUZyb21TdHJpbmcoZGF0ZSwgdGhpcy5sb2NhbGUoKSwgdGhpcy50aW1lcGlja2VyKTtcbiAgfVxuXG4gIGdldEN1c3RvbVJhbmdlS2V5KGN1c3RvbVJhbmdlOiBhbnkpIHtcbiAgICByZXR1cm4gY3VzdG9tUmFuZ2VbMF07XG4gIH1cblxuICBzZXRDdXN0b21SYW5nZShjdXN0b21SYW5nZTogYW55KSB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRDdXN0b21SYW5nZUtleShjdXN0b21SYW5nZSk7XG4gICAgdGhpcy5oYW5kbGVTdGFydERhdGVDaGFuZ2UoY3VzdG9tUmFuZ2VbMV1bMF0pO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShjdXN0b21SYW5nZVsxXVsxXSk7XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQ6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy5jYWxlbmRhckNlbGxIb3Zlci5lbWl0KCRldmVudCk7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICB0aGlzLnNldElucHV0VmFsdWUodGhpcy5zdGFydERhdGVFbGVtZW50UmVmKCksICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0U3RhcnRIb3ZlclZhbHVlLnNldCgkZXZlbnQpO1xuICAgICAgdGhpcy5zZXRJbnB1dFZhbHVlKHRoaXMuZW5kRGF0ZUVsZW1lbnRSZWYoKSwgbnVsbCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZS5zZXQobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5lbmREYXRlKCkpIHtcbiAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZSh0aGlzLmVuZERhdGVFbGVtZW50UmVmKCksICRldmVudCk7XG4gICAgICB0aGlzLmlucHV0RW5kSG92ZXJWYWx1ZS5zZXQoJGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDYWxlbmRhckRhdGVDaGFuZ2UoJGV2ZW50OiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuY2FsZW5kYXJEYXRlLmdldFRpbWUoKSAhPT0gJGV2ZW50LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMuc3RhcnREYXRlTW9kZWwuc2V0KGRhdGUgPz8gbnVsbCk7XG4gICAgdGhpcy5pbnB1dFN0YXJ0SG92ZXJWYWx1ZS5zZXQobnVsbCk7XG4gIH1cblxuICBoYW5kbGVFbmREYXRlQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbmREYXRlTW9kZWwuc2V0KGRhdGUgPz8gbnVsbCk7XG4gICAgdGhpcy5pbnB1dEVuZEhvdmVyVmFsdWUuc2V0KG51bGwpO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXIoJGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgfVxuXG4gIGhhbmRsZVN0YXJ0RGF0ZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9ICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlucHV0UGFyc2UoaW5wdXRWYWx1ZSk7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmIGRhdGUuZ2V0VGltZSgpKSB7XG4gICAgICBjb25zdCBlbmREYXRlID0gdGhpcy5lbmREYXRlKCk7XG4gICAgICBpZiAoISh0aGlzLmZvcmJpZGRlbkRhdGUoZGF0ZSkgfHwgKGVuZERhdGUgJiYgZW5kRGF0ZSA8IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKGRhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmhhbmRsZVN0YXJ0RGF0ZUNoYW5nZSh0aGlzLnN0YXJ0RGF0ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgaGFuZGxlRW5kRGF0ZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9ICgkZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlucHV0UGFyc2UoaW5wdXRWYWx1ZSk7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICB0aGlzLmhhbmRsZUVuZERhdGVDaGFuZ2UobnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBkYXRlLmdldFRpbWUoKSkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGUoKTtcbiAgICAgIGlmICghKHRoaXMuZm9yYmlkZGVuRGF0ZShkYXRlKSB8fCAoc3RhcnREYXRlICYmIHN0YXJ0RGF0ZSA+IGRhdGUpKSkge1xuICAgICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZShudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5oYW5kbGVFbmREYXRlQ2hhbmdlKHRoaXMuZW5kRGF0ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgZm9yYmlkZGVuRGF0ZShkYXRlOiBEYXRlKSB7XG4gICAgY29uc3QgZGF0ZUZpbHRlciA9IHRoaXMuZGF0ZUZpbHRlcigpO1xuICAgIHJldHVybiAoXG4gICAgICBpc0RhdGVEaXNhYmxlZChkYXRlLCB0aGlzLm1pbkRhdGUoKSwgdGhpcy5tYXhEYXRlKCksIHRoaXMuZGlzYWJsZWREYXRlcygpKSB8fFxuICAgICAgKGRhdGVGaWx0ZXIgPyAhZGF0ZUZpbHRlcihkYXRlKSA6IGZhbHNlKVxuICAgICk7XG4gIH1cblxuICBzZXRJbnB1dFZhbHVlID0gKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQsIGRhdGU6IERhdGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKCFlbGVtZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZShkYXRlKTtcbiAgICAvLyBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWVBc0RhdGUgPSBkYXRlO1xuICAgIHJldHVybjtcbiAgfTtcblxuICBvbkNoYW5nZTogYW55ID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAvKiBlbXB0eSAqL1xuICB9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHtcbiAgICAvKiBlbXB0eSAqL1xuICB9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy4jZGlzYWJsZWQuc2V0KGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCEhdmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3RhcnREYXRlQ2hhbmdlKHRoaXMucmFuZ2UoKSA/IHZhbHVlLnN0YXJ0RGF0ZSA6IHZhbHVlKTtcbiAgICAgIHRoaXMuaGFuZGxlRW5kRGF0ZUNoYW5nZSh0aGlzLnJhbmdlKCkgPyB2YWx1ZS5lbmREYXRlIDogbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3RhcnRUaW1lQ2hhbmdlKHRpbWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnN0YXJ0RGF0ZU1vZGVsLnNldCh0aW1lID8/IHRoaXMuc3RhcnREYXRlKCkpO1xuICB9XG5cbiAgaGFuZGxlRW5kVGltZUNoYW5nZSh0aW1lOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLnJhbmdlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5lbmREYXRlTW9kZWwuc2V0KHRpbWUgPz8gdGhpcy5lbmREYXRlKCkpO1xuICB9XG59XG4iLCI8ZmllbGRzZXQgW2Zvcm1Hcm91cF09XCJkYXRlUmFuZ2VHcm91cFwiPlxuICA8Yy1kcm9wZG93biAjZHJvcGRvd249XCJjRHJvcGRvd25cIiBbKHZpc2libGUpXT1cInZpc2libGVcIiBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIFtuZ0NsYXNzXT1cImRhdGVQaWNrZXJDbGFzc2VzXCJcbiAgICAgICAgICAgICAgW3BvcHBlck9wdGlvbnNdPVwicG9wcGVyanNPcHRpb25zKClcIiBjbGFzcz1cImRhdGUtcGlja2VyIHBpY2tlclwiPlxuICAgIDxkaXYgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCgpID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgY0Ryb3Bkb3duVG9nZ2xlXG4gICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWlucHV0LWdyb3VwXCJcbiAgICA+XG4gICAgICA8aW5wdXQgI3N0YXJ0RGF0ZUVsZW1lbnRSZWZcbiAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZVN0YXJ0RGF0ZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntob3ZlcjogISFpbnB1dFN0YXJ0SG92ZXJWYWx1ZSgpfVwiXG4gICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInN0YXJ0RGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSgpID8/IG51bGxcIlxuICAgICAgICAgICAgIFt2YWxpZF09XCJyYW5nZSgpID8gdW5kZWZpbmVkIDogdmFsaWQoKVwiXG4gICAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICAgY2xhc3M9XCJkYXRlLXBpY2tlci1pbnB1dFwiXG4gICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlSW5wdXRcIlxuICAgICAgICAgICAgIHBhdHRlcm49XCJbMS05XSpcIlxuICAgICAgPlxuICAgICAgQGlmIChyYW5nZSgpICYmIHNlcGFyYXRvcigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1zZXBhcmF0b3JcIj48L2Rpdj5cbiAgICAgIH1cbiAgICAgIEBpZiAocmFuZ2UoKSkge1xuICAgICAgICA8aW5wdXQgI2VuZERhdGVFbGVtZW50UmVmXG4gICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUVuZERhdGVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkKCkgPyAtMSA6IDBcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2hvdmVyOiAhIWlucHV0RW5kSG92ZXJWYWx1ZSgpfVwiXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW5kRGF0ZVBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJpbnB1dFJlYWRPbmx5KCkgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICBbdmFsaWRdPVwidmFsaWQoKSA/PyB1bmRlZmluZWRcIlxuICAgICAgICAgICAgICAgY0Zvcm1Db250cm9sXG4gICAgICAgICAgICAgICBjbGFzcz1cImRhdGUtcGlja2VyLWlucHV0XCJcbiAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZERhdGVJbnB1dFwiXG4gICAgICAgICAgICAgICBwYXR0ZXJuPVwiWzEtOV0qXCJcbiAgICAgICAgPlxuICAgICAgfVxuICAgICAgQGlmIChpbmRpY2F0b3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICB9XG4gICAgICBAaWYgKGNsZWFuZXIoKSAmJiBzdGFydERhdGVFbGVtZW50UmVmLnZhbHVlICYmICFkaXNhYmxlZCgpKSB7XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cIiFkaXNhYmxlZCgpICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiBjbGFzcz1cImRhdGUtcGlja2VyLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+PC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjRHJvcGRvd25NZW51IGNsYXNzPVwiZGF0ZS1waWNrZXItZHJvcGRvd24gcHktMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLWJvZHlcIj5cbiAgICAgICAgQGlmICghc2hvd1Jhbmdlcykge1xuICAgICAgICAgIEBpZiAocmFuZ2VzKCkgJiYgY3VzdG9tUmFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1yYW5nZXNcIj5cbiAgICAgICAgICAgICAgQGZvciAoY3VzdG9tUmFuZ2Ugb2YgY3VzdG9tUmFuZ2VzOyB0cmFjayBjdXN0b21SYW5nZSkge1xuICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldEN1c3RvbVJhbmdlKGN1c3RvbVJhbmdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwicmFuZ2VzQnV0dG9uc0NvbG9yKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwicmFuZ2VzQnV0dG9uc1NpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFyaWFudF09XCJyYW5nZXNCdXR0b25zVmFyaWFudCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNCdXR0b24+XG4gICAgICAgICAgICAgICAgICB7eyBjdXN0b21SYW5nZSB8IGN1c3RvbVJhbmdlS2V5IH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICA8Yy1jYWxlbmRhclxuICAgICAgICAgIChjYWxlbmRhckNlbGxIb3Zlcik9XCJoYW5kbGVDYWxlbmRhckNlbGxIb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAoY2FsZW5kYXJEYXRlQ2hhbmdlKT1cImhhbmRsZUNhbGVuZGFyRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoZW5kRGF0ZUNoYW5nZSk9XCJoYW5kbGVFbmREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChzdGFydERhdGVDaGFuZ2UpPVwiaGFuZGxlU3RhcnREYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtjYWxlbmRhckRhdGVdPVwiY2FsZW5kYXJEYXRlXCJcbiAgICAgICAgICBbY2FsZW5kYXJzXT1cImlzTW9iaWxlID8gMSA6IGNhbGVuZGFycygpXCJcbiAgICAgICAgICBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyKClcIlxuICAgICAgICAgIFtkYXlGb3JtYXRdPVwiZGF5Rm9ybWF0KClcIlxuICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXMoKVwiXG4gICAgICAgICAgW2VuZERhdGVdPVwiZW5kRGF0ZSgpXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWsoKVwiXG4gICAgICAgICAgW2xvY2FsZV09XCJsb2NhbGUoKVwiXG4gICAgICAgICAgW21heERhdGVdPVwibWF4RGF0ZSgpXCJcbiAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlKClcIlxuICAgICAgICAgIFtuYXZZZWFyRmlyc3RdPVwibmF2WWVhckZpcnN0KClcIlxuICAgICAgICAgIFtuYXZpZ2F0aW9uXT1cIm5hdmlnYXRpb24oKVwiXG4gICAgICAgICAgW3JhbmdlXT1cInJhbmdlKClcIlxuICAgICAgICAgIFtzZWxlY3RBZGphY2VudERheXNdPVwic2VsZWN0QWRqYWNlbnREYXlzKClcIlxuICAgICAgICAgIFtzZWxlY3Rpb25UeXBlXT1cInNlbGVjdGlvblR5cGUoKVwiXG4gICAgICAgICAgW3Nob3dBZGphY2VudERheXNdPVwic2hvd0FkamFjZW50RGF5cygpXCJcbiAgICAgICAgICBbc2hvd1dlZWtOdW1iZXJdPVwic2hvd1dlZWtOdW1iZXIoKVwiXG4gICAgICAgICAgW3N0YXJ0RGF0ZV09XCJzdGFydERhdGUoKVwiXG4gICAgICAgICAgW3dlZWtOdW1iZXJzTGFiZWxdPVwid2Vla051bWJlcnNMYWJlbCgpXCJcbiAgICAgICAgICBbd2Vla2RheUZvcm1hdF09XCJ3ZWVrZGF5Rm9ybWF0KClcIlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZS1waWNrZXItY2FsZW5kYXJzXCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmIChmYWxzZSAmJiB0aW1lcGlja2VyKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLXRpbWVwaWNrZXJzXCI+XG4gICAgICAgICAgICA8IS0tIHRvZG8tLT5cbiAgICAgICAgICAgIDxjLXRpbWUtcGlja2VyXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWxlY3RcIlxuICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFzdGFydERhdGUoKVwiXG4gICAgICAgICAgICAgIFt0aW1lXT1cInN0YXJ0RGF0ZSgpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICh0aW1lQ2hhbmdlKT1cImhhbmRsZVN0YXJ0VGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICBAaWYgKHJhbmdlKCkpIHtcbiAgICAgICAgICAgICAgPGMtdGltZS1waWNrZXJcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbbG9jYWxlXT1cImxvY2FsZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWVuZERhdGUoKVwiXG4gICAgICAgICAgICAgICAgW3RpbWVdPVwiZW5kRGF0ZSgpID8/IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgKHRpbWVDaGFuZ2UpPVwiaGFuZGxlRW5kVGltZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICBAbGV0IGZvb3RlciA9IHRlbXBsYXRlcygpPy5bJ2RhdGVQaWNrZXJGb290ZXInXTtcbiAgICAgIEBpZiAoZm9vdGVyKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1mb290ZXJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAvPlxuICA8L2MtZHJvcGRvd24+XG48L2ZpZWxkc2V0PlxuIl19
@@ -2,15 +2,15 @@ import { NgModule } from '@angular/core';
2
2
  import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';
3
3
  import * as i0 from "@angular/core";
4
4
  export class DateRangePickerModule {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerModule, imports: [DateRangePickerComponent], exports: [DateRangePickerComponent] }); }
7
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerModule, imports: [DateRangePickerComponent] }); }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerModule, imports: [DateRangePickerComponent], exports: [DateRangePickerComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerModule, imports: [DateRangePickerComponent] }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DateRangePickerModule, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DateRangePickerModule, decorators: [{
10
10
  type: NgModule,
11
11
  args: [{
12
12
  imports: [DateRangePickerComponent],
13
13
  exports: [DateRangePickerComponent]
14
14
  }]
15
15
  }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFNM0YsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsWUFIdEIsd0JBQXdCLGFBQ3hCLHdCQUF3QjsrR0FFdkIscUJBQXFCLFlBSHRCLHdCQUF3Qjs7MkZBR3ZCLHFCQUFxQjtrQkFKakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RhdGVSYW5nZVBpY2tlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlUGlja2VyTW9kdWxlIHt9XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQzs7QUFNM0YsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO2dIQUFyQixxQkFBcUIsWUFIdEIsd0JBQXdCLGFBQ3hCLHdCQUF3QjtnSEFFdkIscUJBQXFCLFlBSHRCLHdCQUF3Qjs7NEZBR3ZCLHFCQUFxQjtrQkFKakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDbkMsT0FBTyxFQUFFLENBQUMsd0JBQXdCLENBQUM7aUJBQ3BDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW0RhdGVSYW5nZVBpY2tlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlUGlja2VyTW9kdWxlIHt9XG4iXX0=