@coreui/angular-pro 4.3.18 → 4.4.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/esm2020/lib/accordion/accordion/accordion.component.mjs +6 -6
  2. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +6 -5
  3. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +27 -27
  4. package/esm2020/lib/accordion/accordion.module.mjs +13 -24
  5. package/esm2020/lib/accordion/accordion.service.mjs +3 -3
  6. package/esm2020/lib/alert/alert-heading.directive.mjs +6 -5
  7. package/esm2020/lib/alert/alert-link.directive.mjs +6 -5
  8. package/esm2020/lib/alert/alert.component.mjs +29 -29
  9. package/esm2020/lib/alert/alert.module.mjs +7 -15
  10. package/esm2020/lib/avatar/avatar.component.mjs +10 -6
  11. package/esm2020/lib/avatar/avatar.module.mjs +6 -10
  12. package/esm2020/lib/backdrop/backdrop.service.mjs +3 -3
  13. package/esm2020/lib/badge/badge.component.mjs +11 -7
  14. package/esm2020/lib/badge/badge.module.mjs +6 -10
  15. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +9 -5
  16. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +9 -8
  17. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +8 -8
  18. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +3 -3
  19. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +14 -16
  20. package/esm2020/lib/button/button-close.directive.mjs +6 -5
  21. package/esm2020/lib/button/button.directive.mjs +6 -5
  22. package/esm2020/lib/button/button.module.mjs +9 -13
  23. package/esm2020/lib/button-group/button-group/button-group.component.mjs +5 -4
  24. package/esm2020/lib/button-group/button-group.module.mjs +7 -19
  25. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +5 -4
  26. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +6 -5
  27. package/esm2020/lib/calendar/calendar/calendar.component.mjs +9 -10
  28. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +6 -5
  29. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +6 -5
  30. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +6 -5
  31. package/esm2020/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +6 -5
  32. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +6 -5
  33. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +6 -5
  34. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +27 -13
  35. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +6 -5
  36. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +7 -7
  37. package/esm2020/lib/calendar/calendar.module.mjs +9 -15
  38. package/esm2020/lib/calendar/calendar.service.mjs +3 -3
  39. package/esm2020/lib/callout/callout.component.mjs +5 -5
  40. package/esm2020/lib/callout/callout.module.mjs +6 -10
  41. package/esm2020/lib/card/card-body.component.mjs +6 -5
  42. package/esm2020/lib/card/card-footer.component.mjs +7 -6
  43. package/esm2020/lib/card/card-group.component.mjs +6 -5
  44. package/esm2020/lib/card/card-header-actions.component.mjs +5 -4
  45. package/esm2020/lib/card/card-header.component.mjs +6 -5
  46. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +5 -5
  47. package/esm2020/lib/card/card-img.directive.mjs +6 -5
  48. package/esm2020/lib/card/card-link.directive.mjs +6 -5
  49. package/esm2020/lib/card/card-subtitle.directive.mjs +6 -5
  50. package/esm2020/lib/card/card-text.directive.mjs +6 -5
  51. package/esm2020/lib/card/card-title.directive.mjs +6 -5
  52. package/esm2020/lib/card/card.component.mjs +6 -5
  53. package/esm2020/lib/card/card.module.mjs +15 -13
  54. package/esm2020/lib/carousel/carousel/carousel.component.mjs +5 -5
  55. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +5 -5
  56. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +9 -9
  57. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +6 -6
  58. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +7 -7
  59. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +6 -6
  60. package/esm2020/lib/carousel/carousel-state.mjs +3 -3
  61. package/esm2020/lib/carousel/carousel.config.mjs +3 -3
  62. package/esm2020/lib/carousel/carousel.module.mjs +15 -12
  63. package/esm2020/lib/carousel/carousel.service.mjs +3 -3
  64. package/esm2020/lib/collapse/collapse.directive.mjs +6 -5
  65. package/esm2020/lib/collapse/collapse.module.mjs +6 -10
  66. package/esm2020/lib/date-picker/date-picker.component.mjs +29 -17
  67. package/esm2020/lib/date-picker/date-picker.module.mjs +7 -50
  68. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +43 -31
  69. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +7 -46
  70. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +10 -9
  71. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +6 -5
  72. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +8 -9
  73. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +7 -8
  74. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +8 -9
  75. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +6 -5
  76. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +5 -4
  77. package/esm2020/lib/dropdown/dropdown.module.mjs +15 -23
  78. package/esm2020/lib/dropdown/dropdown.service.mjs +3 -3
  79. package/esm2020/lib/element-cover/element-cover.component.mjs +7 -7
  80. package/esm2020/lib/element-cover/element-cover.module.mjs +7 -19
  81. package/esm2020/lib/footer/footer.component.mjs +5 -4
  82. package/esm2020/lib/footer/footer.module.mjs +7 -15
  83. package/esm2020/lib/form/form/form.directive.mjs +6 -5
  84. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +6 -5
  85. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +7 -6
  86. package/esm2020/lib/form/form-check/form-check.component.mjs +6 -5
  87. package/esm2020/lib/form/form-control/form-control.directive.mjs +6 -5
  88. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +6 -5
  89. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +6 -5
  90. package/esm2020/lib/form/form-label/form-label.directive.mjs +6 -5
  91. package/esm2020/lib/form/form-select/form-select.directive.mjs +6 -5
  92. package/esm2020/lib/form/form-text/form-text.directive.mjs +8 -8
  93. package/esm2020/lib/form/form.module.mjs +20 -20
  94. package/esm2020/lib/form/input-group/input-group.component.mjs +5 -4
  95. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +6 -5
  96. package/esm2020/lib/grid/col.component.mjs +5 -5
  97. package/esm2020/lib/grid/col.directive.mjs +6 -5
  98. package/esm2020/lib/grid/container.component.mjs +5 -5
  99. package/esm2020/lib/grid/grid.module.mjs +23 -24
  100. package/esm2020/lib/grid/gutter.directive.mjs +6 -5
  101. package/esm2020/lib/grid/row.component.mjs +9 -5
  102. package/esm2020/lib/grid/row.directive.mjs +6 -5
  103. package/esm2020/lib/header/header/header.component.mjs +8 -8
  104. package/esm2020/lib/header/header-brand/header-brand.component.mjs +6 -5
  105. package/esm2020/lib/header/header-divider/header-divider.component.mjs +6 -5
  106. package/esm2020/lib/header/header-nav/header-nav.component.mjs +5 -5
  107. package/esm2020/lib/header/header-text/header-text.component.mjs +5 -4
  108. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +6 -5
  109. package/esm2020/lib/header/header.module.mjs +11 -11
  110. package/esm2020/lib/image/img.directive.mjs +6 -5
  111. package/esm2020/lib/image/img.module.mjs +7 -15
  112. package/esm2020/lib/list-group/list-group-item.directive.mjs +6 -5
  113. package/esm2020/lib/list-group/list-group.directive.mjs +6 -5
  114. package/esm2020/lib/list-group/list-group.module.mjs +7 -15
  115. package/esm2020/lib/loading-button/loading-button.component.mjs +7 -7
  116. package/esm2020/lib/loading-button/loading-button.module.mjs +7 -19
  117. package/esm2020/lib/modal/modal/modal.component.mjs +7 -7
  118. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +5 -5
  119. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +7 -7
  120. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +5 -5
  121. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +6 -5
  122. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +5 -4
  123. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +6 -7
  124. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +6 -5
  125. package/esm2020/lib/modal/modal.module.mjs +21 -28
  126. package/esm2020/lib/modal/modal.service.mjs +3 -3
  127. package/esm2020/lib/multi-select/multi-select/multi-select-search.directive.mjs +7 -6
  128. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +31 -16
  129. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +6 -7
  130. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +5 -5
  131. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +7 -7
  132. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +6 -6
  133. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +6 -6
  134. package/esm2020/lib/multi-select/multi-select.module.mjs +13 -28
  135. package/esm2020/lib/multi-select/multi-select.service.mjs +3 -3
  136. package/esm2020/lib/multi-select/public_api.mjs +1 -2
  137. package/esm2020/lib/nav/nav-item.component.mjs +5 -5
  138. package/esm2020/lib/nav/nav-link.directive.mjs +6 -5
  139. package/esm2020/lib/nav/nav.component.mjs +5 -7
  140. package/esm2020/lib/nav/nav.module.mjs +18 -9
  141. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +6 -5
  142. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +5 -4
  143. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +5 -4
  144. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +6 -5
  145. package/esm2020/lib/navbar/navbar.component.mjs +7 -7
  146. package/esm2020/lib/navbar/navbar.module.mjs +14 -20
  147. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +31 -30
  148. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +5 -5
  149. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +9 -5
  150. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +6 -5
  151. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +6 -5
  152. package/esm2020/lib/offcanvas/offcanvas.module.mjs +16 -22
  153. package/esm2020/lib/offcanvas/offcanvas.service.mjs +3 -3
  154. package/esm2020/lib/pagination/page-item/page-item.component.mjs +5 -5
  155. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +6 -5
  156. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +6 -5
  157. package/esm2020/lib/pagination/pagination/pagination.component.mjs +6 -6
  158. package/esm2020/lib/pagination/pagination.module.mjs +16 -19
  159. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +9 -8
  160. package/esm2020/lib/placeholder/placeholder.directive.mjs +6 -5
  161. package/esm2020/lib/placeholder/placeholder.module.mjs +7 -11
  162. package/esm2020/lib/popover/popover/popover.component.mjs +6 -6
  163. package/esm2020/lib/popover/popover.directive.mjs +30 -7
  164. package/esm2020/lib/popover/popover.module.mjs +8 -12
  165. package/esm2020/lib/progress/progress-bar.component.mjs +6 -5
  166. package/esm2020/lib/progress/progress.component.mjs +6 -5
  167. package/esm2020/lib/progress/progress.module.mjs +9 -8
  168. package/esm2020/lib/services/class-toggle.service.mjs +5 -5
  169. package/esm2020/lib/services/intersection.service.mjs +3 -3
  170. package/esm2020/lib/services/listeners.service.mjs +5 -7
  171. package/esm2020/lib/shared/html-attr.directive.mjs +6 -5
  172. package/esm2020/lib/shared/shared.module.mjs +7 -23
  173. package/esm2020/lib/shared/template-id.directive.mjs +6 -5
  174. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +5 -4
  175. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +5 -5
  176. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +8 -8
  177. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +9 -5
  178. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +10 -7
  179. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +6 -5
  180. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +7 -8
  181. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +3 -3
  182. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +7 -7
  183. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +6 -5
  184. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +8 -8
  185. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +29 -20
  186. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +7 -7
  187. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +5 -4
  188. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +106 -80
  189. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +6 -6
  190. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +6 -5
  191. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +5 -4
  192. package/esm2020/lib/sidebar/sidebar.module.mjs +30 -37
  193. package/esm2020/lib/sidebar/sidebar.service.mjs +3 -3
  194. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +7 -8
  195. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +7 -19
  196. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +36 -20
  197. package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +7 -7
  198. package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +6 -6
  199. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +7 -8
  200. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +24 -11
  201. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +14 -9
  202. package/esm2020/lib/smart-table/smart-table.module.mjs +6 -65
  203. package/esm2020/lib/spinner/spinner.component.mjs +5 -5
  204. package/esm2020/lib/spinner/spinner.module.mjs +6 -14
  205. package/esm2020/lib/table/table-active.directive.mjs +6 -5
  206. package/esm2020/lib/table/table-color.directive.mjs +6 -5
  207. package/esm2020/lib/table/table.directive.mjs +6 -5
  208. package/esm2020/lib/table/table.module.mjs +8 -12
  209. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +5 -5
  210. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +5 -4
  211. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +5 -5
  212. package/esm2020/lib/tabs/tab.service.mjs +3 -3
  213. package/esm2020/lib/tabs/tabs.module.mjs +12 -15
  214. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +11 -9
  215. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +11 -9
  216. package/esm2020/lib/time-picker/time-picker.component.mjs +49 -28
  217. package/esm2020/lib/time-picker/time-picker.module.mjs +26 -25
  218. package/esm2020/lib/toast/toast/toast.component.mjs +6 -6
  219. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +5 -5
  220. package/esm2020/lib/toast/toast-close.directive.mjs +6 -5
  221. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +8 -8
  222. package/esm2020/lib/toast/toast.module.mjs +21 -21
  223. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +6 -5
  224. package/esm2020/lib/toast/toaster/toaster.component.mjs +5 -6
  225. package/esm2020/lib/toast/toaster/toaster.service.mjs +3 -3
  226. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +5 -5
  227. package/esm2020/lib/tooltip/tooltip.directive.mjs +6 -5
  228. package/esm2020/lib/tooltip/tooltip.module.mjs +9 -13
  229. package/esm2020/lib/utilities/align.directive.mjs +6 -5
  230. package/esm2020/lib/utilities/bg-color.directive.mjs +6 -5
  231. package/esm2020/lib/utilities/border.directive.mjs +6 -5
  232. package/esm2020/lib/utilities/rounded.directive.mjs +6 -5
  233. package/esm2020/lib/utilities/text-color.directive.mjs +6 -5
  234. package/esm2020/lib/utilities/utilities.module.mjs +7 -11
  235. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +8 -8
  236. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +7 -8
  237. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +10 -11
  238. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +10 -13
  239. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +8 -9
  240. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +11 -12
  241. package/esm2020/lib/widget/widget.module.mjs +12 -19
  242. package/fesm2015/coreui-angular-pro.mjs +4082 -4050
  243. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  244. package/fesm2020/coreui-angular-pro.mjs +3743 -3711
  245. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  246. package/lib/accordion/accordion/accordion.component.d.ts +2 -2
  247. package/lib/accordion/accordion-button/accordion-button.directive.d.ts +1 -1
  248. package/lib/accordion/accordion-item/accordion-item.component.d.ts +13 -13
  249. package/lib/accordion/accordion.module.d.ts +3 -6
  250. package/lib/alert/alert-heading.directive.d.ts +1 -1
  251. package/lib/alert/alert-link.directive.d.ts +1 -1
  252. package/lib/alert/alert.component.d.ts +22 -22
  253. package/lib/alert/alert.module.d.ts +1 -3
  254. package/lib/avatar/avatar.component.d.ts +1 -1
  255. package/lib/avatar/avatar.module.d.ts +1 -2
  256. package/lib/badge/badge.component.d.ts +1 -1
  257. package/lib/badge/badge.module.d.ts +1 -2
  258. package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +1 -1
  259. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -1
  260. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +3 -3
  261. package/lib/breadcrumb/breadcrumb.module.d.ts +3 -6
  262. package/lib/button/button-close.directive.d.ts +1 -1
  263. package/lib/button/button.directive.d.ts +1 -1
  264. package/lib/button/button.module.d.ts +1 -2
  265. package/lib/button-group/button-group/button-group.component.d.ts +1 -1
  266. package/lib/button-group/button-group.module.d.ts +1 -2
  267. package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +1 -1
  268. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +1 -1
  269. package/lib/calendar/calendar/calendar.component.d.ts +2 -2
  270. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +1 -1
  271. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +1 -1
  272. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +1 -1
  273. package/lib/calendar/calendar-month/calendar-day-title.pipe.d.ts +1 -1
  274. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +1 -1
  275. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +1 -1
  276. package/lib/calendar/calendar-month/calendar-month.component.d.ts +1 -1
  277. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +1 -1
  278. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +1 -1
  279. package/lib/calendar/calendar.module.d.ts +1 -3
  280. package/lib/callout/callout.component.d.ts +1 -1
  281. package/lib/callout/callout.module.d.ts +1 -2
  282. package/lib/card/card-body.component.d.ts +1 -1
  283. package/lib/card/card-footer.component.d.ts +1 -1
  284. package/lib/card/card-group.component.d.ts +1 -1
  285. package/lib/card/card-header-actions.component.d.ts +1 -1
  286. package/lib/card/card-header.component.d.ts +1 -1
  287. package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +1 -1
  288. package/lib/card/card-img.directive.d.ts +1 -1
  289. package/lib/card/card-link.directive.d.ts +1 -1
  290. package/lib/card/card-subtitle.directive.d.ts +1 -1
  291. package/lib/card/card-text.directive.d.ts +1 -1
  292. package/lib/card/card-title.directive.d.ts +1 -1
  293. package/lib/card/card.component.d.ts +1 -1
  294. package/lib/card/card.module.d.ts +1 -2
  295. package/lib/carousel/carousel/carousel.component.d.ts +1 -1
  296. package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +1 -1
  297. package/lib/carousel/carousel-control/carousel-control.component.d.ts +3 -3
  298. package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +2 -2
  299. package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +4 -4
  300. package/lib/carousel/carousel-item/carousel-item.component.d.ts +2 -2
  301. package/lib/carousel/carousel.module.d.ts +1 -2
  302. package/lib/collapse/collapse.directive.d.ts +1 -1
  303. package/lib/collapse/collapse.module.d.ts +1 -2
  304. package/lib/date-picker/date-picker.component.d.ts +1 -1
  305. package/lib/date-picker/date-picker.module.d.ts +1 -10
  306. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +2 -2
  307. package/lib/date-range-picker/date-range-picker.module.d.ts +1 -9
  308. package/lib/dropdown/dropdown/dropdown.component.d.ts +2 -2
  309. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +1 -1
  310. package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +1 -2
  311. package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +1 -2
  312. package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +1 -2
  313. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +1 -1
  314. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +1 -1
  315. package/lib/dropdown/dropdown.module.d.ts +7 -8
  316. package/lib/element-cover/element-cover.component.d.ts +1 -1
  317. package/lib/element-cover/element-cover.module.d.ts +1 -3
  318. package/lib/footer/footer.component.d.ts +1 -1
  319. package/lib/footer/footer.module.d.ts +1 -2
  320. package/lib/form/form/form.directive.d.ts +1 -1
  321. package/lib/form/form-check/form-check-input.directive.d.ts +1 -1
  322. package/lib/form/form-check/form-check-label.directive.d.ts +1 -1
  323. package/lib/form/form-check/form-check.component.d.ts +1 -1
  324. package/lib/form/form-control/form-control.directive.d.ts +1 -1
  325. package/lib/form/form-feedback/form-feedback.component.d.ts +1 -1
  326. package/lib/form/form-floating/form-floating.directive.d.ts +1 -1
  327. package/lib/form/form-label/form-label.directive.d.ts +1 -1
  328. package/lib/form/form-select/form-select.directive.d.ts +1 -1
  329. package/lib/form/form-text/form-text.directive.d.ts +1 -2
  330. package/lib/form/form.module.d.ts +11 -12
  331. package/lib/form/input-group/input-group.component.d.ts +1 -1
  332. package/lib/form/input-group-text/input-group-text.directive.d.ts +1 -1
  333. package/lib/grid/col.component.d.ts +1 -1
  334. package/lib/grid/col.directive.d.ts +1 -1
  335. package/lib/grid/container.component.d.ts +1 -1
  336. package/lib/grid/grid.module.d.ts +7 -8
  337. package/lib/grid/gutter.directive.d.ts +1 -1
  338. package/lib/grid/row.component.d.ts +1 -1
  339. package/lib/grid/row.directive.d.ts +1 -1
  340. package/lib/header/header/header.component.d.ts +1 -1
  341. package/lib/header/header-brand/header-brand.component.d.ts +1 -1
  342. package/lib/header/header-divider/header-divider.component.d.ts +1 -1
  343. package/lib/header/header-nav/header-nav.component.d.ts +1 -1
  344. package/lib/header/header-text/header-text.component.d.ts +1 -1
  345. package/lib/header/header-toggler/header-toggler.directive.d.ts +1 -1
  346. package/lib/header/header.module.d.ts +1 -2
  347. package/lib/image/img.directive.d.ts +1 -1
  348. package/lib/image/img.module.d.ts +1 -2
  349. package/lib/list-group/list-group-item.directive.d.ts +1 -1
  350. package/lib/list-group/list-group.directive.d.ts +1 -1
  351. package/lib/list-group/list-group.module.d.ts +1 -2
  352. package/lib/loading-button/loading-button.component.d.ts +2 -2
  353. package/lib/loading-button/loading-button.module.d.ts +1 -3
  354. package/lib/modal/modal/modal.component.d.ts +1 -1
  355. package/lib/modal/modal-body/modal-body.component.d.ts +1 -1
  356. package/lib/modal/modal-content/modal-content.component.d.ts +1 -2
  357. package/lib/modal/modal-dialog/modal-dialog.component.d.ts +1 -1
  358. package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +1 -1
  359. package/lib/modal/modal-footer/modal-footer.component.d.ts +1 -1
  360. package/lib/modal/modal-header/modal-header.component.d.ts +1 -1
  361. package/lib/modal/modal-title/modal-title.directive.d.ts +1 -1
  362. package/lib/modal/modal.module.d.ts +5 -7
  363. package/lib/multi-select/multi-select/multi-select-search.directive.d.ts +1 -1
  364. package/lib/multi-select/multi-select/multi-select.component.d.ts +2 -2
  365. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +1 -1
  366. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +1 -1
  367. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +1 -1
  368. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
  369. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +2 -2
  370. package/lib/multi-select/multi-select.module.d.ts +1 -10
  371. package/lib/multi-select/public_api.d.ts +0 -1
  372. package/lib/nav/nav-item.component.d.ts +1 -1
  373. package/lib/nav/nav-link.directive.d.ts +1 -1
  374. package/lib/nav/nav.component.d.ts +1 -1
  375. package/lib/nav/nav.module.d.ts +1 -2
  376. package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +1 -1
  377. package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +1 -1
  378. package/lib/navbar/navbar-text/navbar-text.component.d.ts +1 -1
  379. package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +1 -1
  380. package/lib/navbar/navbar.component.d.ts +1 -1
  381. package/lib/navbar/navbar.module.d.ts +5 -7
  382. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +15 -15
  383. package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +1 -1
  384. package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +1 -1
  385. package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +1 -1
  386. package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +1 -1
  387. package/lib/offcanvas/offcanvas.module.d.ts +3 -5
  388. package/lib/pagination/page-item/page-item.component.d.ts +1 -1
  389. package/lib/pagination/page-item/page-item.directive.d.ts +1 -1
  390. package/lib/pagination/page-link/page-link.directive.d.ts +1 -1
  391. package/lib/pagination/pagination/pagination.component.d.ts +1 -1
  392. package/lib/pagination/pagination.module.d.ts +5 -6
  393. package/lib/placeholder/placeholder-animation.directive.d.ts +2 -2
  394. package/lib/placeholder/placeholder.directive.d.ts +1 -1
  395. package/lib/placeholder/placeholder.module.d.ts +1 -2
  396. package/lib/popover/popover/popover.component.d.ts +1 -1
  397. package/lib/popover/popover.directive.d.ts +9 -4
  398. package/lib/popover/popover.module.d.ts +1 -2
  399. package/lib/progress/progress-bar.component.d.ts +1 -1
  400. package/lib/progress/progress.component.d.ts +1 -1
  401. package/lib/progress/progress.module.d.ts +1 -2
  402. package/lib/services/class-toggle.service.d.ts +1 -1
  403. package/lib/shared/html-attr.directive.d.ts +2 -2
  404. package/lib/shared/shared.module.d.ts +1 -2
  405. package/lib/shared/template-id.directive.d.ts +1 -1
  406. package/lib/sidebar/sidebar/sidebar.component.d.ts +1 -1
  407. package/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.d.ts +1 -1
  408. package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +1 -1
  409. package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +1 -1
  410. package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -2
  411. package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +1 -1
  412. package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +1 -2
  413. package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +1 -1
  414. package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +1 -1
  415. package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +2 -2
  416. package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +2 -2
  417. package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +1 -1
  418. package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +1 -1
  419. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +23 -23
  420. package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +1 -1
  421. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +1 -1
  422. package/lib/sidebar/sidebar.module.d.ts +8 -12
  423. package/lib/smart-pagination/smart-pagination.component.d.ts +2 -2
  424. package/lib/smart-pagination/smart-pagination.module.d.ts +1 -3
  425. package/lib/smart-table/smart-table/smart-table.component.d.ts +1 -1
  426. package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +1 -1
  427. package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +1 -1
  428. package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +1 -1
  429. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -1
  430. package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +1 -1
  431. package/lib/smart-table/smart-table.module.d.ts +1 -15
  432. package/lib/spinner/spinner.component.d.ts +1 -1
  433. package/lib/spinner/spinner.module.d.ts +1 -3
  434. package/lib/table/table-active.directive.d.ts +1 -1
  435. package/lib/table/table-color.directive.d.ts +1 -1
  436. package/lib/table/table.directive.d.ts +1 -1
  437. package/lib/table/table.module.d.ts +1 -2
  438. package/lib/tabs/tab-content/tab-content.component.d.ts +1 -1
  439. package/lib/tabs/tab-content-ref.directive.d.ts +1 -1
  440. package/lib/tabs/tab-pane/tab-pane.component.d.ts +1 -1
  441. package/lib/tabs/tabs.module.d.ts +3 -4
  442. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +2 -2
  443. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +2 -2
  444. package/lib/time-picker/time-picker.component.d.ts +2 -2
  445. package/lib/time-picker/time-picker.module.d.ts +9 -9
  446. package/lib/toast/toast/toast.component.d.ts +1 -1
  447. package/lib/toast/toast-body/toast-body.component.d.ts +1 -1
  448. package/lib/toast/toast-close.directive.d.ts +1 -1
  449. package/lib/toast/toast-header/toast-header.component.d.ts +1 -1
  450. package/lib/toast/toast.module.d.ts +7 -9
  451. package/lib/toast/toaster/toaster-host.directive.d.ts +1 -1
  452. package/lib/toast/toaster/toaster.component.d.ts +1 -1
  453. package/lib/tooltip/tooltip/tooltip.component.d.ts +1 -1
  454. package/lib/tooltip/tooltip.directive.d.ts +1 -1
  455. package/lib/tooltip/tooltip.module.d.ts +1 -2
  456. package/lib/utilities/align.directive.d.ts +1 -1
  457. package/lib/utilities/bg-color.directive.d.ts +1 -1
  458. package/lib/utilities/border.directive.d.ts +1 -1
  459. package/lib/utilities/rounded.directive.d.ts +1 -1
  460. package/lib/utilities/text-color.directive.d.ts +1 -1
  461. package/lib/utilities/utilities.module.d.ts +1 -2
  462. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
  463. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +1 -1
  464. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +1 -1
  465. package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +2 -2
  466. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
  467. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
  468. package/lib/widget/widget.module.d.ts +1 -4
  469. package/package.json +2 -2
@@ -1,20 +1,15 @@
1
1
  import { Component, ContentChildren, ElementRef, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';
2
- import { FormControl, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
2
+ import { FormControl, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
3
+ import { NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
3
4
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
- import { TemplateIdDirective } from '../shared';
5
5
  import { convert12hTo24h, convert24hTo12h, convertTimeToDate, getAmPm, getDayPeriods, getListOfHours, getListOfMinutes, getListOfSeconds, isHour12, isValidTime } from './time.utils';
6
- import { DropdownComponent } from '../dropdown';
6
+ import { DropdownComponent, DropdownMenuDirective, DropdownToggleDirective } from '../dropdown';
7
+ import { FormControlDirective, FormSelectDirective, InputGroupComponent, InputGroupTextDirective } from '../form';
8
+ import { TemplateIdDirective } from '../shared';
9
+ import { TimePickerRollColComponent } from './time-picker-roll-col/time-picker-roll-col.component';
10
+ import { TimePickerRollAmPmComponent } from './time-picker-roll-col/time-picker-roll-am-pm.component';
7
11
  import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "../form/form-control/form-control.directive";
11
- import * as i4 from "../form/form-select/form-select.directive";
12
- import * as i5 from "../form/input-group/input-group.component";
13
- import * as i6 from "../form/input-group-text/input-group-text.directive";
14
- import * as i7 from "../dropdown/dropdown/dropdown.component";
15
- import * as i8 from "../dropdown/dropdown-menu/dropdown-menu.directive";
16
- import * as i9 from "./time-picker-roll-col/time-picker-roll-col.component";
17
- import * as i10 from "./time-picker-roll-col/time-picker-roll-am-pm.component";
12
+ import * as i1 from "@angular/forms";
18
13
  export class TimePickerComponent {
19
14
  constructor() {
20
15
  this._cleaner = true;
@@ -55,7 +50,8 @@ export class TimePickerComponent {
55
50
  { value: 'am', label: 'am' },
56
51
  { value: 'pm', label: 'pm' }
57
52
  ];
58
- this._timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
53
+ this._timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ??
54
+ '';
59
55
  this.selectTime = new FormGroup({
60
56
  selectHours: new FormControl({ value: this.hour, disabled: this.disabled }, { validators: [Validators.min(0)] }),
61
57
  selectMinutes: new FormControl({ value: this.minute, disabled: this.disabled }, Validators.min(0)),
@@ -218,7 +214,9 @@ export class TimePickerComponent {
218
214
  }
219
215
  set dayPeriod(value) {
220
216
  this._dayPeriod = value;
221
- this.listOfHours12 = this.hour12 ? this.listOfHours?.filter(item => (item.dayPeriod && item.dayPeriod === value) || !item.dayPeriod) : this.listOfHours;
217
+ this.listOfHours12 = this.hour12
218
+ ? this.listOfHours?.filter((item) => (item.dayPeriod && item.dayPeriod === value) || !item.dayPeriod)
219
+ : this.listOfHours;
222
220
  this.patchSelectTimeValues();
223
221
  }
224
222
  get dayPeriod() {
@@ -253,7 +251,10 @@ export class TimePickerComponent {
253
251
  this.onTouched();
254
252
  this._timeInternal = timeValue;
255
253
  }
256
- this.timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
254
+ this.timeInputValue =
255
+ this.time?.toLocaleTimeString(this.locale, {
256
+ timeStyle: this.seconds ? 'medium' : 'short'
257
+ }) ?? '';
257
258
  }
258
259
  ngOnInit() {
259
260
  this.setTimeLists();
@@ -287,13 +288,15 @@ export class TimePickerComponent {
287
288
  this.listOfMinutes.unshift({ ...undefSegment });
288
289
  this.listOfSeconds.unshift({ ...undefSegment });
289
290
  }
290
- this.listOfHours12 = this.hour12 ? this.listOfHours.filter(item => (item.dayPeriod && item.dayPeriod === this.dayPeriod) || !item.dayPeriod) : this.listOfHours;
291
+ this.listOfHours12 = this.hour12
292
+ ? this.listOfHours.filter((item) => (item.dayPeriod && item.dayPeriod === this.dayPeriod) || !item.dayPeriod)
293
+ : this.listOfHours;
291
294
  }
292
295
  updateSelectTime(time = this.time) {
293
296
  if (!!time && isValidTime(time)) {
294
297
  const hour = time.getHours() ?? 0;
295
298
  const minute = time.getMinutes() ?? 0;
296
- const second = this.seconds ? (time.getSeconds() ?? 0) : 0;
299
+ const second = this.seconds ? time.getSeconds() ?? 0 : 0;
297
300
  const closestSecond = this.closestTime(this.listOfSeconds, second);
298
301
  const closestMinute = this.closestTime(this.listOfMinutes, minute);
299
302
  const closestHour = this.closestTime(this.listOfHours, hour);
@@ -307,7 +310,7 @@ export class TimePickerComponent {
307
310
  closestTime(timeArray, timeSegment) {
308
311
  let array = timeArray ?? [{ value: 0, label: '00' }];
309
312
  if (this.time) {
310
- array = timeArray.filter(el => el.value >= 0);
313
+ array = timeArray.filter((el) => el.value >= 0);
311
314
  array = array.length ? array : timeArray;
312
315
  }
313
316
  return array.reduce((a, b) => {
@@ -318,7 +321,9 @@ export class TimePickerComponent {
318
321
  const list = getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).filter((segment) => {
319
322
  return typeof filterTimeSegments === 'function' ? filterTimeSegments(segment.value) : true;
320
323
  });
321
- return list.length ? list : getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).slice(0, 1);
324
+ return list.length
325
+ ? list
326
+ : getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).slice(0, 1);
322
327
  }
323
328
  handleSelectDayPeriodChange(dayPeriod) {
324
329
  if (dayPeriod !== this.dayPeriod) {
@@ -362,8 +367,9 @@ export class TimePickerComponent {
362
367
  const hours = this.selectTime.get('selectHours')?.value;
363
368
  const minutes = this.selectTime.get('selectMinutes')?.value;
364
369
  const seconds = this.selectTime.get('selectSeconds')?.value;
365
- const goUpdate = (this.second < 0 && this.minute < 0) || (this.hour >= 0 && this.minute >= 0 && this.second >= 0);
366
- const timeChanged = (this.hour !== hours) || (this.minute !== minutes) || (this.second !== seconds);
370
+ const goUpdate = (this.second < 0 && this.minute < 0) ||
371
+ (this.hour >= 0 && this.minute >= 0 && this.second >= 0);
372
+ const timeChanged = this.hour !== hours || this.minute !== minutes || this.second !== seconds;
367
373
  if (goUpdate && timeChanged) {
368
374
  if (this.hour !== hours) {
369
375
  this.selectTime.patchValue({
@@ -426,17 +432,32 @@ export class TimePickerComponent {
426
432
  this.dropdownRef?.nativeElement?.classList.add('show');
427
433
  }
428
434
  }
429
- TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
430
- TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.4", type: TimePickerComponent, selector: "c-time-picker", inputs: { cleaner: "cleaner", dateTimeFormatOptions: "dateTimeFormatOptions", disabled: "disabled", filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: "indicator", inputReadOnly: "inputReadOnly", locale: "locale", placeholder: "placeholder", seconds: "seconds", size: "size", time: "time", variant: "variant", valid: "valid", visible: "visible" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
435
+ TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
436
+ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.6", type: TimePickerComponent, isStandalone: true, selector: "c-time-picker", inputs: { cleaner: "cleaner", dateTimeFormatOptions: "dateTimeFormatOptions", disabled: "disabled", filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: "indicator", inputReadOnly: "inputReadOnly", locale: "locale", placeholder: "placeholder", seconds: "seconds", size: "size", time: "time", variant: "variant", valid: "valid", visible: "visible" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
431
437
  {
432
438
  provide: NG_VALUE_ACCESSOR,
433
439
  useExisting: forwardRef(() => TimePickerComponent),
434
440
  multi: true
435
441
  }
436
- ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }], exportAs: ["cTimePicker"], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker-timepickers\" *ngIf=\"variant==='select'\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" class=\"time-picker-body\" [ngClass]=\"timePickerClasses\">\n <span class=\"time-picker-inline-icon\"></span>\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectHours\" (ngModelChange)=\"handleSelectHoursChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [ngValue]=\"hour.value\" [attr.disabled]=\"hour.disabled || null\">{{hour.label}}</option>\n </select>\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectMinutes\" (ngModelChange)=\"handleSelectMinutesChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let minute of listOfMinutes\" [ngValue]=\"minute.value\" [attr.disabled]=\"minute.disabled || null\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectSeconds\" (ngModelChange)=\"handleSelectSecondsChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let second of listOfSeconds\" [ngValue]=\"second.value\" [attr.disabled]=\"second.disabled || null\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectDayPeriod\" (ngModelChange)=\"handleSelectDayPeriodChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" [ngClass]=\"timePickerClasses\" *ngIf=\"variant==='roll'\" [visible]=\"visible\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n cFormControl\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu #dropdownMenu=\"cDropdownMenu\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n [elements]=\"listOfHours12\"\n [selected]=\"hour\"\n (selectedChange)=\"handleSelectHoursChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n [elements]=\"listOfMinutes\"\n [selected]=\"minute\"\n (selectedChange)=\"handleSelectMinutesChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n *ngIf=\"seconds\"\n [elements]=\"listOfSeconds\"\n [selected]=\"second\"\n (selectedChange)=\"handleSelectSecondsChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n *ngIf=\"hour12\" [elements]=\"dayPeriods\"\n [selected]=\"dayPeriod\"\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n <div *ngIf=\"templates?.timePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.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: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: i4.FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: i5.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i6.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "component", type: i7.DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: i7.DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: i8.DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: i9.TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: i10.TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] });
437
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TimePickerComponent, decorators: [{
442
+ ], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdownRef", first: true, predicate: DropdownComponent, descendants: true, read: ElementRef }], exportAs: ["cTimePicker"], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker-timepickers\" *ngIf=\"variant==='select'\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" class=\"time-picker-body\" [ngClass]=\"timePickerClasses\">\n <span class=\"time-picker-inline-icon\"></span>\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectHours\" (ngModelChange)=\"handleSelectHoursChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [ngValue]=\"hour.value\" [attr.disabled]=\"hour.disabled || null\">{{hour.label}}</option>\n </select>\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectMinutes\" (ngModelChange)=\"handleSelectMinutesChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let minute of listOfMinutes\" [ngValue]=\"minute.value\" [attr.disabled]=\"minute.disabled || null\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectSeconds\" (ngModelChange)=\"handleSelectSecondsChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let second of listOfSeconds\" [ngValue]=\"second.value\" [attr.disabled]=\"second.disabled || null\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectDayPeriod\" (ngModelChange)=\"handleSelectDayPeriodChange($event)\" (blur)=\"onBlur()\" [sizing]=\"size ?? ''\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" [ngClass]=\"timePickerClasses\" *ngIf=\"variant==='roll'\" [visible]=\"visible\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\">\n <input (blur)=\"handleBlur($event);\"\n (change)=\"handleTimeInputChange($event)\"\n (focus)=\"handleFocus($event)\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n cFormControl\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [readonly]=\"inputReadOnly ?? null\"\n [valid]=\"valid\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu #dropdownMenu=\"cDropdownMenu\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n [elements]=\"listOfHours12\"\n [selected]=\"hour\"\n (selectedChange)=\"handleSelectHoursChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n [elements]=\"listOfMinutes\"\n [selected]=\"minute\"\n (selectedChange)=\"handleSelectMinutesChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n *ngIf=\"seconds\"\n [elements]=\"listOfSeconds\"\n [selected]=\"second\"\n (selectedChange)=\"handleSelectSecondsChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n *ngIf=\"hour12\" [elements]=\"dayPeriods\"\n [selected]=\"dayPeriod\"\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n role=\"listbox\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n <div *ngIf=\"templates?.timePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "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", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "directive", type: FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "component", type: TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] });
443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TimePickerComponent, decorators: [{
438
444
  type: Component,
439
- args: [{ selector: 'c-time-picker', exportAs: 'cTimePicker', providers: [
445
+ args: [{ selector: 'c-time-picker', exportAs: 'cTimePicker', standalone: true, imports: [
446
+ NgClass,
447
+ NgIf,
448
+ NgForOf,
449
+ NgTemplateOutlet,
450
+ ReactiveFormsModule,
451
+ DropdownComponent,
452
+ DropdownToggleDirective,
453
+ DropdownMenuDirective,
454
+ FormControlDirective,
455
+ FormSelectDirective,
456
+ InputGroupComponent,
457
+ InputGroupTextDirective,
458
+ TimePickerRollColComponent,
459
+ TimePickerRollAmPmComponent
460
+ ], providers: [
440
461
  {
441
462
  provide: NG_VALUE_ACCESSOR,
442
463
  useExisting: forwardRef(() => TimePickerComponent),
@@ -487,4 +508,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImpor
487
508
  type: ContentChildren,
488
509
  args: [TemplateIdDirective, { descendants: true }]
489
510
  }] } });
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVoRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixpQkFBaUIsRUFHakIsT0FBTyxFQUNQLGFBQWEsRUFDYixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsV0FBVyxFQUVaLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBZWhELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUI7UUF1QlEsYUFBUSxHQUFZLElBQUksQ0FBQztRQUVqQzs7Ozs7V0FLRztRQUNNLDBCQUFxQixHQUEwQixFQUFFLENBQUM7UUFnQm5ELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFxQzNCLGVBQVUsR0FBWSxJQUFJLENB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QkFEVixLQUFLO2dCQWlCRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBUUYsUUFBUTtzQkFEWCxLQUFLO2dCQWdCRyxXQUFXO3NCQUFuQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFRRixTQUFTO3NCQURaLEtBQUs7Z0JBaUJGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBZ0JHLE1BQU07c0JBQWQsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQVFGLE9BQU87c0JBRFYsS0FBSztnQkFnQkcsSUFBSTtzQkFBWixLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkE2QkcsT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBV0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFZSxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBSWdDLFdBQVc7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUdXLGdCQUFnQjtzQkFBNUUsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHsgVGVtcGxhdGVJZERpcmVjdGl2ZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7XG4gIGNvbnZlcnQxMmhUbzI0aCxcbiAgY29udmVydDI0aFRvMTJoLFxuICBjb252ZXJ0VGltZVRvRGF0ZSxcbiAgRGF0ZVRpbWVGb3JtYXRPcHRpb25zLFxuICBEYXlQZXJpb2QsXG4gIGdldEFtUG0sXG4gIGdldERheVBlcmlvZHMsXG4gIGdldExpc3RPZkhvdXJzLFxuICBnZXRMaXN0T2ZNaW51dGVzLFxuICBnZXRMaXN0T2ZTZWNvbmRzLFxuICBpc0hvdXIxMixcbiAgaXNWYWxpZFRpbWUsXG4gIElUaW1lVmFsdWVcbn0gZnJvbSAnLi90aW1lLnV0aWxzJztcbmltcG9ydCB7IERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjVGltZVBpY2tlcicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NsZWFuZXI6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmRpY2F0b3I6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lucHV0UmVhZE9ubHk6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlY29uZHM6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Zpc2libGU6IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBjbGVhbmVyIGJ1dHRvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xlYW5lcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGNsZWFuZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFuZXI7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhbmVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2V0cyBEYXRlVGltZSBmb3JtYXQgb3B0aW9ucyBpbmNsdWRpbmcgdGltZVpvbmVcbiAgICogQHR5cGUgRGF0ZVRpbWVGb3JtYXRPcHRpb25zXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqIEBub3RlIFRoZSBkYXRlIG9iamVjdCBkb2Vzbid0IHN0b3JlIHRpbWVab25lLCBpdCBrZWVwcyB0aGUgbG9jYWwgdGltZXpvbmUgb2YgdGhlIGJyb3dzZXIsIHJlZ2FyZGxlc3MgaWYgeW91IHBhcnNlZCBVVEMgZGF0ZXMuXG4gICAqL1xuICBASW5wdXQoKSBkYXRlVGltZUZvcm1hdE9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9O1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIGRpc2FibGVkIHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBob3VycyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJIb3Vycz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIG1pbnV0ZXMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVyTWludXRlcz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIHNlY29uZHMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVyU2Vjb25kcz86ICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGlucHV0IGluZGljYXRvci5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaW5kaWNhdG9yKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5kaWNhdG9yID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbmRpY2F0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luZGljYXRvcjtcbiAgfVxuXG4gIHByaXZhdGUgX2luZGljYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgcmVhZG9ubHkgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dFJlYWRPbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5wdXRSZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgaW5wdXRSZWFkT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXRSZWFkT25seTtcbiAgfVxuXG4gIHByaXZhdGUgX2lucHV0UmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVmYXVsdCBsb2NhbGUgZm9yIGNvbXBvbmVudHMuIElmIG5vdCBzZXQsIGl0IGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicm93c2VyLlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgKi9cbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBzaG9ydCBoaW50IHZpc2libGUgaW4gdGltZSBpbnB1dC5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0ICdTZWxlY3QgdGltZSdcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IHRpbWUnO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgc2Vjb25kcyB2aXNpYmlsaXR5LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgc2Vjb25kcyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3NlY29uZHMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHNlY29uZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY29uZHM7XG4gIH1cblxuICBwcml2YXRlIF9zZWNvbmRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCBvciBsYXJnZS5cbiAgICogQHR5cGUgJ3NtJyB8ICdsZycgfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBzaXplPzogJ3NtJyB8ICdsZyc7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgc2VsZWN0ZWQgdGltZS5cbiAgICogQHR5cGUgRGF0ZSB8IHN0cmluZyB8IG51bGwgfCBudW1iZXJcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdGltZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAmJiBpc1ZhbGlkVGltZSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHRpbWUgPSBjb252ZXJ0VGltZVRvRGF0ZSh2YWx1ZSk7XG4gICAgICBpZiAoIXRpbWUpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIHRoaXMubG9jYWxlKTtcbiAgICAgIGlmICh0aGlzLl90aW1lPy5nZXRUaW1lKCkgIT09IHRpbWUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRoaXMuX3RpbWUgPSBuZXcgRGF0ZSh0aW1lLmdldFRpbWUoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHRpbWUoKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWU7XG4gIH1cblxuICBwcml2YXRlIF90aW1lPzogRGF0ZTtcbiAgcHJpdmF0ZSBfdGltZUludGVybmFsPzogRGF0ZTtcblxuICAvKipcbiAgICogU2V0IHRoZSB0aW1lIHBpY2tlciB2YXJpYW50IHRvIGEgcm9sbCBvciBzZWxlY3QuXG4gICAqIEB0eXBlICdyb2xsJyB8ICdzZWxlY3QnXG4gICAqIEBkZWZhdWx0ICdyb2xsJ1xuICAgKi9cbiAgQElucHV0KCkgdmFyaWFudDogJ3JvbGwnIHwgJ3NlbGVjdCcgPSAncm9sbCc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXN1YWwgdmFsaWRhdGlvbiBmZWVkYmFjay5cbiAgICogQHR5cGUgYm9vbGVhbiB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHZhbGlkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIGRyb3Bkb3duIHRpbWVwaWNrZXIgbWVudSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdGltZUNoYW5nZTogRXZlbnRFbWl0dGVyPERhdGUgfCB1bmRlZmluZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlIHwgdW5kZWZpbmVkPihmYWxzZSk7XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgQFZpZXdDaGlsZChEcm9wZG93bkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGRyb3Bkb3duUmVmITogRWxlbWVudFJlZjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBsaXN0T2ZIb3VycyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mSG91cnMxMiE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mTWludXRlcyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mU2Vjb25kcyE6IElUaW1lVmFsdWVbXTtcbiAgaG91cjEyOiBib29sZWFuID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICBkYXlQZXJpb2RzID0gW1xuICAgIHsgdmFsdWU6ICdhbScsIGxhYmVsOiAnYW0nIH0sXG4gICAgeyB2YWx1ZTogJ3BtJywgbGFiZWw6ICdwbScgfVxuICBdO1xuXG4gIHNldCB0aW1lSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50aW1lSW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX3RpbWVJbnB1dFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdGltZUlucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZUlucHV0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90aW1lSW5wdXRWYWx1ZTogc3RyaW5nID0gdGhpcy50aW1lPy50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHsgdGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCcgfSkgPz8gJyc7XG5cbiAgZ2V0IHRpbWVQaWNrZXJDbGFzc2VzKCkge1xuICAgIHJldHVybiB7XG4gICAgICAnZm9ybS1jb250cm9sJzogdGhpcy52YXJpYW50ID09PSAnc2VsZWN0JyAmJiB0aGlzLnZhbGlkICE9PSB1bmRlZmluZWQsXG4gICAgICAnaXMtdmFsaWQnOiB0aGlzLnZhbGlkID09PSB0cnVlLFxuICAgICAgJ2lzLWludmFsaWQnOiB0aGlzLnZhbGlkID09PSBmYWxzZVxuICAgIH07XG4gIH1cblxuICBzZWxlY3RUaW1lID0gbmV3IEZvcm1Hcm91cDx7XG4gICAgc2VsZWN0SG91cnM6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+LFxuICAgIHNlbGVjdE1pbnV0ZXM6IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+LFxuICAgIHNlbGVjdFNlY29uZHM/OiBGb3JtQ29udHJvbDxudW1iZXIgfCBudWxsPixcbiAgICBzZWxlY3REYXlQZXJpb2Q/OiBGb3JtQ29udHJvbDwnYW0nIHwgJ3BtJyB8IG51bGw+XG4gIH0+KHtcbiAgICBzZWxlY3RIb3VyczogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuaG91ciwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5taW4oMCldIH0pLFxuICAgIHNlbGVjdE1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLm1pbnV0ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgVmFsaWRhdG9ycy5taW4oMCkpLFxuICAgIHNlbGVjdFNlY29uZHM6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnNlY29uZCwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSwgVmFsaWRhdG9ycy5taW4oMCkpLFxuICAgIHNlbGVjdERheVBlcmlvZDogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuZGF5UGVyaW9kLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICB9LCB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9KTtcblxuICB0aW1lSW5wdXQgPSBuZXcgRm9ybUNvbnRyb2woe1xuICAgIHZhbHVlOiB0aGlzLnRpbWVJbnB1dFZhbHVlLFxuICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkXG4gIH0sIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH0pO1xuXG4gIHNldCBob3VyKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5faG91ciAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faG91ciA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBob3VyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2hvdXI7XG4gIH1cblxuICBwcml2YXRlIF9ob3VyID0gLTE7XG5cbiAgc2V0IG1pbnV0ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX21pbnV0ZSAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fbWludXRlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW51dGU7XG4gIH1cblxuICBwcml2YXRlIF9taW51dGUgPSAtMTtcblxuICBzZXQgc2Vjb25kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fc2Vjb25kICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9zZWNvbmQgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY29uZDtcbiAgfVxuXG4gIHByaXZhdGUgX3NlY29uZCA9IC0xO1xuXG4gIHNldCBkYXlQZXJpb2QodmFsdWUpIHtcbiAgICB0aGlzLl9kYXlQZXJpb2QgPSB2YWx1ZTtcbiAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMiA/IHRoaXMubGlzdE9mSG91cnM/LmZpbHRlcihpdGVtID0+IChpdGVtLmRheVBlcmlvZCAmJiBpdGVtLmRheVBlcmlvZCA9PT0gdmFsdWUpIHx8ICFpdGVtLmRheVBlcmlvZCkgOiB0aGlzLmxpc3RPZkhvdXJzO1xuICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gIH1cblxuICBnZXQgZGF5UGVyaW9kKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXlQZXJpb2Q7XG4gIH1cblxuICBwcml2YXRlIF9kYXlQZXJpb2Q6IERheVBlcmlvZCA9ICdhbSc7XG5cbiAgc2V0VGltZSgpIHtcbiAgICB0aGlzLl9ob3VyID0gdGhpcy5faG91ciA8IDAgPyAwIDogdGhpcy5faG91cjtcbiAgICB0aGlzLl9taW51dGUgPSB0aGlzLl9taW51dGUgPCAwID8gMCA6IHRoaXMuX21pbnV0ZTtcbiAgICB0aGlzLl9zZWNvbmQgPSB0aGlzLl9zZWNvbmQgPCAwID8gMCA6IHRoaXMuX3NlY29uZDtcblxuICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSh0aGlzLl90aW1lPy5nZXRUaW1lKCkgfHwgbmV3IERhdGUoKSk7XG4gICAgdGltZS5zZXRIb3Vycyh0aGlzLmhvdXIsIHRoaXMubWludXRlLCB0aGlzLnNlY29uZCwgMCk7XG4gICAgdGhpcy50aW1lID0gdGltZTtcbiAgICB0aGlzLmVtaXRUaW1lKHRpbWUpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyVGltZSgpIHtcbiAgICBpZiAodGhpcy50aW1lKSB7XG4gICAgICB0aGlzLl90aW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5lbWl0VGltZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICB0aGlzLl9ob3VyID0gLTE7XG4gICAgdGhpcy5fbWludXRlID0gLTE7XG4gICAgdGhpcy5fc2Vjb25kID0gLTE7XG4gICAgdGhpcy5kYXlQZXJpb2QgPSAnYW0nO1xuICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9ICcnO1xuICB9XG5cbiAgZW1pdFRpbWUodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHRpbWVWYWx1ZSA9ICEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSA/IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IHRpbWVWYWx1ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLnRpbWVDaGFuZ2UuZW1pdCh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX3RpbWVJbnRlcm5hbCA9IHRpbWVWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHRoaXMudGltZT8udG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7IHRpbWVTdHlsZTogdGhpcy5zZWNvbmRzID8gJ21lZGl1bScgOiAnc2hvcnQnIH0pID8/ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUaW1lTGlzdHMoKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGltZSddKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3RpbWUnXS5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IGNoYW5nZXNbJ3RpbWUnXS5jdXJyZW50VmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLmZvckVhY2goKGNoaWxkOiBUZW1wbGF0ZUlkRGlyZWN0aXZlKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRUaW1lTGlzdHMoKSB7XG4gICAgdGhpcy5kYXlQZXJpb2RzID0gZ2V0RGF5UGVyaW9kcyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpO1xuICAgIHRoaXMuaG91cjEyID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMubGlzdE9mSG91cnMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZIb3VycywgdGhpcy5maWx0ZXJIb3Vycyk7XG4gICAgdGhpcy5saXN0T2ZNaW51dGVzID0gdGhpcy5saXN0T2ZUaW1lU2VnbWVudHMoZ2V0TGlzdE9mTWludXRlcywgdGhpcy5maWx0ZXJNaW51dGVzKTtcbiAgICB0aGlzLmxpc3RPZlNlY29uZHMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZTZWNvbmRzLCB0aGlzLmZpbHRlclNlY29uZHMpO1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzZWxlY3QnKSB7XG4gICAgICBjb25zdCB1bmRlZlNlZ21lbnQgPSB7IHZhbHVlOiAtMSwgbGFiZWw6ICcgLS0nLCBkaXNhYmxlZDogdHJ1ZSB9O1xuICAgICAgdGhpcy5saXN0T2ZIb3Vycy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgICAgdGhpcy5saXN0T2ZNaW51dGVzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZlNlY29uZHMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5ob3VyMTIgPyB0aGlzLmxpc3RPZkhvdXJzLmZpbHRlcihpdGVtID0+IChpdGVtLmRheVBlcmlvZCAmJiBpdGVtLmRheVBlcmlvZCA9PT0gdGhpcy5kYXlQZXJpb2QpIHx8ICFpdGVtLmRheVBlcmlvZCkgOiB0aGlzLmxpc3RPZkhvdXJzO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0VGltZSh0aW1lID0gdGhpcy50aW1lKSB7XG4gICAgaWYgKCEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSkge1xuICAgICAgY29uc3QgaG91ciA9IHRpbWUuZ2V0SG91cnMoKSA/PyAwO1xuICAgICAgY29uc3QgbWludXRlID0gdGltZS5nZXRNaW51dGVzKCkgPz8gMDtcbiAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMuc2Vjb25kcyA/ICh0aW1lLmdldFNlY29uZHMoKSA/PyAwKSA6IDA7XG5cbiAgICAgIGNvbnN0IGNsb3Nlc3RTZWNvbmQgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mU2Vjb25kcywgc2Vjb25kKTtcbiAgICAgIGNvbnN0IGNsb3Nlc3RNaW51dGUgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mTWludXRlcywgbWludXRlKTtcbiAgICAgIGNvbnN0IGNsb3Nlc3RIb3VyID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZkhvdXJzLCBob3VyKTtcblxuICAgICAgdGhpcy5zZWNvbmQgPSB0aGlzLnNlY29uZHMgPyBjbG9zZXN0U2Vjb25kLnZhbHVlIDogMDtcbiAgICAgIHRoaXMubWludXRlID0gY2xvc2VzdE1pbnV0ZS52YWx1ZTtcbiAgICAgIHRoaXMuaG91ciA9IGNsb3Nlc3RIb3VyLnZhbHVlO1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3Nlc3RUaW1lKHRpbWVBcnJheTogSVRpbWVWYWx1ZVtdLCB0aW1lU2VnbWVudDogbnVtYmVyKSB7XG4gICAgbGV0IGFycmF5ID0gdGltZUFycmF5ID8/IFt7IHZhbHVlOiAwLCBsYWJlbDogJzAwJyB9XTtcbiAgICBpZiAodGhpcy50aW1lKSB7XG4gICAgICBhcnJheSA9IHRpbWVBcnJheS5maWx0ZXIoZWwgPT4gZWwudmFsdWUgPj0gMCk7XG4gICAgICBhcnJheSA9IGFycmF5Lmxlbmd0aCA/IGFycmF5IDogdGltZUFycmF5O1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXkucmVkdWNlKChhOiBJVGltZVZhbHVlLCBiOiBJVGltZVZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5hYnMoYi52YWx1ZSAtIHRpbWVTZWdtZW50KSA8IE1hdGguYWJzKGEudmFsdWUgLSB0aW1lU2VnbWVudCkgPyBiIDogYTtcbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZUaW1lU2VnbWVudHM6IChsb2NhbGU6IHN0cmluZywgZGF0ZVRpbWVGb3JtYXRPcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMpID0+IElUaW1lVmFsdWVbXSwgZmlsdGVyVGltZVNlZ21lbnRzOiAoKHRpbWVTZWdtZW50VmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBsaXN0ID0gZ2V0TGlzdE9mVGltZVNlZ21lbnRzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucykuZmlsdGVyKChzZWdtZW50OiBJVGltZVZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gdHlwZW9mIGZpbHRlclRpbWVTZWdtZW50cyA9PT0gJ2Z1bmN0aW9uJyA/IGZpbHRlclRpbWVTZWdtZW50cyhzZWdtZW50LnZhbHVlKSA6IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIGxpc3QubGVuZ3RoID8gbGlzdCA6IGdldExpc3RPZlRpbWVTZWdtZW50cyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpLnNsaWNlKDAsIDEpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKGRheVBlcmlvZDogRGF5UGVyaW9kKSB7XG4gICAgaWYgKGRheVBlcmlvZCAhPT0gdGhpcy5kYXlQZXJpb2QpIHtcbiAgICAgIGNvbnN0IGhycyA9IHRoaXMudGltZT8uZ2V0SG91cnMoKSA/PyAodGhpcy5ob3VyIDwgMCA/IDAgOiB0aGlzLmhvdXIpO1xuICAgICAgY29uc3QgaG91ciA9IGhycyA+IDEyID8gY29udmVydDI0aFRvMTJoKGhycykgOiBjb252ZXJ0MTJoVG8yNGgoZGF5UGVyaW9kLCBocnMpO1xuICAgICAgdGhpcy5ob3VyID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZkhvdXJzLCBob3VyKS52YWx1ZTtcbiAgICAgIGlmIChob3VyID49IDApIHtcbiAgICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWxlY3RIb3Vyc0NoYW5nZShob3VyOiBudW1iZXIpIHtcbiAgICB0aGlzLmhvdXIgPSBob3VyO1xuICAgIGlmIChob3VyID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdE1pbnV0ZXNDaGFuZ2UobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZTtcbiAgICBpZiAobWludXRlID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNlY29uZHNDaGFuZ2Uoc2Vjb25kOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlY29uZCA9IHNlY29uZDtcbiAgICBpZiAoc2Vjb25kID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIHBhdGNoU2VsZWN0VGltZVZhbHVlcygpIHtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3REYXlQZXJpb2QnKT8udmFsdWU7XG4gICAgaWYgKHRoaXMuZGF5UGVyaW9kICE9PSBkYXlQZXJpb2QpIHtcbiAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgc2VsZWN0RGF5UGVyaW9kOiB0aGlzLmRheVBlcmlvZCA/PyAnYW0nXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaG91cnMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RIb3VycycpPy52YWx1ZTtcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0TWludXRlcycpPy52YWx1ZTtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0U2Vjb25kcycpPy52YWx1ZTtcbiAgICBjb25zdCBnb1VwZGF0ZSA9ICh0aGlzLnNlY29uZCA8IDAgJiYgdGhpcy5taW51dGUgPCAwKSB8fCAodGhpcy5ob3VyID49IDAgJiYgdGhpcy5taW51dGUgPj0gMCAmJiB0aGlzLnNlY29uZCA+PSAwKTtcbiAgICBjb25zdCB0aW1lQ2hhbmdlZCA9ICh0aGlzLmhvdXIgIT09IGhvdXJzKSB8fCAodGhpcy5taW51dGUgIT09IG1pbnV0ZXMpIHx8ICh0aGlzLnNlY29uZCAhPT0gc2Vjb25kcyk7XG4gICAgaWYgKGdvVXBkYXRlICYmIHRpbWVDaGFuZ2VkKSB7XG4gICAgICBpZiAodGhpcy5ob3VyICE9PSBob3Vycykge1xuICAgICAgICB0aGlzLnNlbGVjdFRpbWUucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgc2VsZWN0SG91cnM6IHRoaXMuaG91ciA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWludXRlICE9PSBtaW51dGVzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RNaW51dGVzOiB0aGlzLm1pbnV0ZSA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuc2Vjb25kICE9PSBzZWNvbmRzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RTZWNvbmRzOiB0aGlzLnNlY29uZCA/PyAwXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlIb3VyKGluZGV4OiBudW1iZXIsIGhvdXI6IElUaW1lVmFsdWUpIHtcbiAgICByZXR1cm4gaG91cjtcbiAgfVxuXG4gIG9uQ2hhbmdlID0gKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSA9PiB7fTtcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50aW1lID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgaGFuZGxlVGltZUlucHV0Q2hhbmdlKCRldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSAkZXZlbnQudGFyZ2V0Py52YWx1ZTtcbiAgICBpZiAoIXZhbHVlIHx8ICFpc1ZhbGlkVGltZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRpbWUgPSBjb252ZXJ0VGltZVRvRGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKHRpbWUgPz8gbmV3IERhdGUoRGF0ZS5ub3coKSkpO1xuICB9XG5cbiAgaGFuZGxlQ2xlYXIoJGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZUJsdXIoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vbkJsdXIoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgaGFuZGxlRm9jdXMoJGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blJlZj8ubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItdGltZXBpY2tlcnNcIiAqbmdJZj1cInZhcmlhbnQ9PT0nc2VsZWN0J1wiPlxuICA8ZGl2IGNsYXNzPVwicGlja2VyIHRpbWUtcGlja2VyXCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cInNlbGVjdFRpbWVcIiBjbGFzcz1cInRpbWUtcGlja2VyLWJvZHlcIiBbbmdDbGFzc109XCJ0aW1lUGlja2VyQ2xhc3Nlc1wiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lLXBpY2tlci1pbmxpbmUtaWNvblwiPjwvc3Bhbj5cbiAgICAgIDxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0SG91cnNcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RIb3Vyc0NoYW5nZSgkZXZlbnQpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBsaXN0T2ZIb3VyczEyOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SG91clwiIFtuZ1ZhbHVlXT1cImhvdXIudmFsdWVcIiBbYXR0ci5kaXNhYmxlZF09XCJob3VyLmRpc2FibGVkIHx8IG51bGxcIj57e2hvdXIubGFiZWx9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICB7eycgOid9fTxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0TWludXRlc1wiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdE1pbnV0ZXNDaGFuZ2UoJGV2ZW50KVwiIChibHVyKT1cIm9uQmx1cigpXCIgW3NpemluZ109XCJzaXplID8/ICcnXCI+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbGlzdE9mTWludXRlc1wiIFtuZ1ZhbHVlXT1cIm1pbnV0ZS52YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cIm1pbnV0ZS5kaXNhYmxlZCB8fCBudWxsXCI+e3ttaW51dGUubGFiZWx9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlY29uZHNcIj5cbiAgICAgICAge3snIDonfX08c2VsZWN0IFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBjU2VsZWN0IGNsYXNzPVwibXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdFNlY29uZHNcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RTZWNvbmRzQ2hhbmdlKCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzZWNvbmQgb2YgbGlzdE9mU2Vjb25kc1wiIFtuZ1ZhbHVlXT1cInNlY29uZC52YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cInNlY29uZC5kaXNhYmxlZCB8fCBudWxsXCI+e3tzZWNvbmQubGFiZWx9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImhvdXIxMlwiPlxuICAgICAgICA8c2VsZWN0IFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBjU2VsZWN0IGNsYXNzPVwibXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdERheVBlcmlvZFwiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdERheVBlcmlvZENoYW5nZSgkZXZlbnQpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXlQZXJpb2Qgb2YgZGF5UGVyaW9kc1wiIFtuZ1ZhbHVlXT1cImRheVBlcmlvZC52YWx1ZVwiIGNsYXNzPVwidGltZS1waWNrZXItcm9sbC1jZWxsXCI+e3tkYXlQZXJpb2QubGFiZWx9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjLWRyb3Bkb3duICNkcm9wZG93bj1cImNEcm9wZG93blwiIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgY2xhc3M9XCJ0aW1lLXBpY2tlciBwaWNrZXJcIiBbbmdDbGFzc109XCJ0aW1lUGlja2VyQ2xhc3Nlc1wiICpuZ0lmPVwidmFyaWFudD09PSdyb2xsJ1wiIFt2aXNpYmxlXT1cInZpc2libGVcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIj5cbiAgICA8aW5wdXQgKGJsdXIpPVwiaGFuZGxlQmx1cigkZXZlbnQpO1wiXG4gICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlVGltZUlucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgIFthdHRyLnBhdHRlcm5dPVwiaG91cjEyID8gJygoKDBbMS05XSl8KDFbMC0yXSkpOihbMC01XSkoWzAtOV0pXFxcXHMoQXxQKU0pJyA6ICcoWzAxXT9bMC05XXwyWzAtM10pOlswLTVdWzAtOV0nXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgICAgICAgIFt2YWxpZF09XCJ2YWxpZFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIHRpbWUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgdGltZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIHRpbWUtcGlja2VyLWNsZWFuZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG5cbiAgPC9jLWlucHV0LWdyb3VwPlxuICA8ZGl2IGNEcm9wZG93bk1lbnUgI2Ryb3Bkb3duTWVudT1cImNEcm9wZG93bk1lbnVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItYm9keSB0aW1lLXBpY2tlci1yb2xsXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mSG91cnMxMlwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJob3VyXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZNaW51dGVzXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cIm1pbnV0ZVwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3RNaW51dGVzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgICpuZ0lmPVwic2Vjb25kc1wiXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZTZWNvbmRzXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cInNlY29uZFwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3RTZWNvbmRzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtYW0tcG1cbiAgICAgICAgKm5nSWY9XCJob3VyMTJcIiBbZWxlbWVudHNdPVwiZGF5UGVyaW9kc1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJkYXlQZXJpb2RcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWFtLXBtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZXM/LnRpbWVQaWNrZXJGb290ZXJcIiBjbGFzcz1cInBpY2tlci1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZXM/LnRpbWVQaWNrZXJGb290ZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRyb3Bkb3dufVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYy1kcm9wZG93bj5cbiJdfQ==
511
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixpQkFBaUIsRUFHakIsT0FBTyxFQUNQLGFBQWEsRUFDYixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsV0FBVyxFQUVaLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEgsT0FBTyxF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c0JBRFYsS0FBSztnQkFnQkcsSUFBSTtzQkFBWixLQUFLO2dCQVFGLElBQUk7c0JBRFAsS0FBSztnQkE2QkcsT0FBTztzQkFBZixLQUFLO2dCQU9HLEtBQUs7c0JBQWIsS0FBSztnQkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBV0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFZSxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBSWdDLFdBQVc7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUlsRCxnQkFBZ0I7c0JBRGYsZUFBZTt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuaW1wb3J0IHtcbiAgY29udmVydDEyaFRvMjRoLFxuICBjb252ZXJ0MjRoVG8xMmgsXG4gIGNvbnZlcnRUaW1lVG9EYXRlLFxuICBEYXRlVGltZUZvcm1hdE9wdGlvbnMsXG4gIERheVBlcmlvZCxcbiAgZ2V0QW1QbSxcbiAgZ2V0RGF5UGVyaW9kcyxcbiAgZ2V0TGlzdE9mSG91cnMsXG4gIGdldExpc3RPZk1pbnV0ZXMsXG4gIGdldExpc3RPZlNlY29uZHMsXG4gIGlzSG91cjEyLFxuICBpc1ZhbGlkVGltZSxcbiAgSVRpbWVWYWx1ZVxufSBmcm9tICcuL3RpbWUudXRpbHMnO1xuaW1wb3J0IHsgRHJvcGRvd25Db21wb25lbnQsIERyb3Bkb3duTWVudURpcmVjdGl2ZSwgRHJvcGRvd25Ub2dnbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wZG93bic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbERpcmVjdGl2ZSwgRm9ybVNlbGVjdERpcmVjdGl2ZSwgSW5wdXRHcm91cENvbXBvbmVudCwgSW5wdXRHcm91cFRleHREaXJlY3RpdmUgfSBmcm9tICcuLi9mb3JtJztcbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbEFtUG1Db21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYy10aW1lLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY1RpbWVQaWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ0lmLFxuICAgIE5nRm9yT2YsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIERyb3Bkb3duQ29tcG9uZW50LFxuICAgIERyb3Bkb3duVG9nZ2xlRGlyZWN0aXZlLFxuICAgIERyb3Bkb3duTWVudURpcmVjdGl2ZSxcbiAgICBGb3JtQ29udHJvbERpcmVjdGl2ZSxcbiAgICBGb3JtU2VsZWN0RGlyZWN0aXZlLFxuICAgIElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgSW5wdXRHcm91cFRleHREaXJlY3RpdmUsXG4gICAgVGltZVBpY2tlclJvbGxDb2xDb21wb25lbnQsXG4gICAgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9jbGVhbmVyOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5kaWNhdG9yOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbnB1dFJlYWRPbmx5OiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9zZWNvbmRzOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92aXNpYmxlOiBCb29sZWFuSW5wdXQ7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgY2xlYW5lciBidXR0b24uXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGNsZWFuZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jbGVhbmVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBjbGVhbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xlYW5lcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFNldHMgRGF0ZVRpbWUgZm9ybWF0IG9wdGlvbnMgaW5jbHVkaW5nIHRpbWVab25lXG4gICAqIEB0eXBlIERhdGVUaW1lRm9ybWF0T3B0aW9uc1xuICAgKiBAZGVmYXVsdCB7fVxuICAgKiBAbm90ZSBUaGUgZGF0ZSBvYmplY3QgZG9lc24ndCBzdG9yZSB0aW1lWm9uZSwgaXQga2VlcHMgdGhlIGxvY2FsIHRpbWV6b25lIG9mIHRoZSBicm93c2VyLCByZWdhcmRsZXNzIGlmIHlvdSBwYXJzZWQgVVRDIGRhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGF0ZVRpbWVGb3JtYXRPcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBkaXNhYmxlZCBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgaG91cnMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVySG91cnM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBtaW51dGVzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlck1pbnV0ZXM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBzZWNvbmRzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlclNlY29uZHM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBpbnB1dCBpbmRpY2F0b3IuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGluZGljYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luZGljYXRvciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgaW5kaWNhdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9pbmRpY2F0b3I7XG4gIH1cblxuICBwcml2YXRlIF9pbmRpY2F0b3I6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHJlYWRvbmx5IHN0YXRlIGZvciB0aGUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaW5wdXRSZWFkT25seSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lucHV0UmVhZE9ubHkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGlucHV0UmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0UmVhZE9ubHk7XG4gIH1cblxuICBwcml2YXRlIF9pbnB1dFJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgbG9jYWxlIGZvciBjb21wb25lbnRzLiBJZiBub3Qgc2V0LCBpdCBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgYnJvd3Nlci5cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0IGRlZmF1bHRcbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgc2hvcnQgaGludCB2aXNpYmxlIGluIHRpbWUgaW5wdXQuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCAnU2VsZWN0IHRpbWUnXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCB0aW1lJztcblxuICAvKipcbiAgICogVG9nZ2xlIHNlY29uZHMgdmlzaWJpbGl0eS5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHNlY29uZHModmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZWNvbmRzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBzZWNvbmRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWNvbmRzO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRpbWUuXG4gICAqIEB0eXBlIERhdGUgfCBzdHJpbmcgfCBudWxsIHwgbnVtYmVyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHRpbWUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgJiYgaXNWYWxpZFRpbWUodmFsdWUpKSB7XG4gICAgICBjb25zdCB0aW1lID0gY29udmVydFRpbWVUb0RhdGUodmFsdWUpO1xuICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF5UGVyaW9kID0gZ2V0QW1QbSh0aW1lLCB0aGlzLmxvY2FsZSk7XG4gICAgICBpZiAodGhpcy5fdGltZT8uZ2V0VGltZSgpICE9PSB0aW1lLmdldFRpbWUoKSkge1xuICAgICAgICB0aGlzLl90aW1lID0gbmV3IERhdGUodGltZS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0aW1lKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90aW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZT86IERhdGU7XG4gIHByaXZhdGUgX3RpbWVJbnRlcm5hbD86IERhdGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGltZSBwaWNrZXIgdmFyaWFudCB0byBhIHJvbGwgb3Igc2VsZWN0LlxuICAgKiBAdHlwZSAncm9sbCcgfCAnc2VsZWN0J1xuICAgKiBAZGVmYXVsdCAncm9sbCdcbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdyb2xsJyB8ICdzZWxlY3QnID0gJ3JvbGwnO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzdWFsIHZhbGlkYXRpb24gZmVlZGJhY2suXG4gICAqIEB0eXBlIGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSB2YWxpZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiBkcm9wZG93biB0aW1lcGlja2VyIG1lbnUgY29tcG9uZW50LlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHRpbWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRlIHwgdW5kZWZpbmVkPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IHVuZGVmaW5lZD4oZmFsc2UpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2JsdXInKSBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoRHJvcGRvd25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBkcm9wZG93blJlZiE6IEVsZW1lbnRSZWY7XG5cbiAgdGVtcGxhdGVzOiBhbnkgPSB7fTtcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZUlkRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGNvbnRlbnRUZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVJZERpcmVjdGl2ZT47XG5cbiAgbGlzdE9mSG91cnMhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZkhvdXJzMTIhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZk1pbnV0ZXMhOiBJVGltZVZhbHVlW107XG4gIGxpc3RPZlNlY29uZHMhOiBJVGltZVZhbHVlW107XG4gIGhvdXIxMjogYm9vbGVhbiA9IGlzSG91cjEyKHRoaXMubG9jYWxlKTtcbiAgZGF5UGVyaW9kcyA9IFtcbiAgICB7IHZhbHVlOiAnYW0nLCBsYWJlbDogJ2FtJyB9LFxuICAgIHsgdmFsdWU6ICdwbScsIGxhYmVsOiAncG0nIH1cbiAgXTtcblxuICBzZXQgdGltZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGltZUlucHV0LnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLl90aW1lSW5wdXRWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRpbWVJbnB1dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RpbWVJbnB1dFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZUlucHV0VmFsdWU6IHN0cmluZyA9XG4gICAgdGhpcy50aW1lPy50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHsgdGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCcgfSkgPz9cbiAgICAnJztcblxuICBnZXQgdGltZVBpY2tlckNsYXNzZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdmb3JtLWNvbnRyb2wnOiB0aGlzLnZhcmlhbnQgPT09ICdzZWxlY3QnICYmIHRoaXMudmFsaWQgIT09IHVuZGVmaW5lZCxcbiAgICAgICdpcy12YWxpZCc6IHRoaXMudmFsaWQgPT09IHRydWUsXG4gICAgICAnaXMtaW52YWxpZCc6IHRoaXMudmFsaWQgPT09IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIHNlbGVjdFRpbWUgPSBuZXcgRm9ybUdyb3VwPHtcbiAgICBzZWxlY3RIb3VyczogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgc2VsZWN0TWludXRlczogRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD47XG4gICAgc2VsZWN0U2Vjb25kcz86IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+O1xuICAgIHNlbGVjdERheVBlcmlvZD86IEZvcm1Db250cm9sPCdhbScgfCAncG0nIHwgbnVsbD47XG4gIH0+KFxuICAgIHtcbiAgICAgIHNlbGVjdEhvdXJzOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHsgdmFsdWU6IHRoaXMuaG91ciwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSxcbiAgICAgICAgeyB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5taW4oMCldIH1cbiAgICAgICksXG4gICAgICBzZWxlY3RNaW51dGVzOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHsgdmFsdWU6IHRoaXMubWludXRlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LFxuICAgICAgICBWYWxpZGF0b3JzLm1pbigwKVxuICAgICAgKSxcbiAgICAgIHNlbGVjdFNlY29uZHM6IG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgeyB2YWx1ZTogdGhpcy5zZWNvbmQsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sXG4gICAgICAgIFZhbGlkYXRvcnMubWluKDApXG4gICAgICApLFxuICAgICAgc2VsZWN0RGF5UGVyaW9kOiBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHsgdmFsdWU6IHRoaXMuZGF5UGVyaW9kLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LFxuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICApXG4gICAgfSxcbiAgICB7IHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSB9XG4gICk7XG5cbiAgdGltZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKFxuICAgIHtcbiAgICAgIHZhbHVlOiB0aGlzLnRpbWVJbnB1dFZhbHVlLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWRcbiAgICB9LFxuICAgIHsgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdIH1cbiAgKTtcblxuICBzZXQgaG91cih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX2hvdXIgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hvdXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ob3VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfaG91ciA9IC0xO1xuXG4gIHNldCBtaW51dGUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9taW51dGUgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX21pbnV0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWludXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWludXRlID0gLTE7XG5cbiAgc2V0IHNlY29uZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3NlY29uZCAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2Vjb25kID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWNvbmQ7XG4gIH1cblxuICBwcml2YXRlIF9zZWNvbmQgPSAtMTtcblxuICBzZXQgZGF5UGVyaW9kKHZhbHVlKSB7XG4gICAgdGhpcy5fZGF5UGVyaW9kID0gdmFsdWU7XG4gICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5ob3VyMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubGlzdE9mSG91cnM/LmZpbHRlcihcbiAgICAgICAgKGl0ZW0pID0+IChpdGVtLmRheVBlcmlvZCAmJiBpdGVtLmRheVBlcmlvZCA9PT0gdmFsdWUpIHx8ICFpdGVtLmRheVBlcmlvZFxuICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5saXN0T2ZIb3VycztcbiAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICB9XG5cbiAgZ2V0IGRheVBlcmlvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF5UGVyaW9kO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF5UGVyaW9kOiBEYXlQZXJpb2QgPSAnYW0nO1xuXG4gIHNldFRpbWUoKSB7XG4gICAgdGhpcy5faG91ciA9IHRoaXMuX2hvdXIgPCAwID8gMCA6IHRoaXMuX2hvdXI7XG4gICAgdGhpcy5fbWludXRlID0gdGhpcy5fbWludXRlIDwgMCA/IDAgOiB0aGlzLl9taW51dGU7XG4gICAgdGhpcy5fc2Vjb25kID0gdGhpcy5fc2Vjb25kIDwgMCA/IDAgOiB0aGlzLl9zZWNvbmQ7XG5cbiAgICBjb25zdCB0aW1lID0gbmV3IERhdGUodGhpcy5fdGltZT8uZ2V0VGltZSgpIHx8IG5ldyBEYXRlKCkpO1xuICAgIHRpbWUuc2V0SG91cnModGhpcy5ob3VyLCB0aGlzLm1pbnV0ZSwgdGhpcy5zZWNvbmQsIDApO1xuICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgdGhpcy5lbWl0VGltZSh0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclRpbWUoKSB7XG4gICAgaWYgKHRoaXMudGltZSkge1xuICAgICAgdGhpcy5fdGltZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZW1pdFRpbWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5faG91ciA9IC0xO1xuICAgIHRoaXMuX21pbnV0ZSA9IC0xO1xuICAgIHRoaXMuX3NlY29uZCA9IC0xO1xuICAgIHRoaXMuZGF5UGVyaW9kID0gJ2FtJztcbiAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICAgIHRoaXMudGltZUlucHV0VmFsdWUgPSAnJztcbiAgfVxuXG4gIGVtaXRUaW1lKHRpbWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB0aW1lVmFsdWUgPSAhIXRpbWUgJiYgaXNWYWxpZFRpbWUodGltZSkgPyBuZXcgRGF0ZSh0aW1lLmdldFRpbWUoKSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHRoaXMuX3RpbWVJbnRlcm5hbD8uZ2V0VGltZSgpICE9PSB0aW1lVmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgdGhpcy50aW1lQ2hhbmdlLmVtaXQodGltZVZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGltZVZhbHVlKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLl90aW1lSW50ZXJuYWwgPSB0aW1lVmFsdWU7XG4gICAgfVxuICAgIHRoaXMudGltZUlucHV0VmFsdWUgPVxuICAgICAgdGhpcy50aW1lPy50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHtcbiAgICAgICAgdGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCdcbiAgICAgIH0pID8/ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUaW1lTGlzdHMoKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGltZSddKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3RpbWUnXS5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IGNoYW5nZXNbJ3RpbWUnXS5jdXJyZW50VmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLmZvckVhY2goKGNoaWxkOiBUZW1wbGF0ZUlkRGlyZWN0aXZlKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRUaW1lTGlzdHMoKSB7XG4gICAgdGhpcy5kYXlQZXJpb2RzID0gZ2V0RGF5UGVyaW9kcyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpO1xuICAgIHRoaXMuaG91cjEyID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICAgIHRoaXMubGlzdE9mSG91cnMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZIb3VycywgdGhpcy5maWx0ZXJIb3Vycyk7XG4gICAgdGhpcy5saXN0T2ZNaW51dGVzID0gdGhpcy5saXN0T2ZUaW1lU2VnbWVudHMoZ2V0TGlzdE9mTWludXRlcywgdGhpcy5maWx0ZXJNaW51dGVzKTtcbiAgICB0aGlzLmxpc3RPZlNlY29uZHMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZTZWNvbmRzLCB0aGlzLmZpbHRlclNlY29uZHMpO1xuICAgIGlmICh0aGlzLnZhcmlhbnQgPT09ICdzZWxlY3QnKSB7XG4gICAgICBjb25zdCB1bmRlZlNlZ21lbnQgPSB7IHZhbHVlOiAtMSwgbGFiZWw6ICcgLS0nLCBkaXNhYmxlZDogdHJ1ZSB9O1xuICAgICAgdGhpcy5saXN0T2ZIb3Vycy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgICAgdGhpcy5saXN0T2ZNaW51dGVzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZlNlY29uZHMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICB9XG4gICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5ob3VyMTJcbiAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMubGlzdE9mSG91cnMuZmlsdGVyKFxuICAgICAgICAoaXRlbSkgPT4gKGl0ZW0uZGF5UGVyaW9kICYmIGl0ZW0uZGF5UGVyaW9kID09PSB0aGlzLmRheVBlcmlvZCkgfHwgIWl0ZW0uZGF5UGVyaW9kXG4gICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmxpc3RPZkhvdXJzO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0VGltZSh0aW1lID0gdGhpcy50aW1lKSB7XG4gICAgaWYgKCEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSkge1xuICAgICAgY29uc3QgaG91ciA9IHRpbWUuZ2V0SG91cnMoKSA/PyAwO1xuICAgICAgY29uc3QgbWludXRlID0gdGltZS5nZXRNaW51dGVzKCkgPz8gMDtcbiAgICAgIGNvbnN0IHNlY29uZCA9IHRoaXMuc2Vjb25kcyA/IHRpbWUuZ2V0U2Vjb25kcygpID8/IDAgOiAwO1xuXG4gICAgICBjb25zdCBjbG9zZXN0U2Vjb25kID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZlNlY29uZHMsIHNlY29uZCk7XG4gICAgICBjb25zdCBjbG9zZXN0TWludXRlID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZk1pbnV0ZXMsIG1pbnV0ZSk7XG4gICAgICBjb25zdCBjbG9zZXN0SG91ciA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZIb3VycywgaG91cik7XG5cbiAgICAgIHRoaXMuc2Vjb25kID0gdGhpcy5zZWNvbmRzID8gY2xvc2VzdFNlY29uZC52YWx1ZSA6IDA7XG4gICAgICB0aGlzLm1pbnV0ZSA9IGNsb3Nlc3RNaW51dGUudmFsdWU7XG4gICAgICB0aGlzLmhvdXIgPSBjbG9zZXN0SG91ci52YWx1ZTtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgICAgdGhpcy5wYXRjaFNlbGVjdFRpbWVWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZXN0VGltZSh0aW1lQXJyYXk6IElUaW1lVmFsdWVbXSwgdGltZVNlZ21lbnQ6IG51bWJlcikge1xuICAgIGxldCBhcnJheSA9IHRpbWVBcnJheSA/PyBbeyB2YWx1ZTogMCwgbGFiZWw6ICcwMCcgfV07XG4gICAgaWYgKHRoaXMudGltZSkge1xuICAgICAgYXJyYXkgPSB0aW1lQXJyYXkuZmlsdGVyKChlbCkgPT4gZWwudmFsdWUgPj0gMCk7XG4gICAgICBhcnJheSA9IGFycmF5Lmxlbmd0aCA/IGFycmF5IDogdGltZUFycmF5O1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXkucmVkdWNlKChhOiBJVGltZVZhbHVlLCBiOiBJVGltZVZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gTWF0aC5hYnMoYi52YWx1ZSAtIHRpbWVTZWdtZW50KSA8IE1hdGguYWJzKGEudmFsdWUgLSB0aW1lU2VnbWVudCkgPyBiIDogYTtcbiAgICB9KTtcbiAgfVxuXG4gIGxpc3RPZlRpbWVTZWdtZW50cyhcbiAgICBnZXRMaXN0T2ZUaW1lU2VnbWVudHM6IChcbiAgICAgIGxvY2FsZTogc3RyaW5nLFxuICAgICAgZGF0ZVRpbWVGb3JtYXRPcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICApID0+IElUaW1lVmFsdWVbXSxcbiAgICBmaWx0ZXJUaW1lU2VnbWVudHM6ICgodGltZVNlZ21lbnRWYWx1ZTogbnVtYmVyKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZFxuICApIHtcbiAgICBjb25zdCBsaXN0ID0gZ2V0TGlzdE9mVGltZVNlZ21lbnRzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucykuZmlsdGVyKFxuICAgICAgKHNlZ21lbnQ6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBmaWx0ZXJUaW1lU2VnbWVudHMgPT09ICdmdW5jdGlvbicgPyBmaWx0ZXJUaW1lU2VnbWVudHMoc2VnbWVudC52YWx1ZSkgOiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIGxpc3QubGVuZ3RoXG4gICAgICAgICAgID8gbGlzdFxuICAgICAgICAgICA6IGdldExpc3RPZlRpbWVTZWdtZW50cyh0aGlzLmxvY2FsZSwgdGhpcy5kYXRlVGltZUZvcm1hdE9wdGlvbnMpLnNsaWNlKDAsIDEpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKGRheVBlcmlvZDogRGF5UGVyaW9kKSB7XG4gICAgaWYgKGRheVBlcmlvZCAhPT0gdGhpcy5kYXlQZXJpb2QpIHtcbiAgICAgIGNvbnN0IGhycyA9IHRoaXMudGltZT8uZ2V0SG91cnMoKSA/PyAodGhpcy5ob3VyIDwgMCA/IDAgOiB0aGlzLmhvdXIpO1xuICAgICAgY29uc3QgaG91ciA9IGhycyA+IDEyID8gY29udmVydDI0aFRvMTJoKGhycykgOiBjb252ZXJ0MTJoVG8yNGgoZGF5UGVyaW9kLCBocnMpO1xuICAgICAgdGhpcy5ob3VyID0gdGhpcy5jbG9zZXN0VGltZSh0aGlzLmxpc3RPZkhvdXJzLCBob3VyKS52YWx1ZTtcbiAgICAgIGlmIChob3VyID49IDApIHtcbiAgICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTZWxlY3RIb3Vyc0NoYW5nZShob3VyOiBudW1iZXIpIHtcbiAgICB0aGlzLmhvdXIgPSBob3VyO1xuICAgIGlmIChob3VyID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdE1pbnV0ZXNDaGFuZ2UobWludXRlOiBudW1iZXIpIHtcbiAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZTtcbiAgICBpZiAobWludXRlID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIGhhbmRsZVNlbGVjdFNlY29uZHNDaGFuZ2Uoc2Vjb25kOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlY29uZCA9IHNlY29uZDtcbiAgICBpZiAoc2Vjb25kID49IDApIHtcbiAgICAgIHRoaXMuc2V0VGltZSgpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIHBhdGNoU2VsZWN0VGltZVZhbHVlcygpIHtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3REYXlQZXJpb2QnKT8udmFsdWU7XG4gICAgaWYgKHRoaXMuZGF5UGVyaW9kICE9PSBkYXlQZXJpb2QpIHtcbiAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgc2VsZWN0RGF5UGVyaW9kOiB0aGlzLmRheVBlcmlvZCA/PyAnYW0nXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgaG91cnMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RIb3VycycpPy52YWx1ZTtcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0TWludXRlcycpPy52YWx1ZTtcbiAgICBjb25zdCBzZWNvbmRzID0gdGhpcy5zZWxlY3RUaW1lLmdldCgnc2VsZWN0U2Vjb25kcycpPy52YWx1ZTtcbiAgICBjb25zdCBnb1VwZGF0ZSA9XG4gICAgICAodGhpcy5zZWNvbmQgPCAwICYmIHRoaXMubWludXRlIDwgMCkgfHxcbiAgICAgICh0aGlzLmhvdXIgPj0gMCAmJiB0aGlzLm1pbnV0ZSA+PSAwICYmIHRoaXMuc2Vjb25kID49IDApO1xuICAgIGNvbnN0IHRpbWVDaGFuZ2VkID0gdGhpcy5ob3VyICE9PSBob3VycyB8fCB0aGlzLm1pbnV0ZSAhPT0gbWludXRlcyB8fCB0aGlzLnNlY29uZCAhPT0gc2Vjb25kcztcbiAgICBpZiAoZ29VcGRhdGUgJiYgdGltZUNoYW5nZWQpIHtcbiAgICAgIGlmICh0aGlzLmhvdXIgIT09IGhvdXJzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RIb3VyczogdGhpcy5ob3VyID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5taW51dGUgIT09IG1pbnV0ZXMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdE1pbnV0ZXM6IHRoaXMubWludXRlID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWNvbmQgIT09IHNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdFNlY29uZHM6IHRoaXMuc2Vjb25kID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUhvdXIoaW5kZXg6IG51bWJlciwgaG91cjogSVRpbWVWYWx1ZSkge1xuICAgIHJldHVybiBob3VyO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBoYW5kbGVUaW1lSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICRldmVudC50YXJnZXQ/LnZhbHVlO1xuICAgIGlmICghdmFsdWUgfHwgIWlzVmFsaWRUaW1lKHZhbHVlKSkge1xuICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGltZSA9IGNvbnZlcnRUaW1lVG9EYXRlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUodGltZSA/PyBuZXcgRGF0ZShEYXRlLm5vdygpKSk7XG4gIH1cblxuICBoYW5kbGVDbGVhcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmNsZWFyVGltZSgpO1xuICB9XG5cbiAgaGFuZGxlQmx1cigkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRyb3Bkb3duUmVmPy5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uQmx1cigpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBoYW5kbGVGb2N1cygkZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRyb3Bkb3duUmVmPy5uYXRpdmVFbGVtZW50Py5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci10aW1lcGlja2Vyc1wiICpuZ0lmPVwidmFyaWFudD09PSdzZWxlY3QnXCI+XG4gIDxkaXYgY2xhc3M9XCJwaWNrZXIgdGltZS1waWNrZXJcIj5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwic2VsZWN0VGltZVwiIGNsYXNzPVwidGltZS1waWNrZXItYm9keVwiIFtuZ0NsYXNzXT1cInRpbWVQaWNrZXJDbGFzc2VzXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcGlja2VyLWlubGluZS1pY29uXCI+PC9zcGFuPlxuICAgICAgPHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RIb3Vyc1wiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGxpc3RPZkhvdXJzMTI7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlIb3VyXCIgW25nVmFsdWVdPVwiaG91ci52YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cImhvdXIuZGlzYWJsZWQgfHwgbnVsbFwiPnt7aG91ci5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIHt7JyA6J319PHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RNaW51dGVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0TWludXRlc0NoYW5nZSgkZXZlbnQpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbc2l6aW5nXT1cInNpemUgPz8gJydcIj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG1pbnV0ZSBvZiBsaXN0T2ZNaW51dGVzXCIgW25nVmFsdWVdPVwibWludXRlLnZhbHVlXCIgW2F0dHIuZGlzYWJsZWRdPVwibWludXRlLmRpc2FibGVkIHx8IG51bGxcIj57e21pbnV0ZS5sYWJlbH19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2Vjb25kc1wiPlxuICAgICAgICB7eycgOid9fTxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0U2Vjb25kc1wiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdFNlY29uZHNDaGFuZ2UoJGV2ZW50KVwiIChibHVyKT1cIm9uQmx1cigpXCIgW3NpemluZ109XCJzaXplID8/ICcnXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlY29uZCBvZiBsaXN0T2ZTZWNvbmRzXCIgW25nVmFsdWVdPVwic2Vjb25kLnZhbHVlXCIgW2F0dHIuZGlzYWJsZWRdPVwic2Vjb25kLmRpc2FibGVkIHx8IG51bGxcIj57e3NlY29uZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaG91cjEyXCI+XG4gICAgICAgIDxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0RGF5UGVyaW9kXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKCRldmVudClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRheVBlcmlvZCBvZiBkYXlQZXJpb2RzXCIgW25nVmFsdWVdPVwiZGF5UGVyaW9kLnZhbHVlXCIgY2xhc3M9XCJ0aW1lLXBpY2tlci1yb2xsLWNlbGxcIj57e2RheVBlcmlvZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBjbGFzcz1cInRpbWUtcGlja2VyIHBpY2tlclwiIFtuZ0NsYXNzXT1cInRpbWVQaWNrZXJDbGFzc2VzXCIgKm5nSWY9XCJ2YXJpYW50PT09J3JvbGwnXCIgW3Zpc2libGVdPVwidmlzaWJsZVwiPlxuICA8Yy1pbnB1dC1ncm91cCBbY2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgPz8gZHJvcGRvd24udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgIGNEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cFwiPlxuICAgIDxpbnB1dCAoYmx1cik9XCJoYW5kbGVCbHVyKCRldmVudCk7XCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVUaW1lSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRpbWVJbnB1dFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgW2F0dHIucGF0dGVybl09XCJob3VyMTIgPyAnKCgoMFsxLTldKXwoMVswLTJdKSk6KFswLTVdKShbMC05XSlcXFxccyhBfFApTSknIDogJyhbMDFdP1swLTldfDJbMC0zXSk6WzAtNV1bMC05XSdcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICAgICAgICAgW3ZhbGlkXT1cInZhbGlkXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJpbmRpY2F0b3IgfHwgY2xlYW5lclwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yXCIgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaW5kaWNhdG9yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gdGltZS1waWNrZXItaW5wdXQtaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIChjbGljayk9XCIhZGlzYWJsZWQgJiYgaGFuZGxlQ2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwiY2xlYW5lciAmJiB0aW1lICYmICFkaXNhYmxlZFwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gdGltZS1waWNrZXItY2xlYW5lci1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cblxuICA8L2MtaW5wdXQtZ3JvdXA+XG4gIDxkaXYgY0Ryb3Bkb3duTWVudSAjZHJvcGRvd25NZW51PVwiY0Ryb3Bkb3duTWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1ib2R5IHRpbWUtcGlja2VyLXJvbGxcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZIb3VyczEyXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImhvdXJcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0SG91cnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1jb2xcbiAgICAgICAgW2VsZW1lbnRzXT1cImxpc3RPZk1pbnV0ZXNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwibWludXRlXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdE1pbnV0ZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1jb2xcbiAgICAgICAgKm5nSWY9XCJzZWNvbmRzXCJcbiAgICAgICAgW2VsZW1lbnRzXT1cImxpc3RPZlNlY29uZHNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic2Vjb25kXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdFNlY29uZHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1hbS1wbVxuICAgICAgICAqbmdJZj1cImhvdXIxMlwiIFtlbGVtZW50c109XCJkYXlQZXJpb2RzXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImRheVBlcmlvZFwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtYW0tcG0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRlbXBsYXRlcz8udGltZVBpY2tlckZvb3RlclwiIGNsYXNzPVwicGlja2VyLWZvb3RlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlcz8udGltZVBpY2tlckZvb3RlcjsgY29udGV4dDogeyRpbXBsaWNpdDogZHJvcGRvd259XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9jLWRyb3Bkb3duPlxuIl19
@@ -3,48 +3,49 @@ import { CommonModule } from '@angular/common';
3
3
  import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { FormModule } from '../form';
5
5
  import { ButtonModule } from '../button';
6
- import { TimePickerComponent } from './time-picker.component';
7
- import { TimePickerRollColComponent, TimeElementDirective } from './time-picker-roll-col/time-picker-roll-col.component';
8
- import { TimePickerRollAmPmComponent, DayPeriodElementDirective } from './time-picker-roll-col/time-picker-roll-am-pm.component';
9
6
  import { DropdownModule } from '../dropdown';
7
+ import { TimeElementDirective, TimePickerRollColComponent } from './time-picker-roll-col/time-picker-roll-col.component';
8
+ import { DayPeriodElementDirective, TimePickerRollAmPmComponent } from './time-picker-roll-col/time-picker-roll-am-pm.component';
9
+ import { TimePickerComponent } from './time-picker.component';
10
10
  import * as i0 from "@angular/core";
11
11
  export class TimePickerModule {
12
12
  }
13
- TimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
- TimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.4", ngImport: i0, type: TimePickerModule, declarations: [TimePickerComponent,
15
- TimePickerRollColComponent,
16
- TimeElementDirective,
17
- TimePickerRollAmPmComponent,
18
- DayPeriodElementDirective], imports: [CommonModule,
13
+ TimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ TimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.6", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
19
15
  ReactiveFormsModule,
20
16
  FormModule,
21
17
  ButtonModule,
22
- DropdownModule], exports: [TimePickerComponent] });
23
- TimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
18
+ DropdownModule,
19
+ DayPeriodElementDirective,
20
+ TimeElementDirective,
21
+ TimePickerComponent,
22
+ TimePickerRollAmPmComponent,
23
+ TimePickerRollColComponent], exports: [TimePickerComponent] });
24
+ TimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
24
25
  ReactiveFormsModule,
25
26
  FormModule,
26
27
  ButtonModule,
27
- DropdownModule] });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.4", ngImport: i0, type: TimePickerModule, decorators: [{
28
+ DropdownModule,
29
+ TimePickerComponent,
30
+ TimePickerRollAmPmComponent,
31
+ TimePickerRollColComponent] });
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.6", ngImport: i0, type: TimePickerModule, decorators: [{
29
33
  type: NgModule,
30
34
  args: [{
31
- declarations: [
32
- TimePickerComponent,
33
- TimePickerRollColComponent,
34
- TimeElementDirective,
35
- TimePickerRollAmPmComponent,
36
- DayPeriodElementDirective
37
- ],
35
+ declarations: [],
38
36
  imports: [
39
37
  CommonModule,
40
38
  ReactiveFormsModule,
41
39
  FormModule,
42
40
  ButtonModule,
43
- DropdownModule
44
- ],
45
- exports: [
41
+ DropdownModule,
42
+ DayPeriodElementDirective,
43
+ TimeElementDirective,
46
44
  TimePickerComponent,
47
- ]
45
+ TimePickerRollAmPmComponent,
46
+ TimePickerRollColComponent
47
+ ],
48
+ exports: [TimePickerComponent]
48
49
  }]
49
50
  }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBcUI3QyxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBakJ6QixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0IseUJBQXlCLGFBR3pCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsVUFBVTtRQUNWLFlBQVk7UUFDWixjQUFjLGFBR2QsbUJBQW1COzhHQUdWLGdCQUFnQixZQVZ6QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYzsyRkFNTCxnQkFBZ0I7a0JBbkI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLFlBQVk7d0JBQ1osY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi9mb3JtJztcblxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbENvbENvbXBvbmVudCwgVGltZUVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbEFtUG1Db21wb25lbnQsIERheVBlcmlvZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50JztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJSb2xsQ29sQ29tcG9uZW50LFxuICAgIFRpbWVFbGVtZW50RGlyZWN0aXZlLFxuICAgIFRpbWVQaWNrZXJSb2xsQW1QbUNvbXBvbmVudCxcbiAgICBEYXlQZXJpb2RFbGVtZW50RGlyZWN0aXZlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyTW9kdWxlIHsgfVxuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDekgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDakksT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBa0I5RCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsWUFiekIsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQixVQUFVO1FBQ1YsWUFBWTtRQUNaLGNBQWM7UUFDZCx5QkFBeUI7UUFDekIsb0JBQW9CO1FBQ3BCLG1CQUFtQjtRQUNuQiwyQkFBMkI7UUFDM0IsMEJBQTBCLGFBRWxCLG1CQUFtQjs4R0FFbEIsZ0JBQWdCLFlBYnpCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsVUFBVTtRQUNWLFlBQVk7UUFDWixjQUFjO1FBR2QsbUJBQW1CO1FBQ25CLDJCQUEyQjtRQUMzQiwwQkFBMEI7MkZBSWpCLGdCQUFnQjtrQkFoQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QseUJBQXlCO3dCQUN6QixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7cUJBQzNCO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi9mb3JtJztcblxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuaW1wb3J0IHsgVGltZUVsZW1lbnREaXJlY3RpdmUsIFRpbWVQaWNrZXJSb2xsQ29sQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWNvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZSwgVGltZVBpY2tlclJvbGxBbVBtQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci1yb2xsLWNvbC90aW1lLXBpY2tlci1yb2xsLWFtLXBtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi90aW1lLXBpY2tlci5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgRGF5UGVyaW9kRWxlbWVudERpcmVjdGl2ZSxcbiAgICBUaW1lRWxlbWVudERpcmVjdGl2ZSxcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJSb2xsQW1QbUNvbXBvbmVudCxcbiAgICBUaW1lUGlja2VyUm9sbENvbENvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbVGltZVBpY2tlckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVGltZVBpY2tlck1vZHVsZSB7fVxuIl19