@coreui/angular-pro 4.2.25 → 4.2.26

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 (711) hide show
  1. package/LICENSE +4 -4
  2. package/README.md +175 -175
  3. package/esm2020/coreui-angular-pro.mjs +4 -4
  4. package/esm2020/lib/accordion/accordion/accordion.component.mjs +40 -40
  5. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +43 -43
  6. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +72 -72
  7. package/esm2020/lib/accordion/accordion.module.mjs +48 -48
  8. package/esm2020/lib/accordion/accordion.service.mjs +36 -36
  9. package/esm2020/lib/accordion/index.mjs +2 -2
  10. package/esm2020/lib/accordion/public_api.mjs +5 -5
  11. package/esm2020/lib/alert/alert-heading.directive.mjs +22 -22
  12. package/esm2020/lib/alert/alert-link.directive.mjs +22 -22
  13. package/esm2020/lib/alert/alert.component.mjs +181 -181
  14. package/esm2020/lib/alert/alert.module.mjs +38 -38
  15. package/esm2020/lib/alert/index.mjs +2 -2
  16. package/esm2020/lib/alert/public_api.mjs +5 -5
  17. package/esm2020/lib/avatar/avatar.component.mjs +49 -49
  18. package/esm2020/lib/avatar/avatar.module.mjs +24 -24
  19. package/esm2020/lib/avatar/index.mjs +2 -2
  20. package/esm2020/lib/avatar/public_api.mjs +3 -3
  21. package/esm2020/lib/backdrop/backdrop.service.mjs +52 -52
  22. package/esm2020/lib/badge/badge.component.mjs +42 -42
  23. package/esm2020/lib/badge/badge.module.mjs +24 -24
  24. package/esm2020/lib/badge/index.mjs +2 -2
  25. package/esm2020/lib/badge/public_api.mjs +3 -3
  26. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +43 -43
  27. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +37 -37
  28. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.mjs +2 -2
  29. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +41 -41
  30. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +52 -52
  31. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +37 -37
  32. package/esm2020/lib/breadcrumb/index.mjs +2 -2
  33. package/esm2020/lib/breadcrumb/public_api.mjs +6 -6
  34. package/esm2020/lib/button/button-close.directive.mjs +44 -44
  35. package/esm2020/lib/button/button.directive.mjs +112 -112
  36. package/esm2020/lib/button/button.module.mjs +29 -29
  37. package/esm2020/lib/button/index.mjs +2 -2
  38. package/esm2020/lib/button/public_api.mjs +4 -4
  39. package/esm2020/lib/button-group/button-group/button-group.component.mjs +41 -41
  40. package/esm2020/lib/button-group/button-group.module.mjs +29 -29
  41. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +35 -35
  42. package/esm2020/lib/button-group/index.mjs +2 -2
  43. package/esm2020/lib/button-group/public_api.mjs +4 -4
  44. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +19 -19
  45. package/esm2020/lib/calendar/calendar/calendar.component.mjs +376 -376
  46. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +28 -28
  47. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +21 -21
  48. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +21 -21
  49. package/esm2020/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +16 -16
  50. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +81 -81
  51. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +18 -18
  52. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +324 -324
  53. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +20 -20
  54. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +79 -79
  55. package/esm2020/lib/calendar/calendar.module.mjs +62 -62
  56. package/esm2020/lib/calendar/calendar.service.mjs +60 -60
  57. package/esm2020/lib/calendar/calendar.utils.mjs +275 -275
  58. package/esm2020/lib/calendar/index.mjs +2 -2
  59. package/esm2020/lib/calendar/public_api.mjs +5 -5
  60. package/esm2020/lib/callout/callout.component.mjs +23 -23
  61. package/esm2020/lib/callout/callout.module.mjs +20 -20
  62. package/esm2020/lib/callout/index.mjs +2 -2
  63. package/esm2020/lib/callout/public_api.mjs +3 -3
  64. package/esm2020/lib/card/card-body.component.mjs +22 -22
  65. package/esm2020/lib/card/card-footer.component.mjs +22 -22
  66. package/esm2020/lib/card/card-group.component.mjs +22 -22
  67. package/esm2020/lib/card/card-header-actions.component.mjs +20 -20
  68. package/esm2020/lib/card/card-header.component.mjs +22 -22
  69. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +19 -19
  70. package/esm2020/lib/card/card-img.directive.mjs +25 -25
  71. package/esm2020/lib/card/card-link.directive.mjs +21 -21
  72. package/esm2020/lib/card/card-subtitle.directive.mjs +21 -21
  73. package/esm2020/lib/card/card-text.directive.mjs +21 -21
  74. package/esm2020/lib/card/card-title.directive.mjs +21 -21
  75. package/esm2020/lib/card/card.component.mjs +29 -29
  76. package/esm2020/lib/card/card.module.mjs +79 -79
  77. package/esm2020/lib/card/index.mjs +2 -2
  78. package/esm2020/lib/card/public_api.mjs +14 -14
  79. package/esm2020/lib/carousel/carousel/carousel.component.mjs +214 -214
  80. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +17 -17
  81. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +83 -83
  82. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +45 -45
  83. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +47 -47
  84. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +68 -68
  85. package/esm2020/lib/carousel/carousel-state.mjs +77 -77
  86. package/esm2020/lib/carousel/carousel-state.type.mjs +2 -2
  87. package/esm2020/lib/carousel/carousel.animation.mjs +70 -70
  88. package/esm2020/lib/carousel/carousel.config.mjs +22 -22
  89. package/esm2020/lib/carousel/carousel.module.mjs +54 -54
  90. package/esm2020/lib/carousel/carousel.service.mjs +18 -18
  91. package/esm2020/lib/carousel/index.mjs +2 -2
  92. package/esm2020/lib/carousel/public_api.mjs +9 -9
  93. package/esm2020/lib/collapse/collapse.animations.mjs +18 -18
  94. package/esm2020/lib/collapse/collapse.directive.mjs +190 -190
  95. package/esm2020/lib/collapse/collapse.module.mjs +23 -23
  96. package/esm2020/lib/collapse/index.mjs +2 -2
  97. package/esm2020/lib/collapse/public_api.mjs +3 -3
  98. package/esm2020/lib/coreui.types.mjs +10 -10
  99. package/esm2020/lib/date-picker/date-picker.component.mjs +81 -81
  100. package/esm2020/lib/date-picker/date-picker.module.mjs +59 -59
  101. package/esm2020/lib/date-picker/index.mjs +2 -2
  102. package/esm2020/lib/date-picker/public_api.mjs +3 -3
  103. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +607 -607
  104. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +55 -55
  105. package/esm2020/lib/date-range-picker/index.mjs +2 -2
  106. package/esm2020/lib/date-range-picker/public_api.mjs +3 -3
  107. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +366 -366
  108. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +72 -72
  109. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +23 -23
  110. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +23 -23
  111. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +23 -23
  112. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +86 -86
  113. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +81 -81
  114. package/esm2020/lib/dropdown/dropdown.module.mjs +64 -64
  115. package/esm2020/lib/dropdown/dropdown.service.mjs +18 -18
  116. package/esm2020/lib/dropdown/index.mjs +2 -2
  117. package/esm2020/lib/dropdown/public_api.mjs +10 -10
  118. package/esm2020/lib/element-cover/element-cover.component.mjs +71 -71
  119. package/esm2020/lib/element-cover/element-cover.module.mjs +28 -28
  120. package/esm2020/lib/element-cover/index.mjs +2 -2
  121. package/esm2020/lib/element-cover/public_api.mjs +3 -3
  122. package/esm2020/lib/footer/footer.component.mjs +38 -38
  123. package/esm2020/lib/footer/footer.module.mjs +24 -24
  124. package/esm2020/lib/footer/index.mjs +2 -2
  125. package/esm2020/lib/footer/public_api.mjs +3 -3
  126. package/esm2020/lib/form/form/form.directive.mjs +38 -38
  127. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +62 -62
  128. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +21 -21
  129. package/esm2020/lib/form/form-check/form-check.component.mjs +75 -75
  130. package/esm2020/lib/form/form-control/form-control.directive.mjs +71 -71
  131. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +42 -42
  132. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +38 -38
  133. package/esm2020/lib/form/form-label/form-label.directive.mjs +39 -39
  134. package/esm2020/lib/form/form-select/form-select.directive.mjs +34 -34
  135. package/esm2020/lib/form/form-text/form-text.directive.mjs +22 -22
  136. package/esm2020/lib/form/form.module.mjs +77 -77
  137. package/esm2020/lib/form/index.mjs +2 -2
  138. package/esm2020/lib/form/input-group/input-group.component.mjs +31 -31
  139. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +22 -22
  140. package/esm2020/lib/form/public_api.mjs +14 -14
  141. package/esm2020/lib/grid/col.component.mjs +12 -12
  142. package/esm2020/lib/grid/col.directive.mjs +156 -156
  143. package/esm2020/lib/grid/col.type.mjs +2 -2
  144. package/esm2020/lib/grid/container.component.mjs +43 -43
  145. package/esm2020/lib/grid/container.type.mjs +2 -2
  146. package/esm2020/lib/grid/grid.module.mjs +48 -48
  147. package/esm2020/lib/grid/gutter.directive.mjs +56 -56
  148. package/esm2020/lib/grid/gutter.type.mjs +2 -2
  149. package/esm2020/lib/grid/index.mjs +2 -2
  150. package/esm2020/lib/grid/public_api.mjs +8 -8
  151. package/esm2020/lib/grid/row.component.mjs +12 -12
  152. package/esm2020/lib/grid/row.directive.mjs +45 -45
  153. package/esm2020/lib/grid/row.type.mjs +2 -2
  154. package/esm2020/lib/header/header/header.component.mjs +47 -47
  155. package/esm2020/lib/header/header-brand/header-brand.component.mjs +31 -31
  156. package/esm2020/lib/header/header-divider/header-divider.component.mjs +20 -20
  157. package/esm2020/lib/header/header-nav/header-nav.component.mjs +28 -28
  158. package/esm2020/lib/header/header-text/header-text.component.mjs +20 -20
  159. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +54 -54
  160. package/esm2020/lib/header/header.module.mjs +49 -49
  161. package/esm2020/lib/header/index.mjs +2 -2
  162. package/esm2020/lib/header/public_api.mjs +8 -8
  163. package/esm2020/lib/image/img.directive.mjs +91 -91
  164. package/esm2020/lib/image/img.module.mjs +24 -24
  165. package/esm2020/lib/image/index.mjs +2 -2
  166. package/esm2020/lib/image/public_api.mjs +3 -3
  167. package/esm2020/lib/list-group/index.mjs +2 -2
  168. package/esm2020/lib/list-group/list-group-item.directive.mjs +73 -73
  169. package/esm2020/lib/list-group/list-group.directive.mjs +44 -44
  170. package/esm2020/lib/list-group/list-group.module.mjs +25 -25
  171. package/esm2020/lib/list-group/public_api.mjs +4 -4
  172. package/esm2020/lib/loading-button/index.mjs +2 -2
  173. package/esm2020/lib/loading-button/loading-button.component.mjs +84 -84
  174. package/esm2020/lib/loading-button/loading-button.module.mjs +28 -28
  175. package/esm2020/lib/loading-button/public_api.mjs +3 -3
  176. package/esm2020/lib/modal/index.mjs +2 -2
  177. package/esm2020/lib/modal/modal/modal.component.mjs +311 -311
  178. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +19 -19
  179. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +23 -23
  180. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +32 -32
  181. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +27 -27
  182. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +22 -22
  183. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +24 -24
  184. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +21 -21
  185. package/esm2020/lib/modal/modal.module.mjs +69 -69
  186. package/esm2020/lib/modal/modal.service.mjs +21 -21
  187. package/esm2020/lib/modal/public_api.mjs +11 -11
  188. package/esm2020/lib/multi-select/index.mjs +2 -2
  189. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +536 -536
  190. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +30 -30
  191. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +20 -20
  192. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +52 -52
  193. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +144 -144
  194. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +55 -55
  195. package/esm2020/lib/multi-select/multi-select.module.mjs +51 -51
  196. package/esm2020/lib/multi-select/multi-select.service.mjs +23 -23
  197. package/esm2020/lib/multi-select/multi-select.type.mjs +2 -2
  198. package/esm2020/lib/multi-select/public_api.mjs +7 -7
  199. package/esm2020/lib/nav/index.mjs +2 -2
  200. package/esm2020/lib/nav/nav-item.component.mjs +19 -19
  201. package/esm2020/lib/nav/nav-link.directive.mjs +86 -86
  202. package/esm2020/lib/nav/nav.component.mjs +24 -24
  203. package/esm2020/lib/nav/nav.module.mjs +22 -22
  204. package/esm2020/lib/nav/public_api.mjs +5 -5
  205. package/esm2020/lib/navbar/index.mjs +2 -2
  206. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +23 -23
  207. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +40 -40
  208. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +20 -20
  209. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +63 -63
  210. package/esm2020/lib/navbar/navbar.component.mjs +84 -84
  211. package/esm2020/lib/navbar/navbar.module.mjs +48 -48
  212. package/esm2020/lib/navbar/public_api.mjs +7 -7
  213. package/esm2020/lib/offcanvas/index.mjs +2 -2
  214. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +244 -244
  215. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +19 -19
  216. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +19 -19
  217. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +21 -21
  218. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +27 -27
  219. package/esm2020/lib/offcanvas/offcanvas.module.mjs +57 -57
  220. package/esm2020/lib/offcanvas/offcanvas.service.mjs +21 -21
  221. package/esm2020/lib/offcanvas/public_api.mjs +8 -8
  222. package/esm2020/lib/pagination/index.mjs +2 -2
  223. package/esm2020/lib/pagination/page-item/page-item.component.mjs +12 -12
  224. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +62 -62
  225. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +21 -21
  226. package/esm2020/lib/pagination/pagination/pagination.component.mjs +41 -41
  227. package/esm2020/lib/pagination/pagination.module.mjs +38 -38
  228. package/esm2020/lib/pagination/public_api.mjs +5 -5
  229. package/esm2020/lib/placeholder/index.mjs +2 -2
  230. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +34 -34
  231. package/esm2020/lib/placeholder/placeholder.directive.mjs +51 -51
  232. package/esm2020/lib/placeholder/placeholder.module.mjs +29 -29
  233. package/esm2020/lib/placeholder/public_api.mjs +4 -4
  234. package/esm2020/lib/popover/index.mjs +2 -2
  235. package/esm2020/lib/popover/popover/popover.component.mjs +92 -92
  236. package/esm2020/lib/popover/popover.directive.mjs +196 -196
  237. package/esm2020/lib/popover/popover.module.mjs +29 -29
  238. package/esm2020/lib/popover/public_api.mjs +4 -4
  239. package/esm2020/lib/progress/index.mjs +2 -2
  240. package/esm2020/lib/progress/progress-bar.component.mjs +112 -112
  241. package/esm2020/lib/progress/progress-bar.mjs +2 -2
  242. package/esm2020/lib/progress/progress.component.mjs +72 -72
  243. package/esm2020/lib/progress/progress.module.mjs +25 -25
  244. package/esm2020/lib/progress/public_api.mjs +4 -4
  245. package/esm2020/lib/services/class-toggle.service.mjs +30 -30
  246. package/esm2020/lib/services/index.mjs +2 -2
  247. package/esm2020/lib/services/intersection.service.mjs +34 -34
  248. package/esm2020/lib/services/listeners.service.mjs +43 -43
  249. package/esm2020/lib/services/public_api.mjs +3 -3
  250. package/esm2020/lib/shared/html-attr.directive.mjs +52 -52
  251. package/esm2020/lib/shared/index.mjs +2 -2
  252. package/esm2020/lib/shared/public_api.mjs +4 -4
  253. package/esm2020/lib/shared/shared.module.mjs +46 -46
  254. package/esm2020/lib/shared/template-id.directive.mjs +19 -19
  255. package/esm2020/lib/sidebar/index.mjs +2 -2
  256. package/esm2020/lib/sidebar/public_api.mjs +10 -10
  257. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +246 -246
  258. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +60 -60
  259. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +30 -30
  260. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +20 -20
  261. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +20 -20
  262. package/esm2020/lib/sidebar/sidebar-nav/index.mjs +2 -2
  263. package/esm2020/lib/sidebar/sidebar-nav/public_api.mjs +14 -14
  264. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +24 -24
  265. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +18 -18
  266. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +18 -18
  267. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +21 -21
  268. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +33 -33
  269. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +43 -43
  270. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +94 -94
  271. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +23 -23
  272. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +68 -68
  273. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +204 -204
  274. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.mjs +2 -2
  275. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +54 -54
  276. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +40 -40
  277. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +26 -26
  278. package/esm2020/lib/sidebar/sidebar.module.mjs +99 -99
  279. package/esm2020/lib/sidebar/sidebar.service.mjs +21 -21
  280. package/esm2020/lib/smart-pagination/index.mjs +2 -2
  281. package/esm2020/lib/smart-pagination/public_api.mjs +3 -3
  282. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +196 -196
  283. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +28 -28
  284. package/esm2020/lib/smart-pagination/smart-pagination.type.mjs +2 -2
  285. package/esm2020/lib/smart-table/index.mjs +2 -2
  286. package/esm2020/lib/smart-table/public_api.mjs +5 -4
  287. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +515 -517
  288. package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +30 -30
  289. package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +78 -78
  290. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +46 -46
  291. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +165 -165
  292. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +49 -49
  293. package/esm2020/lib/smart-table/smart-table.module.mjs +76 -76
  294. package/esm2020/lib/smart-table/smart-table.type.mjs +1 -1
  295. package/esm2020/lib/spinner/index.mjs +2 -2
  296. package/esm2020/lib/spinner/public_api.mjs +3 -3
  297. package/esm2020/lib/spinner/spinner.component.mjs +49 -49
  298. package/esm2020/lib/spinner/spinner.module.mjs +28 -28
  299. package/esm2020/lib/table/index.mjs +2 -2
  300. package/esm2020/lib/table/public_api.mjs +5 -5
  301. package/esm2020/lib/table/table-active.directive.mjs +40 -40
  302. package/esm2020/lib/table/table-color.directive.mjs +24 -24
  303. package/esm2020/lib/table/table.directive.mjs +147 -147
  304. package/esm2020/lib/table/table.module.mjs +34 -34
  305. package/esm2020/lib/table/table.type.mjs +2 -2
  306. package/esm2020/lib/tabs/index.mjs +2 -2
  307. package/esm2020/lib/tabs/public_api.mjs +6 -6
  308. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +92 -92
  309. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +128 -128
  310. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +57 -57
  311. package/esm2020/lib/tabs/tab.service.mjs +21 -21
  312. package/esm2020/lib/tabs/tabs.module.mjs +40 -40
  313. package/esm2020/lib/time-picker/index.mjs +2 -2
  314. package/esm2020/lib/time-picker/public_api.mjs +3 -3
  315. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -103
  316. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -104
  317. package/esm2020/lib/time-picker/time-picker.component.mjs +489 -489
  318. package/esm2020/lib/time-picker/time-picker.module.mjs +50 -50
  319. package/esm2020/lib/time-picker/time.utils.mjs +645 -645
  320. package/esm2020/lib/toast/index.mjs +2 -2
  321. package/esm2020/lib/toast/public_api.mjs +9 -9
  322. package/esm2020/lib/toast/toast/toast.component.mjs +238 -238
  323. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +21 -21
  324. package/esm2020/lib/toast/toast-close.directive.mjs +28 -28
  325. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +31 -31
  326. package/esm2020/lib/toast/toast.module.mjs +50 -50
  327. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +17 -17
  328. package/esm2020/lib/toast/toaster/toaster.component.mjs +140 -140
  329. package/esm2020/lib/toast/toaster/toaster.service.mjs +21 -21
  330. package/esm2020/lib/tooltip/index.mjs +2 -2
  331. package/esm2020/lib/tooltip/public_api.mjs +4 -4
  332. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +88 -88
  333. package/esm2020/lib/tooltip/tooltip.directive.mjs +191 -191
  334. package/esm2020/lib/tooltip/tooltip.module.mjs +29 -29
  335. package/esm2020/lib/utilities/align.directive.mjs +24 -24
  336. package/esm2020/lib/utilities/bg-color.directive.mjs +33 -33
  337. package/esm2020/lib/utilities/border.directive.mjs +66 -66
  338. package/esm2020/lib/utilities/border.type.mjs +2 -2
  339. package/esm2020/lib/utilities/index.mjs +2 -2
  340. package/esm2020/lib/utilities/public_api.mjs +7 -7
  341. package/esm2020/lib/utilities/rounded.directive.mjs +65 -65
  342. package/esm2020/lib/utilities/rounded.type.mjs +2 -2
  343. package/esm2020/lib/utilities/text-color.directive.mjs +32 -32
  344. package/esm2020/lib/utilities/utilities.module.mjs +44 -44
  345. package/esm2020/lib/widget/index.mjs +2 -2
  346. package/esm2020/lib/widget/public_api.mjs +8 -8
  347. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +49 -49
  348. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +52 -52
  349. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +80 -80
  350. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +39 -39
  351. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +30 -30
  352. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +92 -92
  353. package/esm2020/lib/widget/widget.module.mjs +57 -57
  354. package/esm2020/public-api.mjs +50 -50
  355. package/fesm2015/coreui-angular-pro.mjs +15301 -15303
  356. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  357. package/fesm2020/coreui-angular-pro.mjs +15178 -15180
  358. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  359. package/index.d.ts +5 -5
  360. package/lib/accordion/accordion/accordion.component.d.ts +22 -22
  361. package/lib/accordion/accordion-button/accordion-button.directive.d.ts +18 -18
  362. package/lib/accordion/accordion-item/accordion-item.component.d.ts +33 -33
  363. package/lib/accordion/accordion.module.d.ts +12 -12
  364. package/lib/accordion/accordion.service.d.ts +13 -13
  365. package/lib/accordion/index.d.ts +1 -1
  366. package/lib/accordion/public_api.d.ts +4 -4
  367. package/lib/alert/alert-heading.directive.d.ts +7 -7
  368. package/lib/alert/alert-link.directive.d.ts +7 -7
  369. package/lib/alert/alert.component.d.ts +68 -68
  370. package/lib/alert/alert.module.d.ts +11 -11
  371. package/lib/alert/index.d.ts +1 -1
  372. package/lib/alert/public_api.d.ts +4 -4
  373. package/lib/avatar/avatar.component.d.ts +40 -40
  374. package/lib/avatar/avatar.module.d.ts +8 -8
  375. package/lib/avatar/index.d.ts +1 -1
  376. package/lib/avatar/public_api.d.ts +2 -2
  377. package/lib/backdrop/backdrop.service.d.ts +16 -16
  378. package/lib/badge/badge.component.d.ts +32 -32
  379. package/lib/badge/badge.module.d.ts +8 -8
  380. package/lib/badge/index.d.ts +1 -1
  381. package/lib/badge/public_api.d.ts +2 -2
  382. package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +21 -21
  383. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +28 -28
  384. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +9 -9
  385. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +21 -21
  386. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +14 -14
  387. package/lib/breadcrumb/breadcrumb.module.d.ts +12 -12
  388. package/lib/breadcrumb/index.d.ts +1 -1
  389. package/lib/breadcrumb/public_api.d.ts +6 -6
  390. package/lib/button/button-close.directive.d.ts +16 -16
  391. package/lib/button/button.directive.d.ts +54 -54
  392. package/lib/button/button.module.d.ts +9 -9
  393. package/lib/button/index.d.ts +1 -1
  394. package/lib/button/public_api.d.ts +3 -3
  395. package/lib/button-group/button-group/button-group.component.d.ts +23 -23
  396. package/lib/button-group/button-group.module.d.ts +9 -9
  397. package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +13 -13
  398. package/lib/button-group/index.d.ts +1 -1
  399. package/lib/button-group/public_api.d.ts +3 -3
  400. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +7 -7
  401. package/lib/calendar/calendar/calendar.component.d.ts +155 -155
  402. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +15 -15
  403. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +7 -7
  404. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +7 -7
  405. package/lib/calendar/calendar-month/calendar-day-title.pipe.d.ts +7 -7
  406. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +29 -29
  407. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +8 -8
  408. package/lib/calendar/calendar-month/calendar-month.component.d.ts +121 -121
  409. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +8 -8
  410. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +30 -30
  411. package/lib/calendar/calendar.module.d.ts +19 -19
  412. package/lib/calendar/calendar.service.d.ts +33 -33
  413. package/lib/calendar/calendar.utils.d.ts +26 -26
  414. package/lib/calendar/index.d.ts +1 -1
  415. package/lib/calendar/public_api.d.ts +4 -4
  416. package/lib/callout/callout.component.d.ts +13 -13
  417. package/lib/callout/callout.module.d.ts +8 -8
  418. package/lib/callout/index.d.ts +1 -1
  419. package/lib/callout/public_api.d.ts +2 -2
  420. package/lib/card/card-body.component.d.ts +6 -6
  421. package/lib/card/card-footer.component.d.ts +6 -6
  422. package/lib/card/card-group.component.d.ts +6 -6
  423. package/lib/card/card-header-actions.component.d.ts +6 -6
  424. package/lib/card/card-header.component.d.ts +6 -6
  425. package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +6 -6
  426. package/lib/card/card-img.directive.d.ts +11 -11
  427. package/lib/card/card-link.directive.d.ts +6 -6
  428. package/lib/card/card-subtitle.directive.d.ts +6 -6
  429. package/lib/card/card-text.directive.d.ts +6 -6
  430. package/lib/card/card-title.directive.d.ts +6 -6
  431. package/lib/card/card.component.d.ts +18 -18
  432. package/lib/card/card.module.d.ts +19 -19
  433. package/lib/card/index.d.ts +1 -1
  434. package/lib/card/public_api.d.ts +13 -13
  435. package/lib/carousel/carousel/carousel.component.d.ts +92 -92
  436. package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +7 -7
  437. package/lib/carousel/carousel-control/carousel-control.component.d.ts +31 -31
  438. package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +18 -18
  439. package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +21 -21
  440. package/lib/carousel/carousel-item/carousel-item.component.d.ts +30 -30
  441. package/lib/carousel/carousel-state.d.ts +16 -16
  442. package/lib/carousel/carousel-state.type.d.ts +15 -15
  443. package/lib/carousel/carousel.animation.d.ts +4 -4
  444. package/lib/carousel/carousel.config.d.ts +10 -10
  445. package/lib/carousel/carousel.module.d.ts +15 -15
  446. package/lib/carousel/carousel.service.d.ts +14 -14
  447. package/lib/carousel/index.d.ts +1 -1
  448. package/lib/carousel/public_api.d.ts +8 -8
  449. package/lib/collapse/collapse.animations.d.ts +4 -4
  450. package/lib/collapse/collapse.directive.d.ts +65 -65
  451. package/lib/collapse/collapse.module.d.ts +10 -10
  452. package/lib/collapse/index.d.ts +1 -1
  453. package/lib/collapse/public_api.d.ts +2 -2
  454. package/lib/coreui.types.d.ts +45 -45
  455. package/lib/date-picker/date-picker.component.d.ts +18 -18
  456. package/lib/date-picker/date-picker.module.d.ts +16 -16
  457. package/lib/date-picker/index.d.ts +1 -1
  458. package/lib/date-picker/public_api.d.ts +3 -3
  459. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +240 -240
  460. package/lib/date-range-picker/date-range-picker.module.d.ts +15 -15
  461. package/lib/date-range-picker/index.d.ts +1 -1
  462. package/lib/date-range-picker/public_api.d.ts +2 -2
  463. package/lib/dropdown/dropdown/dropdown.component.d.ts +135 -135
  464. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +26 -26
  465. package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +7 -7
  466. package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +7 -7
  467. package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +7 -7
  468. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +36 -36
  469. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +36 -36
  470. package/lib/dropdown/dropdown.module.d.ts +14 -14
  471. package/lib/dropdown/dropdown.service.d.ts +13 -13
  472. package/lib/dropdown/index.d.ts +1 -1
  473. package/lib/dropdown/public_api.d.ts +9 -9
  474. package/lib/element-cover/element-cover.component.d.ts +27 -27
  475. package/lib/element-cover/element-cover.module.d.ts +9 -9
  476. package/lib/element-cover/index.d.ts +1 -1
  477. package/lib/element-cover/public_api.d.ts +2 -2
  478. package/lib/footer/footer.component.d.ts +18 -18
  479. package/lib/footer/footer.module.d.ts +8 -8
  480. package/lib/footer/index.d.ts +1 -1
  481. package/lib/footer/public_api.d.ts +2 -2
  482. package/lib/form/form/form.directive.d.ts +17 -17
  483. package/lib/form/form-check/form-check-input.directive.d.ts +31 -31
  484. package/lib/form/form-check/form-check-label.directive.d.ts +6 -6
  485. package/lib/form/form-check/form-check.component.d.ts +36 -36
  486. package/lib/form/form-control/form-control.directive.d.ts +34 -34
  487. package/lib/form/form-feedback/form-feedback.component.d.ts +18 -18
  488. package/lib/form/form-floating/form-floating.directive.d.ts +16 -16
  489. package/lib/form/form-label/form-label.directive.d.ts +16 -16
  490. package/lib/form/form-select/form-select.directive.d.ts +16 -16
  491. package/lib/form/form-text/form-text.directive.d.ts +7 -7
  492. package/lib/form/form.module.d.ts +19 -19
  493. package/lib/form/index.d.ts +1 -1
  494. package/lib/form/input-group/input-group.component.d.ts +11 -11
  495. package/lib/form/input-group-text/input-group-text.directive.d.ts +7 -7
  496. package/lib/form/public_api.d.ts +13 -13
  497. package/lib/grid/col.component.d.ts +6 -6
  498. package/lib/grid/col.directive.d.ts +75 -75
  499. package/lib/grid/col.type.d.ts +11 -11
  500. package/lib/grid/container.component.d.ts +20 -20
  501. package/lib/grid/container.type.d.ts +5 -5
  502. package/lib/grid/grid.module.d.ts +13 -13
  503. package/lib/grid/gutter.directive.d.ts +13 -13
  504. package/lib/grid/gutter.type.d.ts +13 -13
  505. package/lib/grid/index.d.ts +1 -1
  506. package/lib/grid/public_api.d.ts +7 -7
  507. package/lib/grid/row.component.d.ts +6 -6
  508. package/lib/grid/row.directive.d.ts +37 -37
  509. package/lib/grid/row.type.d.ts +9 -9
  510. package/lib/header/header/header.component.d.ts +25 -25
  511. package/lib/header/header-brand/header-brand.component.d.ts +12 -12
  512. package/lib/header/header-divider/header-divider.component.d.ts +6 -6
  513. package/lib/header/header-nav/header-nav.component.d.ts +12 -12
  514. package/lib/header/header-text/header-text.component.d.ts +6 -6
  515. package/lib/header/header-toggler/header-toggler.directive.d.ts +25 -25
  516. package/lib/header/header.module.d.ts +13 -13
  517. package/lib/header/index.d.ts +1 -1
  518. package/lib/header/public_api.d.ts +7 -7
  519. package/lib/image/img.directive.d.ts +42 -42
  520. package/lib/image/img.module.d.ts +8 -8
  521. package/lib/image/index.d.ts +1 -1
  522. package/lib/image/public_api.d.ts +2 -2
  523. package/lib/list-group/index.d.ts +1 -1
  524. package/lib/list-group/list-group-item.directive.d.ts +33 -33
  525. package/lib/list-group/list-group.directive.d.ts +21 -21
  526. package/lib/list-group/list-group.module.d.ts +9 -9
  527. package/lib/list-group/public_api.d.ts +3 -3
  528. package/lib/loading-button/index.d.ts +1 -1
  529. package/lib/loading-button/loading-button.component.d.ts +43 -43
  530. package/lib/loading-button/loading-button.module.d.ts +9 -9
  531. package/lib/loading-button/public_api.d.ts +2 -2
  532. package/lib/modal/index.d.ts +1 -1
  533. package/lib/modal/modal/modal.component.d.ts +104 -104
  534. package/lib/modal/modal-body/modal-body.component.d.ts +6 -6
  535. package/lib/modal/modal-content/modal-content.component.d.ts +7 -7
  536. package/lib/modal/modal-dialog/modal-dialog.component.d.ts +25 -25
  537. package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +13 -13
  538. package/lib/modal/modal-footer/modal-footer.component.d.ts +6 -6
  539. package/lib/modal/modal-header/modal-header.component.d.ts +6 -6
  540. package/lib/modal/modal-title/modal-title.directive.d.ts +6 -6
  541. package/lib/modal/modal.module.d.ts +16 -16
  542. package/lib/modal/modal.service.d.ts +15 -15
  543. package/lib/modal/public_api.d.ts +10 -10
  544. package/lib/multi-select/index.d.ts +1 -1
  545. package/lib/multi-select/multi-select/multi-select.component.d.ts +150 -150
  546. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +14 -14
  547. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +9 -9
  548. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +20 -20
  549. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +49 -49
  550. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +21 -21
  551. package/lib/multi-select/multi-select.module.d.ts +17 -17
  552. package/lib/multi-select/multi-select.service.d.ts +12 -12
  553. package/lib/multi-select/multi-select.type.d.ts +34 -34
  554. package/lib/multi-select/public_api.d.ts +6 -6
  555. package/lib/nav/index.d.ts +1 -1
  556. package/lib/nav/nav-item.component.d.ts +6 -6
  557. package/lib/nav/nav-link.directive.d.ts +34 -34
  558. package/lib/nav/nav.component.d.ts +16 -16
  559. package/lib/nav/nav.module.d.ts +10 -10
  560. package/lib/nav/public_api.d.ts +4 -4
  561. package/lib/navbar/index.d.ts +1 -1
  562. package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +7 -7
  563. package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +15 -15
  564. package/lib/navbar/navbar-text/navbar-text.component.d.ts +6 -6
  565. package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +33 -33
  566. package/lib/navbar/navbar.component.d.ts +39 -39
  567. package/lib/navbar/navbar.module.d.ts +13 -13
  568. package/lib/navbar/public_api.d.ts +6 -6
  569. package/lib/offcanvas/index.d.ts +1 -1
  570. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +82 -82
  571. package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +6 -6
  572. package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +6 -6
  573. package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +6 -6
  574. package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +14 -14
  575. package/lib/offcanvas/offcanvas.module.d.ts +13 -13
  576. package/lib/offcanvas/offcanvas.service.d.ts +15 -15
  577. package/lib/offcanvas/public_api.d.ts +7 -7
  578. package/lib/pagination/index.d.ts +1 -1
  579. package/lib/pagination/page-item/page-item.component.d.ts +6 -6
  580. package/lib/pagination/page-item/page-item.directive.d.ts +24 -24
  581. package/lib/pagination/page-link/page-link.directive.d.ts +6 -6
  582. package/lib/pagination/pagination/pagination.component.d.ts +22 -22
  583. package/lib/pagination/pagination.module.d.ts +11 -11
  584. package/lib/pagination/public_api.d.ts +5 -5
  585. package/lib/placeholder/index.d.ts +1 -1
  586. package/lib/placeholder/placeholder-animation.directive.d.ts +18 -18
  587. package/lib/placeholder/placeholder.directive.d.ts +22 -22
  588. package/lib/placeholder/placeholder.module.d.ts +9 -9
  589. package/lib/placeholder/public_api.d.ts +3 -3
  590. package/lib/popover/index.d.ts +1 -1
  591. package/lib/popover/popover/popover.component.d.ts +30 -30
  592. package/lib/popover/popover.directive.d.ts +58 -58
  593. package/lib/popover/popover.module.d.ts +9 -9
  594. package/lib/popover/public_api.d.ts +3 -3
  595. package/lib/progress/index.d.ts +1 -1
  596. package/lib/progress/progress-bar.component.d.ts +52 -52
  597. package/lib/progress/progress-bar.d.ts +10 -10
  598. package/lib/progress/progress.component.d.ts +32 -32
  599. package/lib/progress/progress.module.d.ts +9 -9
  600. package/lib/progress/public_api.d.ts +4 -4
  601. package/lib/services/class-toggle.service.d.ts +11 -11
  602. package/lib/services/index.d.ts +1 -1
  603. package/lib/services/intersection.service.d.ts +22 -22
  604. package/lib/services/listeners.service.d.ts +19 -19
  605. package/lib/services/public_api.d.ts +2 -2
  606. package/lib/shared/html-attr.directive.d.ts +16 -16
  607. package/lib/shared/index.d.ts +1 -1
  608. package/lib/shared/public_api.d.ts +3 -3
  609. package/lib/shared/shared.module.d.ts +11 -11
  610. package/lib/shared/template-id.directive.d.ts +9 -9
  611. package/lib/sidebar/index.d.ts +1 -1
  612. package/lib/sidebar/public_api.d.ts +9 -9
  613. package/lib/sidebar/sidebar/sidebar.component.d.ts +85 -85
  614. package/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.d.ts +16 -16
  615. package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +12 -12
  616. package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +7 -7
  617. package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +7 -7
  618. package/lib/sidebar/sidebar-nav/index.d.ts +1 -1
  619. package/lib/sidebar/sidebar-nav/public_api.d.ts +12 -12
  620. package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +7 -7
  621. package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +7 -7
  622. package/lib/sidebar/sidebar-nav/sidebar-nav-group.service.d.ts +14 -14
  623. package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +7 -7
  624. package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +10 -10
  625. package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +18 -18
  626. package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +34 -34
  627. package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +7 -7
  628. package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +15 -15
  629. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +59 -59
  630. package/lib/sidebar/sidebar-nav/sidebar-nav.d.ts +53 -53
  631. package/lib/sidebar/sidebar-nav/sidebar-nav.service.d.ts +20 -20
  632. package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +25 -25
  633. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +7 -7
  634. package/lib/sidebar/sidebar.module.d.ts +25 -25
  635. package/lib/sidebar/sidebar.service.d.ts +19 -19
  636. package/lib/smart-pagination/index.d.ts +1 -1
  637. package/lib/smart-pagination/public_api.d.ts +2 -2
  638. package/lib/smart-pagination/smart-pagination.component.d.ts +109 -109
  639. package/lib/smart-pagination/smart-pagination.module.d.ts +9 -9
  640. package/lib/smart-pagination/smart-pagination.type.d.ts +79 -79
  641. package/lib/smart-table/index.d.ts +1 -1
  642. package/lib/smart-table/public_api.d.ts +4 -3
  643. package/lib/smart-table/smart-table/smart-table.component.d.ts +145 -144
  644. package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +11 -11
  645. package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +24 -24
  646. package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +16 -16
  647. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +45 -45
  648. package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +14 -14
  649. package/lib/smart-table/smart-table.module.d.ts +22 -22
  650. package/lib/smart-table/smart-table.type.d.ts +275 -275
  651. package/lib/spinner/index.d.ts +1 -1
  652. package/lib/spinner/public_api.d.ts +2 -2
  653. package/lib/spinner/spinner.component.d.ts +31 -31
  654. package/lib/spinner/spinner.module.d.ts +9 -9
  655. package/lib/table/index.d.ts +1 -1
  656. package/lib/table/public_api.d.ts +4 -4
  657. package/lib/table/table-active.directive.d.ts +16 -16
  658. package/lib/table/table-color.directive.d.ts +12 -12
  659. package/lib/table/table.directive.d.ts +90 -90
  660. package/lib/table/table.module.d.ts +10 -10
  661. package/lib/table/table.type.d.ts +76 -76
  662. package/lib/tabs/index.d.ts +1 -1
  663. package/lib/tabs/public_api.d.ts +5 -5
  664. package/lib/tabs/tab-content/tab-content.component.d.ts +33 -33
  665. package/lib/tabs/tab-content-ref.directive.d.ts +50 -50
  666. package/lib/tabs/tab-pane/tab-pane.component.d.ts +26 -26
  667. package/lib/tabs/tab.service.d.ts +14 -14
  668. package/lib/tabs/tabs.module.d.ts +10 -10
  669. package/lib/time-picker/index.d.ts +1 -1
  670. package/lib/time-picker/public_api.d.ts +2 -2
  671. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -39
  672. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -38
  673. package/lib/time-picker/time-picker.component.d.ts +196 -196
  674. package/lib/time-picker/time-picker.module.d.ts +14 -14
  675. package/lib/time-picker/time.utils.d.ts +57 -57
  676. package/lib/toast/index.d.ts +1 -1
  677. package/lib/toast/public_api.d.ts +8 -8
  678. package/lib/toast/toast/toast.component.d.ts +84 -84
  679. package/lib/toast/toast-body/toast-body.component.d.ts +9 -9
  680. package/lib/toast/toast-close.directive.d.ts +10 -10
  681. package/lib/toast/toast-header/toast-header.component.d.ts +14 -14
  682. package/lib/toast/toast.module.d.ts +14 -14
  683. package/lib/toast/toaster/toaster-host.directive.d.ts +8 -8
  684. package/lib/toast/toaster/toaster.component.d.ts +55 -55
  685. package/lib/toast/toaster/toaster.service.d.ts +16 -16
  686. package/lib/tooltip/index.d.ts +1 -1
  687. package/lib/tooltip/public_api.d.ts +3 -3
  688. package/lib/tooltip/tooltip/tooltip.component.d.ts +30 -30
  689. package/lib/tooltip/tooltip.directive.d.ts +58 -58
  690. package/lib/tooltip/tooltip.module.d.ts +9 -9
  691. package/lib/utilities/align.directive.d.ts +12 -12
  692. package/lib/utilities/bg-color.directive.d.ts +17 -17
  693. package/lib/utilities/border.directive.d.ts +12 -12
  694. package/lib/utilities/border.type.d.ts +15 -15
  695. package/lib/utilities/index.d.ts +1 -1
  696. package/lib/utilities/public_api.d.ts +6 -6
  697. package/lib/utilities/rounded.directive.d.ts +12 -12
  698. package/lib/utilities/rounded.type.d.ts +12 -12
  699. package/lib/utilities/text-color.directive.d.ts +13 -13
  700. package/lib/utilities/utilities.module.d.ts +12 -12
  701. package/lib/widget/index.d.ts +1 -1
  702. package/lib/widget/public_api.d.ts +7 -7
  703. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +37 -37
  704. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +47 -47
  705. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +58 -58
  706. package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +31 -31
  707. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +24 -24
  708. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +77 -77
  709. package/lib/widget/widget.module.d.ts +15 -15
  710. package/package.json +1 -1
  711. package/public-api.d.ts +46 -46
@@ -1,645 +1,645 @@
1
- import { isValid } from 'date-fns';
2
- export const getSupportedLocale = (locale = 'default') => {
3
- let supportedLocale;
4
- try {
5
- supportedLocale = Intl.DateTimeFormat.supportedLocalesOf(locale).length ? locale : 'default';
6
- }
7
- catch (e) {
8
- supportedLocale = 'default';
9
- }
10
- return supportedLocale;
11
- };
12
- export const isHour12 = (locale = 'default') => {
13
- const supportedLocale = getSupportedLocale(locale);
14
- const hour12 = Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).resolvedOptions().hour12;
15
- return hour12 ?? false;
16
- };
17
- export const convert12hTo24h = (abbr, hour) => {
18
- if (abbr === 'am' && hour === 12) {
19
- return 0;
20
- }
21
- if (abbr === 'am') {
22
- return hour;
23
- }
24
- if (abbr === 'pm' && hour === 12) {
25
- return 12;
26
- }
27
- return hour + 12;
28
- };
29
- export const convert24hTo12h = (hour) => hour % 12 || 12;
30
- export const convertTimeToDate = (time) => time ? (time instanceof Date ? new Date(time) : new Date(`1970-01-01 ${time}`)) : null;
31
- // export const getAmPm = (date: Date, locale: string) => {
32
- // if (date.toLocaleTimeString(locale).includes('AM')) {
33
- // return 'am'
34
- // }
35
- // if (date.toLocaleTimeString(locale).includes('PM')) {
36
- // return 'pm'
37
- // }
38
- // return date.getHours() >= 12 ? 'pm' : 'am'
39
- // }
40
- export const getAmPm = (date, locale, options = {}) => {
41
- const dayPeriods = getDayPeriods('en-US', options);
42
- const time = new Intl.DateTimeFormat('en-US', { timeStyle: "short", hour12: true }).format(date);
43
- const dayPeriod = dayPeriods.find(element => time.includes(element.label));
44
- return (dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));
45
- };
46
- export const isAm = (date) => {
47
- return date.getHours() < 12;
48
- };
49
- export const isPm = (date) => {
50
- return date.getHours() > 11;
51
- };
52
- export const isValidTimeZone = (timeZone) => {
53
- try {
54
- if (timeZone === undefined) {
55
- return false;
56
- }
57
- if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {
58
- throw new Error('Time zones not supported.');
59
- }
60
- if (typeof timeZone !== 'string') {
61
- throw new Error(`Invalid timeZone type specified: ${timeZone}`);
62
- }
63
- try {
64
- // throws an error if timezone is not valid
65
- Intl.DateTimeFormat(undefined, { timeZone: timeZone });
66
- }
67
- catch (error) {
68
- throw new Error(`Invalid timeZone string specified: ${timeZone}`);
69
- }
70
- return true;
71
- }
72
- catch (error) {
73
- console.warn(error);
74
- return false;
75
- }
76
- };
77
- export const getListOfHours = (locale, options = {}) => {
78
- const hour12 = isHour12(locale);
79
- const time = new Date(0);
80
- return Array.from({ length: 24 }, (_, i) => {
81
- time.setHours(i);
82
- const dayPeriod = getAmPm(time, locale);
83
- return {
84
- value: i,
85
- dayPeriod: dayPeriod,
86
- label: time.toLocaleTimeString(locale, {
87
- hour: '2-digit',
88
- hour12: hour12,
89
- minute: '2-digit',
90
- second: '2-digit',
91
- }).split(':')[0],
92
- };
93
- });
94
- };
95
- export const getListOfMinutes = (locale, options = {}, valueAsString = false) => {
96
- const d = new Date(0);
97
- return Array.from({ length: 60 }, (_, i) => {
98
- d.setMinutes(i);
99
- return {
100
- value: i,
101
- // value: valueAsString ? i.toString() : i,
102
- label: d.toLocaleTimeString(locale, {
103
- // ...options,
104
- hour: '2-digit',
105
- hour12: false,
106
- minute: '2-digit',
107
- second: '2-digit',
108
- }).split(':')[1],
109
- };
110
- });
111
- };
112
- export const getListOfSeconds = (locale, options = {}, valueAsString = false) => Array.from({ length: 60 }, (_, i) => {
113
- const d = new Date(0);
114
- d.setSeconds(i);
115
- return {
116
- value: i,
117
- // value: valueAsString ? i.toString() : i,
118
- label: d.toLocaleTimeString(locale, {
119
- // ...options,
120
- hour: '2-digit',
121
- hour12: false,
122
- minute: '2-digit',
123
- second: '2-digit',
124
- }).split(':')[2],
125
- };
126
- });
127
- export const getSelectedHour = (date, locale) => date instanceof Date ? (isHour12(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
128
- export const getSelectedMinutes = (date) => (date ? date.getMinutes() : '');
129
- export const getSelectedSeconds = (date) => (date ? date.getSeconds() : '');
130
- // export const isAmPm = (locale: string) =>
131
- // ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))
132
- export const isAmPm = (locale = 'default') => {
133
- const supportedLocale = getSupportedLocale(locale);
134
- const date = new Date();
135
- const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: "short" }).format(date);
136
- const isAmPm = time.match(/(?:\p{L}\p{M}\p{P}*)+|(?:\p{L}\p{P}*)+/gu) ?? [];
137
- return isAmPm.length > 0;
138
- };
139
- export const isValidTime = (time) => {
140
- if (typeof time === 'string') {
141
- return isValid(time) || isValid(new Date(`1970-01-01 ${time}`));
142
- }
143
- return isValid(time);
144
- // const d = new Date(`1970-01-01 ${time}`)
145
- // return d instanceof Date && d.getTime()
146
- };
147
- // export const _getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {
148
- // const supportedLocale = getSupportedLocale(locale);
149
- //
150
- // const dayPeriods = { am: 'am', pm: 'pm' };
151
- //
152
- // const hour12 = isHour12(supportedLocale);
153
- // if (!hour12) {
154
- // return dayPeriods;
155
- // }
156
- //
157
- // const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
158
- // const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
159
- //
160
- // const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
161
- // dayPeriods.am = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
162
- // dayPeriods.pm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm'
163
- // return dayPeriods;
164
- // };
165
- export const getDayPeriods = (locale = 'default', options = {}) => {
166
- const supportedLocale = getSupportedLocale(locale);
167
- const dayPeriods = [
168
- { value: 'am', label: 'am' },
169
- { value: 'pm', label: 'pm' },
170
- ];
171
- const hour12 = isHour12(supportedLocale);
172
- if (!hour12) {
173
- return dayPeriods;
174
- }
175
- const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
176
- const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
177
- const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
178
- const formattedAm = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
179
- const formattedPm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm';
180
- dayPeriods.forEach((element, index, dayPeriods) => {
181
- dayPeriods[index].label = element.value === 'am' ? (formattedAm ?? 'am') : (formattedPm ?? 'pm');
182
- });
183
- return dayPeriods;
184
- };
185
- // testing
186
- // const langs = [
187
- // ['Abkhazian', 'ab'],
188
- // ['Afar', 'aa'],
189
- // ['Afrikaans', 'af'],
190
- // ['Akan', 'ak'],
191
- // ['Albanian', 'sq'],
192
- // ['Amharic', 'am'],
193
- // ['Arabic', 'ar'],
194
- // ['Aragonese', 'an'],
195
- // ['Argentina', 'es-ar'],
196
- // ['Armenian', 'hy'],
197
- // ['Assamese', 'as'],
198
- // ['Avaric', 'av'],
199
- // ['Avestan', 'ae'],
200
- // ['Aymara', 'ay'],
201
- // ['Azerbaijani', 'az'],
202
- // ['Bambara', 'bm'],
203
- // ['Bashkir', 'ba'],
204
- // ['Basque', 'eu'],
205
- // ['Belarusian', 'be'],
206
- // ['Bengali (Bangla)', 'bn'],
207
- // ['Bihari', 'bh'],
208
- // ['Bislama', 'bi'],
209
- // ['Bosnian', 'bs'],
210
- // ['Breton', 'br'],
211
- // ['Bulgarian', 'bg'],
212
- // ['Burmese', 'my'],
213
- // ['Catalan', 'ca'],
214
- // ['Chamorro', 'ch'],
215
- // ['Chechen', 'ce'],
216
- // ['Chichewa, Chewa, Nyanja', 'ny'],
217
- // ['Chinese', 'zh'],
218
- // ['Chinese (Simplified)', 'zh-Hans'],
219
- // ['Chinese (Traditional)', 'zh-Hant'],
220
- // ['Chuvash', 'cv'],
221
- // ['Cornish', 'kw'],
222
- // ['Corsican', 'co'],
223
- // ['Cree', 'cr'],
224
- // ['Croatian', 'hr'],
225
- // ['Czech', 'cs'],
226
- // ['Danish', 'da'],
227
- // ['Divehi, Dhivehi, Maldivian', 'dv'],
228
- // ['Dutch', 'nl'],
229
- // ['Dzongkha', 'dz'],
230
- // ['English', 'en'],
231
- // ['Esperanto', 'eo'],
232
- // ['Estonian', 'et'],
233
- // ['Ewe', 'ee'],
234
- // ['Faroese', 'fo'],
235
- // ['Fijian', 'fj'],
236
- // ['Finnish', 'fi'],
237
- // ['French', 'fr'],
238
- // ['Fula, Fulah, Pulaar, Pular', 'ff'],
239
- // ['Galician', 'gl'],
240
- // ['Gaelic (Scottish)', 'gd'],
241
- // ['Gaelic (Manx)', 'gv'],
242
- // ['Georgian', 'ka'],
243
- // ['German', 'de'],
244
- // ['Greek', 'el'],
245
- // ['Greenlandic', 'kl'],
246
- // ['Guarani', 'gn'],
247
- // ['Gujarati', 'gu'],
248
- // ['Haitian Creole', 'ht'],
249
- // ['Hausa', 'ha'],
250
- // ['Hebrew', 'he'],
251
- // ['Herero', 'hz'],
252
- // ['Hindi', 'hi'],
253
- // ['Hiri Motu', 'ho'],
254
- // ['Hungarian', 'hu'],
255
- // ['Icelandic', 'is'],
256
- // ['Ido', 'io'],
257
- // ['Igbo', 'ig'],
258
- // ['Indonesian', 'id', 'in'],
259
- // ['Interlingua', 'ia'],
260
- // ['Interlingue', 'ie'],
261
- // ['Inuktitut', 'iu'],
262
- // ['Inupiak', 'ik'],
263
- // ['Irish', 'ga'],
264
- // ['Italian', 'it'],
265
- // ['Japanese', 'ja'],
266
- // ['Javanese', 'jv'],
267
- // ['Kalaallisut, Greenlandic', 'kl'],
268
- // ['Kannada', 'kn'],
269
- // ['Kanuri', 'kr'],
270
- // ['Kashmiri', 'ks'],
271
- // ['Kazakh', 'kk'],
272
- // ['Khmer', 'km'],
273
- // ['Kikuyu', 'ki'],
274
- // ['Kinyarwanda (Rwanda)', 'rw'],
275
- // ['Kirundi', 'rn'],
276
- // ['Kyrgyz', 'ky'],
277
- // ['Komi', 'kv'],
278
- // ['Kongo', 'kg'],
279
- // ['Korean', 'ko'],
280
- // ['Kurdish', 'ku'],
281
- // ['Kwanyama', 'kj'],
282
- // ['Lao', 'lo'],
283
- // ['Latin', 'la'],
284
- // ['Latvian (Lettish)', 'lv'],
285
- // ['Limburgish (Limburger)', 'li'],
286
- // ['Lingala', 'ln'],
287
- // ['Lithuanian', 'lt'],
288
- // ['Luga-Katanga', 'lu'],
289
- // ['Luganda, Ganda', 'lg'],
290
- // ['Luxembourgish', 'lb'],
291
- // ['Manx', 'gv'],
292
- // ['Macedonian', 'mk'],
293
- // ['Malagasy', 'mg'],
294
- // ['Malay', 'ms'],
295
- // ['Malayalam', 'ml'],
296
- // ['Maltese', 'mt'],
297
- // ['Maori', 'mi'],
298
- // ['Marathi', 'mr'],
299
- // ['Marshallese', 'mh'],
300
- // ['Moldavian', 'mo'],
301
- // ['Mongolian', 'mn'],
302
- // ['Nauru', 'na'],
303
- // ['Navajo', 'nv'],
304
- // ['Ndonga', 'ng'],
305
- // ['Northern Ndebele', 'nd'],
306
- // ['Nepali', 'ne'],
307
- // ['Norwegian', 'no'],
308
- // ['Norwegian bokmål', 'nb'],
309
- // ['Norwegian nynorsk', 'nn'],
310
- // ['Nuosu', 'ii'],
311
- // ['Occitan', 'oc'],
312
- // ['Ojibwe', 'oj'],
313
- // ['Old Church Slavonic, Old Bulgarian', 'cu'],
314
- // ['Oriya', 'or'],
315
- // ['Oromo (Afaan Oromo)', 'om'],
316
- // ['Ossetian', 'os'],
317
- // ['Pāli', 'pi'],
318
- // ['Pashto, Pushto', 'ps'],
319
- // ['Persian (Farsi)', 'fa'],
320
- // ['Polish', 'pl'],
321
- // ['Portuguese', 'pt'],
322
- // ['Punjabi (Eastern)', 'pa'],
323
- // ['Quechua', 'qu'],
324
- // ['Romansh', 'rm'],
325
- // ['Romanian', 'ro'],
326
- // ['Russian', 'ru'],
327
- // ['Sami', 'se'],
328
- // ['Samoan', 'sm'],
329
- // ['Sango', 'sg'],
330
- // ['Sanskrit', 'sa'],
331
- // ['Serbian', 'sr'],
332
- // ['Serbo-Croatian', 'sh'],
333
- // ['Sesotho', 'st'],
334
- // ['Setswana', 'tn'],
335
- // ['Shona', 'sn'],
336
- // ['Sichuan Yi', 'ii'],
337
- // ['Sindhi', 'sd'],
338
- // ['Sinhalese', 'si'],
339
- // ['Siswati', 'ss'],
340
- // ['Slovak', 'sk'],
341
- // ['Slovenian', 'sl'],
342
- // ['Somali', 'so'],
343
- // ['Southern Ndebele', 'nr'],
344
- // ['Spanish', 'es'],
345
- // ['Sundanese', 'su'],
346
- // ['Swahili (Kiswahili)', 'sw'],
347
- // ['Swati', 'ss'],
348
- // ['Swedish', 'sv'],
349
- // ['Tagalog', 'tl'],
350
- // ['Tahitian', 'ty'],
351
- // ['Tajik', 'tg'],
352
- // ['Tamil', 'ta'],
353
- // ['Tatar', 'tt'],
354
- // ['Telugu', 'te'],
355
- // ['Thai', 'th'],
356
- // ['Tibetan', 'bo'],
357
- // ['Tigrinya', 'ti'],
358
- // ['Tonga', 'to'],
359
- // ['Tsonga', 'ts'],
360
- // ['Turkish', 'tr'],
361
- // ['Turkmen', 'tk'],
362
- // ['Twi', 'tw'],
363
- // ['Uyghur', 'ug'],
364
- // ['Ukrainian', 'uk'],
365
- // ['Urdu', 'ur'],
366
- // ['Uzbek', 'uz'],
367
- // ['Venda', 've'],
368
- // ['Vietnamese', 'vi'],
369
- // ['Volapük', 'vo'],
370
- // ['Wallon', 'wa'],
371
- // ['Welsh', 'cy'],
372
- // ['Wolof', 'wo'],
373
- // ['Western Frisian', 'fy'],
374
- // ['Xhosa', 'xh'],
375
- // ['Yiddish', 'yi', 'ji'],
376
- // ['Yoruba', 'yo'],
377
- // ['Zhuang, Chuang', 'za'],
378
- // ['Zulu', 'zu'],
379
- // ]
380
- //
381
- // langs.forEach(lang => {const period = getDayPeriods(lang[1]); if (period.am === 'AM') return; console.log(lang[1], period )})
382
- // Chrome / Opera
383
- // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
384
- // Arabic ar {am: 'ص', pm: 'م'}
385
- // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
386
- // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
387
- // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
388
- // Hindi hi {am: 'am', pm: 'pm'}
389
- // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
390
- // Korean ko {am: '오전', pm: '오후'}
391
- // Malay ms {am: 'PG', pm: 'PTG'}
392
- // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
393
- // Edge Chromium
394
- // Albanian sq {am: 'e paradites', pm: 'e pasdites'}
395
- // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
396
- // Arabic ar {am: 'ص', pm: 'م'}
397
- // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
398
- // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
399
- // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
400
- // Hindi hi {am: 'am', pm: 'pm'}
401
- // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
402
- // Korean ko {am: '오전', pm: '오후'}
403
- // Malay ms {am: 'PG', pm: 'PTG'}
404
- // Punjabi (Eastern) pa {am: 'ਪੂ.ਦੁ.', pm: 'ਬਾ.ਦੁ.'}
405
- // Sindhi sd {am: 'صبح، منجهند', pm: 'منجهند، شام'}
406
- // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
407
- // Firefox
408
- // Akan ak { am: "AN", pm: "EW" }
409
- // Albanian sq { am: "e paradites", pm: "e pasdites" }
410
- // Amharic am { am: "ጥዋት", pm: "ከሰዓት" }
411
- // Arabic ar { am: "ص", pm: "م" }
412
- // Assamese as { am: "পূৰ্বাহ্ন", pm: "অপৰাহ্ন" }
413
- // Bulgarian bg { am: "пр.об.", pm: "сл.об." }
414
- // Chinese (Traditional) zh-Hant { am: "上午", pm: "下午" }
415
- // Dzongkha dz { am: "སྔ་ཆ་", pm: "ཕྱི་ཆ་" }
416
- // Ewe ee { am: "ŋdi", pm: "ɣetrɔ" }
417
- // Greek el { am: "π.μ.", pm: "μ.μ." }
418
- // Hindi hi { am: "am", pm: "pm" }
419
- // Kannada kn { am: "ಪೂರ್ವಾಹ್ನ", pm: "ಅಪರಾಹ್ನ" }
420
- // Korean ko { am: "오전", pm: "오후" }
421
- // Malay ms { am: "PG", pm: "PTG" }
422
- // Oromo (Afaan Oromo) om { am: "WD", pm: "WB" }
423
- // Punjabi (Eastern) pa { am: "ਪੂ.ਦੁ.", pm: "ਬਾ.ਦੁ." }
424
- // Sanskrit sa { am: "पूर्वाह्न", pm: "अपराह्न" }
425
- // Sindhi sd { am: "صبح، منجهند", pm: "منجهند، شام" }
426
- // Somali so { am: "GH", pm: "GD" }
427
- // Tamil ta { am: "முற்பகல்", pm: "பிற்பகல்" }
428
- // Tigrinya ti { am: "ቅ.ቀ.", pm: "ድ.ቀ." }
429
- // Tonga to { am: "hengihengi", pm: "efiafi" }
430
- // Twi tw { am: "AN", pm: "EW" }
431
- // const formats = {
432
- // "ar-SA" : "dd/MM/yy",
433
- // "bg-BG" : "dd.M.yyyy",
434
- // "ca-ES" : "dd/MM/yyyy",
435
- // "zh-TW" : "yyyy/M/d",
436
- // "cs-CZ" : "d.M.yyyy",
437
- // "da-DK" : "dd-MM-yyyy",
438
- // "de-DE" : "dd.MM.yyyy",
439
- // "el-GR" : "d/M/yyyy",
440
- // "en-US" : "M/d/yyyy",
441
- // "fi-FI" : "d.M.yyyy",
442
- // "fr-FR" : "dd/MM/yyyy",
443
- // "he-IL" : "dd/MM/yyyy",
444
- // "hu-HU" : "yyyy. MM. dd.",
445
- // "is-IS" : "d.M.yyyy",
446
- // "it-IT" : "dd/MM/yyyy",
447
- // "ja-JP" : "yyyy/MM/dd",
448
- // "ko-KR" : "yyyy-MM-dd",
449
- // "nl-NL" : "d-M-yyyy",
450
- // "nb-NO" : "dd.MM.yyyy",
451
- // "pl-PL" : "yyyy-MM-dd",
452
- // "pt-BR" : "d/M/yyyy",
453
- // "ro-RO" : "dd.MM.yyyy",
454
- // "ru-RU" : "dd.MM.yyyy",
455
- // "hr-HR" : "d.M.yyyy",
456
- // "sk-SK" : "d. M. yyyy",
457
- // "sq-AL" : "yyyy-MM-dd",
458
- // "sv-SE" : "yyyy-MM-dd",
459
- // "th-TH" : "d/M/yyyy",
460
- // "tr-TR" : "dd.MM.yyyy",
461
- // "ur-PK" : "dd/MM/yyyy",
462
- // "id-ID" : "dd/MM/yyyy",
463
- // "uk-UA" : "dd.MM.yyyy",
464
- // "be-BY" : "dd.MM.yyyy",
465
- // "sl-SI" : "d.M.yyyy",
466
- // "et-EE" : "d.MM.yyyy",
467
- // "lv-LV" : "yyyy.MM.dd.",
468
- // "lt-LT" : "yyyy.MM.dd",
469
- // "fa-IR" : "MM/dd/yyyy",
470
- // "vi-VN" : "dd/MM/yyyy",
471
- // "hy-AM" : "dd.MM.yyyy",
472
- // "az-Latn-AZ" : "dd.MM.yyyy",
473
- // "eu-ES" : "yyyy/MM/dd",
474
- // "mk-MK" : "dd.MM.yyyy",
475
- // "af-ZA" : "yyyy/MM/dd",
476
- // "ka-GE" : "dd.MM.yyyy",
477
- // "fo-FO" : "dd-MM-yyyy",
478
- // "hi-IN" : "dd-MM-yyyy",
479
- // "ms-MY" : "dd/MM/yyyy",
480
- // "kk-KZ" : "dd.MM.yyyy",
481
- // "ky-KG" : "dd.MM.yy",
482
- // "sw-KE" : "M/d/yyyy",
483
- // "uz-Latn-UZ" : "dd/MM yyyy",
484
- // "tt-RU" : "dd.MM.yyyy",
485
- // "pa-IN" : "dd-MM-yy",
486
- // "gu-IN" : "dd-MM-yy",
487
- // "ta-IN" : "dd-MM-yyyy",
488
- // "te-IN" : "dd-MM-yy",
489
- // "kn-IN" : "dd-MM-yy",
490
- // "mr-IN" : "dd-MM-yyyy",
491
- // "sa-IN" : "dd-MM-yyyy",
492
- // "mn-MN" : "yy.MM.dd",
493
- // "gl-ES" : "dd/MM/yy",
494
- // "kok-IN" : "dd-MM-yyyy",
495
- // "syr-SY" : "dd/MM/yyyy",
496
- // "dv-MV" : "dd/MM/yy",
497
- // "ar-IQ" : "dd/MM/yyyy",
498
- // "zh-CN" : "yyyy/M/d",
499
- // "de-CH" : "dd.MM.yyyy",
500
- // "en-GB" : "dd/MM/yyyy",
501
- // "es-MX" : "dd/MM/yyyy",
502
- // "fr-BE" : "d/MM/yyyy",
503
- // "it-CH" : "dd.MM.yyyy",
504
- // "nl-BE" : "d/MM/yyyy",
505
- // "nn-NO" : "dd.MM.yyyy",
506
- // "pt-PT" : "dd-MM-yyyy",
507
- // "sr-Latn-CS" : "d.M.yyyy",
508
- // "sv-FI" : "d.M.yyyy",
509
- // "az-Cyrl-AZ" : "dd.MM.yyyy",
510
- // "ms-BN" : "dd/MM/yyyy",
511
- // "uz-Cyrl-UZ" : "dd.MM.yyyy",
512
- // "ar-EG" : "dd/MM/yyyy",
513
- // "zh-HK" : "d/M/yyyy",
514
- // "de-AT" : "dd.MM.yyyy",
515
- // "en-AU" : "d/MM/yyyy",
516
- // "es-ES" : "dd/MM/yyyy",
517
- // "fr-CA" : "yyyy-MM-dd",
518
- // "sr-Cyrl-CS" : "d.M.yyyy",
519
- // "ar-LY" : "dd/MM/yyyy",
520
- // "zh-SG" : "d/M/yyyy",
521
- // "de-LU" : "dd.MM.yyyy",
522
- // "en-CA" : "dd/MM/yyyy",
523
- // "es-GT" : "dd/MM/yyyy",
524
- // "fr-CH" : "dd.MM.yyyy",
525
- // "ar-DZ" : "dd-MM-yyyy",
526
- // "zh-MO" : "d/M/yyyy",
527
- // "de-LI" : "dd.MM.yyyy",
528
- // "en-NZ" : "d/MM/yyyy",
529
- // "es-CR" : "dd/MM/yyyy",
530
- // "fr-LU" : "dd/MM/yyyy",
531
- // "ar-MA" : "dd-MM-yyyy",
532
- // "en-IE" : "dd/MM/yyyy",
533
- // "es-PA" : "MM/dd/yyyy",
534
- // "fr-MC" : "dd/MM/yyyy",
535
- // "ar-TN" : "dd-MM-yyyy",
536
- // "en-ZA" : "yyyy/MM/dd",
537
- // "es-DO" : "dd/MM/yyyy",
538
- // "ar-OM" : "dd/MM/yyyy",
539
- // "en-JM" : "dd/MM/yyyy",
540
- // "es-VE" : "dd/MM/yyyy",
541
- // "ar-YE" : "dd/MM/yyyy",
542
- // "en-029" : "MM/dd/yyyy",
543
- // "es-CO" : "dd/MM/yyyy",
544
- // "ar-SY" : "dd/MM/yyyy",
545
- // "en-BZ" : "dd/MM/yyyy",
546
- // "es-PE" : "dd/MM/yyyy",
547
- // "ar-JO" : "dd/MM/yyyy",
548
- // "en-TT" : "dd/MM/yyyy",
549
- // "es-AR" : "dd/MM/yyyy",
550
- // "ar-LB" : "dd/MM/yyyy",
551
- // "en-ZW" : "M/d/yyyy",
552
- // "es-EC" : "dd/MM/yyyy",
553
- // "ar-KW" : "dd/MM/yyyy",
554
- // "en-PH" : "M/d/yyyy",
555
- // "es-CL" : "dd-MM-yyyy",
556
- // "ar-AE" : "dd/MM/yyyy",
557
- // "es-UY" : "dd/MM/yyyy",
558
- // "ar-BH" : "dd/MM/yyyy",
559
- // "es-PY" : "dd/MM/yyyy",
560
- // "ar-QA" : "dd/MM/yyyy",
561
- // "es-BO" : "dd/MM/yyyy",
562
- // "es-SV" : "dd/MM/yyyy",
563
- // "es-HN" : "dd/MM/yyyy",
564
- // "es-NI" : "dd/MM/yyyy",
565
- // "es-PR" : "dd/MM/yyyy",
566
- // "am-ET" : "d/M/yyyy",
567
- // "tzm-Latn-DZ" : "dd-MM-yyyy",
568
- // "iu-Latn-CA" : "d/MM/yyyy",
569
- // "sma-NO" : "dd.MM.yyyy",
570
- // "mn-Mong-CN" : "yyyy/M/d",
571
- // "gd-GB" : "dd/MM/yyyy",
572
- // "en-MY" : "d/M/yyyy",
573
- // "prs-AF" : "dd/MM/yy",
574
- // "bn-BD" : "dd-MM-yy",
575
- // "wo-SN" : "dd/MM/yyyy",
576
- // "rw-RW" : "M/d/yyyy",
577
- // "qut-GT" : "dd/MM/yyyy",
578
- // "sah-RU" : "MM.dd.yyyy",
579
- // "gsw-FR" : "dd/MM/yyyy",
580
- // "co-FR" : "dd/MM/yyyy",
581
- // "oc-FR" : "dd/MM/yyyy",
582
- // "mi-NZ" : "dd/MM/yyyy",
583
- // "ga-IE" : "dd/MM/yyyy",
584
- // "se-SE" : "yyyy-MM-dd",
585
- // "br-FR" : "dd/MM/yyyy",
586
- // "smn-FI" : "d.M.yyyy",
587
- // "moh-CA" : "M/d/yyyy",
588
- // "arn-CL" : "dd-MM-yyyy",
589
- // "ii-CN" : "yyyy/M/d",
590
- // "dsb-DE" : "d. M. yyyy",
591
- // "ig-NG" : "d/M/yyyy",
592
- // "kl-GL" : "dd-MM-yyyy",
593
- // "lb-LU" : "dd/MM/yyyy",
594
- // "ba-RU" : "dd.MM.yy",
595
- // "nso-ZA" : "yyyy/MM/dd",
596
- // "quz-BO" : "dd/MM/yyyy",
597
- // "yo-NG" : "d/M/yyyy",
598
- // "ha-Latn-NG" : "d/M/yyyy",
599
- // "fil-PH" : "M/d/yyyy",
600
- // "ps-AF" : "dd/MM/yy",
601
- // "fy-NL" : "d-M-yyyy",
602
- // "ne-NP" : "M/d/yyyy",
603
- // "se-NO" : "dd.MM.yyyy",
604
- // "iu-Cans-CA" : "d/M/yyyy",
605
- // "sr-Latn-RS" : "d.M.yyyy",
606
- // "si-LK" : "yyyy-MM-dd",
607
- // "sr-Cyrl-RS" : "d.M.yyyy",
608
- // "lo-LA" : "dd/MM/yyyy",
609
- // "km-KH" : "yyyy-MM-dd",
610
- // "cy-GB" : "dd/MM/yyyy",
611
- // "bo-CN" : "yyyy/M/d",
612
- // "sms-FI" : "d.M.yyyy",
613
- // "as-IN" : "dd-MM-yyyy",
614
- // "ml-IN" : "dd-MM-yy",
615
- // "en-IN" : "dd-MM-yyyy",
616
- // "or-IN" : "dd-MM-yy",
617
- // "bn-IN" : "dd-MM-yy",
618
- // "tk-TM" : "dd.MM.yy",
619
- // "bs-Latn-BA" : "d.M.yyyy",
620
- // "mt-MT" : "dd/MM/yyyy",
621
- // "sr-Cyrl-ME" : "d.M.yyyy",
622
- // "se-FI" : "d.M.yyyy",
623
- // "zu-ZA" : "yyyy/MM/dd",
624
- // "xh-ZA" : "yyyy/MM/dd",
625
- // "tn-ZA" : "yyyy/MM/dd",
626
- // "hsb-DE" : "d. M. yyyy",
627
- // "bs-Cyrl-BA" : "d.M.yyyy",
628
- // "tg-Cyrl-TJ" : "dd.MM.yy",
629
- // "sr-Latn-BA" : "d.M.yyyy",
630
- // "smj-NO" : "dd.MM.yyyy",
631
- // "rm-CH" : "dd/MM/yyyy",
632
- // "smj-SE" : "yyyy-MM-dd",
633
- // "quz-EC" : "dd/MM/yyyy",
634
- // "quz-PE" : "dd/MM/yyyy",
635
- // "hr-BA" : "d.M.yyyy.",
636
- // "sr-Latn-ME" : "d.M.yyyy",
637
- // "sma-SE" : "yyyy-MM-dd",
638
- // "en-SG" : "d/M/yyyy",
639
- // "ug-CN" : "yyyy-M-d",
640
- // "sr-Cyrl-BA" : "d.M.yyyy",
641
- // "es-US" : "M/d/yyyy"
642
- // };
643
- //
644
- // Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})
645
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBZ0NuQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBRSxFQUFFO0lBQy9ELElBQUksZUFBdUIsQ0FBQztJQUM1QixJQUFJO1FBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUM5RjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUM3QjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBVyxFQUFFO0lBQzlELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ25HLE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxFQUFFO0lBQ2pFLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxDQUFBO0tBQ1Q7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SUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUN2RyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUV2RyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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O0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsS0FBSztBQUNMLEVBQUU7QUFDRix5SUFBeUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYXRlVGltZUZvcm1hdE9wdGlvbnMge1xyXG4gIGxvY2FsZU1hdGNoZXI/OiBcImJlc3QgZml0XCIgfCBcImxvb2t1cFwiIHwgdW5kZWZpbmVkO1xyXG4gIHdlZWtkYXk/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XHJcbiAgZXJhPzogXCJsb25nXCIgfCBcInNob3J0XCIgfCBcIm5hcnJvd1wiIHwgdW5kZWZpbmVkO1xyXG4gIHllYXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xyXG4gIG1vbnRoPzogXCJudW1lcmljXCIgfCBcIjItZGlnaXRcIiB8IFwibG9uZ1wiIHwgXCJzaG9ydFwiIHwgXCJuYXJyb3dcIiB8IHVuZGVmaW5lZDtcclxuICBkYXk/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xyXG4gIGhvdXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xyXG4gIG1pbnV0ZT86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCB1bmRlZmluZWQ7XHJcbiAgc2Vjb25kPzogXCJudW1lcmljXCIgfCBcIjItZGlnaXRcIiB8IHVuZGVmaW5lZDtcclxuICB0aW1lWm9uZU5hbWU/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IHVuZGVmaW5lZDtcclxuICBmb3JtYXRNYXRjaGVyPzogXCJiZXN0IGZpdFwiIHwgXCJiYXNpY1wiIHwgdW5kZWZpbmVkO1xyXG4gIGhvdXIxMj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgdGltZVpvbmU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERheVBlcmlvZCA9ICgnYW0nIHwgJ3BtJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUaW1lVmFsdWUge1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBkYXlQZXJpb2Q/OiBEYXlQZXJpb2Q7XHJcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEYXlQZXJpb2RzIHtcclxuICBhbTogc3RyaW5nO1xyXG4gIHBtOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdXBwb3J0ZWRMb2NhbGUgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcpID0+IHtcclxuICBsZXQgc3VwcG9ydGVkTG9jYWxlOiBzdHJpbmc7XHJcbiAgdHJ5IHtcclxuICAgIHN1cHBvcnRlZExvY2FsZSA9IEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGxvY2FsZSkubGVuZ3RoID8gbG9jYWxlIDogJ2RlZmF1bHQnO1xyXG4gIH0gY2F0Y2ggKGUpIHtcclxuICAgIHN1cHBvcnRlZExvY2FsZSA9ICdkZWZhdWx0JztcclxuICB9XHJcbiAgcmV0dXJuIHN1cHBvcnRlZExvY2FsZTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGlzSG91cjEyID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogYm9vbGVhbiA9PiB7XHJcbiAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlID0gZ2V0U3VwcG9ydGVkTG9jYWxlKGxvY2FsZSk7XHJcbiAgY29uc3QgaG91cjEyID0gSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHt0aW1lU3R5bGU6ICdzaG9ydCd9KS5yZXNvbHZlZE9wdGlvbnMoKS5ob3VyMTI7XHJcbiAgcmV0dXJuIGhvdXIxMiA/PyBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnQxMmhUbzI0aCA9IChhYmJyOiAnYW0nIHwgJ3BtJywgaG91cjogbnVtYmVyKSA9PiB7XHJcbiAgaWYgKGFiYnIgPT09ICdhbScgJiYgaG91ciA9PT0gMTIpIHtcclxuICAgIHJldHVybiAwXHJcbiAgfVxyXG4gIGlmIChhYmJyID09PSAnYW0nKSB7XHJcbiAgICByZXR1cm4gaG91clxyXG4gIH1cclxuICBpZiAoYWJiciA9PT0gJ3BtJyAmJiBob3VyID09PSAxMikge1xyXG4gICAgcmV0dXJuIDEyXHJcbiAgfVxyXG4gIHJldHVybiBob3VyICsgMTJcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnQyNGhUbzEyaCA9IChob3VyOiBudW1iZXIpID0+IGhvdXIgJSAxMiB8fCAxMlxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUaW1lVG9EYXRlID0gKHRpbWU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxyXG4gIHRpbWUgPyAodGltZSBpbnN0YW5jZW9mIERhdGUgPyBuZXcgRGF0ZSh0aW1lKSA6IG5ldyBEYXRlKGAxOTcwLTAxLTAxICR7dGltZX1gKSkgOiBudWxsXHJcblxyXG4vLyBleHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykgPT4ge1xyXG4vLyAgIGlmIChkYXRlLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUpLmluY2x1ZGVzKCdBTScpKSB7XHJcbi8vICAgICByZXR1cm4gJ2FtJ1xyXG4vLyAgIH1cclxuLy8gICBpZiAoZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlKS5pbmNsdWRlcygnUE0nKSkge1xyXG4vLyAgICAgcmV0dXJuICdwbSdcclxuLy8gICB9XHJcbi8vICAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKSA+PSAxMiA/ICdwbScgOiAnYW0nXHJcbi8vIH1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRBbVBtID0gKGRhdGU6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSk6IERheVBlcmlvZCA9PiB7XHJcblxyXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKCdlbi1VUycsIG9wdGlvbnMpO1xyXG4gIGNvbnN0IHRpbWUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7dGltZVN0eWxlOiBcInNob3J0XCIsIGhvdXIxMjogdHJ1ZX0pLmZvcm1hdChkYXRlKTtcclxuXHJcbiAgY29uc3QgZGF5UGVyaW9kID0gZGF5UGVyaW9kcy5maW5kKGVsZW1lbnQgPT4gdGltZS5pbmNsdWRlcyhlbGVtZW50LmxhYmVsKSk7XHJcblxyXG4gIHJldHVybiA8RGF5UGVyaW9kPihkYXlQZXJpb2Q/LnZhbHVlID8/IChkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJykpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaXNBbSA9IChkYXRlOiBEYXRlKSA9PiB7XHJcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKSA8IDEyO1xyXG59XHJcbmV4cG9ydCBjb25zdCBpc1BtID0gKGRhdGU6IERhdGUpID0+IHtcclxuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID4gMTE7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZVpvbmUgPSAodGltZVpvbmU6IHVua25vd24pOiBib29sZWFuID0+IHtcclxuICB0cnkge1xyXG4gICAgaWYgKHRpbWVab25lID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghSW50bCB8fCAhSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGltZSB6b25lcyBub3Qgc3VwcG9ydGVkLicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGltZVpvbmUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSB0eXBlIHNwZWNpZmllZDogJHt0aW1lWm9uZX1gKTtcclxuICAgIH1cclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAvLyB0aHJvd3MgYW4gZXJyb3IgaWYgdGltZXpvbmUgaXMgbm90IHZhbGlkXHJcbiAgICAgIEludGwuRGF0ZVRpbWVGb3JtYXQodW5kZWZpbmVkLCB7IHRpbWVab25lOiB0aW1lWm9uZSB9KTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSBzdHJpbmcgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLndhcm4oZXJyb3IpO1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMaXN0T2ZIb3VycyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pID0+IHtcclxuICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihsb2NhbGUpO1xyXG4gIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgwKTtcclxuICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjQgfSwgKF8sIGkpID0+IHtcclxuICAgIHRpbWUuc2V0SG91cnMoaSk7XHJcbiAgICBjb25zdCBkYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIGxvY2FsZSk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWx1ZTogaSxcclxuICAgICAgZGF5UGVyaW9kOiA8RGF5UGVyaW9kPmRheVBlcmlvZCxcclxuICAgICAgbGFiZWw6IHRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xyXG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcclxuICAgICAgICBob3VyMTI6IGhvdXIxMixcclxuICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcclxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcclxuICAgICAgfSkuc3BsaXQoJzonKVswXSxcclxuICAgIH1cclxuICB9KVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mTWludXRlcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sIHZhbHVlQXNTdHJpbmcgPSBmYWxzZSkgPT4ge1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgwKTtcclxuICByZXR1cm4gQXJyYXkuZnJvbSh7IGxlbmd0aDogNjAgfSwgKF8sIGkpID0+IHtcclxuICAgIGQuc2V0TWludXRlcyhpKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdmFsdWU6IGksXHJcbiAgICAgIC8vIHZhbHVlOiB2YWx1ZUFzU3RyaW5nID8gaS50b1N0cmluZygpIDogaSxcclxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xyXG4gICAgICAgIC8vIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXHJcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXHJcbiAgICAgIH0pLnNwbGl0KCc6JylbMV0sXHJcbiAgICB9XHJcbiAgfSlcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldExpc3RPZlNlY29uZHMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9LCAgdmFsdWVBc1N0cmluZyA9IGZhbHNlKSA9PlxyXG4gIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XHJcbiAgICBjb25zdCBkID0gbmV3IERhdGUoMClcclxuICAgIGQuc2V0U2Vjb25kcyhpKVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdmFsdWU6IGksXHJcbiAgICAgIC8vIHZhbHVlOiB2YWx1ZUFzU3RyaW5nID8gaS50b1N0cmluZygpIDogaSxcclxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xyXG4gICAgICAgIC8vIC4uLm9wdGlvbnMsXHJcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxyXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXHJcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXHJcbiAgICAgICAgc2Vjb25kOiAnMi1kaWdpdCcsXHJcbiAgICAgIH0pLnNwbGl0KCc6JylbMl0sXHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZEhvdXIgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIGxvY2FsZTogc3RyaW5nKSA9PlxyXG4gIGRhdGUgaW5zdGFuY2VvZiBEYXRlID8gKGlzSG91cjEyKGxvY2FsZSkgPyBjb252ZXJ0MjRoVG8xMmgoZGF0ZS5nZXRIb3VycygpKSA6IGRhdGUuZ2V0SG91cnMoKSkgOiAnJztcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZE1pbnV0ZXMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRNaW51dGVzKCkgOiAnJylcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFNlY29uZHMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRTZWNvbmRzKCkgOiAnJylcclxuXHJcbi8vIGV4cG9ydCBjb25zdCBpc0FtUG0gPSAobG9jYWxlOiBzdHJpbmcpID0+XHJcbi8vICAgWydhbScsICdBTScsICdwbScsICdQTSddLnNvbWUoKGVsKSA9PiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoZWwpKVxyXG5cclxuZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JykgPT4ge1xyXG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xyXG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIGNvbnN0IHRpbWUgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHt0aW1lU3R5bGU6IFwic2hvcnRcIn0pLmZvcm1hdChkYXRlKTtcclxuICBjb25zdCBpc0FtUG0gPSB0aW1lLm1hdGNoKC8oPzpcXHB7TH1cXHB7TX1cXHB7UH0qKSt8KD86XFxwe0x9XFxwe1B9KikrL2d1KSA/PyBbXTtcclxuICByZXR1cm4gaXNBbVBtLmxlbmd0aCA+IDA7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZSA9ICh0aW1lOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyIHwgYW55KSA9PiB7XHJcbiAgaWYgKHR5cGVvZiB0aW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgcmV0dXJuIGlzVmFsaWQodGltZSkgfHwgaXNWYWxpZChuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpO1xyXG4gIH1cclxuICByZXR1cm4gaXNWYWxpZCh0aW1lKTtcclxuICAvLyBjb25zdCBkID0gbmV3IERhdGUoYDE5NzAtMDEtMDEgJHt0aW1lfWApXHJcbiAgLy8gcmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlICYmIGQuZ2V0VGltZSgpXHJcbn1cclxuXHJcbi8vIGV4cG9ydCBjb25zdCBfZ2V0RGF5UGVyaW9kcyA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0Jywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pID0+IHtcclxuLy8gICBjb25zdCBzdXBwb3J0ZWRMb2NhbGUgPSBnZXRTdXBwb3J0ZWRMb2NhbGUobG9jYWxlKTtcclxuLy9cclxuLy8gICBjb25zdCBkYXlQZXJpb2RzID0geyBhbTogJ2FtJywgcG06ICdwbScgfTtcclxuLy9cclxuLy8gICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xyXG4vLyAgIGlmICghaG91cjEyKSB7XHJcbi8vICAgICByZXR1cm4gZGF5UGVyaW9kcztcclxuLy8gICB9XHJcbi8vXHJcbi8vICAgY29uc3QgYW0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAwLCAwLCAwKSk7XHJcbi8vICAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xyXG4vL1xyXG4vLyAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwgeyBob3VyMTI6IGhvdXIxMiwgaG91cjogJ251bWVyaWMnLCB0aW1lWm9uZTogJ1VUQycgfSk7XHJcbi8vICAgZGF5UGVyaW9kcy5hbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XHJcbi8vICAgZGF5UGVyaW9kcy5wbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKHBtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdwbSdcclxuLy8gICByZXR1cm4gZGF5UGVyaW9kcztcclxuLy8gfTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXREYXlQZXJpb2RzID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSkgPT4ge1xyXG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xyXG5cclxuICBjb25zdCBkYXlQZXJpb2RzID0gW1xyXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcclxuICAgIHsgdmFsdWU6ICdwbScsIGxhYmVsOiAncG0nIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgaG91cjEyID0gaXNIb3VyMTIoc3VwcG9ydGVkTG9jYWxlKTtcclxuICBpZiAoIWhvdXIxMikge1xyXG4gICAgcmV0dXJuIGRheVBlcmlvZHM7XHJcbiAgfVxyXG5cclxuICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcclxuICBjb25zdCBwbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDEzLCAwLCAwKSk7XHJcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcclxuICBjb25zdCBmb3JtYXR0ZWRBbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XHJcbiAgY29uc3QgZm9ybWF0dGVkUG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nO1xyXG5cclxuICBkYXlQZXJpb2RzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4LCBkYXlQZXJpb2RzKSA9PiB7XHJcbiAgICBkYXlQZXJpb2RzW2luZGV4XS5sYWJlbCA9IGVsZW1lbnQudmFsdWUgPT09ICdhbScgPyAoZm9ybWF0dGVkQW0gPz8gJ2FtJykgOiAoZm9ybWF0dGVkUG0gPz8gJ3BtJyk7XHJcbiAgfSlcclxuXHJcbiAgcmV0dXJuIGRheVBlcmlvZHM7XHJcbn07XHJcblxyXG5cclxuXHJcbi8vIHRlc3RpbmdcclxuLy8gY29uc3QgbGFuZ3MgPSBbXHJcbi8vICAgWydBYmtoYXppYW4nLCAnYWInXSxcclxuLy8gICBbJ0FmYXInLCAnYWEnXSxcclxuLy8gICBbJ0FmcmlrYWFucycsICdhZiddLFxyXG4vLyAgIFsnQWthbicsICdhayddLFxyXG4vLyAgIFsnQWxiYW5pYW4nLCAnc3EnXSxcclxuLy8gICBbJ0FtaGFyaWMnLCAnYW0nXSxcclxuLy8gICBbJ0FyYWJpYycsICdhciddLFxyXG4vLyAgIFsnQXJhZ29uZXNlJywgJ2FuJ10sXHJcbi8vICAgWydBcmdlbnRpbmEnLCAnZXMtYXInXSxcclxuLy8gICBbJ0FybWVuaWFuJywgJ2h5J10sXHJcbi8vICAgWydBc3NhbWVzZScsICdhcyddLFxyXG4vLyAgIFsnQXZhcmljJywgJ2F2J10sXHJcbi8vICAgWydBdmVzdGFuJywgJ2FlJ10sXHJcbi8vICAgWydBeW1hcmEnLCAnYXknXSxcclxuLy8gICBbJ0F6ZXJiYWlqYW5pJywgJ2F6J10sXHJcbi8vICAgWydCYW1iYXJhJywgJ2JtJ10sXHJcbi8vICAgWydCYXNoa2lyJywgJ2JhJ10sXHJcbi8vICAgWydCYXNxdWUnLCAnZXUnXSxcclxuLy8gICBbJ0JlbGFydXNpYW4nLCAnYmUnXSxcclxuLy8gICBbJ0JlbmdhbGkgKEJhbmdsYSknLCAnYm4nXSxcclxuLy8gICBbJ0JpaGFyaScsICdiaCddLFxyXG4vLyAgIFsnQmlzbGFtYScsICdiaSddLFxyXG4vLyAgIFsnQm9zbmlhbicsICdicyddLFxyXG4vLyAgIFsnQnJldG9uJywgJ2JyJ10sXHJcbi8vICAgWydCdWxnYXJpYW4nLCAnYmcnXSxcclxuLy8gICBbJ0J1cm1lc2UnLCAnbXknXSxcclxuLy8gICBbJ0NhdGFsYW4nLCAnY2EnXSxcclxuLy8gICBbJ0NoYW1vcnJvJywgJ2NoJ10sXHJcbi8vICAgWydDaGVjaGVuJywgJ2NlJ10sXHJcbi8vICAgWydDaGljaGV3YSwgQ2hld2EsIE55YW5qYScsICdueSddLFxyXG4vLyAgIFsnQ2hpbmVzZScsICd6aCddLFxyXG4vLyAgIFsnQ2hpbmVzZSAoU2ltcGxpZmllZCknLCAnemgtSGFucyddLFxyXG4vLyAgIFsnQ2hpbmVzZSAoVHJhZGl0aW9uYWwpJywgJ3poLUhhbnQnXSxcclxuLy8gICBbJ0NodXZhc2gnLCAnY3YnXSxcclxuLy8gICBbJ0Nvcm5pc2gnLCAna3cnXSxcclxuLy8gICBbJ0NvcnNpY2FuJywgJ2NvJ10sXHJcbi8vICAgWydDcmVlJywgJ2NyJ10sXHJcbi8vICAgWydDcm9hdGlhbicsICdociddLFxyXG4vLyAgIFsnQ3plY2gnLCAnY3MnXSxcclxuLy8gICBbJ0RhbmlzaCcsICdkYSddLFxyXG4vLyAgIFsnRGl2ZWhpLCBEaGl2ZWhpLCBNYWxkaXZpYW4nLCAnZHYnXSxcclxuLy8gICBbJ0R1dGNoJywgJ25sJ10sXHJcbi8vICAgWydEem9uZ2toYScsICdkeiddLFxyXG4vLyAgIFsnRW5nbGlzaCcsICdlbiddLFxyXG4vLyAgIFsnRXNwZXJhbnRvJywgJ2VvJ10sXHJcbi8vICAgWydFc3RvbmlhbicsICdldCddLFxyXG4vLyAgIFsnRXdlJywgJ2VlJ10sXHJcbi8vICAgWydGYXJvZXNlJywgJ2ZvJ10sXHJcbi8vICAgWydGaWppYW4nLCAnZmonXSxcclxuLy8gICBbJ0Zpbm5pc2gnLCAnZmknXSxcclxuLy8gICBbJ0ZyZW5jaCcsICdmciddLFxyXG4vLyAgIFsnRnVsYSwgRnVsYWgsIFB1bGFhciwgUHVsYXInLCAnZmYnXSxcclxuLy8gICBbJ0dhbGljaWFuJywgJ2dsJ10sXHJcbi8vICAgWydHYWVsaWMgKFNjb3R0aXNoKScsICdnZCddLFxyXG4vLyAgIFsnR2FlbGljIChNYW54KScsICdndiddLFxyXG4vLyAgIFsnR2VvcmdpYW4nLCAna2EnXSxcclxuLy8gICBbJ0dlcm1hbicsICdkZSddLFxyXG4vLyAgIFsnR3JlZWsnLCAnZWwnXSxcclxuLy8gICBbJ0dyZWVubGFuZGljJywgJ2tsJ10sXHJcbi8vICAgWydHdWFyYW5pJywgJ2duJ10sXHJcbi8vICAgWydHdWphcmF0aScsICdndSddLFxyXG4vLyAgIFsnSGFpdGlhbiBDcmVvbGUnLCAnaHQnXSxcclxuLy8gICBbJ0hhdXNhJywgJ2hhJ10sXHJcbi8vICAgWydIZWJyZXcnLCAnaGUnXSxcclxuLy8gICBbJ0hlcmVybycsICdoeiddLFxyXG4vLyAgIFsnSGluZGknLCAnaGknXSxcclxuLy8gICBbJ0hpcmkgTW90dScsICdobyddLFxyXG4vLyAgIFsnSHVuZ2FyaWFuJywgJ2h1J10sXHJcbi8vICAgWydJY2VsYW5kaWMnLCAnaXMnXSxcclxuLy8gICBbJ0lkbycsICdpbyddLFxyXG4vLyAgIFsnSWdibycsICdpZyddLFxyXG4vLyAgIFsnSW5kb25lc2lhbicsICdpZCcsICdpbiddLFxyXG4vLyAgIFsnSW50ZXJsaW5ndWEnLCAnaWEnXSxcclxuLy8gICBbJ0ludGVybGluZ3VlJywgJ2llJ10sXHJcbi8vICAgWydJbnVrdGl0dXQnLCAnaXUnXSxcclxuLy8gICBbJ0ludXBpYWsnLCAnaWsnXSxcclxuLy8gICBbJ0lyaXNoJywgJ2dhJ10sXHJcbi8vICAgWydJdGFsaWFuJywgJ2l0J10sXHJcbi8vICAgWydKYXBhbmVzZScsICdqYSddLFxyXG4vLyAgIFsnSmF2YW5lc2UnLCAnanYnXSxcclxuLy8gICBbJ0thbGFhbGxpc3V0LCBHcmVlbmxhbmRpYycsICdrbCddLFxyXG4vLyAgIFsnS2FubmFkYScsICdrbiddLFxyXG4vLyAgIFsnS2FudXJpJywgJ2tyJ10sXHJcbi8vICAgWydLYXNobWlyaScsICdrcyddLFxyXG4vLyAgIFsnS2F6YWtoJywgJ2trJ10sXHJcbi8vICAgWydLaG1lcicsICdrbSddLFxyXG4vLyAgIFsnS2lrdXl1JywgJ2tpJ10sXHJcbi8vICAgWydLaW55YXJ3YW5kYSAoUndhbmRhKScsICdydyddLFxyXG4vLyAgIFsnS2lydW5kaScsICdybiddLFxyXG4vLyAgIFsnS3lyZ3l6JywgJ2t5J10sXHJcbi8vICAgWydLb21pJywgJ2t2J10sXHJcbi8vICAgWydLb25nbycsICdrZyddLFxyXG4vLyAgIFsnS29yZWFuJywgJ2tvJ10sXHJcbi8vICAgWydLdXJkaXNoJywgJ2t1J10sXHJcbi8vICAgWydLd2FueWFtYScsICdraiddLFxyXG4vLyAgIFsnTGFvJywgJ2xvJ10sXHJcbi8vICAgWydMYXRpbicsICdsYSddLFxyXG4vLyAgIFsnTGF0dmlhbiAoTGV0dGlzaCknLCAnbHYnXSxcclxuLy8gICBbJ0xpbWJ1cmdpc2ggKExpbWJ1cmdlciknLCAnbGknXSxcclxuLy8gICBbJ0xpbmdhbGEnLCAnbG4nXSxcclxuLy8gICBbJ0xpdGh1YW5pYW4nLCAnbHQnXSxcclxuLy8gICBbJ0x1Z2EtS2F0YW5nYScsICdsdSddLFxyXG4vLyAgIFsnTHVnYW5kYSwgR2FuZGEnLCAnbGcnXSxcclxuLy8gICBbJ0x1eGVtYm91cmdpc2gnLCAnbGInXSxcclxuLy8gICBbJ01hbngnLCAnZ3YnXSxcclxuLy8gICBbJ01hY2Vkb25pYW4nLCAnbWsnXSxcclxuLy8gICBbJ01hbGFnYXN5JywgJ21nJ10sXHJcbi8vICAgWydNYWxheScsICdtcyddLFxyXG4vLyAgIFsnTWFsYXlhbGFtJywgJ21sJ10sXHJcbi8vICAgWydNYWx0ZXNlJywgJ210J10sXHJcbi8vICAgWydNYW9yaScsICdtaSddLFxyXG4vLyAgIFsnTWFyYXRoaScsICdtciddLFxyXG4vLyAgIFsnTWFyc2hhbGxlc2UnLCAnbWgnXSxcclxuLy8gICBbJ01vbGRhdmlhbicsICdtbyddLFxyXG4vLyAgIFsnTW9uZ29saWFuJywgJ21uJ10sXHJcbi8vICAgWydOYXVydScsICduYSddLFxyXG4vLyAgIFsnTmF2YWpvJywgJ252J10sXHJcbi8vICAgWydOZG9uZ2EnLCAnbmcnXSxcclxuLy8gICBbJ05vcnRoZXJuIE5kZWJlbGUnLCAnbmQnXSxcclxuLy8gICBbJ05lcGFsaScsICduZSddLFxyXG4vLyAgIFsnTm9yd2VnaWFuJywgJ25vJ10sXHJcbi8vICAgWydOb3J3ZWdpYW4gYm9rbcOlbCcsICduYiddLFxyXG4vLyAgIFsnTm9yd2VnaWFuIG55bm9yc2snLCAnbm4nXSxcclxuLy8gICBbJ051b3N1JywgJ2lpJ10sXHJcbi8vICAgWydPY2NpdGFuJywgJ29jJ10sXHJcbi8vICAgWydPamlid2UnLCAnb2onXSxcclxuLy8gICBbJ09sZCBDaHVyY2ggU2xhdm9uaWMsIE9sZCBCdWxnYXJpYW4nLCAnY3UnXSxcclxuLy8gICBbJ09yaXlhJywgJ29yJ10sXHJcbi8vICAgWydPcm9tbyAoQWZhYW4gT3JvbW8pJywgJ29tJ10sXHJcbi8vICAgWydPc3NldGlhbicsICdvcyddLFxyXG4vLyAgIFsnUMSBbGknLCAncGknXSxcclxuLy8gICBbJ1Bhc2h0bywgUHVzaHRvJywgJ3BzJ10sXHJcbi8vICAgWydQZXJzaWFuIChGYXJzaSknLCAnZmEnXSxcclxuLy8gICBbJ1BvbGlzaCcsICdwbCddLFxyXG4vLyAgIFsnUG9ydHVndWVzZScsICdwdCddLFxyXG4vLyAgIFsnUHVuamFiaSAoRWFzdGVybiknLCAncGEnXSxcclxuLy8gICBbJ1F1ZWNodWEnLCAncXUnXSxcclxuLy8gICBbJ1JvbWFuc2gnLCAncm0nXSxcclxuLy8gICBbJ1JvbWFuaWFuJywgJ3JvJ10sXHJcbi8vICAgWydSdXNzaWFuJywgJ3J1J10sXHJcbi8vICAgWydTYW1pJywgJ3NlJ10sXHJcbi8vICAgWydTYW1vYW4nLCAnc20nXSxcclxuLy8gICBbJ1NhbmdvJywgJ3NnJ10sXHJcbi8vICAgWydTYW5za3JpdCcsICdzYSddLFxyXG4vLyAgIFsnU2VyYmlhbicsICdzciddLFxyXG4vLyAgIFsnU2VyYm8tQ3JvYXRpYW4nLCAnc2gnXSxcclxuLy8gICBbJ1Nlc290aG8nLCAnc3QnXSxcclxuLy8gICBbJ1NldHN3YW5hJywgJ3RuJ10sXHJcbi8vICAgWydTaG9uYScsICdzbiddLFxyXG4vLyAgIFsnU2ljaHVhbiBZaScsICdpaSddLFxyXG4vLyAgIFsnU2luZGhpJywgJ3NkJ10sXHJcbi8vICAgWydTaW5oYWxlc2UnLCAnc2knXSxcclxuLy8gICBbJ1Npc3dhdGknLCAnc3MnXSxcclxuLy8gICBbJ1Nsb3ZhaycsICdzayddLFxyXG4vLyAgIFsnU2xvdmVuaWFuJywgJ3NsJ10sXHJcbi8vICAgWydTb21hbGknLCAnc28nXSxcclxuLy8gICBbJ1NvdXRoZXJuIE5kZWJlbGUnLCAnbnInXSxcclxuLy8gICBbJ1NwYW5pc2gnLCAnZXMnXSxcclxuLy8gICBbJ1N1bmRhbmVzZScsICdzdSddLFxyXG4vLyAgIFsnU3dhaGlsaSAoS2lzd2FoaWxpKScsICdzdyddLFxyXG4vLyAgIFsnU3dhdGknLCAnc3MnXSxcclxuLy8gICBbJ1N3ZWRpc2gnLCAnc3YnXSxcclxuLy8gICBbJ1RhZ2Fsb2cnLCAndGwnXSxcclxuLy8gICBbJ1RhaGl0aWFuJywgJ3R5J10sXHJcbi8vICAgWydUYWppaycsICd0ZyddLFxyXG4vLyAgIFsnVGFtaWwnLCAndGEnXSxcclxuLy8gICBbJ1RhdGFyJywgJ3R0J10sXHJcbi8vICAgWydUZWx1Z3UnLCAndGUnXSxcclxuLy8gICBbJ1RoYWknLCAndGgnXSxcclxuLy8gICBbJ1RpYmV0YW4nLCAnYm8nXSxcclxuLy8gICBbJ1RpZ3JpbnlhJywgJ3RpJ10sXHJcbi8vICAgWydUb25nYScsICd0byddLFxyXG4vLyAgIFsnVHNvbmdhJywgJ3RzJ10sXHJcbi8vICAgWydUdXJraXNoJywgJ3RyJ10sXHJcbi8vICAgWydUdXJrbWVuJywgJ3RrJ10sXHJcbi8vICAgWydUd2knLCAndHcnXSxcclxuLy8gICBbJ1V5Z2h1cicsICd1ZyddLFxyXG4vLyAgIFsnVWtyYWluaWFuJywgJ3VrJ10sXHJcbi8vICAgWydVcmR1JywgJ3VyJ10sXHJcbi8vICAgWydVemJlaycsICd1eiddLFxyXG4vLyAgIFsnVmVuZGEnLCAndmUnXSxcclxuLy8gICBbJ1ZpZXRuYW1lc2UnLCAndmknXSxcclxuLy8gICBbJ1ZvbGFww7xrJywgJ3ZvJ10sXHJcbi8vICAgWydXYWxsb24nLCAnd2EnXSxcclxuLy8gICBbJ1dlbHNoJywgJ2N5J10sXHJcbi8vICAgWydXb2xvZicsICd3byddLFxyXG4vLyAgIFsnV2VzdGVybiBGcmlzaWFuJywgJ2Z5J10sXHJcbi8vICAgWydYaG9zYScsICd4aCddLFxyXG4vLyAgIFsnWWlkZGlzaCcsICd5aScsICdqaSddLFxyXG4vLyAgIFsnWW9ydWJhJywgJ3lvJ10sXHJcbi8vICAgWydaaHVhbmcsIENodWFuZycsICd6YSddLFxyXG4vLyAgIFsnWnVsdScsICd6dSddLFxyXG4vLyBdXHJcbi8vXHJcbi8vIGxhbmdzLmZvckVhY2gobGFuZyA9PiB7Y29uc3QgcGVyaW9kID0gZ2V0RGF5UGVyaW9kcyhsYW5nWzFdKTsgaWYgKHBlcmlvZC5hbSA9PT0gJ0FNJykgcmV0dXJuOyBjb25zb2xlLmxvZyhsYW5nWzFdLCBwZXJpb2QgKX0pXHJcblxyXG5cclxuLy8gQ2hyb21lIC8gT3BlcmFcclxuLy8gQW1oYXJpYyBhbSB7YW06ICfhjKXhi4vhibUnLCBwbTogJ+GKqOGIsOGLk+GJtSd9XHJcbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxyXG4vLyBCdWxnYXJpYW4gYmcge2FtOiAn0L/RgC7QvtCxLicsIHBtOiAn0YHQuy7QvtCxLid9XHJcbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHthbTogJ+S4iuWNiCcsIHBtOiAn5LiL5Y2IJ31cclxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxyXG4vLyBIaW5kaSBoaSB7YW06ICdhbScsIHBtOiAncG0nfVxyXG4vLyBLYW5uYWRhIGtuIHthbTogJ+CyquCzguCysOCzjeCyteCyvuCyueCzjeCyqCcsIHBtOiAn4LKF4LKq4LKw4LK+4LK54LON4LKoJ31cclxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cclxuLy8gTWFsYXkgbXMge2FtOiAnUEcnLCBwbTogJ1BURyd9XHJcbi8vIFRhbWlsIHRhIHthbTogJ+CuruCvgeCuseCvjeCuquCuleCusuCvjScsIHBtOiAn4K6q4K6/4K6x4K+N4K6q4K6V4K6y4K+NJ31cclxuXHJcbi8vIEVkZ2UgQ2hyb21pdW1cclxuLy8gQWxiYW5pYW4gc3Ege2FtOiAnZSBwYXJhZGl0ZXMnLCBwbTogJ2UgcGFzZGl0ZXMnfVxyXG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cclxuLy8gQXJhYmljIGFyIHthbTogJ9i1JywgcG06ICfZhSd9XHJcbi8vIEJ1bGdhcmlhbiBiZyB7YW06ICfQv9GALtC+0LEuJywgcG06ICfRgdC7LtC+0LEuJ31cclxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxyXG4vLyBHcmVlayBlbCB7YW06ICfPgC7OvC4nLCBwbTogJ868Ls68Lid9XHJcbi8vIEhpbmRpIGhpIHthbTogJ2FtJywgcG06ICdwbSd9XHJcbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxyXG4vLyBLb3JlYW4ga28ge2FtOiAn7Jik7KCEJywgcG06ICfsmKTtm4QnfVxyXG4vLyBNYWxheSBtcyB7YW06ICdQRycsIHBtOiAnUFRHJ31cclxuLy8gUHVuamFiaSAoRWFzdGVybikgcGEge2FtOiAn4Kiq4KmCLuCopuCpgS4nLCBwbTogJ+CorOCovi7gqKbgqYEuJ31cclxuLy8gU2luZGhpIHNkIHthbTogJ9i12KjYrdiMINmF2YbYrNmH2YbYrycsIHBtOiAn2YXZhtis2YfZhtiv2Iwg2LTYp9mFJ31cclxuLy8gVGFtaWwgdGEge2FtOiAn4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NJywgcG06ICfgrqrgrr/grrHgr43grqrgrpXgrrLgr40nfVxyXG5cclxuXHJcbi8vIEZpcmVmb3hcclxuLy8gQWthbiBhayB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxyXG4vLyBBbGJhbmlhbiBzcSB7IGFtOiBcImUgcGFyYWRpdGVzXCIsIHBtOiBcImUgcGFzZGl0ZXNcIiB9XHJcbi8vIEFtaGFyaWMgYW0geyBhbTogXCLhjKXhi4vhibVcIiwgcG06IFwi4Yqo4Yiw4YuT4Ym1XCIgfVxyXG4vLyBBcmFiaWMgYXIgeyBhbTogXCLYtVwiLCBwbTogXCLZhVwiIH1cclxuLy8gQXNzYW1lc2UgYXMgeyBhbTogXCLgpqrgp4Lgp7Dgp43gpqzgpr7gprngp43gpqhcIiwgcG06IFwi4KaF4Kaq4Kew4Ka+4Ka54KeN4KaoXCIgfVxyXG4vLyBCdWxnYXJpYW4gYmcgeyBhbTogXCLQv9GALtC+0LEuXCIsIHBtOiBcItGB0Lsu0L7QsS5cIiB9XHJcbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHsgYW06IFwi5LiK5Y2IXCIsIHBtOiBcIuS4i+WNiFwiIH1cclxuLy8gRHpvbmdraGEgZHogeyBhbTogXCLgvabgvpTgvIvgvYbgvItcIiwgcG06IFwi4L2V4L6x4L2y4LyL4L2G4LyLXCIgfVxyXG4vLyBFd2UgZWUgeyBhbTogXCLFi2RpXCIsIHBtOiBcIsmjZXRyyZRcIiB9XHJcbi8vIEdyZWVrIGVsIHsgYW06IFwiz4AuzrwuXCIsIHBtOiBcIs68Ls68LlwiIH1cclxuLy8gSGluZGkgaGkgeyBhbTogXCJhbVwiLCBwbTogXCJwbVwiIH1cclxuLy8gS2FubmFkYSBrbiB7IGFtOiBcIuCyquCzguCysOCzjeCyteCyvuCyueCzjeCyqFwiLCBwbTogXCLgsoXgsqrgsrDgsr7gsrngs43gsqhcIiB9XHJcbi8vIEtvcmVhbiBrbyB7IGFtOiBcIuyYpOyghFwiLCBwbTogXCLsmKTtm4RcIiB9XHJcbi8vIE1hbGF5IG1zIHsgYW06IFwiUEdcIiwgcG06IFwiUFRHXCIgfVxyXG4vLyBPcm9tbyAoQWZhYW4gT3JvbW8pIG9tIHsgYW06IFwiV0RcIiwgcG06IFwiV0JcIiB9XHJcbi8vIFB1bmphYmkgKEVhc3Rlcm4pIHBhIHsgYW06IFwi4Kiq4KmCLuCopuCpgS5cIiwgcG06IFwi4Kis4Ki+LuCopuCpgS5cIiB9XHJcbi8vIFNhbnNrcml0IHNhIHsgYW06IFwi4KSq4KWC4KSw4KWN4KS14KS+4KS54KWN4KSoXCIsIHBtOiBcIuCkheCkquCksOCkvuCkueCljeCkqFwiIH1cclxuLy8gU2luZGhpIHNkIHsgYW06IFwi2LXYqNit2Iwg2YXZhtis2YfZhtivXCIsIHBtOiBcItmF2YbYrNmH2YbYr9iMINi02KfZhVwiIH1cclxuLy8gU29tYWxpIHNvIHsgYW06IFwiR0hcIiwgcG06IFwiR0RcIiB9XHJcbi8vIFRhbWlsIHRhIHsgYW06IFwi4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NXCIsIHBtOiBcIuCuquCuv+CuseCvjeCuquCuleCusuCvjVwiIH1cclxuLy8gVGlncmlueWEgdGkgeyBhbTogXCLhiYUu4YmALlwiLCBwbTogXCLhi7Uu4YmALlwiIH1cclxuLy8gVG9uZ2EgdG8geyBhbTogXCJoZW5naWhlbmdpXCIsIHBtOiBcImVmaWFmaVwiIH1cclxuLy8gVHdpIHR3IHsgYW06IFwiQU5cIiwgcG06IFwiRVdcIiB9XHJcblxyXG5cclxuXHJcbi8vIGNvbnN0IGZvcm1hdHMgPSB7XHJcbi8vICAgXCJhci1TQVwiIDogXCJkZC9NTS95eVwiLFxyXG4vLyAgIFwiYmctQkdcIiA6IFwiZGQuTS55eXl5XCIsXHJcbi8vICAgXCJjYS1FU1wiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJ6aC1UV1wiIDogXCJ5eXl5L00vZFwiLFxyXG4vLyAgIFwiY3MtQ1pcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImRhLURLXCIgOiBcImRkLU1NLXl5eXlcIixcclxuLy8gICBcImRlLURFXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcImVsLUdSXCIgOiBcImQvTS95eXl5XCIsXHJcbi8vICAgXCJlbi1VU1wiIDogXCJNL2QveXl5eVwiLFxyXG4vLyAgIFwiZmktRklcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImZyLUZSXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImhlLUlMXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImh1LUhVXCIgOiBcInl5eXkuIE1NLiBkZC5cIixcclxuLy8gICBcImlzLUlTXCIgOiBcImQuTS55eXl5XCIsXHJcbi8vICAgXCJpdC1JVFwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJqYS1KUFwiIDogXCJ5eXl5L01NL2RkXCIsXHJcbi8vICAgXCJrby1LUlwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJubC1OTFwiIDogXCJkLU0teXl5eVwiLFxyXG4vLyAgIFwibmItTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwicGwtUExcIiA6IFwieXl5eS1NTS1kZFwiLFxyXG4vLyAgIFwicHQtQlJcIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcInJvLVJPXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcInJ1LVJVXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcImhyLUhSXCIgOiBcImQuTS55eXl5XCIsXHJcbi8vICAgXCJzay1TS1wiIDogXCJkLiBNLiB5eXl5XCIsXHJcbi8vICAgXCJzcS1BTFwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJzdi1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJ0aC1USFwiIDogXCJkL00veXl5eVwiLFxyXG4vLyAgIFwidHItVFJcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwidXItUEtcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiaWQtSURcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwidWstVUFcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiYmUtQllcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwic2wtU0lcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImV0LUVFXCIgOiBcImQuTU0ueXl5eVwiLFxyXG4vLyAgIFwibHYtTFZcIiA6IFwieXl5eS5NTS5kZC5cIixcclxuLy8gICBcImx0LUxUXCIgOiBcInl5eXkuTU0uZGRcIixcclxuLy8gICBcImZhLUlSXCIgOiBcIk1NL2RkL3l5eXlcIixcclxuLy8gICBcInZpLVZOXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImh5LUFNXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcImF6LUxhdG4tQVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiZXUtRVNcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwibWstTUtcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiYWYtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwia2EtR0VcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiZm8tRk9cIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwiaGktSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwibXMtTVlcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwia2stS1pcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwia3ktS0dcIiA6IFwiZGQuTU0ueXlcIixcclxuLy8gICBcInN3LUtFXCIgOiBcIk0vZC95eXl5XCIsXHJcbi8vICAgXCJ1ei1MYXRuLVVaXCIgOiBcImRkL01NIHl5eXlcIixcclxuLy8gICBcInR0LVJVXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcInBhLUlOXCIgOiBcImRkLU1NLXl5XCIsXHJcbi8vICAgXCJndS1JTlwiIDogXCJkZC1NTS15eVwiLFxyXG4vLyAgIFwidGEtSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwidGUtSU5cIiA6IFwiZGQtTU0teXlcIixcclxuLy8gICBcImtuLUlOXCIgOiBcImRkLU1NLXl5XCIsXHJcbi8vICAgXCJtci1JTlwiIDogXCJkZC1NTS15eXl5XCIsXHJcbi8vICAgXCJzYS1JTlwiIDogXCJkZC1NTS15eXl5XCIsXHJcbi8vICAgXCJtbi1NTlwiIDogXCJ5eS5NTS5kZFwiLFxyXG4vLyAgIFwiZ2wtRVNcIiA6IFwiZGQvTU0veXlcIixcclxuLy8gICBcImtvay1JTlwiIDogXCJkZC1NTS15eXl5XCIsXHJcbi8vICAgXCJzeXItU1lcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZHYtTVZcIiA6IFwiZGQvTU0veXlcIixcclxuLy8gICBcImFyLUlRXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcInpoLUNOXCIgOiBcInl5eXkvTS9kXCIsXHJcbi8vICAgXCJkZS1DSFwiIDogXCJkZC5NTS55eXl5XCIsXHJcbi8vICAgXCJlbi1HQlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJlcy1NWFwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJmci1CRVwiIDogXCJkL01NL3l5eXlcIixcclxuLy8gICBcIml0LUNIXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcIm5sLUJFXCIgOiBcImQvTU0veXl5eVwiLFxyXG4vLyAgIFwibm4tTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwicHQtUFRcIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwic3ItTGF0bi1DU1wiIDogXCJkLk0ueXl5eVwiLFxyXG4vLyAgIFwic3YtRklcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImF6LUN5cmwtQVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwibXMtQk5cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwidXotQ3lybC1VWlwiIDogXCJkZC5NTS55eXl5XCIsXHJcbi8vICAgXCJhci1FR1wiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJ6aC1IS1wiIDogXCJkL00veXl5eVwiLFxyXG4vLyAgIFwiZGUtQVRcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiZW4tQVVcIiA6IFwiZC9NTS95eXl5XCIsXHJcbi8vICAgXCJlcy1FU1wiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJmci1DQVwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJzci1DeXJsLUNTXCIgOiBcImQuTS55eXl5XCIsXHJcbi8vICAgXCJhci1MWVwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJ6aC1TR1wiIDogXCJkL00veXl5eVwiLFxyXG4vLyAgIFwiZGUtTFVcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiZW4tQ0FcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtR1RcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZnItQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwiYXItRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwiemgtTU9cIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcImRlLUxJXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcImVuLU5aXCIgOiBcImQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtQ1JcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZnItTFVcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItTUFcIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwiZW4tSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtUEFcIiA6IFwiTU0vZGQveXl5eVwiLFxyXG4vLyAgIFwiZnItTUNcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItVE5cIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwiZW4tWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwiZXMtRE9cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItT01cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZW4tSk1cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtVkVcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItWUVcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZW4tMDI5XCIgOiBcIk1NL2RkL3l5eXlcIixcclxuLy8gICBcImVzLUNPXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImFyLVNZXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImVuLUJaXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImVzLVBFXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImFyLUpPXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImVuLVRUXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImVzLUFSXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImFyLUxCXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImVuLVpXXCIgOiBcIk0vZC95eXl5XCIsXHJcbi8vICAgXCJlcy1FQ1wiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJhci1LV1wiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJlbi1QSFwiIDogXCJNL2QveXl5eVwiLFxyXG4vLyAgIFwiZXMtQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxyXG4vLyAgIFwiYXItQUVcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtVVlcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItQkhcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtUFlcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYXItUUFcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtU1ZcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtSE5cIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtTklcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZXMtUFJcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiYW0tRVRcIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcInR6bS1MYXRuLURaXCIgOiBcImRkLU1NLXl5eXlcIixcclxuLy8gICBcIml1LUxhdG4tQ0FcIiA6IFwiZC9NTS95eXl5XCIsXHJcbi8vICAgXCJzbWEtTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxyXG4vLyAgIFwibW4tTW9uZy1DTlwiIDogXCJ5eXl5L00vZFwiLFxyXG4vLyAgIFwiZ2QtR0JcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwiZW4tTVlcIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcInBycy1BRlwiIDogXCJkZC9NTS95eVwiLFxyXG4vLyAgIFwiYm4tQkRcIiA6IFwiZGQtTU0teXlcIixcclxuLy8gICBcIndvLVNOXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcInJ3LVJXXCIgOiBcIk0vZC95eXl5XCIsXHJcbi8vICAgXCJxdXQtR1RcIiA6IFwiZGQvTU0veXl5eVwiLFxyXG4vLyAgIFwic2FoLVJVXCIgOiBcIk1NLmRkLnl5eXlcIixcclxuLy8gICBcImdzdy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJjby1GUlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJvYy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJtaS1OWlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJnYS1JRVwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJzZS1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJici1GUlwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJzbW4tRklcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcIm1vaC1DQVwiIDogXCJNL2QveXl5eVwiLFxyXG4vLyAgIFwiYXJuLUNMXCIgOiBcImRkLU1NLXl5eXlcIixcclxuLy8gICBcImlpLUNOXCIgOiBcInl5eXkvTS9kXCIsXHJcbi8vICAgXCJkc2ItREVcIiA6IFwiZC4gTS4geXl5eVwiLFxyXG4vLyAgIFwiaWctTkdcIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcImtsLUdMXCIgOiBcImRkLU1NLXl5eXlcIixcclxuLy8gICBcImxiLUxVXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImJhLVJVXCIgOiBcImRkLk1NLnl5XCIsXHJcbi8vICAgXCJuc28tWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwicXV6LUJPXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcInlvLU5HXCIgOiBcImQvTS95eXl5XCIsXHJcbi8vICAgXCJoYS1MYXRuLU5HXCIgOiBcImQvTS95eXl5XCIsXHJcbi8vICAgXCJmaWwtUEhcIiA6IFwiTS9kL3l5eXlcIixcclxuLy8gICBcInBzLUFGXCIgOiBcImRkL01NL3l5XCIsXHJcbi8vICAgXCJmeS1OTFwiIDogXCJkLU0teXl5eVwiLFxyXG4vLyAgIFwibmUtTlBcIiA6IFwiTS9kL3l5eXlcIixcclxuLy8gICBcInNlLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcclxuLy8gICBcIml1LUNhbnMtQ0FcIiA6IFwiZC9NL3l5eXlcIixcclxuLy8gICBcInNyLUxhdG4tUlNcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcInNpLUxLXCIgOiBcInl5eXktTU0tZGRcIixcclxuLy8gICBcInNyLUN5cmwtUlNcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImxvLUxBXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImttLUtIXCIgOiBcInl5eXktTU0tZGRcIixcclxuLy8gICBcImN5LUdCXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcImJvLUNOXCIgOiBcInl5eXkvTS9kXCIsXHJcbi8vICAgXCJzbXMtRklcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImFzLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcclxuLy8gICBcIm1sLUlOXCIgOiBcImRkLU1NLXl5XCIsXHJcbi8vICAgXCJlbi1JTlwiIDogXCJkZC1NTS15eXl5XCIsXHJcbi8vICAgXCJvci1JTlwiIDogXCJkZC1NTS15eVwiLFxyXG4vLyAgIFwiYm4tSU5cIiA6IFwiZGQtTU0teXlcIixcclxuLy8gICBcInRrLVRNXCIgOiBcImRkLk1NLnl5XCIsXHJcbi8vICAgXCJicy1MYXRuLUJBXCIgOiBcImQuTS55eXl5XCIsXHJcbi8vICAgXCJtdC1NVFwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJzci1DeXJsLU1FXCIgOiBcImQuTS55eXl5XCIsXHJcbi8vICAgXCJzZS1GSVwiIDogXCJkLk0ueXl5eVwiLFxyXG4vLyAgIFwienUtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwieGgtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwidG4tWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxyXG4vLyAgIFwiaHNiLURFXCIgOiBcImQuIE0uIHl5eXlcIixcclxuLy8gICBcImJzLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcInRnLUN5cmwtVEpcIiA6IFwiZGQuTU0ueXlcIixcclxuLy8gICBcInNyLUxhdG4tQkFcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcInNtai1OT1wiIDogXCJkZC5NTS55eXl5XCIsXHJcbi8vICAgXCJybS1DSFwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJzbWotU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxyXG4vLyAgIFwicXV6LUVDXCIgOiBcImRkL01NL3l5eXlcIixcclxuLy8gICBcInF1ei1QRVwiIDogXCJkZC9NTS95eXl5XCIsXHJcbi8vICAgXCJoci1CQVwiIDogXCJkLk0ueXl5eS5cIixcclxuLy8gICBcInNyLUxhdG4tTUVcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcInNtYS1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXHJcbi8vICAgXCJlbi1TR1wiIDogXCJkL00veXl5eVwiLFxyXG4vLyAgIFwidWctQ05cIiA6IFwieXl5eS1NLWRcIixcclxuLy8gICBcInNyLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcclxuLy8gICBcImVzLVVTXCIgOiBcIk0vZC95eXl5XCJcclxuLy8gfTtcclxuLy9cclxuLy8gT2JqZWN0LmtleXMoZm9ybWF0cykuZm9yRWFjaChsYW5nID0+IHtjb25zdCBwZXJpb2QgPSBnZXREYXlQZXJpb2RzKGxhbmcpOyBpZiAocGVyaW9kLmFtID09PSAnQU0nKSByZXR1cm47IGNvbnNvbGUubG9nKGxhbmcsIHBlcmlvZCApfSlcclxuIl19
1
+ import { isValid } from 'date-fns';
2
+ export const getSupportedLocale = (locale = 'default') => {
3
+ let supportedLocale;
4
+ try {
5
+ supportedLocale = Intl.DateTimeFormat.supportedLocalesOf(locale).length ? locale : 'default';
6
+ }
7
+ catch (e) {
8
+ supportedLocale = 'default';
9
+ }
10
+ return supportedLocale;
11
+ };
12
+ export const isHour12 = (locale = 'default') => {
13
+ const supportedLocale = getSupportedLocale(locale);
14
+ const hour12 = Intl.DateTimeFormat(supportedLocale, { timeStyle: 'short' }).resolvedOptions().hour12;
15
+ return hour12 ?? false;
16
+ };
17
+ export const convert12hTo24h = (abbr, hour) => {
18
+ if (abbr === 'am' && hour === 12) {
19
+ return 0;
20
+ }
21
+ if (abbr === 'am') {
22
+ return hour;
23
+ }
24
+ if (abbr === 'pm' && hour === 12) {
25
+ return 12;
26
+ }
27
+ return hour + 12;
28
+ };
29
+ export const convert24hTo12h = (hour) => hour % 12 || 12;
30
+ export const convertTimeToDate = (time) => time ? (time instanceof Date ? new Date(time) : new Date(`1970-01-01 ${time}`)) : null;
31
+ // export const getAmPm = (date: Date, locale: string) => {
32
+ // if (date.toLocaleTimeString(locale).includes('AM')) {
33
+ // return 'am'
34
+ // }
35
+ // if (date.toLocaleTimeString(locale).includes('PM')) {
36
+ // return 'pm'
37
+ // }
38
+ // return date.getHours() >= 12 ? 'pm' : 'am'
39
+ // }
40
+ export const getAmPm = (date, locale, options = {}) => {
41
+ const dayPeriods = getDayPeriods('en-US', options);
42
+ const time = new Intl.DateTimeFormat('en-US', { timeStyle: "short", hour12: true }).format(date);
43
+ const dayPeriod = dayPeriods.find(element => time.includes(element.label));
44
+ return (dayPeriod?.value ?? (date.getHours() >= 12 ? 'pm' : 'am'));
45
+ };
46
+ export const isAm = (date) => {
47
+ return date.getHours() < 12;
48
+ };
49
+ export const isPm = (date) => {
50
+ return date.getHours() > 11;
51
+ };
52
+ export const isValidTimeZone = (timeZone) => {
53
+ try {
54
+ if (timeZone === undefined) {
55
+ return false;
56
+ }
57
+ if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {
58
+ throw new Error('Time zones not supported.');
59
+ }
60
+ if (typeof timeZone !== 'string') {
61
+ throw new Error(`Invalid timeZone type specified: ${timeZone}`);
62
+ }
63
+ try {
64
+ // throws an error if timezone is not valid
65
+ Intl.DateTimeFormat(undefined, { timeZone: timeZone });
66
+ }
67
+ catch (error) {
68
+ throw new Error(`Invalid timeZone string specified: ${timeZone}`);
69
+ }
70
+ return true;
71
+ }
72
+ catch (error) {
73
+ console.warn(error);
74
+ return false;
75
+ }
76
+ };
77
+ export const getListOfHours = (locale, options = {}) => {
78
+ const hour12 = isHour12(locale);
79
+ const time = new Date(0);
80
+ return Array.from({ length: 24 }, (_, i) => {
81
+ time.setHours(i);
82
+ const dayPeriod = getAmPm(time, locale);
83
+ return {
84
+ value: i,
85
+ dayPeriod: dayPeriod,
86
+ label: time.toLocaleTimeString(locale, {
87
+ hour: '2-digit',
88
+ hour12: hour12,
89
+ minute: '2-digit',
90
+ second: '2-digit',
91
+ }).split(':')[0],
92
+ };
93
+ });
94
+ };
95
+ export const getListOfMinutes = (locale, options = {}, valueAsString = false) => {
96
+ const d = new Date(0);
97
+ return Array.from({ length: 60 }, (_, i) => {
98
+ d.setMinutes(i);
99
+ return {
100
+ value: i,
101
+ // value: valueAsString ? i.toString() : i,
102
+ label: d.toLocaleTimeString(locale, {
103
+ // ...options,
104
+ hour: '2-digit',
105
+ hour12: false,
106
+ minute: '2-digit',
107
+ second: '2-digit',
108
+ }).split(':')[1],
109
+ };
110
+ });
111
+ };
112
+ export const getListOfSeconds = (locale, options = {}, valueAsString = false) => Array.from({ length: 60 }, (_, i) => {
113
+ const d = new Date(0);
114
+ d.setSeconds(i);
115
+ return {
116
+ value: i,
117
+ // value: valueAsString ? i.toString() : i,
118
+ label: d.toLocaleTimeString(locale, {
119
+ // ...options,
120
+ hour: '2-digit',
121
+ hour12: false,
122
+ minute: '2-digit',
123
+ second: '2-digit',
124
+ }).split(':')[2],
125
+ };
126
+ });
127
+ export const getSelectedHour = (date, locale) => date instanceof Date ? (isHour12(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
128
+ export const getSelectedMinutes = (date) => (date ? date.getMinutes() : '');
129
+ export const getSelectedSeconds = (date) => (date ? date.getSeconds() : '');
130
+ // export const isAmPm = (locale: string) =>
131
+ // ['am', 'AM', 'pm', 'PM'].some((el) => new Date().toLocaleString(locale).includes(el))
132
+ export const isAmPm = (locale = 'default') => {
133
+ const supportedLocale = getSupportedLocale(locale);
134
+ const date = new Date();
135
+ const time = new Intl.DateTimeFormat(supportedLocale, { timeStyle: "short" }).format(date);
136
+ const isAmPm = time.match(/(?:\p{L}\p{M}\p{P}*)+|(?:\p{L}\p{P}*)+/gu) ?? [];
137
+ return isAmPm.length > 0;
138
+ };
139
+ export const isValidTime = (time) => {
140
+ if (typeof time === 'string') {
141
+ return isValid(time) || isValid(new Date(`1970-01-01 ${time}`));
142
+ }
143
+ return isValid(time);
144
+ // const d = new Date(`1970-01-01 ${time}`)
145
+ // return d instanceof Date && d.getTime()
146
+ };
147
+ // export const _getDayPeriods = (locale: string = 'default', options: DateTimeFormatOptions = {}) => {
148
+ // const supportedLocale = getSupportedLocale(locale);
149
+ //
150
+ // const dayPeriods = { am: 'am', pm: 'pm' };
151
+ //
152
+ // const hour12 = isHour12(supportedLocale);
153
+ // if (!hour12) {
154
+ // return dayPeriods;
155
+ // }
156
+ //
157
+ // const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
158
+ // const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
159
+ //
160
+ // const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
161
+ // dayPeriods.am = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
162
+ // dayPeriods.pm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm'
163
+ // return dayPeriods;
164
+ // };
165
+ export const getDayPeriods = (locale = 'default', options = {}) => {
166
+ const supportedLocale = getSupportedLocale(locale);
167
+ const dayPeriods = [
168
+ { value: 'am', label: 'am' },
169
+ { value: 'pm', label: 'pm' },
170
+ ];
171
+ const hour12 = isHour12(supportedLocale);
172
+ if (!hour12) {
173
+ return dayPeriods;
174
+ }
175
+ const am = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
176
+ const pm = new Date(Date.UTC(1970, 0, 1, 13, 0, 0));
177
+ const formatter = new Intl.DateTimeFormat(supportedLocale, { hour12: hour12, hour: 'numeric', timeZone: 'UTC' });
178
+ const formattedAm = formatter.formatToParts(am).find(part => part.type === 'dayPeriod')?.value ?? 'am';
179
+ const formattedPm = formatter.formatToParts(pm).find(part => part.type === 'dayPeriod')?.value ?? 'pm';
180
+ dayPeriods.forEach((element, index, dayPeriods) => {
181
+ dayPeriods[index].label = element.value === 'am' ? (formattedAm ?? 'am') : (formattedPm ?? 'pm');
182
+ });
183
+ return dayPeriods;
184
+ };
185
+ // testing
186
+ // const langs = [
187
+ // ['Abkhazian', 'ab'],
188
+ // ['Afar', 'aa'],
189
+ // ['Afrikaans', 'af'],
190
+ // ['Akan', 'ak'],
191
+ // ['Albanian', 'sq'],
192
+ // ['Amharic', 'am'],
193
+ // ['Arabic', 'ar'],
194
+ // ['Aragonese', 'an'],
195
+ // ['Argentina', 'es-ar'],
196
+ // ['Armenian', 'hy'],
197
+ // ['Assamese', 'as'],
198
+ // ['Avaric', 'av'],
199
+ // ['Avestan', 'ae'],
200
+ // ['Aymara', 'ay'],
201
+ // ['Azerbaijani', 'az'],
202
+ // ['Bambara', 'bm'],
203
+ // ['Bashkir', 'ba'],
204
+ // ['Basque', 'eu'],
205
+ // ['Belarusian', 'be'],
206
+ // ['Bengali (Bangla)', 'bn'],
207
+ // ['Bihari', 'bh'],
208
+ // ['Bislama', 'bi'],
209
+ // ['Bosnian', 'bs'],
210
+ // ['Breton', 'br'],
211
+ // ['Bulgarian', 'bg'],
212
+ // ['Burmese', 'my'],
213
+ // ['Catalan', 'ca'],
214
+ // ['Chamorro', 'ch'],
215
+ // ['Chechen', 'ce'],
216
+ // ['Chichewa, Chewa, Nyanja', 'ny'],
217
+ // ['Chinese', 'zh'],
218
+ // ['Chinese (Simplified)', 'zh-Hans'],
219
+ // ['Chinese (Traditional)', 'zh-Hant'],
220
+ // ['Chuvash', 'cv'],
221
+ // ['Cornish', 'kw'],
222
+ // ['Corsican', 'co'],
223
+ // ['Cree', 'cr'],
224
+ // ['Croatian', 'hr'],
225
+ // ['Czech', 'cs'],
226
+ // ['Danish', 'da'],
227
+ // ['Divehi, Dhivehi, Maldivian', 'dv'],
228
+ // ['Dutch', 'nl'],
229
+ // ['Dzongkha', 'dz'],
230
+ // ['English', 'en'],
231
+ // ['Esperanto', 'eo'],
232
+ // ['Estonian', 'et'],
233
+ // ['Ewe', 'ee'],
234
+ // ['Faroese', 'fo'],
235
+ // ['Fijian', 'fj'],
236
+ // ['Finnish', 'fi'],
237
+ // ['French', 'fr'],
238
+ // ['Fula, Fulah, Pulaar, Pular', 'ff'],
239
+ // ['Galician', 'gl'],
240
+ // ['Gaelic (Scottish)', 'gd'],
241
+ // ['Gaelic (Manx)', 'gv'],
242
+ // ['Georgian', 'ka'],
243
+ // ['German', 'de'],
244
+ // ['Greek', 'el'],
245
+ // ['Greenlandic', 'kl'],
246
+ // ['Guarani', 'gn'],
247
+ // ['Gujarati', 'gu'],
248
+ // ['Haitian Creole', 'ht'],
249
+ // ['Hausa', 'ha'],
250
+ // ['Hebrew', 'he'],
251
+ // ['Herero', 'hz'],
252
+ // ['Hindi', 'hi'],
253
+ // ['Hiri Motu', 'ho'],
254
+ // ['Hungarian', 'hu'],
255
+ // ['Icelandic', 'is'],
256
+ // ['Ido', 'io'],
257
+ // ['Igbo', 'ig'],
258
+ // ['Indonesian', 'id', 'in'],
259
+ // ['Interlingua', 'ia'],
260
+ // ['Interlingue', 'ie'],
261
+ // ['Inuktitut', 'iu'],
262
+ // ['Inupiak', 'ik'],
263
+ // ['Irish', 'ga'],
264
+ // ['Italian', 'it'],
265
+ // ['Japanese', 'ja'],
266
+ // ['Javanese', 'jv'],
267
+ // ['Kalaallisut, Greenlandic', 'kl'],
268
+ // ['Kannada', 'kn'],
269
+ // ['Kanuri', 'kr'],
270
+ // ['Kashmiri', 'ks'],
271
+ // ['Kazakh', 'kk'],
272
+ // ['Khmer', 'km'],
273
+ // ['Kikuyu', 'ki'],
274
+ // ['Kinyarwanda (Rwanda)', 'rw'],
275
+ // ['Kirundi', 'rn'],
276
+ // ['Kyrgyz', 'ky'],
277
+ // ['Komi', 'kv'],
278
+ // ['Kongo', 'kg'],
279
+ // ['Korean', 'ko'],
280
+ // ['Kurdish', 'ku'],
281
+ // ['Kwanyama', 'kj'],
282
+ // ['Lao', 'lo'],
283
+ // ['Latin', 'la'],
284
+ // ['Latvian (Lettish)', 'lv'],
285
+ // ['Limburgish (Limburger)', 'li'],
286
+ // ['Lingala', 'ln'],
287
+ // ['Lithuanian', 'lt'],
288
+ // ['Luga-Katanga', 'lu'],
289
+ // ['Luganda, Ganda', 'lg'],
290
+ // ['Luxembourgish', 'lb'],
291
+ // ['Manx', 'gv'],
292
+ // ['Macedonian', 'mk'],
293
+ // ['Malagasy', 'mg'],
294
+ // ['Malay', 'ms'],
295
+ // ['Malayalam', 'ml'],
296
+ // ['Maltese', 'mt'],
297
+ // ['Maori', 'mi'],
298
+ // ['Marathi', 'mr'],
299
+ // ['Marshallese', 'mh'],
300
+ // ['Moldavian', 'mo'],
301
+ // ['Mongolian', 'mn'],
302
+ // ['Nauru', 'na'],
303
+ // ['Navajo', 'nv'],
304
+ // ['Ndonga', 'ng'],
305
+ // ['Northern Ndebele', 'nd'],
306
+ // ['Nepali', 'ne'],
307
+ // ['Norwegian', 'no'],
308
+ // ['Norwegian bokmål', 'nb'],
309
+ // ['Norwegian nynorsk', 'nn'],
310
+ // ['Nuosu', 'ii'],
311
+ // ['Occitan', 'oc'],
312
+ // ['Ojibwe', 'oj'],
313
+ // ['Old Church Slavonic, Old Bulgarian', 'cu'],
314
+ // ['Oriya', 'or'],
315
+ // ['Oromo (Afaan Oromo)', 'om'],
316
+ // ['Ossetian', 'os'],
317
+ // ['Pāli', 'pi'],
318
+ // ['Pashto, Pushto', 'ps'],
319
+ // ['Persian (Farsi)', 'fa'],
320
+ // ['Polish', 'pl'],
321
+ // ['Portuguese', 'pt'],
322
+ // ['Punjabi (Eastern)', 'pa'],
323
+ // ['Quechua', 'qu'],
324
+ // ['Romansh', 'rm'],
325
+ // ['Romanian', 'ro'],
326
+ // ['Russian', 'ru'],
327
+ // ['Sami', 'se'],
328
+ // ['Samoan', 'sm'],
329
+ // ['Sango', 'sg'],
330
+ // ['Sanskrit', 'sa'],
331
+ // ['Serbian', 'sr'],
332
+ // ['Serbo-Croatian', 'sh'],
333
+ // ['Sesotho', 'st'],
334
+ // ['Setswana', 'tn'],
335
+ // ['Shona', 'sn'],
336
+ // ['Sichuan Yi', 'ii'],
337
+ // ['Sindhi', 'sd'],
338
+ // ['Sinhalese', 'si'],
339
+ // ['Siswati', 'ss'],
340
+ // ['Slovak', 'sk'],
341
+ // ['Slovenian', 'sl'],
342
+ // ['Somali', 'so'],
343
+ // ['Southern Ndebele', 'nr'],
344
+ // ['Spanish', 'es'],
345
+ // ['Sundanese', 'su'],
346
+ // ['Swahili (Kiswahili)', 'sw'],
347
+ // ['Swati', 'ss'],
348
+ // ['Swedish', 'sv'],
349
+ // ['Tagalog', 'tl'],
350
+ // ['Tahitian', 'ty'],
351
+ // ['Tajik', 'tg'],
352
+ // ['Tamil', 'ta'],
353
+ // ['Tatar', 'tt'],
354
+ // ['Telugu', 'te'],
355
+ // ['Thai', 'th'],
356
+ // ['Tibetan', 'bo'],
357
+ // ['Tigrinya', 'ti'],
358
+ // ['Tonga', 'to'],
359
+ // ['Tsonga', 'ts'],
360
+ // ['Turkish', 'tr'],
361
+ // ['Turkmen', 'tk'],
362
+ // ['Twi', 'tw'],
363
+ // ['Uyghur', 'ug'],
364
+ // ['Ukrainian', 'uk'],
365
+ // ['Urdu', 'ur'],
366
+ // ['Uzbek', 'uz'],
367
+ // ['Venda', 've'],
368
+ // ['Vietnamese', 'vi'],
369
+ // ['Volapük', 'vo'],
370
+ // ['Wallon', 'wa'],
371
+ // ['Welsh', 'cy'],
372
+ // ['Wolof', 'wo'],
373
+ // ['Western Frisian', 'fy'],
374
+ // ['Xhosa', 'xh'],
375
+ // ['Yiddish', 'yi', 'ji'],
376
+ // ['Yoruba', 'yo'],
377
+ // ['Zhuang, Chuang', 'za'],
378
+ // ['Zulu', 'zu'],
379
+ // ]
380
+ //
381
+ // langs.forEach(lang => {const period = getDayPeriods(lang[1]); if (period.am === 'AM') return; console.log(lang[1], period )})
382
+ // Chrome / Opera
383
+ // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
384
+ // Arabic ar {am: 'ص', pm: 'م'}
385
+ // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
386
+ // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
387
+ // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
388
+ // Hindi hi {am: 'am', pm: 'pm'}
389
+ // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
390
+ // Korean ko {am: '오전', pm: '오후'}
391
+ // Malay ms {am: 'PG', pm: 'PTG'}
392
+ // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
393
+ // Edge Chromium
394
+ // Albanian sq {am: 'e paradites', pm: 'e pasdites'}
395
+ // Amharic am {am: 'ጥዋት', pm: 'ከሰዓት'}
396
+ // Arabic ar {am: 'ص', pm: 'م'}
397
+ // Bulgarian bg {am: 'пр.об.', pm: 'сл.об.'}
398
+ // Chinese (Traditional) zh-Hant {am: '上午', pm: '下午'}
399
+ // Greek el {am: 'π.μ.', pm: 'μ.μ.'}
400
+ // Hindi hi {am: 'am', pm: 'pm'}
401
+ // Kannada kn {am: 'ಪೂರ್ವಾಹ್ನ', pm: 'ಅಪರಾಹ್ನ'}
402
+ // Korean ko {am: '오전', pm: '오후'}
403
+ // Malay ms {am: 'PG', pm: 'PTG'}
404
+ // Punjabi (Eastern) pa {am: 'ਪੂ.ਦੁ.', pm: 'ਬਾ.ਦੁ.'}
405
+ // Sindhi sd {am: 'صبح، منجهند', pm: 'منجهند، شام'}
406
+ // Tamil ta {am: 'முற்பகல்', pm: 'பிற்பகல்'}
407
+ // Firefox
408
+ // Akan ak { am: "AN", pm: "EW" }
409
+ // Albanian sq { am: "e paradites", pm: "e pasdites" }
410
+ // Amharic am { am: "ጥዋት", pm: "ከሰዓት" }
411
+ // Arabic ar { am: "ص", pm: "م" }
412
+ // Assamese as { am: "পূৰ্বাহ্ন", pm: "অপৰাহ্ন" }
413
+ // Bulgarian bg { am: "пр.об.", pm: "сл.об." }
414
+ // Chinese (Traditional) zh-Hant { am: "上午", pm: "下午" }
415
+ // Dzongkha dz { am: "སྔ་ཆ་", pm: "ཕྱི་ཆ་" }
416
+ // Ewe ee { am: "ŋdi", pm: "ɣetrɔ" }
417
+ // Greek el { am: "π.μ.", pm: "μ.μ." }
418
+ // Hindi hi { am: "am", pm: "pm" }
419
+ // Kannada kn { am: "ಪೂರ್ವಾಹ್ನ", pm: "ಅಪರಾಹ್ನ" }
420
+ // Korean ko { am: "오전", pm: "오후" }
421
+ // Malay ms { am: "PG", pm: "PTG" }
422
+ // Oromo (Afaan Oromo) om { am: "WD", pm: "WB" }
423
+ // Punjabi (Eastern) pa { am: "ਪੂ.ਦੁ.", pm: "ਬਾ.ਦੁ." }
424
+ // Sanskrit sa { am: "पूर्वाह्न", pm: "अपराह्न" }
425
+ // Sindhi sd { am: "صبح، منجهند", pm: "منجهند، شام" }
426
+ // Somali so { am: "GH", pm: "GD" }
427
+ // Tamil ta { am: "முற்பகல்", pm: "பிற்பகல்" }
428
+ // Tigrinya ti { am: "ቅ.ቀ.", pm: "ድ.ቀ." }
429
+ // Tonga to { am: "hengihengi", pm: "efiafi" }
430
+ // Twi tw { am: "AN", pm: "EW" }
431
+ // const formats = {
432
+ // "ar-SA" : "dd/MM/yy",
433
+ // "bg-BG" : "dd.M.yyyy",
434
+ // "ca-ES" : "dd/MM/yyyy",
435
+ // "zh-TW" : "yyyy/M/d",
436
+ // "cs-CZ" : "d.M.yyyy",
437
+ // "da-DK" : "dd-MM-yyyy",
438
+ // "de-DE" : "dd.MM.yyyy",
439
+ // "el-GR" : "d/M/yyyy",
440
+ // "en-US" : "M/d/yyyy",
441
+ // "fi-FI" : "d.M.yyyy",
442
+ // "fr-FR" : "dd/MM/yyyy",
443
+ // "he-IL" : "dd/MM/yyyy",
444
+ // "hu-HU" : "yyyy. MM. dd.",
445
+ // "is-IS" : "d.M.yyyy",
446
+ // "it-IT" : "dd/MM/yyyy",
447
+ // "ja-JP" : "yyyy/MM/dd",
448
+ // "ko-KR" : "yyyy-MM-dd",
449
+ // "nl-NL" : "d-M-yyyy",
450
+ // "nb-NO" : "dd.MM.yyyy",
451
+ // "pl-PL" : "yyyy-MM-dd",
452
+ // "pt-BR" : "d/M/yyyy",
453
+ // "ro-RO" : "dd.MM.yyyy",
454
+ // "ru-RU" : "dd.MM.yyyy",
455
+ // "hr-HR" : "d.M.yyyy",
456
+ // "sk-SK" : "d. M. yyyy",
457
+ // "sq-AL" : "yyyy-MM-dd",
458
+ // "sv-SE" : "yyyy-MM-dd",
459
+ // "th-TH" : "d/M/yyyy",
460
+ // "tr-TR" : "dd.MM.yyyy",
461
+ // "ur-PK" : "dd/MM/yyyy",
462
+ // "id-ID" : "dd/MM/yyyy",
463
+ // "uk-UA" : "dd.MM.yyyy",
464
+ // "be-BY" : "dd.MM.yyyy",
465
+ // "sl-SI" : "d.M.yyyy",
466
+ // "et-EE" : "d.MM.yyyy",
467
+ // "lv-LV" : "yyyy.MM.dd.",
468
+ // "lt-LT" : "yyyy.MM.dd",
469
+ // "fa-IR" : "MM/dd/yyyy",
470
+ // "vi-VN" : "dd/MM/yyyy",
471
+ // "hy-AM" : "dd.MM.yyyy",
472
+ // "az-Latn-AZ" : "dd.MM.yyyy",
473
+ // "eu-ES" : "yyyy/MM/dd",
474
+ // "mk-MK" : "dd.MM.yyyy",
475
+ // "af-ZA" : "yyyy/MM/dd",
476
+ // "ka-GE" : "dd.MM.yyyy",
477
+ // "fo-FO" : "dd-MM-yyyy",
478
+ // "hi-IN" : "dd-MM-yyyy",
479
+ // "ms-MY" : "dd/MM/yyyy",
480
+ // "kk-KZ" : "dd.MM.yyyy",
481
+ // "ky-KG" : "dd.MM.yy",
482
+ // "sw-KE" : "M/d/yyyy",
483
+ // "uz-Latn-UZ" : "dd/MM yyyy",
484
+ // "tt-RU" : "dd.MM.yyyy",
485
+ // "pa-IN" : "dd-MM-yy",
486
+ // "gu-IN" : "dd-MM-yy",
487
+ // "ta-IN" : "dd-MM-yyyy",
488
+ // "te-IN" : "dd-MM-yy",
489
+ // "kn-IN" : "dd-MM-yy",
490
+ // "mr-IN" : "dd-MM-yyyy",
491
+ // "sa-IN" : "dd-MM-yyyy",
492
+ // "mn-MN" : "yy.MM.dd",
493
+ // "gl-ES" : "dd/MM/yy",
494
+ // "kok-IN" : "dd-MM-yyyy",
495
+ // "syr-SY" : "dd/MM/yyyy",
496
+ // "dv-MV" : "dd/MM/yy",
497
+ // "ar-IQ" : "dd/MM/yyyy",
498
+ // "zh-CN" : "yyyy/M/d",
499
+ // "de-CH" : "dd.MM.yyyy",
500
+ // "en-GB" : "dd/MM/yyyy",
501
+ // "es-MX" : "dd/MM/yyyy",
502
+ // "fr-BE" : "d/MM/yyyy",
503
+ // "it-CH" : "dd.MM.yyyy",
504
+ // "nl-BE" : "d/MM/yyyy",
505
+ // "nn-NO" : "dd.MM.yyyy",
506
+ // "pt-PT" : "dd-MM-yyyy",
507
+ // "sr-Latn-CS" : "d.M.yyyy",
508
+ // "sv-FI" : "d.M.yyyy",
509
+ // "az-Cyrl-AZ" : "dd.MM.yyyy",
510
+ // "ms-BN" : "dd/MM/yyyy",
511
+ // "uz-Cyrl-UZ" : "dd.MM.yyyy",
512
+ // "ar-EG" : "dd/MM/yyyy",
513
+ // "zh-HK" : "d/M/yyyy",
514
+ // "de-AT" : "dd.MM.yyyy",
515
+ // "en-AU" : "d/MM/yyyy",
516
+ // "es-ES" : "dd/MM/yyyy",
517
+ // "fr-CA" : "yyyy-MM-dd",
518
+ // "sr-Cyrl-CS" : "d.M.yyyy",
519
+ // "ar-LY" : "dd/MM/yyyy",
520
+ // "zh-SG" : "d/M/yyyy",
521
+ // "de-LU" : "dd.MM.yyyy",
522
+ // "en-CA" : "dd/MM/yyyy",
523
+ // "es-GT" : "dd/MM/yyyy",
524
+ // "fr-CH" : "dd.MM.yyyy",
525
+ // "ar-DZ" : "dd-MM-yyyy",
526
+ // "zh-MO" : "d/M/yyyy",
527
+ // "de-LI" : "dd.MM.yyyy",
528
+ // "en-NZ" : "d/MM/yyyy",
529
+ // "es-CR" : "dd/MM/yyyy",
530
+ // "fr-LU" : "dd/MM/yyyy",
531
+ // "ar-MA" : "dd-MM-yyyy",
532
+ // "en-IE" : "dd/MM/yyyy",
533
+ // "es-PA" : "MM/dd/yyyy",
534
+ // "fr-MC" : "dd/MM/yyyy",
535
+ // "ar-TN" : "dd-MM-yyyy",
536
+ // "en-ZA" : "yyyy/MM/dd",
537
+ // "es-DO" : "dd/MM/yyyy",
538
+ // "ar-OM" : "dd/MM/yyyy",
539
+ // "en-JM" : "dd/MM/yyyy",
540
+ // "es-VE" : "dd/MM/yyyy",
541
+ // "ar-YE" : "dd/MM/yyyy",
542
+ // "en-029" : "MM/dd/yyyy",
543
+ // "es-CO" : "dd/MM/yyyy",
544
+ // "ar-SY" : "dd/MM/yyyy",
545
+ // "en-BZ" : "dd/MM/yyyy",
546
+ // "es-PE" : "dd/MM/yyyy",
547
+ // "ar-JO" : "dd/MM/yyyy",
548
+ // "en-TT" : "dd/MM/yyyy",
549
+ // "es-AR" : "dd/MM/yyyy",
550
+ // "ar-LB" : "dd/MM/yyyy",
551
+ // "en-ZW" : "M/d/yyyy",
552
+ // "es-EC" : "dd/MM/yyyy",
553
+ // "ar-KW" : "dd/MM/yyyy",
554
+ // "en-PH" : "M/d/yyyy",
555
+ // "es-CL" : "dd-MM-yyyy",
556
+ // "ar-AE" : "dd/MM/yyyy",
557
+ // "es-UY" : "dd/MM/yyyy",
558
+ // "ar-BH" : "dd/MM/yyyy",
559
+ // "es-PY" : "dd/MM/yyyy",
560
+ // "ar-QA" : "dd/MM/yyyy",
561
+ // "es-BO" : "dd/MM/yyyy",
562
+ // "es-SV" : "dd/MM/yyyy",
563
+ // "es-HN" : "dd/MM/yyyy",
564
+ // "es-NI" : "dd/MM/yyyy",
565
+ // "es-PR" : "dd/MM/yyyy",
566
+ // "am-ET" : "d/M/yyyy",
567
+ // "tzm-Latn-DZ" : "dd-MM-yyyy",
568
+ // "iu-Latn-CA" : "d/MM/yyyy",
569
+ // "sma-NO" : "dd.MM.yyyy",
570
+ // "mn-Mong-CN" : "yyyy/M/d",
571
+ // "gd-GB" : "dd/MM/yyyy",
572
+ // "en-MY" : "d/M/yyyy",
573
+ // "prs-AF" : "dd/MM/yy",
574
+ // "bn-BD" : "dd-MM-yy",
575
+ // "wo-SN" : "dd/MM/yyyy",
576
+ // "rw-RW" : "M/d/yyyy",
577
+ // "qut-GT" : "dd/MM/yyyy",
578
+ // "sah-RU" : "MM.dd.yyyy",
579
+ // "gsw-FR" : "dd/MM/yyyy",
580
+ // "co-FR" : "dd/MM/yyyy",
581
+ // "oc-FR" : "dd/MM/yyyy",
582
+ // "mi-NZ" : "dd/MM/yyyy",
583
+ // "ga-IE" : "dd/MM/yyyy",
584
+ // "se-SE" : "yyyy-MM-dd",
585
+ // "br-FR" : "dd/MM/yyyy",
586
+ // "smn-FI" : "d.M.yyyy",
587
+ // "moh-CA" : "M/d/yyyy",
588
+ // "arn-CL" : "dd-MM-yyyy",
589
+ // "ii-CN" : "yyyy/M/d",
590
+ // "dsb-DE" : "d. M. yyyy",
591
+ // "ig-NG" : "d/M/yyyy",
592
+ // "kl-GL" : "dd-MM-yyyy",
593
+ // "lb-LU" : "dd/MM/yyyy",
594
+ // "ba-RU" : "dd.MM.yy",
595
+ // "nso-ZA" : "yyyy/MM/dd",
596
+ // "quz-BO" : "dd/MM/yyyy",
597
+ // "yo-NG" : "d/M/yyyy",
598
+ // "ha-Latn-NG" : "d/M/yyyy",
599
+ // "fil-PH" : "M/d/yyyy",
600
+ // "ps-AF" : "dd/MM/yy",
601
+ // "fy-NL" : "d-M-yyyy",
602
+ // "ne-NP" : "M/d/yyyy",
603
+ // "se-NO" : "dd.MM.yyyy",
604
+ // "iu-Cans-CA" : "d/M/yyyy",
605
+ // "sr-Latn-RS" : "d.M.yyyy",
606
+ // "si-LK" : "yyyy-MM-dd",
607
+ // "sr-Cyrl-RS" : "d.M.yyyy",
608
+ // "lo-LA" : "dd/MM/yyyy",
609
+ // "km-KH" : "yyyy-MM-dd",
610
+ // "cy-GB" : "dd/MM/yyyy",
611
+ // "bo-CN" : "yyyy/M/d",
612
+ // "sms-FI" : "d.M.yyyy",
613
+ // "as-IN" : "dd-MM-yyyy",
614
+ // "ml-IN" : "dd-MM-yy",
615
+ // "en-IN" : "dd-MM-yyyy",
616
+ // "or-IN" : "dd-MM-yy",
617
+ // "bn-IN" : "dd-MM-yy",
618
+ // "tk-TM" : "dd.MM.yy",
619
+ // "bs-Latn-BA" : "d.M.yyyy",
620
+ // "mt-MT" : "dd/MM/yyyy",
621
+ // "sr-Cyrl-ME" : "d.M.yyyy",
622
+ // "se-FI" : "d.M.yyyy",
623
+ // "zu-ZA" : "yyyy/MM/dd",
624
+ // "xh-ZA" : "yyyy/MM/dd",
625
+ // "tn-ZA" : "yyyy/MM/dd",
626
+ // "hsb-DE" : "d. M. yyyy",
627
+ // "bs-Cyrl-BA" : "d.M.yyyy",
628
+ // "tg-Cyrl-TJ" : "dd.MM.yy",
629
+ // "sr-Latn-BA" : "d.M.yyyy",
630
+ // "smj-NO" : "dd.MM.yyyy",
631
+ // "rm-CH" : "dd/MM/yyyy",
632
+ // "smj-SE" : "yyyy-MM-dd",
633
+ // "quz-EC" : "dd/MM/yyyy",
634
+ // "quz-PE" : "dd/MM/yyyy",
635
+ // "hr-BA" : "d.M.yyyy.",
636
+ // "sr-Latn-ME" : "d.M.yyyy",
637
+ // "sma-SE" : "yyyy-MM-dd",
638
+ // "en-SG" : "d/M/yyyy",
639
+ // "ug-CN" : "yyyy-M-d",
640
+ // "sr-Cyrl-BA" : "d.M.yyyy",
641
+ // "es-US" : "M/d/yyyy"
642
+ // };
643
+ //
644
+ // Object.keys(formats).forEach(lang => {const period = getDayPeriods(lang); if (period.am === 'AM') return; console.log(lang, period )})
645
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBZ0NuQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBRSxFQUFFO0lBQy9ELElBQUksZUFBdUIsQ0FBQztJQUM1QixJQUFJO1FBQ0YsZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztLQUM5RjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsZUFBZSxHQUFHLFNBQVMsQ0FBQztLQUM3QjtJQUNELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFNBQWlCLFNBQVMsRUFBVyxFQUFFO0lBQzlELE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ25HLE9BQU8sTUFBTSxJQUFJLEtBQUssQ0FBQztBQUN6QixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFpQixFQUFFLElBQVksRUFBRSxFQUFFO0lBQ2pFLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO1FBQ2hDLE9BQU8sQ0FBQyxDQUFBO0tBQ1Q7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SUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBRUQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUN2RyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQztJQUV2RyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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O0FBQzFCLDZCQUE2QjtBQUM3Qiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiwyQkFBMkI7QUFDM0IsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNEJBQTRCO0FBQzVCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsMkJBQTJCO0FBQzNCLDRCQUE0QjtBQUM1QiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQiw0QkFBNEI7QUFDNUIsK0JBQStCO0FBQy9CLDBCQUEwQjtBQUMxQiw0QkFBNEI7QUFDNUIsNEJBQTRCO0FBQzVCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsK0JBQStCO0FBQy9CLCtCQUErQjtBQUMvQiwrQkFBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLDRCQUE0QjtBQUM1Qiw2QkFBNkI7QUFDN0IsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUM3QiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQix5QkFBeUI7QUFDekIsS0FBSztBQUNMLEVBQUU7QUFDRix5SUFBeUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XG4gIGxvY2FsZU1hdGNoZXI/OiBcImJlc3QgZml0XCIgfCBcImxvb2t1cFwiIHwgdW5kZWZpbmVkO1xuICB3ZWVrZGF5PzogXCJsb25nXCIgfCBcInNob3J0XCIgfCBcIm5hcnJvd1wiIHwgdW5kZWZpbmVkO1xuICBlcmE/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIHllYXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtb250aD86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCBcImxvbmdcIiB8IFwic2hvcnRcIiB8IFwibmFycm93XCIgfCB1bmRlZmluZWQ7XG4gIGRheT86IFwibnVtZXJpY1wiIHwgXCIyLWRpZ2l0XCIgfCB1bmRlZmluZWQ7XG4gIGhvdXI/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBtaW51dGU/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICBzZWNvbmQ/OiBcIm51bWVyaWNcIiB8IFwiMi1kaWdpdFwiIHwgdW5kZWZpbmVkO1xuICB0aW1lWm9uZU5hbWU/OiBcImxvbmdcIiB8IFwic2hvcnRcIiB8IHVuZGVmaW5lZDtcbiAgZm9ybWF0TWF0Y2hlcj86IFwiYmVzdCBmaXRcIiB8IFwiYmFzaWNcIiB8IHVuZGVmaW5lZDtcbiAgaG91cjEyPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgdGltZVpvbmU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCB0eXBlIERheVBlcmlvZCA9ICgnYW0nIHwgJ3BtJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRpbWVWYWx1ZSB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGRheVBlcmlvZD86IERheVBlcmlvZDtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXlQZXJpb2RzIHtcbiAgYW06IHN0cmluZztcbiAgcG06IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGdldFN1cHBvcnRlZExvY2FsZSA9IChsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JykgPT4ge1xuICBsZXQgc3VwcG9ydGVkTG9jYWxlOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgc3VwcG9ydGVkTG9jYWxlID0gSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobG9jYWxlKS5sZW5ndGggPyBsb2NhbGUgOiAnZGVmYXVsdCc7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBzdXBwb3J0ZWRMb2NhbGUgPSAnZGVmYXVsdCc7XG4gIH1cbiAgcmV0dXJuIHN1cHBvcnRlZExvY2FsZTtcbn1cblxuZXhwb3J0IGNvbnN0IGlzSG91cjEyID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBob3VyMTIgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogJ3Nob3J0J30pLnJlc29sdmVkT3B0aW9ucygpLmhvdXIxMjtcbiAgcmV0dXJuIGhvdXIxMiA/PyBmYWxzZTtcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnQxMmhUbzI0aCA9IChhYmJyOiAnYW0nIHwgJ3BtJywgaG91cjogbnVtYmVyKSA9PiB7XG4gIGlmIChhYmJyID09PSAnYW0nICYmIGhvdXIgPT09IDEyKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAoYWJiciA9PT0gJ2FtJykge1xuICAgIHJldHVybiBob3VyXG4gIH1cbiAgaWYgKGFiYnIgPT09ICdwbScgJiYgaG91ciA9PT0gMTIpIHtcbiAgICByZXR1cm4gMTJcbiAgfVxuICByZXR1cm4gaG91ciArIDEyXG59XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0MjRoVG8xMmggPSAoaG91cjogbnVtYmVyKSA9PiBob3VyICUgMTIgfHwgMTJcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUaW1lVG9EYXRlID0gKHRpbWU6IERhdGUgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSA9PlxuICB0aW1lID8gKHRpbWUgaW5zdGFuY2VvZiBEYXRlID8gbmV3IERhdGUodGltZSkgOiBuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpIDogbnVsbFxuXG4vLyBleHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuLy8gICBpZiAoZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlKS5pbmNsdWRlcygnQU0nKSkge1xuLy8gICAgIHJldHVybiAnYW0nXG4vLyAgIH1cbi8vICAgaWYgKGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoJ1BNJykpIHtcbi8vICAgICByZXR1cm4gJ3BtJ1xuLy8gICB9XG4vLyAgIHJldHVybiBkYXRlLmdldEhvdXJzKCkgPj0gMTIgPyAncG0nIDogJ2FtJ1xuLy8gfVxuXG5leHBvcnQgY29uc3QgZ2V0QW1QbSA9IChkYXRlOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30pOiBEYXlQZXJpb2QgPT4ge1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKCdlbi1VUycsIG9wdGlvbnMpO1xuICBjb25zdCB0aW1lID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLVVTJywge3RpbWVTdHlsZTogXCJzaG9ydFwiLCBob3VyMTI6IHRydWV9KS5mb3JtYXQoZGF0ZSk7XG5cbiAgY29uc3QgZGF5UGVyaW9kID0gZGF5UGVyaW9kcy5maW5kKGVsZW1lbnQgPT4gdGltZS5pbmNsdWRlcyhlbGVtZW50LmxhYmVsKSk7XG5cbiAgcmV0dXJuIDxEYXlQZXJpb2Q+KGRheVBlcmlvZD8udmFsdWUgPz8gKGRhdGUuZ2V0SG91cnMoKSA+PSAxMiA/ICdwbScgOiAnYW0nKSk7XG59XG5cbmV4cG9ydCBjb25zdCBpc0FtID0gKGRhdGU6IERhdGUpID0+IHtcbiAgcmV0dXJuIGRhdGUuZ2V0SG91cnMoKSA8IDEyO1xufVxuZXhwb3J0IGNvbnN0IGlzUG0gPSAoZGF0ZTogRGF0ZSkgPT4ge1xuICByZXR1cm4gZGF0ZS5nZXRIb3VycygpID4gMTE7XG59XG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkVGltZVpvbmUgPSAodGltZVpvbmU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgdHJ5IHtcbiAgICBpZiAodGltZVpvbmUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghSW50bCB8fCAhSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RpbWUgem9uZXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRpbWVab25lICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRpbWVab25lIHR5cGUgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyB0aHJvd3MgYW4gZXJyb3IgaWYgdGltZXpvbmUgaXMgbm90IHZhbGlkXG4gICAgICBJbnRsLkRhdGVUaW1lRm9ybWF0KHVuZGVmaW5lZCwgeyB0aW1lWm9uZTogdGltZVpvbmUgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0aW1lWm9uZSBzdHJpbmcgc3BlY2lmaWVkOiAke3RpbWVab25lfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mSG91cnMgPSAobG9jYWxlOiBzdHJpbmcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKGxvY2FsZSk7XG4gIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDI0IH0sIChfLCBpKSA9PiB7XG4gICAgdGltZS5zZXRIb3VycyhpKTtcbiAgICBjb25zdCBkYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIGxvY2FsZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgZGF5UGVyaW9kOiA8RGF5UGVyaW9kPmRheVBlcmlvZCxcbiAgICAgIGxhYmVsOiB0aW1lLnRvTG9jYWxlVGltZVN0cmluZyhsb2NhbGUsIHtcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBob3VyMTI6IGhvdXIxMixcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgfSkuc3BsaXQoJzonKVswXSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRMaXN0T2ZNaW51dGVzID0gKGxvY2FsZTogc3RyaW5nLCBvcHRpb25zOiBEYXRlVGltZUZvcm1hdE9wdGlvbnMgPSB7fSwgdmFsdWVBc1N0cmluZyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgwKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgZC5zZXRNaW51dGVzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMV0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgZ2V0TGlzdE9mU2Vjb25kcyA9IChsb2NhbGU6IHN0cmluZywgb3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge30sICB2YWx1ZUFzU3RyaW5nID0gZmFsc2UpID0+XG4gIEFycmF5LmZyb20oeyBsZW5ndGg6IDYwIH0sIChfLCBpKSA9PiB7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKDApXG4gICAgZC5zZXRTZWNvbmRzKGkpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBpLFxuICAgICAgLy8gdmFsdWU6IHZhbHVlQXNTdHJpbmcgPyBpLnRvU3RyaW5nKCkgOiBpLFxuICAgICAgbGFiZWw6IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwge1xuICAgICAgICAvLyAuLi5vcHRpb25zLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIGhvdXIxMjogZmFsc2UsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgIH0pLnNwbGl0KCc6JylbMl0sXG4gICAgfVxuICB9KVxuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRIb3VyID0gKGRhdGU6IERhdGUgfCBudWxsLCBsb2NhbGU6IHN0cmluZykgPT5cbiAgZGF0ZSBpbnN0YW5jZW9mIERhdGUgPyAoaXNIb3VyMTIobG9jYWxlKSA/IGNvbnZlcnQyNGhUbzEyaChkYXRlLmdldEhvdXJzKCkpIDogZGF0ZS5nZXRIb3VycygpKSA6ICcnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VsZWN0ZWRNaW51dGVzID0gKGRhdGU6IERhdGUgfCBudWxsKSA9PiAoZGF0ZSA/IGRhdGUuZ2V0TWludXRlcygpIDogJycpXG5cbmV4cG9ydCBjb25zdCBnZXRTZWxlY3RlZFNlY29uZHMgPSAoZGF0ZTogRGF0ZSB8IG51bGwpID0+IChkYXRlID8gZGF0ZS5nZXRTZWNvbmRzKCkgOiAnJylcblxuLy8gZXhwb3J0IGNvbnN0IGlzQW1QbSA9IChsb2NhbGU6IHN0cmluZykgPT5cbi8vICAgWydhbScsICdBTScsICdwbScsICdQTSddLnNvbWUoKGVsKSA9PiBuZXcgRGF0ZSgpLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSkuaW5jbHVkZXMoZWwpKVxuXG5leHBvcnQgY29uc3QgaXNBbVBtID0gKGxvY2FsZTogc3RyaW5nID0gJ2RlZmF1bHQnKSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgY29uc3QgdGltZSA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHN1cHBvcnRlZExvY2FsZSwge3RpbWVTdHlsZTogXCJzaG9ydFwifSkuZm9ybWF0KGRhdGUpO1xuICBjb25zdCBpc0FtUG0gPSB0aW1lLm1hdGNoKC8oPzpcXHB7TH1cXHB7TX1cXHB7UH0qKSt8KD86XFxwe0x9XFxwe1B9KikrL2d1KSA/PyBbXTtcbiAgcmV0dXJuIGlzQW1QbS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgY29uc3QgaXNWYWxpZFRpbWUgPSAodGltZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciB8IGFueSkgPT4ge1xuICBpZiAodHlwZW9mIHRpbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlzVmFsaWQodGltZSkgfHwgaXNWYWxpZChuZXcgRGF0ZShgMTk3MC0wMS0wMSAke3RpbWV9YCkpO1xuICB9XG4gIHJldHVybiBpc1ZhbGlkKHRpbWUpO1xuICAvLyBjb25zdCBkID0gbmV3IERhdGUoYDE5NzAtMDEtMDEgJHt0aW1lfWApXG4gIC8vIHJldHVybiBkIGluc3RhbmNlb2YgRGF0ZSAmJiBkLmdldFRpbWUoKVxufVxuXG4vLyBleHBvcnQgY29uc3QgX2dldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4vLyAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuLy9cbi8vICAgY29uc3QgZGF5UGVyaW9kcyA9IHsgYW06ICdhbScsIHBtOiAncG0nIH07XG4vL1xuLy8gICBjb25zdCBob3VyMTIgPSBpc0hvdXIxMihzdXBwb3J0ZWRMb2NhbGUpO1xuLy8gICBpZiAoIWhvdXIxMikge1xuLy8gICAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gICB9XG4vL1xuLy8gICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbi8vICAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuLy9cbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoc3VwcG9ydGVkTG9jYWxlLCB7IGhvdXIxMjogaG91cjEyLCBob3VyOiAnbnVtZXJpYycsIHRpbWVab25lOiAnVVRDJyB9KTtcbi8vICAgZGF5UGVyaW9kcy5hbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4vLyAgIGRheVBlcmlvZHMucG0gPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhwbSkuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2RheVBlcmlvZCcpPy52YWx1ZSA/PyAncG0nXG4vLyAgIHJldHVybiBkYXlQZXJpb2RzO1xuLy8gfTtcblxuZXhwb3J0IGNvbnN0IGdldERheVBlcmlvZHMgPSAobG9jYWxlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIG9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IGdldFN1cHBvcnRlZExvY2FsZShsb2NhbGUpO1xuXG4gIGNvbnN0IGRheVBlcmlvZHMgPSBbXG4gICAgeyB2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbScgfSxcbiAgICB7IHZhbHVlOiAncG0nLCBsYWJlbDogJ3BtJyB9LFxuICBdO1xuXG4gIGNvbnN0IGhvdXIxMiA9IGlzSG91cjEyKHN1cHBvcnRlZExvY2FsZSk7XG4gIGlmICghaG91cjEyKSB7XG4gICAgcmV0dXJuIGRheVBlcmlvZHM7XG4gIH1cblxuICBjb25zdCBhbSA9IG5ldyBEYXRlKERhdGUuVVRDKDE5NzAsIDAsIDEsIDAsIDAsIDApKTtcbiAgY29uc3QgcG0gPSBuZXcgRGF0ZShEYXRlLlVUQygxOTcwLCAwLCAxLCAxMywgMCwgMCkpO1xuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChzdXBwb3J0ZWRMb2NhbGUsIHsgaG91cjEyOiBob3VyMTIsIGhvdXI6ICdudW1lcmljJywgdGltZVpvbmU6ICdVVEMnIH0pO1xuICBjb25zdCBmb3JtYXR0ZWRBbSA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGFtKS5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAnZGF5UGVyaW9kJyk/LnZhbHVlID8/ICdhbSc7XG4gIGNvbnN0IGZvcm1hdHRlZFBtID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMocG0pLmZpbmQocGFydCA9PiBwYXJ0LnR5cGUgPT09ICdkYXlQZXJpb2QnKT8udmFsdWUgPz8gJ3BtJztcblxuICBkYXlQZXJpb2RzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4LCBkYXlQZXJpb2RzKSA9PiB7XG4gICAgZGF5UGVyaW9kc1tpbmRleF0ubGFiZWwgPSBlbGVtZW50LnZhbHVlID09PSAnYW0nID8gKGZvcm1hdHRlZEFtID8/ICdhbScpIDogKGZvcm1hdHRlZFBtID8/ICdwbScpO1xuICB9KVxuXG4gIHJldHVybiBkYXlQZXJpb2RzO1xufTtcblxuXG5cbi8vIHRlc3Rpbmdcbi8vIGNvbnN0IGxhbmdzID0gW1xuLy8gICBbJ0Fia2hhemlhbicsICdhYiddLFxuLy8gICBbJ0FmYXInLCAnYWEnXSxcbi8vICAgWydBZnJpa2FhbnMnLCAnYWYnXSxcbi8vICAgWydBa2FuJywgJ2FrJ10sXG4vLyAgIFsnQWxiYW5pYW4nLCAnc3EnXSxcbi8vICAgWydBbWhhcmljJywgJ2FtJ10sXG4vLyAgIFsnQXJhYmljJywgJ2FyJ10sXG4vLyAgIFsnQXJhZ29uZXNlJywgJ2FuJ10sXG4vLyAgIFsnQXJnZW50aW5hJywgJ2VzLWFyJ10sXG4vLyAgIFsnQXJtZW5pYW4nLCAnaHknXSxcbi8vICAgWydBc3NhbWVzZScsICdhcyddLFxuLy8gICBbJ0F2YXJpYycsICdhdiddLFxuLy8gICBbJ0F2ZXN0YW4nLCAnYWUnXSxcbi8vICAgWydBeW1hcmEnLCAnYXknXSxcbi8vICAgWydBemVyYmFpamFuaScsICdheiddLFxuLy8gICBbJ0JhbWJhcmEnLCAnYm0nXSxcbi8vICAgWydCYXNoa2lyJywgJ2JhJ10sXG4vLyAgIFsnQmFzcXVlJywgJ2V1J10sXG4vLyAgIFsnQmVsYXJ1c2lhbicsICdiZSddLFxuLy8gICBbJ0JlbmdhbGkgKEJhbmdsYSknLCAnYm4nXSxcbi8vICAgWydCaWhhcmknLCAnYmgnXSxcbi8vICAgWydCaXNsYW1hJywgJ2JpJ10sXG4vLyAgIFsnQm9zbmlhbicsICdicyddLFxuLy8gICBbJ0JyZXRvbicsICdiciddLFxuLy8gICBbJ0J1bGdhcmlhbicsICdiZyddLFxuLy8gICBbJ0J1cm1lc2UnLCAnbXknXSxcbi8vICAgWydDYXRhbGFuJywgJ2NhJ10sXG4vLyAgIFsnQ2hhbW9ycm8nLCAnY2gnXSxcbi8vICAgWydDaGVjaGVuJywgJ2NlJ10sXG4vLyAgIFsnQ2hpY2hld2EsIENoZXdhLCBOeWFuamEnLCAnbnknXSxcbi8vICAgWydDaGluZXNlJywgJ3poJ10sXG4vLyAgIFsnQ2hpbmVzZSAoU2ltcGxpZmllZCknLCAnemgtSGFucyddLFxuLy8gICBbJ0NoaW5lc2UgKFRyYWRpdGlvbmFsKScsICd6aC1IYW50J10sXG4vLyAgIFsnQ2h1dmFzaCcsICdjdiddLFxuLy8gICBbJ0Nvcm5pc2gnLCAna3cnXSxcbi8vICAgWydDb3JzaWNhbicsICdjbyddLFxuLy8gICBbJ0NyZWUnLCAnY3InXSxcbi8vICAgWydDcm9hdGlhbicsICdociddLFxuLy8gICBbJ0N6ZWNoJywgJ2NzJ10sXG4vLyAgIFsnRGFuaXNoJywgJ2RhJ10sXG4vLyAgIFsnRGl2ZWhpLCBEaGl2ZWhpLCBNYWxkaXZpYW4nLCAnZHYnXSxcbi8vICAgWydEdXRjaCcsICdubCddLFxuLy8gICBbJ0R6b25na2hhJywgJ2R6J10sXG4vLyAgIFsnRW5nbGlzaCcsICdlbiddLFxuLy8gICBbJ0VzcGVyYW50bycsICdlbyddLFxuLy8gICBbJ0VzdG9uaWFuJywgJ2V0J10sXG4vLyAgIFsnRXdlJywgJ2VlJ10sXG4vLyAgIFsnRmFyb2VzZScsICdmbyddLFxuLy8gICBbJ0ZpamlhbicsICdmaiddLFxuLy8gICBbJ0Zpbm5pc2gnLCAnZmknXSxcbi8vICAgWydGcmVuY2gnLCAnZnInXSxcbi8vICAgWydGdWxhLCBGdWxhaCwgUHVsYWFyLCBQdWxhcicsICdmZiddLFxuLy8gICBbJ0dhbGljaWFuJywgJ2dsJ10sXG4vLyAgIFsnR2FlbGljIChTY290dGlzaCknLCAnZ2QnXSxcbi8vICAgWydHYWVsaWMgKE1hbngpJywgJ2d2J10sXG4vLyAgIFsnR2VvcmdpYW4nLCAna2EnXSxcbi8vICAgWydHZXJtYW4nLCAnZGUnXSxcbi8vICAgWydHcmVlaycsICdlbCddLFxuLy8gICBbJ0dyZWVubGFuZGljJywgJ2tsJ10sXG4vLyAgIFsnR3VhcmFuaScsICdnbiddLFxuLy8gICBbJ0d1amFyYXRpJywgJ2d1J10sXG4vLyAgIFsnSGFpdGlhbiBDcmVvbGUnLCAnaHQnXSxcbi8vICAgWydIYXVzYScsICdoYSddLFxuLy8gICBbJ0hlYnJldycsICdoZSddLFxuLy8gICBbJ0hlcmVybycsICdoeiddLFxuLy8gICBbJ0hpbmRpJywgJ2hpJ10sXG4vLyAgIFsnSGlyaSBNb3R1JywgJ2hvJ10sXG4vLyAgIFsnSHVuZ2FyaWFuJywgJ2h1J10sXG4vLyAgIFsnSWNlbGFuZGljJywgJ2lzJ10sXG4vLyAgIFsnSWRvJywgJ2lvJ10sXG4vLyAgIFsnSWdibycsICdpZyddLFxuLy8gICBbJ0luZG9uZXNpYW4nLCAnaWQnLCAnaW4nXSxcbi8vICAgWydJbnRlcmxpbmd1YScsICdpYSddLFxuLy8gICBbJ0ludGVybGluZ3VlJywgJ2llJ10sXG4vLyAgIFsnSW51a3RpdHV0JywgJ2l1J10sXG4vLyAgIFsnSW51cGlhaycsICdpayddLFxuLy8gICBbJ0lyaXNoJywgJ2dhJ10sXG4vLyAgIFsnSXRhbGlhbicsICdpdCddLFxuLy8gICBbJ0phcGFuZXNlJywgJ2phJ10sXG4vLyAgIFsnSmF2YW5lc2UnLCAnanYnXSxcbi8vICAgWydLYWxhYWxsaXN1dCwgR3JlZW5sYW5kaWMnLCAna2wnXSxcbi8vICAgWydLYW5uYWRhJywgJ2tuJ10sXG4vLyAgIFsnS2FudXJpJywgJ2tyJ10sXG4vLyAgIFsnS2FzaG1pcmknLCAna3MnXSxcbi8vICAgWydLYXpha2gnLCAna2snXSxcbi8vICAgWydLaG1lcicsICdrbSddLFxuLy8gICBbJ0tpa3V5dScsICdraSddLFxuLy8gICBbJ0tpbnlhcndhbmRhIChSd2FuZGEpJywgJ3J3J10sXG4vLyAgIFsnS2lydW5kaScsICdybiddLFxuLy8gICBbJ0t5cmd5eicsICdreSddLFxuLy8gICBbJ0tvbWknLCAna3YnXSxcbi8vICAgWydLb25nbycsICdrZyddLFxuLy8gICBbJ0tvcmVhbicsICdrbyddLFxuLy8gICBbJ0t1cmRpc2gnLCAna3UnXSxcbi8vICAgWydLd2FueWFtYScsICdraiddLFxuLy8gICBbJ0xhbycsICdsbyddLFxuLy8gICBbJ0xhdGluJywgJ2xhJ10sXG4vLyAgIFsnTGF0dmlhbiAoTGV0dGlzaCknLCAnbHYnXSxcbi8vICAgWydMaW1idXJnaXNoIChMaW1idXJnZXIpJywgJ2xpJ10sXG4vLyAgIFsnTGluZ2FsYScsICdsbiddLFxuLy8gICBbJ0xpdGh1YW5pYW4nLCAnbHQnXSxcbi8vICAgWydMdWdhLUthdGFuZ2EnLCAnbHUnXSxcbi8vICAgWydMdWdhbmRhLCBHYW5kYScsICdsZyddLFxuLy8gICBbJ0x1eGVtYm91cmdpc2gnLCAnbGInXSxcbi8vICAgWydNYW54JywgJ2d2J10sXG4vLyAgIFsnTWFjZWRvbmlhbicsICdtayddLFxuLy8gICBbJ01hbGFnYXN5JywgJ21nJ10sXG4vLyAgIFsnTWFsYXknLCAnbXMnXSxcbi8vICAgWydNYWxheWFsYW0nLCAnbWwnXSxcbi8vICAgWydNYWx0ZXNlJywgJ210J10sXG4vLyAgIFsnTWFvcmknLCAnbWknXSxcbi8vICAgWydNYXJhdGhpJywgJ21yJ10sXG4vLyAgIFsnTWFyc2hhbGxlc2UnLCAnbWgnXSxcbi8vICAgWydNb2xkYXZpYW4nLCAnbW8nXSxcbi8vICAgWydNb25nb2xpYW4nLCAnbW4nXSxcbi8vICAgWydOYXVydScsICduYSddLFxuLy8gICBbJ05hdmFqbycsICdudiddLFxuLy8gICBbJ05kb25nYScsICduZyddLFxuLy8gICBbJ05vcnRoZXJuIE5kZWJlbGUnLCAnbmQnXSxcbi8vICAgWydOZXBhbGknLCAnbmUnXSxcbi8vICAgWydOb3J3ZWdpYW4nLCAnbm8nXSxcbi8vICAgWydOb3J3ZWdpYW4gYm9rbcOlbCcsICduYiddLFxuLy8gICBbJ05vcndlZ2lhbiBueW5vcnNrJywgJ25uJ10sXG4vLyAgIFsnTnVvc3UnLCAnaWknXSxcbi8vICAgWydPY2NpdGFuJywgJ29jJ10sXG4vLyAgIFsnT2ppYndlJywgJ29qJ10sXG4vLyAgIFsnT2xkIENodXJjaCBTbGF2b25pYywgT2xkIEJ1bGdhcmlhbicsICdjdSddLFxuLy8gICBbJ09yaXlhJywgJ29yJ10sXG4vLyAgIFsnT3JvbW8gKEFmYWFuIE9yb21vKScsICdvbSddLFxuLy8gICBbJ09zc2V0aWFuJywgJ29zJ10sXG4vLyAgIFsnUMSBbGknLCAncGknXSxcbi8vICAgWydQYXNodG8sIFB1c2h0bycsICdwcyddLFxuLy8gICBbJ1BlcnNpYW4gKEZhcnNpKScsICdmYSddLFxuLy8gICBbJ1BvbGlzaCcsICdwbCddLFxuLy8gICBbJ1BvcnR1Z3Vlc2UnLCAncHQnXSxcbi8vICAgWydQdW5qYWJpIChFYXN0ZXJuKScsICdwYSddLFxuLy8gICBbJ1F1ZWNodWEnLCAncXUnXSxcbi8vICAgWydSb21hbnNoJywgJ3JtJ10sXG4vLyAgIFsnUm9tYW5pYW4nLCAncm8nXSxcbi8vICAgWydSdXNzaWFuJywgJ3J1J10sXG4vLyAgIFsnU2FtaScsICdzZSddLFxuLy8gICBbJ1NhbW9hbicsICdzbSddLFxuLy8gICBbJ1NhbmdvJywgJ3NnJ10sXG4vLyAgIFsnU2Fuc2tyaXQnLCAnc2EnXSxcbi8vICAgWydTZXJiaWFuJywgJ3NyJ10sXG4vLyAgIFsnU2VyYm8tQ3JvYXRpYW4nLCAnc2gnXSxcbi8vICAgWydTZXNvdGhvJywgJ3N0J10sXG4vLyAgIFsnU2V0c3dhbmEnLCAndG4nXSxcbi8vICAgWydTaG9uYScsICdzbiddLFxuLy8gICBbJ1NpY2h1YW4gWWknLCAnaWknXSxcbi8vICAgWydTaW5kaGknLCAnc2QnXSxcbi8vICAgWydTaW5oYWxlc2UnLCAnc2knXSxcbi8vICAgWydTaXN3YXRpJywgJ3NzJ10sXG4vLyAgIFsnU2xvdmFrJywgJ3NrJ10sXG4vLyAgIFsnU2xvdmVuaWFuJywgJ3NsJ10sXG4vLyAgIFsnU29tYWxpJywgJ3NvJ10sXG4vLyAgIFsnU291dGhlcm4gTmRlYmVsZScsICduciddLFxuLy8gICBbJ1NwYW5pc2gnLCAnZXMnXSxcbi8vICAgWydTdW5kYW5lc2UnLCAnc3UnXSxcbi8vICAgWydTd2FoaWxpIChLaXN3YWhpbGkpJywgJ3N3J10sXG4vLyAgIFsnU3dhdGknLCAnc3MnXSxcbi8vICAgWydTd2VkaXNoJywgJ3N2J10sXG4vLyAgIFsnVGFnYWxvZycsICd0bCddLFxuLy8gICBbJ1RhaGl0aWFuJywgJ3R5J10sXG4vLyAgIFsnVGFqaWsnLCAndGcnXSxcbi8vICAgWydUYW1pbCcsICd0YSddLFxuLy8gICBbJ1RhdGFyJywgJ3R0J10sXG4vLyAgIFsnVGVsdWd1JywgJ3RlJ10sXG4vLyAgIFsnVGhhaScsICd0aCddLFxuLy8gICBbJ1RpYmV0YW4nLCAnYm8nXSxcbi8vICAgWydUaWdyaW55YScsICd0aSddLFxuLy8gICBbJ1RvbmdhJywgJ3RvJ10sXG4vLyAgIFsnVHNvbmdhJywgJ3RzJ10sXG4vLyAgIFsnVHVya2lzaCcsICd0ciddLFxuLy8gICBbJ1R1cmttZW4nLCAndGsnXSxcbi8vICAgWydUd2knLCAndHcnXSxcbi8vICAgWydVeWdodXInLCAndWcnXSxcbi8vICAgWydVa3JhaW5pYW4nLCAndWsnXSxcbi8vICAgWydVcmR1JywgJ3VyJ10sXG4vLyAgIFsnVXpiZWsnLCAndXonXSxcbi8vICAgWydWZW5kYScsICd2ZSddLFxuLy8gICBbJ1ZpZXRuYW1lc2UnLCAndmknXSxcbi8vICAgWydWb2xhcMO8aycsICd2byddLFxuLy8gICBbJ1dhbGxvbicsICd3YSddLFxuLy8gICBbJ1dlbHNoJywgJ2N5J10sXG4vLyAgIFsnV29sb2YnLCAnd28nXSxcbi8vICAgWydXZXN0ZXJuIEZyaXNpYW4nLCAnZnknXSxcbi8vICAgWydYaG9zYScsICd4aCddLFxuLy8gICBbJ1lpZGRpc2gnLCAneWknLCAnamknXSxcbi8vICAgWydZb3J1YmEnLCAneW8nXSxcbi8vICAgWydaaHVhbmcsIENodWFuZycsICd6YSddLFxuLy8gICBbJ1p1bHUnLCAnenUnXSxcbi8vIF1cbi8vXG4vLyBsYW5ncy5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZ1sxXSk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZ1sxXSwgcGVyaW9kICl9KVxuXG5cbi8vIENocm9tZSAvIE9wZXJhXG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gVGFtaWwgdGEge2FtOiAn4K6u4K+B4K6x4K+N4K6q4K6V4K6y4K+NJywgcG06ICfgrqrgrr/grrHgr43grqrgrpXgrrLgr40nfVxuXG4vLyBFZGdlIENocm9taXVtXG4vLyBBbGJhbmlhbiBzcSB7YW06ICdlIHBhcmFkaXRlcycsIHBtOiAnZSBwYXNkaXRlcyd9XG4vLyBBbWhhcmljIGFtIHthbTogJ+GMpeGLi+GJtScsIHBtOiAn4Yqo4Yiw4YuT4Ym1J31cbi8vIEFyYWJpYyBhciB7YW06ICfYtScsIHBtOiAn2YUnfVxuLy8gQnVsZ2FyaWFuIGJnIHthbTogJ9C/0YAu0L7QsS4nLCBwbTogJ9GB0Lsu0L7QsS4nfVxuLy8gQ2hpbmVzZSAoVHJhZGl0aW9uYWwpIHpoLUhhbnQge2FtOiAn5LiK5Y2IJywgcG06ICfkuIvljYgnfVxuLy8gR3JlZWsgZWwge2FtOiAnz4AuzrwuJywgcG06ICfOvC7OvC4nfVxuLy8gSGluZGkgaGkge2FtOiAnYW0nLCBwbTogJ3BtJ31cbi8vIEthbm5hZGEga24ge2FtOiAn4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoJywgcG06ICfgsoXgsqrgsrDgsr7gsrngs43gsqgnfVxuLy8gS29yZWFuIGtvIHthbTogJ+yYpOyghCcsIHBtOiAn7Jik7ZuEJ31cbi8vIE1hbGF5IG1zIHthbTogJ1BHJywgcG06ICdQVEcnfVxuLy8gUHVuamFiaSAoRWFzdGVybikgcGEge2FtOiAn4Kiq4KmCLuCopuCpgS4nLCBwbTogJ+CorOCovi7gqKbgqYEuJ31cbi8vIFNpbmRoaSBzZCB7YW06ICfYtdio2K3YjCDZhdmG2KzZh9mG2K8nLCBwbTogJ9mF2YbYrNmH2YbYr9iMINi02KfZhSd9XG4vLyBUYW1pbCB0YSB7YW06ICfgrq7gr4HgrrHgr43grqrgrpXgrrLgr40nLCBwbTogJ+CuquCuv+CuseCvjeCuquCuleCusuCvjSd9XG5cblxuLy8gRmlyZWZveFxuLy8gQWthbiBhayB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuLy8gQWxiYW5pYW4gc3EgeyBhbTogXCJlIHBhcmFkaXRlc1wiLCBwbTogXCJlIHBhc2RpdGVzXCIgfVxuLy8gQW1oYXJpYyBhbSB7IGFtOiBcIuGMpeGLi+GJtVwiLCBwbTogXCLhiqjhiLDhi5PhibVcIiB9XG4vLyBBcmFiaWMgYXIgeyBhbTogXCLYtVwiLCBwbTogXCLZhVwiIH1cbi8vIEFzc2FtZXNlIGFzIHsgYW06IFwi4Kaq4KeC4Kew4KeN4Kas4Ka+4Ka54KeN4KaoXCIsIHBtOiBcIuCmheCmquCnsOCmvuCmueCnjeCmqFwiIH1cbi8vIEJ1bGdhcmlhbiBiZyB7IGFtOiBcItC/0YAu0L7QsS5cIiwgcG06IFwi0YHQuy7QvtCxLlwiIH1cbi8vIENoaW5lc2UgKFRyYWRpdGlvbmFsKSB6aC1IYW50IHsgYW06IFwi5LiK5Y2IXCIsIHBtOiBcIuS4i+WNiFwiIH1cbi8vIER6b25na2hhIGR6IHsgYW06IFwi4L2m4L6U4LyL4L2G4LyLXCIsIHBtOiBcIuC9leC+seC9suC8i+C9huC8i1wiIH1cbi8vIEV3ZSBlZSB7IGFtOiBcIsWLZGlcIiwgcG06IFwiyaNldHLJlFwiIH1cbi8vIEdyZWVrIGVsIHsgYW06IFwiz4AuzrwuXCIsIHBtOiBcIs68Ls68LlwiIH1cbi8vIEhpbmRpIGhpIHsgYW06IFwiYW1cIiwgcG06IFwicG1cIiB9XG4vLyBLYW5uYWRhIGtuIHsgYW06IFwi4LKq4LOC4LKw4LON4LK14LK+4LK54LON4LKoXCIsIHBtOiBcIuCyheCyquCysOCyvuCyueCzjeCyqFwiIH1cbi8vIEtvcmVhbiBrbyB7IGFtOiBcIuyYpOyghFwiLCBwbTogXCLsmKTtm4RcIiB9XG4vLyBNYWxheSBtcyB7IGFtOiBcIlBHXCIsIHBtOiBcIlBUR1wiIH1cbi8vIE9yb21vIChBZmFhbiBPcm9tbykgb20geyBhbTogXCJXRFwiLCBwbTogXCJXQlwiIH1cbi8vIFB1bmphYmkgKEVhc3Rlcm4pIHBhIHsgYW06IFwi4Kiq4KmCLuCopuCpgS5cIiwgcG06IFwi4Kis4Ki+LuCopuCpgS5cIiB9XG4vLyBTYW5za3JpdCBzYSB7IGFtOiBcIuCkquClguCksOCljeCkteCkvuCkueCljeCkqFwiLCBwbTogXCLgpIXgpKrgpLDgpL7gpLngpY3gpKhcIiB9XG4vLyBTaW5kaGkgc2QgeyBhbTogXCLYtdio2K3YjCDZhdmG2KzZh9mG2K9cIiwgcG06IFwi2YXZhtis2YfZhtiv2Iwg2LTYp9mFXCIgfVxuLy8gU29tYWxpIHNvIHsgYW06IFwiR0hcIiwgcG06IFwiR0RcIiB9XG4vLyBUYW1pbCB0YSB7IGFtOiBcIuCuruCvgeCuseCvjeCuquCuleCusuCvjVwiLCBwbTogXCLgrqrgrr/grrHgr43grqrgrpXgrrLgr41cIiB9XG4vLyBUaWdyaW55YSB0aSB7IGFtOiBcIuGJhS7hiYAuXCIsIHBtOiBcIuGLtS7hiYAuXCIgfVxuLy8gVG9uZ2EgdG8geyBhbTogXCJoZW5naWhlbmdpXCIsIHBtOiBcImVmaWFmaVwiIH1cbi8vIFR3aSB0dyB7IGFtOiBcIkFOXCIsIHBtOiBcIkVXXCIgfVxuXG5cblxuLy8gY29uc3QgZm9ybWF0cyA9IHtcbi8vICAgXCJhci1TQVwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJnLUJHXCIgOiBcImRkLk0ueXl5eVwiLFxuLy8gICBcImNhLUVTXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1UV1wiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImNzLUNaXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZGEtREtcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImRlLURFXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbC1HUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImVuLVVTXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZmktRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJmci1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaGUtSUxcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh1LUhVXCIgOiBcInl5eXkuIE1NLiBkZC5cIixcbi8vICAgXCJpcy1JU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIml0LUlUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJqYS1KUFwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwia28tS1JcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcIm5sLU5MXCIgOiBcImQtTS15eXl5XCIsXG4vLyAgIFwibmItTk9cIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcInBsLVBMXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJwdC1CUlwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInJvLVJPXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJydS1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiaHItSFJcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzay1TS1wiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwic3EtQUxcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInN2LVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJ0aC1USFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInRyLVRSXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJ1ci1QS1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiaWQtSURcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInVrLVVBXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJiZS1CWVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwic2wtU0lcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJldC1FRVwiIDogXCJkLk1NLnl5eXlcIixcbi8vICAgXCJsdi1MVlwiIDogXCJ5eXl5Lk1NLmRkLlwiLFxuLy8gICBcImx0LUxUXCIgOiBcInl5eXkuTU0uZGRcIixcbi8vICAgXCJmYS1JUlwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwidmktVk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImh5LUFNXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJhei1MYXRuLUFaXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJldS1FU1wiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwibWstTUtcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFmLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJrYS1HRVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZm8tRk9cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImhpLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtcy1NWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwia2stS1pcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImt5LUtHXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ctS0VcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJ1ei1MYXRuLVVaXCIgOiBcImRkL01NIHl5eXlcIixcbi8vICAgXCJ0dC1SVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicGEtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJndS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJ0ZS1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcImtuLUlOXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwibXItSU5cIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInNhLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJtbi1NTlwiIDogXCJ5eS5NTS5kZFwiLFxuLy8gICBcImdsLUVTXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwia29rLUlOXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJzeXItU1lcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImR2LU1WXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiYXItSVFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInpoLUNOXCIgOiBcInl5eXkvTS9kXCIsXG4vLyAgIFwiZGUtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1NWFwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQkVcIiA6IFwiZC9NTS95eXl5XCIsXG4vLyAgIFwiaXQtQ0hcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcIm5sLUJFXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcIm5uLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJwdC1QVFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1DU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInN2LUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiYXotQ3lybC1BWlwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibXMtQk5cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInV6LUN5cmwtVVpcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImFyLUVHXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJ6aC1IS1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImRlLUFUXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJlbi1BVVwiIDogXCJkL01NL3l5eXlcIixcbi8vICAgXCJlcy1FU1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZnItQ0FcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcInNyLUN5cmwtQ1NcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhci1MWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiemgtU0dcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJkZS1MVVwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiZW4tQ0FcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1DSFwiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwiYXItRFpcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcInpoLU1PXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiZGUtTElcIiA6IFwiZGQuTU0ueXl5eVwiLFxuLy8gICBcImVuLU5aXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcImVzLUNSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJmci1MVVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItTUFcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImVuLUlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1QQVwiIDogXCJNTS9kZC95eXl5XCIsXG4vLyAgIFwiZnItTUNcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVROXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJlbi1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwiZXMtRE9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLU9NXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1KTVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtVkVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImFyLVlFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi0wMjlcIiA6IFwiTU0vZGQveXl5eVwiLFxuLy8gICBcImVzLUNPXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1TWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tQlpcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1KT1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tVFRcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLUFSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1MQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZW4tWldcIiA6IFwiTS9kL3l5eXlcIixcbi8vICAgXCJlcy1FQ1wiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItS1dcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVuLVBIXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiZXMtQ0xcIiA6IFwiZGQtTU0teXl5eVwiLFxuLy8gICBcImFyLUFFXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1VWVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYXItQkhcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBZXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhci1RQVwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVNWXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlcy1ITlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZXMtTklcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImVzLVBSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJhbS1FVFwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInR6bS1MYXRuLURaXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpdS1MYXRuLUNBXCIgOiBcImQvTU0veXl5eVwiLFxuLy8gICBcInNtYS1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwibW4tTW9uZy1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImdkLUdCXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJlbi1NWVwiIDogXCJkL00veXl5eVwiLFxuLy8gICBcInBycy1BRlwiIDogXCJkZC9NTS95eVwiLFxuLy8gICBcImJuLUJEXCIgOiBcImRkLU1NLXl5XCIsXG4vLyAgIFwid28tU05cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInJ3LVJXXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwicXV0LUdUXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzYWgtUlVcIiA6IFwiTU0uZGQueXl5eVwiLFxuLy8gICBcImdzdy1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiY28tRlJcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcIm9jLUZSXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJtaS1OWlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiZ2EtSUVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNlLVNFXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJici1GUlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwic21uLUZJXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibW9oLUNBXCIgOiBcIk0vZC95eXl5XCIsXG4vLyAgIFwiYXJuLUNMXCIgOiBcImRkLU1NLXl5eXlcIixcbi8vICAgXCJpaS1DTlwiIDogXCJ5eXl5L00vZFwiLFxuLy8gICBcImRzYi1ERVwiIDogXCJkLiBNLiB5eXl5XCIsXG4vLyAgIFwiaWctTkdcIiA6IFwiZC9NL3l5eXlcIixcbi8vICAgXCJrbC1HTFwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibGItTFVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImJhLVJVXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwibnNvLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJxdXotQk9cIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInlvLU5HXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwiaGEtTGF0bi1OR1wiIDogXCJkL00veXl5eVwiLFxuLy8gICBcImZpbC1QSFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInBzLUFGXCIgOiBcImRkL01NL3l5XCIsXG4vLyAgIFwiZnktTkxcIiA6IFwiZC1NLXl5eXlcIixcbi8vICAgXCJuZS1OUFwiIDogXCJNL2QveXl5eVwiLFxuLy8gICBcInNlLU5PXCIgOiBcImRkLk1NLnl5eXlcIixcbi8vICAgXCJpdS1DYW5zLUNBXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwic3ItTGF0bi1SU1wiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNpLUxLXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJzci1DeXJsLVJTXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwibG8tTEFcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImttLUtIXCIgOiBcInl5eXktTU0tZGRcIixcbi8vICAgXCJjeS1HQlwiIDogXCJkZC9NTS95eXl5XCIsXG4vLyAgIFwiYm8tQ05cIiA6IFwieXl5eS9NL2RcIixcbi8vICAgXCJzbXMtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJhcy1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwibWwtSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJlbi1JTlwiIDogXCJkZC1NTS15eXl5XCIsXG4vLyAgIFwib3ItSU5cIiA6IFwiZGQtTU0teXlcIixcbi8vICAgXCJibi1JTlwiIDogXCJkZC1NTS15eVwiLFxuLy8gICBcInRrLVRNXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwiYnMtTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcIm10LU1UXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJzci1DeXJsLU1FXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwic2UtRklcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ6dS1aQVwiIDogXCJ5eXl5L01NL2RkXCIsXG4vLyAgIFwieGgtWkFcIiA6IFwieXl5eS9NTS9kZFwiLFxuLy8gICBcInRuLVpBXCIgOiBcInl5eXkvTU0vZGRcIixcbi8vICAgXCJoc2ItREVcIiA6IFwiZC4gTS4geXl5eVwiLFxuLy8gICBcImJzLUN5cmwtQkFcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJ0Zy1DeXJsLVRKXCIgOiBcImRkLk1NLnl5XCIsXG4vLyAgIFwic3ItTGF0bi1CQVwiIDogXCJkLk0ueXl5eVwiLFxuLy8gICBcInNtai1OT1wiIDogXCJkZC5NTS55eXl5XCIsXG4vLyAgIFwicm0tQ0hcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcInNtai1TRVwiIDogXCJ5eXl5LU1NLWRkXCIsXG4vLyAgIFwicXV6LUVDXCIgOiBcImRkL01NL3l5eXlcIixcbi8vICAgXCJxdXotUEVcIiA6IFwiZGQvTU0veXl5eVwiLFxuLy8gICBcImhyLUJBXCIgOiBcImQuTS55eXl5LlwiLFxuLy8gICBcInNyLUxhdG4tTUVcIiA6IFwiZC5NLnl5eXlcIixcbi8vICAgXCJzbWEtU0VcIiA6IFwieXl5eS1NTS1kZFwiLFxuLy8gICBcImVuLVNHXCIgOiBcImQvTS95eXl5XCIsXG4vLyAgIFwidWctQ05cIiA6IFwieXl5eS1NLWRcIixcbi8vICAgXCJzci1DeXJsLUJBXCIgOiBcImQuTS55eXl5XCIsXG4vLyAgIFwiZXMtVVNcIiA6IFwiTS9kL3l5eXlcIlxuLy8gfTtcbi8vXG4vLyBPYmplY3Qua2V5cyhmb3JtYXRzKS5mb3JFYWNoKGxhbmcgPT4ge2NvbnN0IHBlcmlvZCA9IGdldERheVBlcmlvZHMobGFuZyk7IGlmIChwZXJpb2QuYW0gPT09ICdBTScpIHJldHVybjsgY29uc29sZS5sb2cobGFuZywgcGVyaW9kICl9KVxuIl19