@ng-nest/ui 17.0.11 → 17.0.12

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 (486) hide show
  1. package/esm2022/affix/affix.component.mjs +4 -4
  2. package/esm2022/affix/affix.module.mjs +5 -5
  3. package/esm2022/affix/affix.property.mjs +4 -4
  4. package/esm2022/alert/alert.component.mjs +4 -4
  5. package/esm2022/alert/alert.module.mjs +5 -5
  6. package/esm2022/alert/alert.property.mjs +4 -4
  7. package/esm2022/anchor/anchor-inner.component.mjs +4 -4
  8. package/esm2022/anchor/anchor.component.mjs +4 -4
  9. package/esm2022/anchor/anchor.module.mjs +5 -5
  10. package/esm2022/anchor/anchor.property.mjs +7 -7
  11. package/esm2022/api/api.component.mjs +4 -4
  12. package/esm2022/api/api.module.mjs +5 -5
  13. package/esm2022/auto-complete/auto-complete-portal.component.mjs +4 -4
  14. package/esm2022/auto-complete/auto-complete.component.mjs +4 -4
  15. package/esm2022/auto-complete/auto-complete.module.mjs +5 -5
  16. package/esm2022/auto-complete/auto-complete.property.mjs +4 -4
  17. package/esm2022/avatar/avatar-group.component.mjs +4 -4
  18. package/esm2022/avatar/avatar.component.mjs +4 -4
  19. package/esm2022/avatar/avatar.module.mjs +5 -5
  20. package/esm2022/avatar/avatar.property.mjs +7 -7
  21. package/esm2022/back-top/back-top.component.mjs +4 -4
  22. package/esm2022/back-top/back-top.module.mjs +5 -5
  23. package/esm2022/back-top/back-top.property.mjs +4 -4
  24. package/esm2022/badge/badge.component.mjs +4 -4
  25. package/esm2022/badge/badge.module.mjs +5 -5
  26. package/esm2022/badge/badge.property.mjs +4 -4
  27. package/esm2022/base-form/base-form.component.mjs +4 -4
  28. package/esm2022/base-form/base-form.module.mjs +5 -5
  29. package/esm2022/base-form/base-form.property.mjs +4 -4
  30. package/esm2022/border/border.component.mjs +4 -4
  31. package/esm2022/border/border.module.mjs +5 -5
  32. package/esm2022/button/button.component.mjs +4 -4
  33. package/esm2022/button/button.module.mjs +5 -5
  34. package/esm2022/button/button.property.mjs +7 -7
  35. package/esm2022/button/buttons.component.mjs +4 -4
  36. package/esm2022/calendar/calendar.component.mjs +4 -4
  37. package/esm2022/calendar/calendar.module.mjs +5 -5
  38. package/esm2022/calendar/calendar.property.mjs +4 -4
  39. package/esm2022/card/card.component.mjs +4 -4
  40. package/esm2022/card/card.module.mjs +5 -5
  41. package/esm2022/card/card.property.mjs +4 -4
  42. package/esm2022/carousel/carousel-panel.component.mjs +4 -4
  43. package/esm2022/carousel/carousel.component.mjs +4 -4
  44. package/esm2022/carousel/carousel.module.mjs +5 -5
  45. package/esm2022/carousel/carousel.property.mjs +7 -7
  46. package/esm2022/cascade/cascade-portal.component.mjs +4 -4
  47. package/esm2022/cascade/cascade.component.mjs +4 -4
  48. package/esm2022/cascade/cascade.module.mjs +5 -5
  49. package/esm2022/cascade/cascade.property.mjs +4 -4
  50. package/esm2022/checkbox/checkbox.component.mjs +4 -4
  51. package/esm2022/checkbox/checkbox.module.mjs +5 -5
  52. package/esm2022/checkbox/checkbox.property.mjs +4 -4
  53. package/esm2022/collapse/collapse-panel.component.mjs +4 -4
  54. package/esm2022/collapse/collapse.component.mjs +4 -4
  55. package/esm2022/collapse/collapse.module.mjs +5 -5
  56. package/esm2022/collapse/collapse.property.mjs +7 -7
  57. package/esm2022/color/color.component.mjs +4 -4
  58. package/esm2022/color/color.module.mjs +5 -5
  59. package/esm2022/color/color.property.mjs +4 -4
  60. package/esm2022/color-picker/color-picker-portal.component.mjs +4 -4
  61. package/esm2022/color-picker/color-picker.component.mjs +4 -4
  62. package/esm2022/color-picker/color-picker.module.mjs +5 -5
  63. package/esm2022/color-picker/color-picker.property.mjs +4 -4
  64. package/esm2022/comment/comment-reply.component.mjs +4 -4
  65. package/esm2022/comment/comment.component.mjs +4 -4
  66. package/esm2022/comment/comment.module.mjs +5 -5
  67. package/esm2022/comment/comment.property.mjs +7 -7
  68. package/esm2022/container/aside.component.mjs +4 -4
  69. package/esm2022/container/container.component.mjs +4 -4
  70. package/esm2022/container/container.module.mjs +5 -5
  71. package/esm2022/container/container.property.mjs +13 -13
  72. package/esm2022/container/footer.component.mjs +4 -4
  73. package/esm2022/container/header.component.mjs +4 -4
  74. package/esm2022/container/main.component.mjs +4 -4
  75. package/esm2022/core/config/config.service.mjs +4 -4
  76. package/esm2022/core/services/http.service.mjs +4 -4
  77. package/esm2022/core/services/preloading-strategy.service.mjs +4 -4
  78. package/esm2022/core/services/storage.service.mjs +4 -4
  79. package/esm2022/core/theme/theme.service.mjs +4 -4
  80. package/esm2022/crumb/crumb.component.mjs +4 -4
  81. package/esm2022/crumb/crumb.module.mjs +5 -5
  82. package/esm2022/crumb/crumb.property.mjs +4 -4
  83. package/esm2022/date-picker/date-picker-portal.component.mjs +4 -4
  84. package/esm2022/date-picker/date-picker.component.mjs +4 -4
  85. package/esm2022/date-picker/date-picker.module.mjs +5 -5
  86. package/esm2022/date-picker/date-picker.property.mjs +19 -19
  87. package/esm2022/date-picker/date-quarter.pipe.mjs +4 -4
  88. package/esm2022/date-picker/date-range-portal.component.mjs +4 -4
  89. package/esm2022/date-picker/date-range.component.mjs +4 -4
  90. package/esm2022/date-picker/picker-date.component.mjs +4 -4
  91. package/esm2022/date-picker/picker-month.component.mjs +4 -4
  92. package/esm2022/date-picker/picker-quarter.component.mjs +4 -4
  93. package/esm2022/date-picker/picker-year.component.mjs +4 -4
  94. package/esm2022/description/description-item.component.mjs +4 -4
  95. package/esm2022/description/description.component.mjs +4 -4
  96. package/esm2022/description/description.module.mjs +5 -5
  97. package/esm2022/description/description.property.mjs +7 -7
  98. package/esm2022/dialog/dialog-container.component.mjs +4 -4
  99. package/esm2022/dialog/dialog-portal.component.mjs +4 -4
  100. package/esm2022/dialog/dialog-portal.directives.mjs +19 -19
  101. package/esm2022/dialog/dialog.component.mjs +4 -4
  102. package/esm2022/dialog/dialog.module.mjs +5 -5
  103. package/esm2022/dialog/dialog.property.mjs +7 -7
  104. package/esm2022/dialog/dialog.service.mjs +4 -4
  105. package/esm2022/doc/doc.component.mjs +4 -4
  106. package/esm2022/doc/doc.module.mjs +5 -5
  107. package/esm2022/drag/drag.directive.mjs +4 -4
  108. package/esm2022/drag/drag.module.mjs +5 -5
  109. package/esm2022/drag/drag.property.mjs +4 -4
  110. package/esm2022/drawer/drawer-container.component.mjs +4 -4
  111. package/esm2022/drawer/drawer-portal.component.mjs +4 -4
  112. package/esm2022/drawer/drawer-portal.directives.mjs +10 -10
  113. package/esm2022/drawer/drawer.component.mjs +4 -4
  114. package/esm2022/drawer/drawer.module.mjs +5 -5
  115. package/esm2022/drawer/drawer.property.mjs +7 -7
  116. package/esm2022/drawer/drawer.service.mjs +4 -4
  117. package/esm2022/dropdown/dropdown-portal.component.mjs +4 -4
  118. package/esm2022/dropdown/dropdown.component.mjs +4 -4
  119. package/esm2022/dropdown/dropdown.module.mjs +5 -5
  120. package/esm2022/dropdown/dropdown.property.mjs +4 -4
  121. package/esm2022/empty/empty.component.mjs +4 -4
  122. package/esm2022/empty/empty.module.mjs +5 -5
  123. package/esm2022/empty/empty.property.mjs +4 -4
  124. package/esm2022/examples/examples.component.mjs +4 -4
  125. package/esm2022/examples/examples.module.mjs +5 -5
  126. package/esm2022/find/find.component.mjs +4 -4
  127. package/esm2022/find/find.module.mjs +5 -5
  128. package/esm2022/find/find.property.mjs +4 -4
  129. package/esm2022/form/control.component.mjs +4 -4
  130. package/esm2022/form/form.component.mjs +4 -4
  131. package/esm2022/form/form.module.mjs +5 -5
  132. package/esm2022/form/form.property.mjs +7 -7
  133. package/esm2022/highlight/highlight.component.mjs +4 -4
  134. package/esm2022/highlight/highlight.module.mjs +5 -5
  135. package/esm2022/highlight/highlight.property.mjs +4 -4
  136. package/esm2022/i18n/i18n.directive.mjs +4 -4
  137. package/esm2022/i18n/i18n.module.mjs +5 -5
  138. package/esm2022/i18n/i18n.pipe.mjs +4 -4
  139. package/esm2022/i18n/i18n.service.mjs +4 -4
  140. package/esm2022/icon/icon.component.mjs +4 -4
  141. package/esm2022/icon/icon.module.mjs +5 -5
  142. package/esm2022/icon/icon.property.mjs +4 -4
  143. package/esm2022/icon/icon.service.mjs +4 -4
  144. package/esm2022/image/image-group.component.mjs +4 -4
  145. package/esm2022/image/image-preview.component.mjs +4 -4
  146. package/esm2022/image/image.component.mjs +4 -4
  147. package/esm2022/image/image.module.mjs +5 -5
  148. package/esm2022/image/image.property.mjs +7 -7
  149. package/esm2022/inner/inner.component.mjs +4 -4
  150. package/esm2022/inner/inner.module.mjs +5 -5
  151. package/esm2022/inner/inner.property.mjs +4 -4
  152. package/esm2022/input/input-group.component.mjs +4 -4
  153. package/esm2022/input/input.component.mjs +4 -4
  154. package/esm2022/input/input.module.mjs +5 -5
  155. package/esm2022/input/input.property.mjs +7 -7
  156. package/esm2022/input-number/input-number.component.mjs +4 -4
  157. package/esm2022/input-number/input-number.module.mjs +5 -5
  158. package/esm2022/input-number/input-number.property.mjs +4 -4
  159. package/esm2022/keyword/keyword.directive.mjs +4 -4
  160. package/esm2022/keyword/keyword.module.mjs +5 -5
  161. package/esm2022/keyword/keyword.property.mjs +4 -4
  162. package/esm2022/layout/col.component.mjs +4 -4
  163. package/esm2022/layout/layout.module.mjs +5 -5
  164. package/esm2022/layout/layout.property.mjs +7 -7
  165. package/esm2022/layout/row.component.mjs +4 -4
  166. package/esm2022/link/link.component.mjs +4 -4
  167. package/esm2022/link/link.module.mjs +5 -5
  168. package/esm2022/link/link.property.mjs +4 -4
  169. package/esm2022/list/list-drop-group.directive.mjs +4 -4
  170. package/esm2022/list/list-option.component.mjs +4 -4
  171. package/esm2022/list/list.component.mjs +4 -4
  172. package/esm2022/list/list.module.mjs +5 -5
  173. package/esm2022/list/list.property.mjs +7 -7
  174. package/esm2022/loading/loading.component.mjs +4 -4
  175. package/esm2022/loading/loading.module.mjs +5 -5
  176. package/esm2022/loading/loading.property.mjs +4 -4
  177. package/esm2022/menu/menu-node.component.mjs +4 -4
  178. package/esm2022/menu/menu.component.mjs +4 -4
  179. package/esm2022/menu/menu.module.mjs +5 -5
  180. package/esm2022/menu/menu.property.mjs +7 -7
  181. package/esm2022/message/message.component.mjs +4 -4
  182. package/esm2022/message/message.module.mjs +5 -5
  183. package/esm2022/message/message.service.mjs +4 -4
  184. package/esm2022/message-box/message-box.component.mjs +4 -4
  185. package/esm2022/message-box/message-box.module.mjs +5 -5
  186. package/esm2022/message-box/message-box.service.mjs +4 -4
  187. package/esm2022/notification/notification.component.mjs +4 -4
  188. package/esm2022/notification/notification.module.mjs +5 -5
  189. package/esm2022/notification/notification.service.mjs +4 -4
  190. package/esm2022/outlet/outlet.directive.mjs +4 -4
  191. package/esm2022/outlet/outlet.module.mjs +5 -5
  192. package/esm2022/page-header/page-header.component.mjs +4 -4
  193. package/esm2022/page-header/page-header.module.mjs +5 -5
  194. package/esm2022/page-header/page-header.property.mjs +4 -4
  195. package/esm2022/pagination/pagination.component.mjs +4 -4
  196. package/esm2022/pagination/pagination.module.mjs +5 -5
  197. package/esm2022/pagination/pagination.property.mjs +4 -4
  198. package/esm2022/pattern/pattern.component.mjs +4 -4
  199. package/esm2022/pattern/pattern.module.mjs +5 -5
  200. package/esm2022/popconfirm/popconfirm.component.mjs +4 -4
  201. package/esm2022/popconfirm/popconfirm.module.mjs +5 -5
  202. package/esm2022/popconfirm/popconfirm.property.mjs +4 -4
  203. package/esm2022/popover/popover-portal.component.mjs +4 -4
  204. package/esm2022/popover/popover.directive.mjs +4 -4
  205. package/esm2022/popover/popover.module.mjs +5 -5
  206. package/esm2022/popover/popover.property.mjs +4 -4
  207. package/esm2022/portal/portal.module.mjs +5 -5
  208. package/esm2022/portal/portal.service.mjs +4 -4
  209. package/esm2022/progress/progress.component.mjs +4 -4
  210. package/esm2022/progress/progress.module.mjs +5 -5
  211. package/esm2022/progress/progress.property.mjs +4 -4
  212. package/esm2022/radio/radio.component.mjs +4 -4
  213. package/esm2022/radio/radio.module.mjs +5 -5
  214. package/esm2022/radio/radio.property.mjs +4 -4
  215. package/esm2022/rate/rate.component.mjs +4 -4
  216. package/esm2022/rate/rate.module.mjs +5 -5
  217. package/esm2022/rate/rate.property.mjs +4 -4
  218. package/esm2022/resizable/resizable.directive.mjs +4 -4
  219. package/esm2022/resizable/resizable.module.mjs +5 -5
  220. package/esm2022/resizable/resizable.property.mjs +4 -4
  221. package/esm2022/result/result.component.mjs +4 -4
  222. package/esm2022/result/result.module.mjs +5 -5
  223. package/esm2022/result/result.property.mjs +4 -4
  224. package/esm2022/ripple/ripple.directive.mjs +4 -4
  225. package/esm2022/ripple/ripple.module.mjs +5 -5
  226. package/esm2022/ripple/ripple.property.mjs +4 -4
  227. package/esm2022/select/select-portal.component.mjs +4 -4
  228. package/esm2022/select/select.component.mjs +4 -4
  229. package/esm2022/select/select.module.mjs +5 -5
  230. package/esm2022/select/select.property.mjs +4 -4
  231. package/esm2022/skeleton/skeleton.component.mjs +4 -4
  232. package/esm2022/skeleton/skeleton.module.mjs +5 -5
  233. package/esm2022/skeleton/skeleton.property.mjs +4 -4
  234. package/esm2022/slider/slider.component.mjs +4 -4
  235. package/esm2022/slider/slider.module.mjs +5 -5
  236. package/esm2022/slider/slider.property.mjs +4 -4
  237. package/esm2022/slider-select/slider-select.component.mjs +4 -4
  238. package/esm2022/slider-select/slider-select.module.mjs +5 -5
  239. package/esm2022/slider-select/slider-select.property.mjs +4 -4
  240. package/esm2022/statistic/countdown.component.mjs +4 -4
  241. package/esm2022/statistic/statistic.component.mjs +4 -4
  242. package/esm2022/statistic/statistic.module.mjs +5 -5
  243. package/esm2022/statistic/statistic.property.mjs +7 -7
  244. package/esm2022/steps/steps.component.mjs +4 -4
  245. package/esm2022/steps/steps.module.mjs +5 -5
  246. package/esm2022/steps/steps.property.mjs +4 -4
  247. package/esm2022/switch/switch.component.mjs +4 -4
  248. package/esm2022/switch/switch.module.mjs +5 -5
  249. package/esm2022/switch/switch.property.mjs +4 -4
  250. package/esm2022/table/table-body.component.mjs +4 -4
  251. package/esm2022/table/table-foot.component.mjs +4 -4
  252. package/esm2022/table/table-head.component.mjs +4 -4
  253. package/esm2022/table/table.component.mjs +4 -4
  254. package/esm2022/table/table.module.mjs +5 -5
  255. package/esm2022/table/table.property.mjs +13 -13
  256. package/esm2022/tabs/tab-content.component.mjs +4 -4
  257. package/esm2022/tabs/tab-link.directive.mjs +7 -7
  258. package/esm2022/tabs/tab.component.mjs +4 -4
  259. package/esm2022/tabs/tabs.component.mjs +4 -4
  260. package/esm2022/tabs/tabs.module.mjs +5 -5
  261. package/esm2022/tabs/tabs.property.mjs +7 -7
  262. package/esm2022/tag/tag.component.mjs +4 -4
  263. package/esm2022/tag/tag.module.mjs +5 -5
  264. package/esm2022/tag/tag.property.mjs +4 -4
  265. package/esm2022/text-retract/text-retract.component.mjs +4 -4
  266. package/esm2022/text-retract/text-retract.module.mjs +5 -5
  267. package/esm2022/text-retract/text-retract.property.mjs +4 -4
  268. package/esm2022/textarea/textarea.component.mjs +4 -4
  269. package/esm2022/textarea/textarea.module.mjs +5 -5
  270. package/esm2022/textarea/textarea.property.mjs +4 -4
  271. package/esm2022/theme/theme.component.mjs +4 -4
  272. package/esm2022/theme/theme.module.mjs +5 -5
  273. package/esm2022/theme/theme.property.mjs +4 -4
  274. package/esm2022/time-ago/time-ago.module.mjs +5 -5
  275. package/esm2022/time-ago/time-ago.pipe.mjs +4 -4
  276. package/esm2022/time-picker/time-picker-frame.component.mjs +4 -4
  277. package/esm2022/time-picker/time-picker-portal.component.mjs +4 -4
  278. package/esm2022/time-picker/time-picker.component.mjs +4 -4
  279. package/esm2022/time-picker/time-picker.module.mjs +5 -5
  280. package/esm2022/time-picker/time-picker.property.mjs +4 -4
  281. package/esm2022/time-range/time-range.module.mjs +5 -5
  282. package/esm2022/time-range/time-range.pipe.mjs +4 -4
  283. package/esm2022/timeline/timeline.component.mjs +4 -4
  284. package/esm2022/timeline/timeline.module.mjs +5 -5
  285. package/esm2022/timeline/timeline.property.mjs +4 -4
  286. package/esm2022/tooltip/tooltip-portal.component.mjs +4 -4
  287. package/esm2022/tooltip/tooltip.directive.mjs +4 -4
  288. package/esm2022/tooltip/tooltip.module.mjs +5 -5
  289. package/esm2022/tooltip/tooltip.property.mjs +4 -4
  290. package/esm2022/transfer/transfer.component.mjs +4 -4
  291. package/esm2022/transfer/transfer.module.mjs +5 -5
  292. package/esm2022/transfer/transfer.property.mjs +4 -4
  293. package/esm2022/tree/tree-node.component.mjs +4 -4
  294. package/esm2022/tree/tree.component.mjs +4 -4
  295. package/esm2022/tree/tree.module.mjs +5 -5
  296. package/esm2022/tree/tree.property.mjs +7 -7
  297. package/esm2022/tree/tree.service.mjs +4 -4
  298. package/esm2022/tree-file/tree-file.component.mjs +4 -4
  299. package/esm2022/tree-file/tree-file.module.mjs +5 -5
  300. package/esm2022/tree-file/tree-file.property.mjs +4 -4
  301. package/esm2022/tree-select/tree-select-portal.component.mjs +4 -4
  302. package/esm2022/tree-select/tree-select.component.mjs +4 -4
  303. package/esm2022/tree-select/tree-select.module.mjs +5 -5
  304. package/esm2022/tree-select/tree-select.property.mjs +4 -4
  305. package/esm2022/typography/typography.component.mjs +4 -4
  306. package/esm2022/typography/typography.module.mjs +5 -5
  307. package/esm2022/typography/typography.property.mjs +4 -4
  308. package/esm2022/upload/upload-portal.component.mjs +4 -4
  309. package/esm2022/upload/upload.component.mjs +4 -4
  310. package/esm2022/upload/upload.module.mjs +5 -5
  311. package/esm2022/upload/upload.property.mjs +4 -4
  312. package/fesm2022/ng-nest-ui-affix.mjs +10 -10
  313. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  314. package/fesm2022/ng-nest-ui-alert.mjs +10 -10
  315. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  316. package/fesm2022/ng-nest-ui-anchor.mjs +16 -16
  317. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  318. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  319. package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
  320. package/fesm2022/ng-nest-ui-auto-complete.mjs +13 -13
  321. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  322. package/fesm2022/ng-nest-ui-avatar.mjs +16 -16
  323. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  324. package/fesm2022/ng-nest-ui-back-top.mjs +10 -10
  325. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  326. package/fesm2022/ng-nest-ui-badge.mjs +10 -10
  327. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  328. package/fesm2022/ng-nest-ui-base-form.mjs +10 -10
  329. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  330. package/fesm2022/ng-nest-ui-border.mjs +7 -7
  331. package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
  332. package/fesm2022/ng-nest-ui-button.mjs +16 -16
  333. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  334. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  335. package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
  336. package/fesm2022/ng-nest-ui-card.mjs +10 -10
  337. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  338. package/fesm2022/ng-nest-ui-carousel.mjs +16 -16
  339. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  340. package/fesm2022/ng-nest-ui-cascade.mjs +13 -13
  341. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  342. package/fesm2022/ng-nest-ui-checkbox.mjs +10 -10
  343. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  344. package/fesm2022/ng-nest-ui-collapse.mjs +16 -16
  345. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  346. package/fesm2022/ng-nest-ui-color-picker.mjs +13 -13
  347. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  348. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  349. package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
  350. package/fesm2022/ng-nest-ui-comment.mjs +16 -16
  351. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  352. package/fesm2022/ng-nest-ui-container.mjs +31 -31
  353. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  354. package/fesm2022/ng-nest-ui-core.mjs +15 -15
  355. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  356. package/fesm2022/ng-nest-ui-crumb.mjs +10 -10
  357. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  358. package/fesm2022/ng-nest-ui-date-picker.mjs +49 -49
  359. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  360. package/fesm2022/ng-nest-ui-description.mjs +16 -16
  361. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  362. package/fesm2022/ng-nest-ui-dialog.mjs +40 -40
  363. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  364. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  365. package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
  366. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  367. package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
  368. package/fesm2022/ng-nest-ui-drawer.mjs +31 -31
  369. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  370. package/fesm2022/ng-nest-ui-dropdown.mjs +13 -13
  371. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  372. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  373. package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
  374. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  375. package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
  376. package/fesm2022/ng-nest-ui-find.mjs +10 -10
  377. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  378. package/fesm2022/ng-nest-ui-form.mjs +16 -16
  379. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  380. package/fesm2022/ng-nest-ui-highlight.mjs +10 -10
  381. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  382. package/fesm2022/ng-nest-ui-i18n.mjs +13 -13
  383. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  384. package/fesm2022/ng-nest-ui-icon.mjs +13 -13
  385. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  386. package/fesm2022/ng-nest-ui-image.mjs +19 -19
  387. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  388. package/fesm2022/ng-nest-ui-inner.mjs +10 -10
  389. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  390. package/fesm2022/ng-nest-ui-input-number.mjs +10 -10
  391. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  392. package/fesm2022/ng-nest-ui-input.mjs +16 -16
  393. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  394. package/fesm2022/ng-nest-ui-keyword.mjs +10 -10
  395. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  396. package/fesm2022/ng-nest-ui-layout.mjs +16 -16
  397. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  398. package/fesm2022/ng-nest-ui-link.mjs +10 -10
  399. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  400. package/fesm2022/ng-nest-ui-list.mjs +19 -19
  401. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  402. package/fesm2022/ng-nest-ui-loading.mjs +10 -10
  403. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  404. package/fesm2022/ng-nest-ui-menu.mjs +16 -16
  405. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  406. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  407. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  408. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  409. package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
  410. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  411. package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
  412. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  413. package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
  414. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  415. package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
  416. package/fesm2022/ng-nest-ui-pagination.mjs +10 -10
  417. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  418. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  419. package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
  420. package/fesm2022/ng-nest-ui-popconfirm.mjs +10 -10
  421. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  422. package/fesm2022/ng-nest-ui-popover.mjs +13 -13
  423. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  424. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  425. package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
  426. package/fesm2022/ng-nest-ui-progress.mjs +10 -10
  427. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  428. package/fesm2022/ng-nest-ui-radio.mjs +10 -10
  429. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  430. package/fesm2022/ng-nest-ui-rate.mjs +10 -10
  431. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  432. package/fesm2022/ng-nest-ui-resizable.mjs +10 -10
  433. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  434. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  435. package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
  436. package/fesm2022/ng-nest-ui-ripple.mjs +10 -10
  437. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  438. package/fesm2022/ng-nest-ui-select.mjs +13 -13
  439. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  440. package/fesm2022/ng-nest-ui-skeleton.mjs +10 -10
  441. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  442. package/fesm2022/ng-nest-ui-slider-select.mjs +10 -10
  443. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  444. package/fesm2022/ng-nest-ui-slider.mjs +10 -10
  445. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  446. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  447. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  448. package/fesm2022/ng-nest-ui-steps.mjs +10 -10
  449. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  450. package/fesm2022/ng-nest-ui-switch.mjs +10 -10
  451. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  452. package/fesm2022/ng-nest-ui-table.mjs +28 -28
  453. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  454. package/fesm2022/ng-nest-ui-tabs.mjs +25 -25
  455. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  456. package/fesm2022/ng-nest-ui-tag.mjs +10 -10
  457. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  458. package/fesm2022/ng-nest-ui-text-retract.mjs +10 -10
  459. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  460. package/fesm2022/ng-nest-ui-textarea.mjs +10 -10
  461. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  462. package/fesm2022/ng-nest-ui-theme.mjs +10 -10
  463. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  464. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  465. package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
  466. package/fesm2022/ng-nest-ui-time-picker.mjs +16 -16
  467. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  468. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  469. package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
  470. package/fesm2022/ng-nest-ui-timeline.mjs +10 -10
  471. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  472. package/fesm2022/ng-nest-ui-tooltip.mjs +13 -13
  473. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  474. package/fesm2022/ng-nest-ui-transfer.mjs +10 -10
  475. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  476. package/fesm2022/ng-nest-ui-tree-file.mjs +10 -10
  477. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  478. package/fesm2022/ng-nest-ui-tree-select.mjs +13 -13
  479. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  480. package/fesm2022/ng-nest-ui-tree.mjs +19 -19
  481. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  482. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  483. package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
  484. package/fesm2022/ng-nest-ui-upload.mjs +13 -13
  485. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  486. package/package.json +110 -110
@@ -313,10 +313,10 @@ export class XDateRangePortalComponent {
313
313
  this.nodeEmit(value, true);
314
314
  }
315
315
  }
316
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: XDateRangePortalComponent, deps: [{ token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
317
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: XDateRangePortalComponent, isStandalone: true, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker) {\r\n @if (extraFooter) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker && extraFooter) {\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{\r\n locale.sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset; track item.id) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: XPickerYearComponent, selector: "x-picker-year" }, { kind: "component", type: XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "ngmodule", type: XTimePickerModule }, { kind: "component", type: i3.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
316
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDateRangePortalComponent, deps: [{ token: i1.DatePipe }, { token: i1.LowerCasePipe }, { token: i0.ChangeDetectorRef }, { token: i2.XI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
317
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.10", type: XDateRangePortalComponent, isStandalone: true, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker) {\r\n @if (extraFooter) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker && extraFooter) {\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{\r\n locale.sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset; track item.id) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: XPickerYearComponent, selector: "x-picker-year" }, { kind: "component", type: XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "ngmodule", type: XTimePickerModule }, { kind: "component", type: i3.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
318
318
  }
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
320
320
  type: Component,
321
321
  args: [{ selector: `${XDateRangePortalPrefix}`, standalone: true, imports: [
322
322
  NgTemplateOutlet,
@@ -349,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
349
349
  type: ViewChild,
350
350
  args: ['timePickerFrame']
351
351
  }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQTZCLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJB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QyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMscUJBQXFCLENBQUMsYUFDeEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO29LQUdhLFNBQVM7c0JBQXpELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNvQixJQUFJO3NCQUEvRCxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlHLEtBQUs7c0JBQWpFLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSWpDLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFhEYXRlUmFuZ2VQb3J0YWxQcmVmaXgsXHJcbiAgWERhdGVQaWNrZXJUeXBlLFxyXG4gIFhEYXRlQ2VsbCxcclxuICBYRGF0ZVJhbmdlUHJlc2V0LFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWREYXRlLFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWENvbm5lY3RCYXNlQW5pbWF0aW9uLFxyXG4gIFhQb3NpdGlvblRvcEJvdHRvbSxcclxuICBYQWRkTW9udGhzLFxyXG4gIFhBZGRZZWFycyxcclxuICBYSXNOdWxsLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYSXNBcnJheSxcclxuICBYSXNOdW1iZXIsXHJcbiAgWElzU3RyaW5nLFxyXG4gIFhBZGREYXlzXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFBpY2tlck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItbW9udGguY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFBpY2tlclllYXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci15ZWFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckZyYW1lQ29tcG9uZW50LCBYVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3RpbWUtcGlja2VyJztcclxuaW1wb3J0IHsgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1xdWFydGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYRGF0ZVJhbmdlUG9ydGFsUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICBYUGlja2VyRGF0ZUNvbXBvbmVudCxcclxuICAgIFhQaWNrZXJNb250aENvbXBvbmVudCxcclxuICAgIFhQaWNrZXJZZWFyQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQsXHJcbiAgICBYVGltZVBpY2tlck1vZHVsZSxcclxuICAgIFhCdXR0b25Db21wb25lbnQsXHJcbiAgICBYTGlua0NvbXBvbmVudCxcclxuICAgIFhPdXRsZXREaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtYQ29ubmVjdEJhc2VBbmltYXRpb25dLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24nKSBwdWJsaWMgcGxhY2VtZW50ITogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uZG9uZScsIFsnJGV2ZW50J10pIGRvbmUoZXZlbnQ6IHsgdG9TdGF0ZTogYW55IH0pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKGZhbHNlKTtcclxuICAgIGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyAmJiB0aGlzLmRlc3Ryb3lQb3J0YWwoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5zdGFydCcsIFsnJGV2ZW50J10pIHN0YXJ0KCkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyITogWFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXIhOiBYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVQaWNrZXJGcmFtZScpIHRpbWVQaWNrZXJGcmFtZT86IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQ7XHJcblxyXG4gIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICBkaXNwbGF5ID0gbmV3IERhdGUoKTtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIGVuZE1vZGVsITogRGF0ZSB8IG51bGw7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSE6IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPjtcclxuICBhY3RpdmVUeXBlITogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGFuaW1hdGluZyE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlUG9ydGFsITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRpc2FibGVkRGF0ZSE6IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIGRpc2FibGVkVGltZSE6IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGVbXSwgY2xvc2U/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIHN0YXJ0Tm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSB8IG51bGwsIGNsb3NlPzogYm9vbGVhbiwgaXNEYXRlUGlja2VyPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBlbmROb2RlRW1pdCE6IChkYXRlOiBEYXRlIHwgbnVsbCwgY2xvc2U/OiBib29sZWFuLCBpc0RhdGVQaWNrZXI/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgdGltZSE6IG51bWJlciB8IG51bGw7XHJcbiAgdGltZURpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHRpbWVNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIHRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gMDtcclxuICBwcmVzZXQ6IFhEYXRlUmFuZ2VQcmVzZXRbXSA9IFtdO1xyXG4gIGV4dHJhRm9vdGVyPzogWFRlbXBsYXRlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBpc0RhdGVQaWNrZXIoKSB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBzdXJlRGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUgJiYgIVhJc0VtcHR5KHRoaXMudGltZSkpIHtcclxuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZSh0aGlzLnRpbWUhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZS5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB4O1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3NpdGlvbkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5wbGFjZW1lbnQgPSB4O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZlVHlwZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlID0geDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gW251bGwsIG51bGxdO1xyXG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLm1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5zZXREaXNwbGF5KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbEJ5VHlwZShieU1vZGVsOiBEYXRlLCBudW06IG51bWJlciA9IDEpIHtcclxuICAgIGlmIChbJ21vbnRoJywgJ3F1YXJ0ZXInXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGFydFBpY2tlcj8uc2V0RGF0ZXNTdGF0ZShjZWxsKTtcclxuICAgIHRoaXMuZW5kUGlja2VyPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUgfHwgJ3N0YXJ0JztcclxuICAgIHRoaXMudGltZUhvdmVyID0gIXRoaXMudmFsdWUuZXZlcnkoKHgpID0+IHggPT09IG51bGwpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVswXSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbDtcclxuICAgICAgdGhpcy5lbmRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5zdGFydE1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5lbmRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5zdGFydE1vZGVsO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5ID0gdGhpcy5zdGFydERpc3BsYXk7XHJcbiAgICAgIHRoaXMudGltZSA9IHRoaXMuc3RhcnRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlWzFdISk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAtMSA6IDApO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5lbmRNb2RlbDtcclxuICAgICAgdGhpcy50aW1lRGlzcGxheSA9IHRoaXMuZW5kRGlzcGxheTtcclxuICAgICAgdGhpcy50aW1lID0gdGhpcy5lbmRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLmRpc3BsYXksIHRoaXMuaXNEYXRlUGlja2VyID8gMSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50Kys7XHJcbiAgICBsZXQgY2xvc2UgPSB0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlWzBdID0gdGltZTtcclxuICAgICAgaWYgKCFYSXNOdWxsKHRoaXMudmFsdWVbMV0pICYmIHRpbWUgPiB0aGlzLnZhbHVlWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGVDbGlja0NvdW50LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy52YWx1ZVsxXSA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChkYXRlLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMudmFsdWVbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZVswXSkgJiYgdGltZSA8IHRoaXMudmFsdWVbMF0hKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZUNsaWNrQ291bnQgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2xvc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YXJ0TW9kZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVbMF0gPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgICAgIHRoaXMudGltZUhvdmVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQoZGF0ZSwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZS5pbmNsdWRlcyhudWxsKSAmJiB0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIGNsb3NlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBpZiAodGhpcy50aW1lKSB7XHJcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKHRoaXMudGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50aW1lID0gdGltZS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFsnZGF0ZS1ob3VyJywgJ2RhdGUtbWludXRlJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIHRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgdGltZS5nZXRIb3VycygpLFxyXG4gICAgICAgIHRpbWUuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHRpbWUuZ2V0U2Vjb25kcygpXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZUNoYW5nZSh0eXBlOiBYRGF0ZVBpY2tlclR5cGUpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB5ZWFyU3RhcnRDaGFuZ2UobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyID0gbnVtYmVyO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcihudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhciArPSBudW07XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHRoaXMuc3RhcnRZZWFyKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZSA9IHRpbWUuZ2V0VGltZSgpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKSkge1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWVNb2RlbD8uc2V0SG91cnModGltZS5nZXRIb3VycygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRTZWNvbmRzKHRpbWUuZ2V0U2Vjb25kcygpKTtcclxuICAgIHRoaXMuZGF0ZUNoYW5nZSh0aGlzLnRpbWVNb2RlbCEpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3VyZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zdXJlRGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWU7XHJcbiAgICBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQobmV3IERhdGUoZW5kISksIGZhbHNlLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoIVhJc051bGwoc3RhcnQpICYmIFhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChuZXcgRGF0ZShzdGFydCEpLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRZZWFycyh0aGlzLmVuZERpc3BsYXksIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWEFkZFllYXJzKHRoaXMuc3RhcnREaXNwbGF5LCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9udGhDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRNb250aHModGhpcy5lbmREaXNwbGF5LCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldCh0eXBlOiAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInLCBudW0gPSAwKSB7XHJcbiAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgbm93ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3Qgd2VlayA9IG5vdy5nZXREYXkoKTtcclxuICAgICAgY29uc3Qgd2Vla0xpc3QgPSBbMSwgMiwgMywgNCwgNSwgNiwgN107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gd2Vla0xpc3QuaW5kZXhPZih3ZWVrKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdChcclxuICAgICAgICBbWEFkZERheXMobm93LCB3ZWVrTGlzdFswXSAtIChpbmRleCArIDEpICsgbnVtICogNyksIFhBZGREYXlzKG5vdywgd2Vla0xpc3RbNl0gLSAoaW5kZXggKyAxKSArIG51bSAqIDcpXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgY29uc3QgbW9udGggPSBYQWRkTW9udGhzKG5vdywgbnVtKTtcclxuICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpLCAxKTtcclxuICAgICAgY29uc3QgbGFzdERheSA9IFhBZGREYXlzKFhBZGRNb250aHMoZmlyc3REYXksIDEpLCAtMSk7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoW2ZpcnN0RGF5LCBsYXN0RGF5XSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFtmaXJzdERheSwgbGFzdERheV0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRGdW5jKGl0ZW06IFhEYXRlUmFuZ2VQcmVzZXQpIHtcclxuICAgIGxldCB2YWx1ZSA9IGl0ZW0uZnVuYygpO1xyXG4gICAgaWYgKFhJc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pIHx8IFhJc1N0cmluZyh2YWx1ZVswXSkpIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZUVtaXQodmFsdWUsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbCB7eyB0eXBlIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBAY2FzZSAoJ2RhdGUnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3dlZWsnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgICA8eC1waWNrZXItbW9udGhcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdxdWFydGVyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1xdWFydGVyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3llYXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXllYXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXIteWVhcj5cclxuICAgICAgICA8eC1waWNrZXIteWVhclxyXG4gICAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWVuZFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKSB7XHJcbiAgICBAaWYgKGV4dHJhRm9vdGVyKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWV4dHJhLWZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGVUaW1lSG91ck1pbnV0ZVRwbCBsZXQtdGltZUZvcm1hdD1cInRpbWVGb3JtYXRcIiBsZXQtdGltZVR5cGU9XCJ0aW1lVHlwZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWRhdGVcIj5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydF09XCJhY3RpdmVUeXBlID09PSAnc3RhcnQnXCJcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRdPVwiYWN0aXZlVHlwZSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSB8IGRhdGU6IHRpbWVGb3JtYXQgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx4LXRpbWUtcGlja2VyLWZyYW1lXHJcbiAgICAgICAgI3RpbWVQaWNrZXJGcmFtZVxyXG4gICAgICAgIFt0eXBlXT1cInRpbWVUeXBlXCJcclxuICAgICAgICBbdmFsdWVdPVwidGltZVwiXHJcbiAgICAgICAgKG5vZGVFbWl0KT1cInNlbGVjdFRpbWUoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Rpc2FibGVkVGltZVBhcmFtXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lXCJcclxuICAgICAgICBbZGVmYXVsdE5vd109XCJmYWxzZVwiXHJcbiAgICAgID48L3gtdGltZS1waWNrZXItZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBAaWYgKCFpc0RhdGVQaWNrZXIgJiYgZXh0cmFGb290ZXIpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZm9vdGVyLWxlZnRcIj5cclxuICAgICAgQGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCIhc3VyZURpc2FibGVkICYmIHN1cmVUaW1lKClcIiBzaXplPVwic21hbGxcIiBbZGlzYWJsZWRdPVwic3VyZURpc2FibGVkXCI+e3tcclxuICAgICAgbG9jYWxlLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1wcmVzZXRcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBwcmVzZXQ7IHRyYWNrIGl0ZW0uaWQpIHtcclxuICAgICAgICBAc3dpdGNoIChpdGVtLmlkKSB7XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDApXCI+e3sgbG9jYWxlLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZS5sYXN0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0V2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAxKVwiPnt7IGxvY2FsZS5uZXh0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzTW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDApXCI+e3sgbG9jYWxlLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZS5sYXN0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dE1vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAxKVwiPnt7IGxvY2FsZS5uZXh0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc1llYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMClcIj57eyBsb2NhbGUudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlLmxhc3RZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDEpXCI+e3sgbG9jYWxlLm5leHRZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoISFpdGVtLmZ1bmMpIHtcclxuICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0RnVuYyhpdGVtKVwiPnt7IGl0ZW0ubGFiZWwgfX08L3gtbGluaz5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQTZCLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJB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QyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMscUJBQXFCLENBQUMsYUFDeEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO29LQUdhLFNBQVM7c0JBQXpELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNvQixJQUFJO3NCQUEvRCxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlHLEtBQUs7c0JBQWpFLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSWpDLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFhEYXRlUmFuZ2VQb3J0YWxQcmVmaXgsXHJcbiAgWERhdGVQaWNrZXJUeXBlLFxyXG4gIFhEYXRlQ2VsbCxcclxuICBYRGF0ZVJhbmdlUHJlc2V0LFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWREYXRlLFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWENvbm5lY3RCYXNlQW5pbWF0aW9uLFxyXG4gIFhQb3NpdGlvblRvcEJvdHRvbSxcclxuICBYQWRkTW9udGhzLFxyXG4gIFhBZGRZZWFycyxcclxuICBYSXNOdWxsLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYSXNBcnJheSxcclxuICBYSXNOdW1iZXIsXHJcbiAgWElzU3RyaW5nLFxyXG4gIFhBZGREYXlzXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFBpY2tlck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItbW9udGguY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFBpY2tlclllYXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci15ZWFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckZyYW1lQ29tcG9uZW50LCBYVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3RpbWUtcGlja2VyJztcclxuaW1wb3J0IHsgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1xdWFydGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYRGF0ZVJhbmdlUG9ydGFsUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICBYUGlja2VyRGF0ZUNvbXBvbmVudCxcclxuICAgIFhQaWNrZXJNb250aENvbXBvbmVudCxcclxuICAgIFhQaWNrZXJZZWFyQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQsXHJcbiAgICBYVGltZVBpY2tlck1vZHVsZSxcclxuICAgIFhCdXR0b25Db21wb25lbnQsXHJcbiAgICBYTGlua0NvbXBvbmVudCxcclxuICAgIFhPdXRsZXREaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtYQ29ubmVjdEJhc2VBbmltYXRpb25dLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24nKSBwdWJsaWMgcGxhY2VtZW50ITogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uZG9uZScsIFsnJGV2ZW50J10pIGRvbmUoZXZlbnQ6IHsgdG9TdGF0ZTogYW55IH0pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKGZhbHNlKTtcclxuICAgIGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyAmJiB0aGlzLmRlc3Ryb3lQb3J0YWwoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5zdGFydCcsIFsnJGV2ZW50J10pIHN0YXJ0KCkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyITogWFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXIhOiBYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVQaWNrZXJGcmFtZScpIHRpbWVQaWNrZXJGcmFtZT86IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQ7XHJcblxyXG4gIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICBkaXNwbGF5ID0gbmV3IERhdGUoKTtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIGVuZE1vZGVsITogRGF0ZSB8IG51bGw7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSE6IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPjtcclxuICBhY3RpdmVUeXBlITogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGFuaW1hdGluZyE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlUG9ydGFsITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRpc2FibGVkRGF0ZSE6IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIGRpc2FibGVkVGltZSE6IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGVbXSwgY2xvc2U/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIHN0YXJ0Tm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSB8IG51bGwsIGNsb3NlPzogYm9vbGVhbiwgaXNEYXRlUGlja2VyPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBlbmROb2RlRW1pdCE6IChkYXRlOiBEYXRlIHwgbnVsbCwgY2xvc2U/OiBib29sZWFuLCBpc0RhdGVQaWNrZXI/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgdGltZSE6IG51bWJlciB8IG51bGw7XHJcbiAgdGltZURpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHRpbWVNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIHRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gMDtcclxuICBwcmVzZXQ6IFhEYXRlUmFuZ2VQcmVzZXRbXSA9IFtdO1xyXG4gIGV4dHJhRm9vdGVyPzogWFRlbXBsYXRlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBpc0RhdGVQaWNrZXIoKSB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBzdXJlRGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUgJiYgIVhJc0VtcHR5KHRoaXMudGltZSkpIHtcclxuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZSh0aGlzLnRpbWUhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZS5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB4O1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3NpdGlvbkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5wbGFjZW1lbnQgPSB4O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZlVHlwZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlID0geDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gW251bGwsIG51bGxdO1xyXG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLm1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5zZXREaXNwbGF5KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbEJ5VHlwZShieU1vZGVsOiBEYXRlLCBudW06IG51bWJlciA9IDEpIHtcclxuICAgIGlmIChbJ21vbnRoJywgJ3F1YXJ0ZXInXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGFydFBpY2tlcj8uc2V0RGF0ZXNTdGF0ZShjZWxsKTtcclxuICAgIHRoaXMuZW5kUGlja2VyPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUgfHwgJ3N0YXJ0JztcclxuICAgIHRoaXMudGltZUhvdmVyID0gIXRoaXMudmFsdWUuZXZlcnkoKHgpID0+IHggPT09IG51bGwpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVswXSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbDtcclxuICAgICAgdGhpcy5lbmRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5zdGFydE1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5lbmRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5zdGFydE1vZGVsO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5ID0gdGhpcy5zdGFydERpc3BsYXk7XHJcbiAgICAgIHRoaXMudGltZSA9IHRoaXMuc3RhcnRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlWzFdISk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAtMSA6IDApO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5lbmRNb2RlbDtcclxuICAgICAgdGhpcy50aW1lRGlzcGxheSA9IHRoaXMuZW5kRGlzcGxheTtcclxuICAgICAgdGhpcy50aW1lID0gdGhpcy5lbmRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLmRpc3BsYXksIHRoaXMuaXNEYXRlUGlja2VyID8gMSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50Kys7XHJcbiAgICBsZXQgY2xvc2UgPSB0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlWzBdID0gdGltZTtcclxuICAgICAgaWYgKCFYSXNOdWxsKHRoaXMudmFsdWVbMV0pICYmIHRpbWUgPiB0aGlzLnZhbHVlWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGVDbGlja0NvdW50LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy52YWx1ZVsxXSA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChkYXRlLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMudmFsdWVbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZVswXSkgJiYgdGltZSA8IHRoaXMudmFsdWVbMF0hKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZUNsaWNrQ291bnQgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2xvc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YXJ0TW9kZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVbMF0gPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgICAgIHRoaXMudGltZUhvdmVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQoZGF0ZSwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZS5pbmNsdWRlcyhudWxsKSAmJiB0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIGNsb3NlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBpZiAodGhpcy50aW1lKSB7XHJcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKHRoaXMudGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50aW1lID0gdGltZS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFsnZGF0ZS1ob3VyJywgJ2RhdGUtbWludXRlJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIHRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgdGltZS5nZXRIb3VycygpLFxyXG4gICAgICAgIHRpbWUuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHRpbWUuZ2V0U2Vjb25kcygpXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZUNoYW5nZSh0eXBlOiBYRGF0ZVBpY2tlclR5cGUpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB5ZWFyU3RhcnRDaGFuZ2UobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyID0gbnVtYmVyO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcihudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhciArPSBudW07XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHRoaXMuc3RhcnRZZWFyKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZSA9IHRpbWUuZ2V0VGltZSgpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKSkge1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWVNb2RlbD8uc2V0SG91cnModGltZS5nZXRIb3VycygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRTZWNvbmRzKHRpbWUuZ2V0U2Vjb25kcygpKTtcclxuICAgIHRoaXMuZGF0ZUNoYW5nZSh0aGlzLnRpbWVNb2RlbCEpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3VyZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zdXJlRGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWU7XHJcbiAgICBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQobmV3IERhdGUoZW5kISksIGZhbHNlLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoIVhJc051bGwoc3RhcnQpICYmIFhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChuZXcgRGF0ZShzdGFydCEpLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRZZWFycyh0aGlzLmVuZERpc3BsYXksIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWEFkZFllYXJzKHRoaXMuc3RhcnREaXNwbGF5LCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9udGhDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRNb250aHModGhpcy5lbmREaXNwbGF5LCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldCh0eXBlOiAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInLCBudW0gPSAwKSB7XHJcbiAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgbm93ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3Qgd2VlayA9IG5vdy5nZXREYXkoKTtcclxuICAgICAgY29uc3Qgd2Vla0xpc3QgPSBbMSwgMiwgMywgNCwgNSwgNiwgN107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gd2Vla0xpc3QuaW5kZXhPZih3ZWVrKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdChcclxuICAgICAgICBbWEFkZERheXMobm93LCB3ZWVrTGlzdFswXSAtIChpbmRleCArIDEpICsgbnVtICogNyksIFhBZGREYXlzKG5vdywgd2Vla0xpc3RbNl0gLSAoaW5kZXggKyAxKSArIG51bSAqIDcpXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgY29uc3QgbW9udGggPSBYQWRkTW9udGhzKG5vdywgbnVtKTtcclxuICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpLCAxKTtcclxuICAgICAgY29uc3QgbGFzdERheSA9IFhBZGREYXlzKFhBZGRNb250aHMoZmlyc3REYXksIDEpLCAtMSk7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoW2ZpcnN0RGF5LCBsYXN0RGF5XSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFtmaXJzdERheSwgbGFzdERheV0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRGdW5jKGl0ZW06IFhEYXRlUmFuZ2VQcmVzZXQpIHtcclxuICAgIGxldCB2YWx1ZSA9IGl0ZW0uZnVuYygpO1xyXG4gICAgaWYgKFhJc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pIHx8IFhJc1N0cmluZyh2YWx1ZVswXSkpIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZUVtaXQodmFsdWUsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbCB7eyB0eXBlIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBAY2FzZSAoJ2RhdGUnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3dlZWsnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgICA8eC1waWNrZXItbW9udGhcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdxdWFydGVyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1xdWFydGVyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3llYXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXllYXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXIteWVhcj5cclxuICAgICAgICA8eC1waWNrZXIteWVhclxyXG4gICAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWVuZFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKSB7XHJcbiAgICBAaWYgKGV4dHJhRm9vdGVyKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWV4dHJhLWZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGVUaW1lSG91ck1pbnV0ZVRwbCBsZXQtdGltZUZvcm1hdD1cInRpbWVGb3JtYXRcIiBsZXQtdGltZVR5cGU9XCJ0aW1lVHlwZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWRhdGVcIj5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydF09XCJhY3RpdmVUeXBlID09PSAnc3RhcnQnXCJcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRdPVwiYWN0aXZlVHlwZSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSB8IGRhdGU6IHRpbWVGb3JtYXQgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx4LXRpbWUtcGlja2VyLWZyYW1lXHJcbiAgICAgICAgI3RpbWVQaWNrZXJGcmFtZVxyXG4gICAgICAgIFt0eXBlXT1cInRpbWVUeXBlXCJcclxuICAgICAgICBbdmFsdWVdPVwidGltZVwiXHJcbiAgICAgICAgKG5vZGVFbWl0KT1cInNlbGVjdFRpbWUoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Rpc2FibGVkVGltZVBhcmFtXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lXCJcclxuICAgICAgICBbZGVmYXVsdE5vd109XCJmYWxzZVwiXHJcbiAgICAgID48L3gtdGltZS1waWNrZXItZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBAaWYgKCFpc0RhdGVQaWNrZXIgJiYgZXh0cmFGb290ZXIpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZm9vdGVyLWxlZnRcIj5cclxuICAgICAgQGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCIhc3VyZURpc2FibGVkICYmIHN1cmVUaW1lKClcIiBzaXplPVwic21hbGxcIiBbZGlzYWJsZWRdPVwic3VyZURpc2FibGVkXCI+e3tcclxuICAgICAgbG9jYWxlLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1wcmVzZXRcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBwcmVzZXQ7IHRyYWNrIGl0ZW0uaWQpIHtcclxuICAgICAgICBAc3dpdGNoIChpdGVtLmlkKSB7XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDApXCI+e3sgbG9jYWxlLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZS5sYXN0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0V2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAxKVwiPnt7IGxvY2FsZS5uZXh0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzTW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDApXCI+e3sgbG9jYWxlLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZS5sYXN0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dE1vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAxKVwiPnt7IGxvY2FsZS5uZXh0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc1llYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMClcIj57eyBsb2NhbGUudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlLmxhc3RZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDEpXCI+e3sgbG9jYWxlLm5leHRZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoISFpdGVtLmZ1bmMpIHtcclxuICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0RnVuYyhpdGVtKVwiPnt7IGl0ZW0ubGFiZWwgfX08L3gtbGluaz5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19