ngx-tethys 18.1.0-next.0 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/action/action.component.d.ts +1 -2
  3. package/affix/affix.component.d.ts +2 -4
  4. package/anchor/anchor-link.component.d.ts +2 -4
  5. package/anchor/anchor.component.d.ts +1 -4
  6. package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
  7. package/autocomplete/autocomplete.component.d.ts +1 -2
  8. package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
  9. package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
  10. package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
  11. package/avatar/avatar.component.d.ts +1 -3
  12. package/avatar/avatar.pipe.d.ts +0 -2
  13. package/back-top/back-top.component.d.ts +2 -4
  14. package/badge/badge.component.d.ts +5 -14
  15. package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
  16. package/breadcrumb/breadcrumb.component.d.ts +1 -2
  17. package/button/button.component.d.ts +1 -2
  18. package/calendar/calendar-header.component.d.ts +1 -2
  19. package/calendar/calendar.component.d.ts +1 -2
  20. package/carousel/carousel-item.directive.d.ts +1 -2
  21. package/carousel/carousel.component.d.ts +1 -4
  22. package/carousel/carousel.service.d.ts +1 -2
  23. package/cascader/cascader.component.d.ts +4 -4
  24. package/checkbox/checkbox.component.d.ts +0 -2
  25. package/collapse/collapse-item.component.d.ts +2 -4
  26. package/color-picker/color-picker-panel.component.d.ts +2 -3
  27. package/color-picker/color-picker.component.d.ts +2 -4
  28. package/color-picker/coordinates.directive.d.ts +1 -2
  29. package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
  30. package/color-picker/parts/hue/hue.component.d.ts +1 -2
  31. package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
  32. package/copy/copy.directive.d.ts +0 -2
  33. package/core/click-positioner.d.ts +0 -2
  34. package/core/scroll.d.ts +1 -2
  35. package/core/update-host-class.service.d.ts +1 -2
  36. package/date-picker/abstract-picker.component.d.ts +1 -1
  37. package/date-picker/abstract-picker.directive.d.ts +2 -3
  38. package/date-picker/base-picker.component.d.ts +2 -3
  39. package/date-picker/date-picker.component.d.ts +2 -2
  40. package/date-picker/date-picker.directive.d.ts +1 -3
  41. package/date-picker/date-picker.service.d.ts +2 -2
  42. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
  43. package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
  44. package/date-picker/lib/date/date-header.component.d.ts +0 -3
  45. package/date-picker/lib/date/date-table.component.d.ts +1 -3
  46. package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
  47. package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
  48. package/date-picker/lib/month/month-header.component.d.ts +0 -3
  49. package/date-picker/lib/month/month-table.component.d.ts +1 -2
  50. package/date-picker/lib/popups/date-popup.component.d.ts +1 -3
  51. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -4
  52. package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
  53. package/date-picker/lib/year/year-header.component.d.ts +0 -1
  54. package/date-picker/month-picker.component.d.ts +2 -2
  55. package/date-picker/picker.component.d.ts +1 -3
  56. package/date-picker/picker.pipes.d.ts +0 -3
  57. package/date-picker/quarter-picker.component.d.ts +2 -2
  58. package/date-picker/range-picker.component.d.ts +2 -2
  59. package/date-picker/range-picker.directive.d.ts +2 -3
  60. package/date-picker/week-picker.component.d.ts +2 -2
  61. package/date-picker/year-picker.component.d.ts +2 -2
  62. package/date-range/date-range.component.d.ts +1 -3
  63. package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
  64. package/dialog/body/dialog-body.component.d.ts +0 -2
  65. package/dialog/confirm/confirm.component.d.ts +2 -3
  66. package/dialog/dialog-container.component.d.ts +4 -5
  67. package/dialog/dialog.service.d.ts +4 -4
  68. package/dialog/footer/dialog-footer.component.d.ts +2 -2
  69. package/dialog/header/dialog-header.component.d.ts +2 -6
  70. package/dot/dot.component.d.ts +1 -2
  71. package/drag-drop/drag-content.directive.d.ts +2 -3
  72. package/drag-drop/drag-handle.directive.d.ts +2 -3
  73. package/drag-drop/drag.directive.d.ts +4 -5
  74. package/drag-drop/drop-container.directive.d.ts +6 -3
  75. package/dropdown/dropdown-active.directive.d.ts +3 -4
  76. package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
  77. package/dropdown/dropdown-submenu.component.d.ts +1 -3
  78. package/dropdown/dropdown.directive.d.ts +3 -5
  79. package/empty/empty.component.d.ts +6 -6
  80. package/esm2022/action/action.component.mjs +18 -18
  81. package/esm2022/affix/affix.component.mjs +11 -14
  82. package/esm2022/anchor/anchor-link.component.mjs +9 -10
  83. package/esm2022/anchor/anchor.component.mjs +11 -16
  84. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +22 -22
  85. package/esm2022/autocomplete/autocomplete.component.mjs +7 -7
  86. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
  87. package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
  88. package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
  89. package/esm2022/avatar/avatar.component.mjs +24 -25
  90. package/esm2022/avatar/avatar.pipe.mjs +6 -7
  91. package/esm2022/back-top/back-top.component.mjs +11 -15
  92. package/esm2022/badge/badge.component.mjs +6 -6
  93. package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
  94. package/esm2022/breadcrumb/breadcrumb.component.mjs +12 -12
  95. package/esm2022/button/button.component.mjs +12 -12
  96. package/esm2022/calendar/calendar-header.component.mjs +12 -12
  97. package/esm2022/calendar/calendar.component.mjs +12 -12
  98. package/esm2022/carousel/carousel-item.directive.mjs +7 -6
  99. package/esm2022/carousel/carousel.component.mjs +10 -12
  100. package/esm2022/carousel/carousel.service.mjs +7 -9
  101. package/esm2022/cascader/cascader.component.mjs +11 -16
  102. package/esm2022/checkbox/checkbox.component.mjs +7 -9
  103. package/esm2022/collapse/collapse-item.component.mjs +18 -21
  104. package/esm2022/color-picker/color-picker-panel.component.mjs +11 -12
  105. package/esm2022/color-picker/color-picker.component.mjs +10 -11
  106. package/esm2022/color-picker/coordinates.directive.mjs +10 -10
  107. package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
  108. package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
  109. package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
  110. package/esm2022/copy/copy.directive.mjs +8 -12
  111. package/esm2022/core/click-positioner.mjs +6 -7
  112. package/esm2022/core/scroll.mjs +7 -9
  113. package/esm2022/core/store/store.mjs +1 -1
  114. package/esm2022/core/update-host-class.service.mjs +6 -6
  115. package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
  116. package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
  117. package/esm2022/date-picker/base-picker.component.mjs +26 -26
  118. package/esm2022/date-picker/date-picker.component.mjs +6 -6
  119. package/esm2022/date-picker/date-picker.directive.mjs +6 -8
  120. package/esm2022/date-picker/date-picker.service.mjs +6 -10
  121. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
  122. package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
  123. package/esm2022/date-picker/lib/date/date-header.component.mjs +3 -9
  124. package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -9
  125. package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +12 -12
  126. package/esm2022/date-picker/lib/decade/decade-header.component.mjs +5 -8
  127. package/esm2022/date-picker/lib/month/month-header.component.mjs +3 -9
  128. package/esm2022/date-picker/lib/month/month-table.component.mjs +6 -7
  129. package/esm2022/date-picker/lib/popups/date-popup.component.mjs +12 -13
  130. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +12 -13
  131. package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +6 -7
  132. package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -9
  133. package/esm2022/date-picker/month-picker.component.mjs +6 -7
  134. package/esm2022/date-picker/picker.component.mjs +21 -22
  135. package/esm2022/date-picker/picker.pipes.mjs +10 -11
  136. package/esm2022/date-picker/quarter-picker.component.mjs +6 -7
  137. package/esm2022/date-picker/range-picker.component.mjs +6 -7
  138. package/esm2022/date-picker/range-picker.directive.mjs +6 -8
  139. package/esm2022/date-picker/week-picker.component.mjs +6 -7
  140. package/esm2022/date-picker/year-picker.component.mjs +6 -7
  141. package/esm2022/date-range/date-range.component.mjs +14 -15
  142. package/esm2022/date-range/optional-dates/optional-dates.component.mjs +8 -9
  143. package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
  144. package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
  145. package/esm2022/dialog/dialog-container.component.mjs +13 -18
  146. package/esm2022/dialog/dialog.service.mjs +10 -17
  147. package/esm2022/dialog/footer/dialog-footer.component.mjs +7 -11
  148. package/esm2022/dialog/header/dialog-header.component.mjs +14 -19
  149. package/esm2022/dot/dot.component.mjs +7 -7
  150. package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
  151. package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
  152. package/esm2022/drag-drop/drag.directive.mjs +13 -16
  153. package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
  154. package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
  155. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
  156. package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
  157. package/esm2022/dropdown/dropdown.directive.mjs +12 -10
  158. package/esm2022/empty/empty.component.mjs +14 -17
  159. package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
  160. package/esm2022/form/form-group-error/form-group-error.component.mjs +9 -12
  161. package/esm2022/form/form-group-label.directive.mjs +9 -10
  162. package/esm2022/form/form-group.component.mjs +15 -19
  163. package/esm2022/form/form-submit.directive.mjs +6 -7
  164. package/esm2022/form/form-validator-loader.mjs +1 -1
  165. package/esm2022/form/form-validator.service.mjs +12 -13
  166. package/esm2022/form/form.directive.mjs +11 -16
  167. package/esm2022/form/from-group-footer/form-group-footer.component.mjs +10 -16
  168. package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
  169. package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
  170. package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
  171. package/esm2022/grid/thy-col.directive.mjs +9 -14
  172. package/esm2022/grid/thy-grid-item.component.mjs +8 -14
  173. package/esm2022/grid/thy-grid.component.mjs +7 -8
  174. package/esm2022/guider/guider.directive.mjs +8 -9
  175. package/esm2022/guider/guider.service.mjs +12 -19
  176. package/esm2022/icon/icon-registry.mjs +11 -16
  177. package/esm2022/icon/icon.component.mjs +8 -9
  178. package/esm2022/image/image-group.component.mjs +7 -7
  179. package/esm2022/image/image.directive.mjs +11 -12
  180. package/esm2022/image/image.service.mjs +8 -14
  181. package/esm2022/image/preview/image-preview.component.mjs +34 -38
  182. package/esm2022/input/input-count.component.mjs +7 -10
  183. package/esm2022/input/input-group.component.mjs +12 -13
  184. package/esm2022/input/input-search.component.mjs +7 -7
  185. package/esm2022/input/input.component.mjs +14 -14
  186. package/esm2022/input/input.directive.mjs +12 -17
  187. package/esm2022/input-number/input-number.component.mjs +6 -6
  188. package/esm2022/layout/sidebar.component.mjs +45 -51
  189. package/esm2022/list/selection/selection-list.mjs +25 -25
  190. package/esm2022/loading/loading.component.mjs +8 -8
  191. package/esm2022/mention/mention.directive.mjs +9 -14
  192. package/esm2022/mention/suggestions/suggestions.component.mjs +8 -9
  193. package/esm2022/menu/group/menu-group.component.mjs +34 -35
  194. package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
  195. package/esm2022/menu/item/menu-item.component.mjs +6 -6
  196. package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
  197. package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
  198. package/esm2022/message/message-container.component.mjs +9 -11
  199. package/esm2022/message/message-queue.service.mjs +6 -8
  200. package/esm2022/message/message.component.mjs +7 -7
  201. package/esm2022/message/message.service.mjs +10 -11
  202. package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
  203. package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
  204. package/esm2022/nav/nav-item.directive.mjs +8 -11
  205. package/esm2022/nav/nav.component.mjs +32 -33
  206. package/esm2022/nav/nav.pipe.mjs +6 -7
  207. package/esm2022/notify/notify-container.component.mjs +8 -11
  208. package/esm2022/notify/notify-queue.service.mjs +6 -8
  209. package/esm2022/notify/notify.component.mjs +7 -7
  210. package/esm2022/notify/notify.service.mjs +11 -12
  211. package/esm2022/pagination/pagination.component.mjs +38 -43
  212. package/esm2022/pagination/pagination.pipe.mjs +6 -7
  213. package/esm2022/popover/header/popover-header.component.mjs +12 -14
  214. package/esm2022/popover/popover-container.component.mjs +11 -13
  215. package/esm2022/popover/popover.directive.mjs +13 -12
  216. package/esm2022/popover/popover.service.mjs +14 -26
  217. package/esm2022/progress/progress-strip.component.mjs +10 -13
  218. package/esm2022/property/property-item.component.mjs +10 -13
  219. package/esm2022/property-operation/property-operation.component.mjs +24 -25
  220. package/esm2022/radio/button/radio-button.component.mjs +9 -15
  221. package/esm2022/radio/group/radio-group.component.mjs +17 -17
  222. package/esm2022/radio/radio.component.mjs +8 -14
  223. package/esm2022/rate/rate.component.mjs +6 -6
  224. package/esm2022/resizable/resizable.directive.mjs +10 -12
  225. package/esm2022/resizable/resizable.service.mjs +7 -9
  226. package/esm2022/resizable/resize-handle.component.mjs +7 -8
  227. package/esm2022/segment/segment-item.component.mjs +12 -15
  228. package/esm2022/segment/segment.component.mjs +26 -26
  229. package/esm2022/select/custom-select/custom-select.component.mjs +14 -28
  230. package/esm2022/select/native-select/native-select.component.mjs +6 -6
  231. package/esm2022/shared/base-form-check.component.mjs +7 -8
  232. package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
  233. package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
  234. package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
  235. package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
  236. package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
  237. package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
  238. package/esm2022/shared/directives/thy-show.mjs +11 -11
  239. package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
  240. package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
  241. package/esm2022/shared/ng-transclude.directive.mjs +6 -5
  242. package/esm2022/shared/option/group/option-group.component.mjs +10 -10
  243. package/esm2022/shared/option/list-option/list-option.component.mjs +12 -19
  244. package/esm2022/shared/option/option.component.mjs +9 -19
  245. package/esm2022/shared/select/select-control/select-control.component.mjs +23 -23
  246. package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
  247. package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
  248. package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
  249. package/esm2022/slide/slide-container.component.mjs +12 -16
  250. package/esm2022/slide/slide-header/slide-header.component.mjs +10 -11
  251. package/esm2022/slide/slide-ref.service.mjs +1 -1
  252. package/esm2022/slide/slide.service.mjs +8 -12
  253. package/esm2022/slider/slider.component.mjs +8 -8
  254. package/esm2022/space/space.component.mjs +13 -13
  255. package/esm2022/statistic/statistic.component.mjs +20 -20
  256. package/esm2022/stepper/step.component.mjs +6 -11
  257. package/esm2022/stepper/stepper-button.directive.mjs +10 -11
  258. package/esm2022/strength/strength.component.mjs +11 -12
  259. package/esm2022/switch/switch.component.mjs +6 -6
  260. package/esm2022/table/table-column.component.mjs +58 -63
  261. package/esm2022/table/table-skeleton.component.mjs +32 -32
  262. package/esm2022/table/table.component.mjs +16 -24
  263. package/esm2022/tabs/tabs.component.mjs +19 -19
  264. package/esm2022/tag/tag.component.mjs +22 -22
  265. package/esm2022/time-picker/inner/inner-time-picker.component.mjs +10 -9
  266. package/esm2022/time-picker/time-picker-panel.component.mjs +27 -27
  267. package/esm2022/time-picker/time-picker.component.mjs +29 -29
  268. package/esm2022/timeline/timeline-item.component.mjs +12 -13
  269. package/esm2022/timeline/timeline.component.mjs +7 -8
  270. package/esm2022/tooltip/tooltip.component.mjs +14 -14
  271. package/esm2022/tooltip/tooltip.directive.mjs +11 -10
  272. package/esm2022/tooltip/tooltip.service.mjs +9 -13
  273. package/esm2022/transfer/transfer-list.component.mjs +6 -6
  274. package/esm2022/tree/tree-node.component.mjs +13 -17
  275. package/esm2022/tree/tree.component.mjs +86 -90
  276. package/esm2022/tree-select/tree-select.component.mjs +22 -27
  277. package/esm2022/typography/bg-color.directive.mjs +9 -9
  278. package/esm2022/typography/text-color.directive.mjs +9 -9
  279. package/esm2022/upload/file-drop.directive.mjs +1 -1
  280. package/esm2022/upload/file-select-base.mjs +5 -6
  281. package/esm2022/upload/file-select.component.mjs +4 -3
  282. package/esm2022/upload/upload.service.mjs +6 -7
  283. package/esm2022/version.mjs +2 -2
  284. package/esm2022/watermark/watermark.directive.mjs +12 -12
  285. package/fesm2022/ngx-tethys-action.mjs +17 -17
  286. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  287. package/fesm2022/ngx-tethys-affix.mjs +12 -14
  288. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  289. package/fesm2022/ngx-tethys-anchor.mjs +19 -22
  290. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  291. package/fesm2022/ngx-tethys-arrow-switcher.mjs +21 -21
  292. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  293. package/fesm2022/ngx-tethys-autocomplete.mjs +59 -71
  294. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  295. package/fesm2022/ngx-tethys-avatar.mjs +27 -27
  296. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  297. package/fesm2022/ngx-tethys-back-top.mjs +12 -15
  298. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  299. package/fesm2022/ngx-tethys-badge.mjs +5 -5
  300. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  301. package/fesm2022/ngx-tethys-breadcrumb.mjs +16 -16
  302. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  303. package/fesm2022/ngx-tethys-button.mjs +11 -11
  304. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  305. package/fesm2022/ngx-tethys-calendar.mjs +21 -21
  306. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  307. package/fesm2022/ngx-tethys-carousel.mjs +20 -21
  308. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  309. package/fesm2022/ngx-tethys-cascader.mjs +11 -15
  310. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  311. package/fesm2022/ngx-tethys-checkbox.mjs +6 -7
  312. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  313. package/fesm2022/ngx-tethys-collapse.mjs +17 -19
  314. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  315. package/fesm2022/ngx-tethys-color-picker.mjs +44 -42
  316. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  317. package/fesm2022/ngx-tethys-copy.mjs +8 -12
  318. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  319. package/fesm2022/ngx-tethys-core.mjs +14 -16
  320. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  321. package/fesm2022/ngx-tethys-date-picker.mjs +192 -216
  322. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  323. package/fesm2022/ngx-tethys-date-range.mjs +20 -20
  324. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  325. package/fesm2022/ngx-tethys-dialog.mjs +56 -72
  326. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  327. package/fesm2022/ngx-tethys-dot.mjs +6 -6
  328. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  329. package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
  330. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  331. package/fesm2022/ngx-tethys-dropdown.mjs +39 -37
  332. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  333. package/fesm2022/ngx-tethys-empty.mjs +15 -15
  334. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  335. package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
  336. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  337. package/fesm2022/ngx-tethys-form.mjs +67 -82
  338. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  339. package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
  340. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  341. package/fesm2022/ngx-tethys-grid.mjs +20 -29
  342. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  343. package/fesm2022/ngx-tethys-guider.mjs +17 -23
  344. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  345. package/fesm2022/ngx-tethys-icon.mjs +18 -22
  346. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  347. package/fesm2022/ngx-tethys-image.mjs +57 -62
  348. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  349. package/fesm2022/ngx-tethys-input-number.mjs +5 -5
  350. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  351. package/fesm2022/ngx-tethys-input.mjs +46 -53
  352. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  353. package/fesm2022/ngx-tethys-layout.mjs +45 -50
  354. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  355. package/fesm2022/ngx-tethys-list.mjs +24 -24
  356. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  357. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  358. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  359. package/fesm2022/ngx-tethys-mention.mjs +16 -21
  360. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  361. package/fesm2022/ngx-tethys-menu.mjs +51 -52
  362. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  363. package/fesm2022/ngx-tethys-message.mjs +33 -35
  364. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  365. package/fesm2022/ngx-tethys-nav.mjs +55 -64
  366. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  367. package/fesm2022/ngx-tethys-notify.mjs +26 -29
  368. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  369. package/fesm2022/ngx-tethys-pagination.mjs +44 -49
  370. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  371. package/fesm2022/ngx-tethys-popover.mjs +48 -54
  372. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  373. package/fesm2022/ngx-tethys-progress.mjs +9 -12
  374. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  375. package/fesm2022/ngx-tethys-property-operation.mjs +24 -24
  376. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  377. package/fesm2022/ngx-tethys-property.mjs +11 -11
  378. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  379. package/fesm2022/ngx-tethys-radio.mjs +29 -35
  380. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  381. package/fesm2022/ngx-tethys-rate.mjs +5 -5
  382. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  383. package/fesm2022/ngx-tethys-resizable.mjs +22 -25
  384. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  385. package/fesm2022/ngx-tethys-segment.mjs +35 -38
  386. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  387. package/fesm2022/ngx-tethys-select.mjs +20 -34
  388. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  389. package/fesm2022/ngx-tethys-shared.mjs +128 -143
  390. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  391. package/fesm2022/ngx-tethys-skeleton.mjs +11 -25
  392. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  393. package/fesm2022/ngx-tethys-slide.mjs +30 -34
  394. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  395. package/fesm2022/ngx-tethys-slider.mjs +7 -7
  396. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  397. package/fesm2022/ngx-tethys-space.mjs +13 -13
  398. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  399. package/fesm2022/ngx-tethys-statistic.mjs +19 -19
  400. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  401. package/fesm2022/ngx-tethys-stepper.mjs +13 -18
  402. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  403. package/fesm2022/ngx-tethys-strength.mjs +11 -11
  404. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  405. package/fesm2022/ngx-tethys-switch.mjs +5 -5
  406. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  407. package/fesm2022/ngx-tethys-table.mjs +103 -115
  408. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  409. package/fesm2022/ngx-tethys-tabs.mjs +19 -19
  410. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  411. package/fesm2022/ngx-tethys-tag.mjs +21 -21
  412. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  413. package/fesm2022/ngx-tethys-time-picker.mjs +61 -58
  414. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  415. package/fesm2022/ngx-tethys-timeline.mjs +16 -16
  416. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  417. package/fesm2022/ngx-tethys-tooltip.mjs +32 -33
  418. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  419. package/fesm2022/ngx-tethys-transfer.mjs +5 -5
  420. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  421. package/fesm2022/ngx-tethys-tree-select.mjs +23 -28
  422. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  423. package/fesm2022/ngx-tethys-tree.mjs +96 -102
  424. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  425. package/fesm2022/ngx-tethys-typography.mjs +15 -15
  426. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  427. package/fesm2022/ngx-tethys-upload.mjs +11 -12
  428. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  429. package/fesm2022/ngx-tethys-watermark.mjs +12 -12
  430. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  431. package/fesm2022/ngx-tethys.mjs +1 -1
  432. package/fesm2022/ngx-tethys.mjs.map +1 -1
  433. package/flexible-text/flexible-text.component.d.ts +1 -3
  434. package/form/form-group-error/form-group-error.component.d.ts +1 -3
  435. package/form/form-group-label.directive.d.ts +0 -2
  436. package/form/form-group.component.d.ts +1 -4
  437. package/form/form-submit.directive.d.ts +0 -2
  438. package/form/form-validator.service.d.ts +0 -2
  439. package/form/form.directive.d.ts +4 -4
  440. package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
  441. package/form/validator/unique-validator.directive.d.ts +1 -4
  442. package/fullscreen/fullscreen.component.d.ts +0 -2
  443. package/fullscreen/fullscreen.service.d.ts +0 -2
  444. package/grid/thy-col.directive.d.ts +1 -2
  445. package/grid/thy-grid-item.component.d.ts +2 -4
  446. package/grid/thy-grid.component.d.ts +1 -3
  447. package/guider/guider.directive.d.ts +1 -3
  448. package/guider/guider.service.d.ts +0 -7
  449. package/icon/icon-registry.d.ts +1 -3
  450. package/icon/icon.component.d.ts +1 -3
  451. package/image/image-group.component.d.ts +1 -2
  452. package/image/image.directive.d.ts +1 -3
  453. package/image/image.service.d.ts +2 -2
  454. package/image/preview/image-preview.component.d.ts +1 -4
  455. package/input/input-count.component.d.ts +3 -4
  456. package/input/input-group.component.d.ts +1 -3
  457. package/input/input-search.component.d.ts +2 -2
  458. package/input/input.component.d.ts +1 -2
  459. package/input/input.directive.d.ts +2 -3
  460. package/input-number/input-number.component.d.ts +2 -2
  461. package/layout/sidebar.component.d.ts +44 -13
  462. package/list/selection/selection-list.d.ts +1 -2
  463. package/loading/loading.component.d.ts +0 -2
  464. package/loading/styles/loading.scss +3 -1
  465. package/mention/mention.directive.d.ts +4 -5
  466. package/mention/suggestions/suggestions.component.d.ts +2 -3
  467. package/menu/group/menu-group.component.d.ts +12 -26
  468. package/menu/item/action/menu-item-action.component.d.ts +2 -3
  469. package/menu/item/menu-item.component.d.ts +1 -2
  470. package/message/abstract/abstract-message-container.component.d.ts +1 -2
  471. package/message/abstract/abstract-message.component.d.ts +2 -2
  472. package/message/message-container.component.d.ts +1 -3
  473. package/message/message-queue.service.d.ts +1 -2
  474. package/message/message.component.d.ts +1 -3
  475. package/message/message.service.d.ts +3 -5
  476. package/nav/icon-nav/icon-nav.component.d.ts +2 -2
  477. package/nav/nav-ink-bar.directive.d.ts +2 -4
  478. package/nav/nav-item.directive.d.ts +3 -4
  479. package/nav/nav.component.d.ts +1 -3
  480. package/nav/nav.pipe.d.ts +0 -2
  481. package/notify/notify-container.component.d.ts +1 -3
  482. package/notify/notify-queue.service.d.ts +1 -2
  483. package/notify/notify.component.d.ts +2 -3
  484. package/notify/notify.service.d.ts +1 -4
  485. package/package.json +1 -1
  486. package/pagination/pagination.component.d.ts +7 -19
  487. package/pagination/pagination.pipe.d.ts +0 -2
  488. package/popover/header/popover-header.component.d.ts +0 -3
  489. package/popover/popover-container.component.d.ts +3 -4
  490. package/popover/popover.directive.d.ts +2 -5
  491. package/popover/popover.service.d.ts +4 -6
  492. package/progress/progress-strip.component.d.ts +0 -1
  493. package/property/property-item.component.d.ts +6 -6
  494. package/property-operation/property-operation.component.d.ts +1 -3
  495. package/radio/button/radio-button.component.d.ts +2 -5
  496. package/radio/group/radio-group.component.d.ts +1 -2
  497. package/radio/radio.component.d.ts +2 -3
  498. package/rate/rate.component.d.ts +2 -2
  499. package/resizable/resizable.directive.d.ts +2 -4
  500. package/resizable/resizable.service.d.ts +2 -2
  501. package/resizable/resize-handle.component.d.ts +1 -3
  502. package/schematics/version.d.ts +1 -1
  503. package/schematics/version.js +1 -1
  504. package/segment/segment-item.component.d.ts +4 -5
  505. package/segment/segment.component.d.ts +1 -2
  506. package/select/custom-select/custom-select.component.d.ts +5 -5
  507. package/select/native-select/native-select.component.d.ts +1 -1
  508. package/shared/base-form-check.component.d.ts +1 -1
  509. package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
  510. package/shared/directives/thy-autofocus.directive.d.ts +0 -2
  511. package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
  512. package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
  513. package/shared/directives/thy-enter.directive.d.ts +1 -2
  514. package/shared/directives/thy-scroll.directive.d.ts +1 -2
  515. package/shared/directives/thy-show.d.ts +1 -2
  516. package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
  517. package/shared/directives/view-outlet.directive.d.ts +1 -2
  518. package/shared/ng-transclude.directive.d.ts +1 -1
  519. package/shared/option/group/option-group.component.d.ts +1 -2
  520. package/shared/option/list-option/list-option.component.d.ts +5 -10
  521. package/shared/option/option.component.d.ts +5 -5
  522. package/shared/select/select-control/select-control.component.d.ts +1 -2
  523. package/skeleton/skeleton-circle.component.d.ts +1 -4
  524. package/skeleton/skeleton-rectangle.component.d.ts +5 -5
  525. package/slide/drawer/drawer-container.directive.d.ts +1 -2
  526. package/slide/slide-container.component.d.ts +3 -4
  527. package/slide/slide-header/slide-header.component.d.ts +0 -2
  528. package/slide/slide.service.d.ts +3 -3
  529. package/slider/slider.component.d.ts +2 -2
  530. package/space/space.component.d.ts +1 -2
  531. package/statistic/statistic.component.d.ts +1 -2
  532. package/stepper/step.component.d.ts +1 -2
  533. package/stepper/stepper-button.directive.d.ts +0 -3
  534. package/strength/strength.component.d.ts +0 -1
  535. package/switch/switch.component.d.ts +1 -1
  536. package/table/table-column.component.d.ts +32 -8
  537. package/table/table-skeleton.component.d.ts +3 -12
  538. package/table/table.component.d.ts +3 -5
  539. package/tabs/tabs.component.d.ts +1 -2
  540. package/tag/tag.component.d.ts +7 -3
  541. package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
  542. package/time-picker/time-picker-panel.component.d.ts +1 -2
  543. package/time-picker/time-picker.component.d.ts +1 -2
  544. package/timeline/timeline-item.component.d.ts +1 -3
  545. package/timeline/timeline.component.d.ts +1 -3
  546. package/tooltip/tooltip.component.d.ts +1 -2
  547. package/tooltip/tooltip.directive.d.ts +6 -9
  548. package/tooltip/tooltip.service.d.ts +2 -4
  549. package/transfer/transfer-list.component.d.ts +1 -2
  550. package/tree/tree-node.component.d.ts +5 -21
  551. package/tree/tree.component.d.ts +1 -2
  552. package/tree-select/tree-select.component.d.ts +5 -6
  553. package/typography/bg-color.directive.d.ts +0 -2
  554. package/typography/text-color.directive.d.ts +1 -2
  555. package/upload/file-select-base.d.ts +2 -3
  556. package/upload/file-select.component.d.ts +1 -0
  557. package/upload/upload.service.d.ts +0 -2
  558. package/watermark/watermark.directive.d.ts +1 -2
@@ -12,22 +12,9 @@ import * as i0 from "@angular/core";
12
12
  * @name thy-tabs
13
13
  */
14
14
  export class ThyTabs {
15
- /**
16
- * 激活的项
17
- */
18
- set thyActiveTab(value) {
19
- if (isString(value)) {
20
- this.activeTabId = value;
21
- this.activeTabIndex = undefined;
22
- }
23
- else {
24
- this.activeTabIndex = value;
25
- this.activeTabId = undefined;
26
- }
27
- }
28
- constructor(cd, el) {
29
- this.cd = cd;
30
- this.el = el;
15
+ constructor() {
16
+ this.cd = inject(ChangeDetectorRef);
17
+ this.el = inject(ElementRef);
31
18
  this.tabs = new QueryList();
32
19
  this.destroyRef = inject(DestroyRef);
33
20
  /**
@@ -60,6 +47,19 @@ export class ThyTabs {
60
47
  this.activeTabIndex = 0;
61
48
  this.transitionStarted = false;
62
49
  }
50
+ /**
51
+ * 激活的项
52
+ */
53
+ set thyActiveTab(value) {
54
+ if (isString(value)) {
55
+ this.activeTabId = value;
56
+ this.activeTabIndex = undefined;
57
+ }
58
+ else {
59
+ this.activeTabIndex = value;
60
+ this.activeTabId = undefined;
61
+ }
62
+ }
63
63
  ngOnInit() {
64
64
  const tabsContent = this.el.nativeElement.querySelector('.thy-tabs-content');
65
65
  fromEvent(tabsContent, 'transitionend')
@@ -103,7 +103,7 @@ export class ThyTabs {
103
103
  const activeTab = tab.id ? tab.id : index;
104
104
  this.thyActiveTabChange.emit(activeTab);
105
105
  }
106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTabs, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
107
107
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyTabs, isStandalone: true, selector: "thy-tabs", inputs: { thyType: "thyType", thySize: "thySize", thyActiveTab: "thyActiveTab", thyExtra: "thyExtra", thyPosition: "thyPosition", thyAnimated: ["thyAnimated", "thyAnimated", coerceBooleanProperty], thyResponsive: ["thyResponsive", "thyResponsive", coerceBooleanProperty] }, outputs: { thyActiveTabChange: "thyActiveTabChange" }, host: { properties: { "class.thy-tabs-top": "thyPosition === 'top'", "class.thy-tabs-left": "thyPosition === 'left'", "style.overflow": "transitionStarted ? \"hidden\" : null" }, classAttribute: "thy-tabs" }, queries: [{ propertyName: "tabs", predicate: ThyTab, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType\"\n [thySize]=\"thySize\"\n [thyExtra]=\"thyExtra\"\n [thyVertical]=\"thyPosition === 'left'\"\n [thyResponsive]=\"thyResponsive\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id\"\n [thyNavItemDisabled]=\"tab.thyDisabled\"\n [thyNavItemActive]=\"(tab.id && activeTabId && tab.id === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id && activeTabId && tab.id === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyNav, selector: "thy-nav", inputs: ["thyType", "thySize", "thyHorizontal", "thyVertical", "thyFill", "thyResponsive", "thyInsideClosable", "thyExtra"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyTabContent, selector: "thy-tab-content, [thyTabContent]", inputs: ["content", "active", "tabPaneAnimated"], exportAs: ["thyTabContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
108
108
  }
109
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTabs, decorators: [{
@@ -114,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
114
114
  '[class.thy-tabs-left]': `thyPosition === 'left'`,
115
115
  '[style.overflow]': `transitionStarted ? "hidden" : null`
116
116
  }, standalone: true, imports: [ThyNav, ThyNavItemDirective, NgTemplateOutlet, ThyTabContent], template: "<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType\"\n [thySize]=\"thySize\"\n [thyExtra]=\"thyExtra\"\n [thyVertical]=\"thyPosition === 'left'\"\n [thyResponsive]=\"thyResponsive\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id\"\n [thyNavItemDisabled]=\"tab.thyDisabled\"\n [thyNavItemActive]=\"(tab.id && activeTabId && tab.id === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id && activeTabId && tab.id === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n" }]
117
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { tabs: [{
117
+ }], propDecorators: { tabs: [{
118
118
  type: ContentChildren,
119
119
  args: [ThyTab, { descendants: true }]
120
120
  }], thyType: [{
@@ -136,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
136
136
  }], thyActiveTabChange: [{
137
137
  type: Output
138
138
  }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVE3RDs7O0dBR0c7QUFjSCxNQUFNLE9BQU8sT0FBTztJQWlCaEI7O09BRUc7SUFDSCxJQUNJLFlBQVksQ0FBQyxLQUF1QjtRQUNwQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7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O3NCQUFmLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU1GLFlBQVk7c0JBRGYsS0FBSztnQkFjRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS3VDLFdBQVc7c0JBQXZELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBS0UsYUFBYTtzQkFBekQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRTtnQkFLakMsa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBpbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGlzU3RyaW5nIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgVGh5VGFiIH0gZnJvbSAnLi90YWIuY29tcG9uZW50JztcbmltcG9ydCB7IFRoeUFjdGl2ZVRhYkluZm8sIFRoeVRhYkFjdGl2ZUV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBUaHlUYWJDb250ZW50IH0gZnJvbSAnLi90YWItY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUaHlOYXYsIFRoeU5hdkl0ZW1EaXJlY3RpdmUgfSBmcm9tICduZ3gtdGV0aHlzL25hdic7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYnNTaXplID0gJ2xnJyB8ICdtZCcgfCAnc20nO1xuXG5leHBvcnQgdHlwZSBUaHlUYWJzVHlwZSA9ICdwdWxsZWQnIHwgJ3RhYnMnIHwgJ3BpbGxzJyB8ICdsaXRlJztcblxuZXhwb3J0IHR5cGUgVGh5VGFic1Bvc2l0aW9uID0gJ3RvcCcgfCAnbGVmdCc7XG5cbi8qKlxuICog6YCJ6aG55Y2h5YiH5o2i57uE5Lu2XG4gKiBAbmFtZSB0aHktdGFic1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS10YWJzJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFicy10b3BdJzogYHRoeVBvc2l0aW9uID09PSAndG9wJ2AsXG4gICAgICAgICdbY2xhc3MudGh5LXRhYnMtbGVmdF0nOiBgdGh5UG9zaXRpb24gPT09ICdsZWZ0J2AsXG4gICAgICAgICdbc3R5bGUub3ZlcmZsb3ddJzogYHRyYW5zaXRpb25TdGFydGVkID8gXCJoaWRkZW5cIiA6IG51bGxgXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUaHlOYXYsIFRoeU5hdkl0ZW1EaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIFRoeVRhYkNvbnRlbnRdXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRhYnMgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihUaHlUYWIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgdGFicyA9IG5ldyBRdWVyeUxpc3Q8VGh5VGFiPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqXG4gICAgICog5qCH562+57G75Z6LXG4gICAgICogQHR5cGUgJ3B1bGxlZCcgfCAndGFicycgfCAncGlsbHMnIHwgJ2xpdGUnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VHlwZTogVGh5VGFic1R5cGUgPSAndGFicyc7XG5cbiAgICAvKipcbiAgICAgKiDpgInpobnljaHnmoTlpKflsI9cbiAgICAgKiBAdHlwZSAnbGcnIHwgJ21kJyB8ICdzbSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiBUaHlUYWJzU2l6ZSA9ICdtZCc7XG5cbiAgICAvKipcbiAgICAgKiDmv4DmtLvnmoTpoblcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlBY3RpdmVUYWIodmFsdWU6IFRoeUFjdGl2ZVRhYkluZm8pIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJZCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDpmYTliqDmk43kvZxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlFeHRyYTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiDpgInpobnljaHnmoTkvY3nva5cbiAgICAgKiBAdHlwZSAndG9wJyB8ICdsZWZ0J1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVBvc2l0aW9uOiBUaHlUYWJzUG9zaXRpb24gPSAndG9wJztcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuS9v+eUqOWKqOeUu+WIh+aNoiBUYWJzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5QW5pbWF0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOWTjeW6lOW8j++8jOiHquWKqOiuoeeul+WuveW6puWtmOaUviB0aHlOYXZJdGVt77yM5bm25re75Yqg5pu05aSa5by55qGGXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSkgdGh5UmVzcG9uc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5r+A5rS755qE6aG55Y+R55Sf5pS55Y+Y5pe255qE5Zue6LCDXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUFjdGl2ZVRhYkNoYW5nZTogRXZlbnRFbWl0dGVyPFRoeVRhYkFjdGl2ZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8VGh5VGFiQWN0aXZlRXZlbnQ+KCk7XG5cbiAgICBhY3RpdmVUYWJJbmRleDogbnVtYmVyID0gMDtcblxuICAgIGFjdGl2ZVRhYklkOiBzdHJpbmc7XG5cbiAgICB0cmFuc2l0aW9uU3RhcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhYnNDb250ZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy50aHktdGFicy1jb250ZW50Jyk7XG4gICAgICAgIGZyb21FdmVudCh0YWJzQ29udGVudCwgJ3RyYW5zaXRpb25lbmQnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdGFydGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB0aHlBY3RpdmVUYWIgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmICh0aHlBY3RpdmVUYWIgJiYgIXRoeUFjdGl2ZVRhYi5maXJzdENoYW5nZSAmJiB0aGlzLnRoeUFuaW1hdGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoeUFjdGl2ZVRhYj8uY3VycmVudFZhbHVlPy5pbmRleCB8fCBBcnJheS5mcm9tKHRoaXMudGFicykuZmluZEluZGV4KGsgPT4gay5pZCA9PT0gdGh5QWN0aXZlVGFiPy5jdXJyZW50VmFsdWUuaWQpO1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uU3RhcnRlZCA9IHRoaXMuYWN0aXZlVGFiSW5kZXggIT09IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRhYnMuY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRoeUFuaW1hdGVkICYmICh0aGlzLnRyYW5zaXRpb25TdGFydGVkID0gdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHRhYlBhbmVBbmltYXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGh5UG9zaXRpb24gPT09ICd0b3AnICYmIHRoaXMudGh5QW5pbWF0ZWQ7XG4gICAgfVxuXG4gICAgZ2V0VGFiQ29udGVudE1hcmdpbkxlZnQoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudGFiUGFuZUFuaW1hdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7LSh0aGlzLmFjdGl2ZVRhYkluZGV4IHx8IDApICogMTAwfSVgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBhY3RpdmVUYWIodGFiOiBUaHlUYWIsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRhYi50aHlEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlVGFiSWQgPSB0YWIuaWQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy50aHlBbmltYXRlZCAmJiAodGhpcy50cmFuc2l0aW9uU3RhcnRlZCA9IHRoaXMuYWN0aXZlVGFiSW5kZXggIT09IGluZGV4KTtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IGluZGV4O1xuICAgICAgICBjb25zdCBhY3RpdmVUYWIgPSB0YWIuaWQgPyB0YWIuaWQgOiBpbmRleDtcbiAgICAgICAgdGhpcy50aHlBY3RpdmVUYWJDaGFuZ2UuZW1pdChhY3RpdmVUYWIpO1xuICAgIH1cbn1cbiIsIjwhLS0gdGFicyBuYXYgLS0+XG48dGh5LW5hdlxuICBjbGFzcz1cInRoeS10YWJzLW5hdlwiXG4gIFt0aHlUeXBlXT1cInRoeVR5cGVcIlxuICBbdGh5U2l6ZV09XCJ0aHlTaXplXCJcbiAgW3RoeUV4dHJhXT1cInRoeUV4dHJhXCJcbiAgW3RoeVZlcnRpY2FsXT1cInRoeVBvc2l0aW9uID09PSAnbGVmdCdcIlxuICBbdGh5UmVzcG9uc2l2ZV09XCJ0aHlSZXNwb25zaXZlXCI+XG4gIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgPGFcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgdGh5TmF2SXRlbVxuICAgICAgW2lkXT1cInRhYi5pZFwiXG4gICAgICBbdGh5TmF2SXRlbURpc2FibGVkXT1cInRhYi50aHlEaXNhYmxlZFwiXG4gICAgICBbdGh5TmF2SXRlbUFjdGl2ZV09XCIodGFiLmlkICYmIGFjdGl2ZVRhYklkICYmIHRhYi5pZCA9PT0gYWN0aXZlVGFiSWQpID8/IGkgPT09IGFjdGl2ZVRhYkluZGV4XCJcbiAgICAgIChjbGljayk9XCJhY3RpdmVUYWIodGFiLCBpKVwiPlxuICAgICAgQGlmICh0YWIudGl0bGVUZW1wbGF0ZVJlZikge1xuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFiLnRpdGxlVGVtcGxhdGVSZWZcIj48L25nLXRlbXBsYXRlPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIHt7IHRhYi50aHlUaXRsZSB9fVxuICAgICAgfVxuICAgIDwvYT5cbiAgfVxuPC90aHktbmF2PlxuPCEtLSB0YWJzIGNvbnRlbnQgLS0+XG48ZGl2IGNsYXNzPVwidGh5LXRhYnMtY29udGVudFwiIFtjbGFzcy50aHktdGFicy1jb250ZW50LWFuaW1hdGVkXT1cInRhYlBhbmVBbmltYXRlZFwiIFtzdHlsZS5tYXJnaW4tbGVmdF09XCJnZXRUYWJDb250ZW50TWFyZ2luTGVmdCgpXCI+XG4gIEBmb3IgKHRhYiBvZiB0YWJzOyB0cmFjayAkaW5kZXg7IGxldCBpID0gJGluZGV4KSB7XG4gICAgPGRpdlxuICAgICAgdGh5VGFiQ29udGVudFxuICAgICAgW2FjdGl2ZV09XCIodGFiLmlkICYmIGFjdGl2ZVRhYklkICYmIHRhYi5pZCA9PT0gYWN0aXZlVGFiSWQpID8/IGkgPT09IGFjdGl2ZVRhYkluZGV4XCJcbiAgICAgIFtjb250ZW50XT1cInRhYi5jb250ZW50XCJcbiAgICAgIFt0YWJQYW5lQW5pbWF0ZWRdPVwidGFiUGFuZUFuaW1hdGVkXCI+PC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFFVCxXQUFXLEVBQ1gsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVE3RDs7O0dBR0c7QUFjSCxNQUFNLE9BQU8sT0FBTztJQWJwQjtRQWNZLE9BQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixPQUFFLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWdCLFNBQUksR0FBRyxJQUFJLFNBQVMsRUFBVSxDQUFDO1FBRTlELGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sWUFBTyxHQUFnQixNQUFNLENBQUM7UUFF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T0FBTztzQkFBZixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFNRixZQUFZO3NCQURmLEtBQUs7Z0JBY0csUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQUt1QyxXQUFXO3NCQUF2RCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO2dCQUtFLGFBQWE7c0JBQXpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0JBS2pDLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBpc1N0cmluZyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFRoeVRhYiB9IGZyb20gJy4vdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaHlBY3RpdmVUYWJJbmZvLCBUaHlUYWJBY3RpdmVFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgVGh5VGFiQ29udGVudCB9IGZyb20gJy4vdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGh5TmF2LCBUaHlOYXZJdGVtRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9uYXYnO1xuXG5leHBvcnQgdHlwZSBUaHlUYWJzU2l6ZSA9ICdsZycgfCAnbWQnIHwgJ3NtJztcblxuZXhwb3J0IHR5cGUgVGh5VGFic1R5cGUgPSAncHVsbGVkJyB8ICd0YWJzJyB8ICdwaWxscycgfCAnbGl0ZSc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhYnNQb3NpdGlvbiA9ICd0b3AnIHwgJ2xlZnQnO1xuXG4vKipcbiAqIOmAiemhueWNoeWIh+aNoue7hOS7tlxuICogQG5hbWUgdGh5LXRhYnNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdGFicycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktdGFicycsXG4gICAgICAgICdbY2xhc3MudGh5LXRhYnMtdG9wXSc6IGB0aHlQb3NpdGlvbiA9PT0gJ3RvcCdgLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWJzLWxlZnRdJzogYHRoeVBvc2l0aW9uID09PSAnbGVmdCdgLFxuICAgICAgICAnW3N0eWxlLm92ZXJmbG93XSc6IGB0cmFuc2l0aW9uU3RhcnRlZCA/IFwiaGlkZGVuXCIgOiBudWxsYFxuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVGh5TmF2LCBUaHlOYXZJdGVtRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUaHlUYWJDb250ZW50XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlUYWJzIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQge1xuICAgIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIHByaXZhdGUgZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoeVRhYiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSB0YWJzID0gbmV3IFF1ZXJ5TGlzdDxUaHlUYWI+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiDmoIfnrb7nsbvlnotcbiAgICAgKiBAdHlwZSAncHVsbGVkJyB8ICd0YWJzJyB8ICdwaWxscycgfCAnbGl0ZSdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUeXBlOiBUaHlUYWJzVHlwZSA9ICd0YWJzJztcblxuICAgIC8qKlxuICAgICAqIOmAiemhueWNoeeahOWkp+Wwj1xuICAgICAqIEB0eXBlICdsZycgfCAnbWQnIHwgJ3NtJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFRoeVRhYnNTaXplID0gJ21kJztcblxuICAgIC8qKlxuICAgICAqIOa/gOa0u+eahOmhuVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUFjdGl2ZVRhYih2YWx1ZTogVGh5QWN0aXZlVGFiSW5mbykge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYklkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJbmRleCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWJJZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOmZhOWKoOaTjeS9nFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUV4dHJhOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIC8qKlxuICAgICAqIOmAiemhueWNoeeahOS9jee9rlxuICAgICAqIEB0eXBlICd0b3AnIHwgJ2xlZnQnXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5UG9zaXRpb246IFRoeVRhYnNQb3NpdGlvbiA9ICd0b3AnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5L2/55So5Yqo55S75YiH5o2iIFRhYnNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlBbmltYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICog5ZON5bqU5byP77yM6Ieq5Yqo6K6h566X5a695bqm5a2Y5pS+IHRoeU5hdkl0ZW3vvIzlubbmt7vliqDmm7TlpJrlvLnmoYZcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KSB0aHlSZXNwb25zaXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDmv4DmtLvnmoTpobnlj5HnlJ/mlLnlj5jml7bnmoTlm57osINcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5QWN0aXZlVGFiQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VGh5VGFiQWN0aXZlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlUYWJBY3RpdmVFdmVudD4oKTtcblxuICAgIGFjdGl2ZVRhYkluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgYWN0aXZlVGFiSWQ6IHN0cmluZztcblxuICAgIHRyYW5zaXRpb25TdGFydGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFic0NvbnRlbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnRoeS10YWJzLWNvbnRlbnQnKTtcbiAgICAgICAgZnJvbUV2ZW50KHRhYnNDb250ZW50LCAndHJhbnNpdGlvbmVuZCcpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHRoeUFjdGl2ZVRhYiB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKHRoeUFjdGl2ZVRhYiAmJiAhdGh5QWN0aXZlVGFiLmZpcnN0Q2hhbmdlICYmIHRoaXMudGh5QW5pbWF0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGh5QWN0aXZlVGFiPy5jdXJyZW50VmFsdWU/LmluZGV4IHx8IEFycmF5LmZyb20odGhpcy50YWJzKS5maW5kSW5kZXgoayA9PiBrLmlkID09PSB0aHlBY3RpdmVUYWI/LmN1cnJlbnRWYWx1ZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25TdGFydGVkID0gdGhpcy5hY3RpdmVUYWJJbmRleCAhPT0gaW5kZXg7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGFicy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMudGh5QW5pbWF0ZWQgJiYgKHRoaXMudHJhbnNpdGlvblN0YXJ0ZWQgPSB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiSW5kZXggPSBkYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXQgdGFiUGFuZUFuaW1hdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50aHlQb3NpdGlvbiA9PT0gJ3RvcCcgJiYgdGhpcy50aHlBbmltYXRlZDtcbiAgICB9XG5cbiAgICBnZXRUYWJDb250ZW50TWFyZ2luTGVmdCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy50YWJQYW5lQW5pbWF0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHstKHRoaXMuYWN0aXZlVGFiSW5kZXggfHwgMCkgKiAxMDB9JWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGFjdGl2ZVRhYih0YWI6IFRoeVRhYiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGFiLnRoeURpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hY3RpdmVUYWJJZCA9IHRhYi5pZCB8fCBudWxsO1xuICAgICAgICB0aGlzLnRoeUFuaW1hdGVkICYmICh0aGlzLnRyYW5zaXRpb25TdGFydGVkID0gdGhpcy5hY3RpdmVUYWJJbmRleCAhPT0gaW5kZXgpO1xuICAgICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVRhYiA9IHRhYi5pZCA/IHRhYi5pZCA6IGluZGV4O1xuICAgICAgICB0aGlzLnRoeUFjdGl2ZVRhYkNoYW5nZS5lbWl0KGFjdGl2ZVRhYik7XG4gICAgfVxufVxuIiwiPCEtLSB0YWJzIG5hdiAtLT5cbjx0aHktbmF2XG4gIGNsYXNzPVwidGh5LXRhYnMtbmF2XCJcbiAgW3RoeVR5cGVdPVwidGh5VHlwZVwiXG4gIFt0aHlTaXplXT1cInRoeVNpemVcIlxuICBbdGh5RXh0cmFdPVwidGh5RXh0cmFcIlxuICBbdGh5VmVydGljYWxdPVwidGh5UG9zaXRpb24gPT09ICdsZWZ0J1wiXG4gIFt0aHlSZXNwb25zaXZlXT1cInRoeVJlc3BvbnNpdmVcIj5cbiAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8YVxuICAgICAgaHJlZj1cImphdmFzY3JpcHQ6O1wiXG4gICAgICB0aHlOYXZJdGVtXG4gICAgICBbaWRdPVwidGFiLmlkXCJcbiAgICAgIFt0aHlOYXZJdGVtRGlzYWJsZWRdPVwidGFiLnRoeURpc2FibGVkXCJcbiAgICAgIFt0aHlOYXZJdGVtQWN0aXZlXT1cIih0YWIuaWQgJiYgYWN0aXZlVGFiSWQgJiYgdGFiLmlkID09PSBhY3RpdmVUYWJJZCkgPz8gaSA9PT0gYWN0aXZlVGFiSW5kZXhcIlxuICAgICAgKGNsaWNrKT1cImFjdGl2ZVRhYih0YWIsIGkpXCI+XG4gICAgICBAaWYgKHRhYi50aXRsZVRlbXBsYXRlUmVmKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWIudGl0bGVUZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAge3sgdGFiLnRoeVRpdGxlIH19XG4gICAgICB9XG4gICAgPC9hPlxuICB9XG48L3RoeS1uYXY+XG48IS0tIHRhYnMgY29udGVudCAtLT5cbjxkaXYgY2xhc3M9XCJ0aHktdGFicy1jb250ZW50XCIgW2NsYXNzLnRoeS10YWJzLWNvbnRlbnQtYW5pbWF0ZWRdPVwidGFiUGFuZUFuaW1hdGVkXCIgW3N0eWxlLm1hcmdpbi1sZWZ0XT1cImdldFRhYkNvbnRlbnRNYXJnaW5MZWZ0KClcIj5cbiAgQGZvciAodGFiIG9mIHRhYnM7IHRyYWNrICRpbmRleDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZGl2XG4gICAgICB0aHlUYWJDb250ZW50XG4gICAgICBbYWN0aXZlXT1cIih0YWIuaWQgJiYgYWN0aXZlVGFiSWQgJiYgdGFiLmlkID09PSBhY3RpdmVUYWJJZCkgPz8gaSA9PT0gYWN0aXZlVGFiSW5kZXhcIlxuICAgICAgW2NvbnRlbnRdPVwidGFiLmNvbnRlbnRcIlxuICAgICAgW3RhYlBhbmVBbmltYXRlZF09XCJ0YWJQYW5lQW5pbWF0ZWRcIj48L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, ElementRef, Input, ChangeDetectionStrategy } from '@angular/core';
1
+ import { Component, ElementRef, Input, ChangeDetectionStrategy, inject } from '@angular/core';
2
2
  import { isThemeColor } from 'ngx-tethys/core';
3
3
  import { coerceBooleanProperty, hexToRgb } from 'ngx-tethys/util';
4
4
  import { useHostRenderer } from '@tethys/cdk/dom';
@@ -8,24 +8,8 @@ import * as i0 from "@angular/core";
8
8
  * @name thy-tag,[thyTag]
9
9
  */
10
10
  export class ThyTag {
11
- /**
12
- * 标签颜色,thyColor 的简写
13
- * @type primary | success | info | warning | danger | default | light | string
14
- * @default default
15
- */
16
- set thyTag(value) {
17
- if (value) {
18
- this.color = value;
19
- }
20
- }
21
- /**
22
- * 标签颜色,支持设置主题色和颜色值,主题色为 default、primary、success、info、warning、danger
23
- */
24
- set thyColor(color) {
25
- this.color = color;
26
- }
27
- constructor(elementRef) {
28
- this.elementRef = elementRef;
11
+ constructor() {
12
+ this.elementRef = inject(ElementRef);
29
13
  this.color = 'default';
30
14
  this.hostRenderer = useHostRenderer();
31
15
  /**
@@ -44,6 +28,22 @@ export class ThyTag {
44
28
  */
45
29
  this.thySize = 'md';
46
30
  }
31
+ /**
32
+ * 标签颜色,thyColor 的简写
33
+ * @type primary | success | info | warning | danger | default | light | string
34
+ * @default default
35
+ */
36
+ set thyTag(value) {
37
+ if (value) {
38
+ this.color = value;
39
+ }
40
+ }
41
+ /**
42
+ * 标签颜色,支持设置主题色和颜色值,主题色为 default、primary、success、info、warning、danger
43
+ */
44
+ set thyColor(color) {
45
+ this.color = color;
46
+ }
47
47
  ngOnInit() {
48
48
  this.setColor();
49
49
  }
@@ -77,7 +77,7 @@ export class ThyTag {
77
77
  }
78
78
  }
79
79
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTag, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTag, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
81
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThyTag, isStandalone: true, selector: "thy-tag,[thyTag]", inputs: { thyTag: "thyTag", thyShape: "thyShape", thyColor: "thyColor", thyTheme: "thyTheme", thySize: "thySize", thyHoverable: ["thyHoverable", "thyHoverable", coerceBooleanProperty] }, host: { properties: { "class.thy-tag-pill": "thyShape === \"pill\"", "class.thy-tag-outline": "thyTheme === \"outline\"", "class.thy-tag-hover": "thyHoverable", "class.thy-tag-md": "thySize === \"md\"", "class.thy-tag-sm": "thySize === \"sm\"", "class.thy-tag-xs": "thySize === \"xs\"", "class.thy-tag-lg": "thySize === \"lg\"" }, classAttribute: "thy-tag" }, usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
82
82
  }
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyTag, decorators: [{
@@ -92,7 +92,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
92
92
  '[class.thy-tag-xs]': 'thySize === "xs"',
93
93
  '[class.thy-tag-lg]': 'thySize === "lg"'
94
94
  }, standalone: true, template: "<ng-content></ng-content>\n" }]
95
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { thyTag: [{
95
+ }], propDecorators: { thyTag: [{
96
96
  type: Input
97
97
  }], thyShape: [{
98
98
  type: Input
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
106
106
  type: Input,
107
107
  args: [{ transform: coerceBooleanProperty }]
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLEtBQUssRUFBVSx1QkFBdUIsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFlBQVksRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVFsRDs7O0dBR0c7QUFpQkgsTUFBTSxPQUFPLE1BQU07SUFLZjs7OztPQUlHO0lBQ0gsSUFDSSxNQUFNLENBQUMsS0FBa0I7UUFDekIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUNJLFFBQVEsQ0FBQyxLQUFrQjtRQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBcUJELFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFqRGxDLFVBQUssR0FBZ0IsU0FBUyxDQUFDO1FBRS9CLGlCQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFjekM7OztXQUdHO1FBQ00sYUFBUSxHQUFnQixXQUFXLENBQUM7UUFVN0M7OztXQUdHO1FBQ00sYUFBUSxHQUFxQyxNQUFNLENBQUM7UUFFN0Q7OztXQUdHO1FBQ00sWUFBTyxHQUFlLElBQUksQ0FBQztJQVNTLENBQUM7SUFFOUMsUUFBUTtRQUNKLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNw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QVE7c0JBRFgsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFPTixZQUFZO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uQ2hhbmdlcywgSW5wdXQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzVGhlbWVDb2xvciwgVGh5VGhlbWVDb2xvciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGhleFRvUmdiIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhZ0NvbG9yID0gVGh5VGhlbWVDb2xvciB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgVGh5VGFnU2hhcGUgPSAncGlsbCcgfCAncmVjdGFuZ2xlJztcblxuZXhwb3J0IHR5cGUgVGh5VGFnU2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJztcblxuLyoqXG4gKiDmoIfnrb7nu4Tku7ZcbiAqIEBuYW1lIHRoeS10YWcsW3RoeVRhZ11cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktdGFnLFt0aHlUYWddJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LXRhZycsXG4gICAgICAgICdbY2xhc3MudGh5LXRhZy1waWxsXSc6ICd0aHlTaGFwZSA9PT0gXCJwaWxsXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWctb3V0bGluZV0nOiAndGh5VGhlbWUgPT09IFwib3V0bGluZVwiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFnLWhvdmVyXSc6ICd0aHlIb3ZlcmFibGUnLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWctbWRdJzogJ3RoeVNpemUgPT09IFwibWRcIicsXG4gICAgICAgICdbY2xhc3MudGh5LXRhZy1zbV0nOiAndGh5U2l6ZSA9PT0gXCJzbVwiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFnLXhzXSc6ICd0aHlTaXplID09PSBcInhzXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWctbGddJzogJ3RoeVNpemUgPT09IFwibGdcIidcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGh5VGFnIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgY29sb3I6IFRoeVRhZ0NvbG9yID0gJ2RlZmF1bHQnO1xuXG4gICAgcHJpdmF0ZSBob3N0UmVuZGVyZXIgPSB1c2VIb3N0UmVuZGVyZXIoKTtcblxuICAgIC8qKlxuICAgICAqIOagh+etvuminOiJsu+8jHRoeUNvbG9yIOeahOeugOWGmVxuICAgICAqIEB0eXBlIHByaW1hcnkgfCBzdWNjZXNzIHwgaW5mbyB8IHdhcm5pbmcgfCBkYW5nZXIgfCBkZWZhdWx0IHwgbGlnaHQgfCBzdHJpbmdcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VGFnKHZhbHVlOiBUaHlUYWdDb2xvcikge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagh+etvuW9oueKtlxuICAgICAqIEB0eXBlIHBpbGwgfCByZWN0YW5nbGVcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaGFwZTogVGh5VGFnU2hhcGUgPSAncmVjdGFuZ2xlJztcblxuICAgIC8qKlxuICAgICAqIOagh+etvuminOiJsu+8jOaUr+aMgeiuvue9ruS4u+mimOiJsuWSjOminOiJsuWAvO+8jOS4u+mimOiJsuS4uiBkZWZhdWx044CBcHJpbWFyeeOAgXN1Y2Nlc3PjgIFpbmZv44CBd2FybmluZ+OAgWRhbmdlclxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUNvbG9yKGNvbG9yOiBUaHlUYWdDb2xvcikge1xuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qCH562+5Li76aKY77yMZmlsbCDkuLrpopzoibLloavlhYXvvIxvdXRsaW5lIOS4uue6v+ahhu+8jHdlYWstZmlsbCDkuLrog4zmma/oibIwLjHpgI/mmI7luqbmlYjmnpxcbiAgICAgKiBAdHlwZSBvdXRsaW5lIHwgZmlsbCB8IHdlYWstZmlsbFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVRoZW1lOiAnb3V0bGluZScgfCAnZmlsbCcgfCAnd2Vhay1maWxsJyA9ICdmaWxsJztcblxuICAgIC8qKlxuICAgICAqIOagh+etvuWkp+Wwj1xuICAgICAqIEB0eXBlIHNtIHwgbWQgfCBsZ1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVNpemU6IFRoeVRhZ1NpemUgPSAnbWQnO1xuXG4gICAgLyoqXG4gICAgICog5Y+vIEhvdmVyIOaCrOWBnOeahOagh+etvu+8jOiuvue9ruS4uiB0cnVlIOaXtuS8muacieS4gOS4qiBIb3ZlciDmlYjmnpxcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogY29lcmNlQm9vbGVhblByb3BlcnR5IH0pXG4gICAgdGh5SG92ZXJhYmxlOiBib29sZWFuIHwgc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Q29sb3IoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeUNvbG9yICYmIGNoYW5nZXMudGh5Q29sb3IuY3VycmVudFZhbHVlICYmICFjaGFuZ2VzLnRoeUNvbG9yLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMudGh5VGhlbWUgJiYgY2hhbmdlcy50aHlUaGVtZS5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMudGh5VGhlbWUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29sb3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Q29sb3IoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdiYWNrZ3JvdW5kLWNvbG9yJyk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdib3JkZXItY29sb3InKTtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ2NvbG9yJyk7XG4gICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnVwZGF0ZUNsYXNzKFtdKTtcblxuICAgICAgICBpZiAoaXNUaGVtZUNvbG9yKHRoaXMuY29sb3IpKSB7XG4gICAgICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhbYHRoeS10YWctJHt0aGlzLnRoeVRoZW1lID09PSAnZmlsbCcgPyAnJyA6IHRoaXMudGh5VGhlbWUgKyAnLSd9JHt0aGlzLmNvbG9yfWBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRoeVRoZW1lID09PSAnZmlsbCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRoeVRoZW1lID09PSAnb3V0bGluZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGVbJ2JvcmRlci1jb2xvciddID0gdGhpcy5jb2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gaGV4VG9SZ2IodGhpcy5jb2xvciwgMC4xKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy90YWcvdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFhLEtBQUssRUFBVSx1QkFBdUIsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFRbEQ7OztHQUdHO0FBaUJILE1BQU0sT0FBTyxNQUFNO0lBaEJuQjtRQWlCWSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWhDLFVBQUssR0FBZ0IsU0FBUyxDQUFDO1FBRS9CLGlCQUFZLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFjekM7OztXQUdHO1FBQ00sYUFBUSxHQUFnQixXQUFXLENBQUM7UUFVN0M7OztXQUdHO1FBQ00sYUFBUSxHQUFxQyxNQUFNLENBQUM7UUFFN0Q7OztXQUdHO1FBQ00sWUFBTyxHQUFlLElBQUksQ0FBQztLQTBDdkM7SUE5RUc7Ozs7T0FJRztJQUNILElBQ0ksTUFBTSxDQUFDLEtBQWtCO1FBQ3pCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQVFEOztPQUVHO0lBQ0gsSUFDSSxRQUFRLENBQUMsS0FBa0I7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQXFCRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFFBQVEsRUFB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QUs7Z0JBTUYsUUFBUTtzQkFEWCxLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQU9OLFlBQVk7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBJbnB1dCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgU2ltcGxlQ2hhbmdlcywgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1RoZW1lQ29sb3IsIFRoeVRoZW1lQ29sb3IgfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBoZXhUb1JnYiB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuXG5leHBvcnQgdHlwZSBUaHlUYWdDb2xvciA9IFRoeVRoZW1lQ29sb3IgfCBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhZ1NoYXBlID0gJ3BpbGwnIHwgJ3JlY3RhbmdsZSc7XG5cbmV4cG9ydCB0eXBlIFRoeVRhZ1NpemUgPSAnc20nIHwgJ21kJyB8ICdsZyc7XG5cbi8qKlxuICog5qCH562+57uE5Lu2XG4gKiBAbmFtZSB0aHktdGFnLFt0aHlUYWddXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LXRhZyxbdGh5VGFnXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhZy5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS10YWcnLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWctcGlsbF0nOiAndGh5U2hhcGUgPT09IFwicGlsbFwiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFnLW91dGxpbmVdJzogJ3RoeVRoZW1lID09PSBcIm91dGxpbmVcIicsXG4gICAgICAgICdbY2xhc3MudGh5LXRhZy1ob3Zlcl0nOiAndGh5SG92ZXJhYmxlJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFnLW1kXSc6ICd0aHlTaXplID09PSBcIm1kXCInLFxuICAgICAgICAnW2NsYXNzLnRoeS10YWctc21dJzogJ3RoeVNpemUgPT09IFwic21cIicsXG4gICAgICAgICdbY2xhc3MudGh5LXRhZy14c10nOiAndGh5U2l6ZSA9PT0gXCJ4c1wiJyxcbiAgICAgICAgJ1tjbGFzcy50aHktdGFnLWxnXSc6ICd0aHlTaXplID09PSBcImxnXCInXG4gICAgfSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoeVRhZyBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICBwcml2YXRlIGNvbG9yOiBUaHlUYWdDb2xvciA9ICdkZWZhdWx0JztcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICAvKipcbiAgICAgKiDmoIfnrb7popzoibLvvIx0aHlDb2xvciDnmoTnroDlhplcbiAgICAgKiBAdHlwZSBwcmltYXJ5IHwgc3VjY2VzcyB8IGluZm8gfCB3YXJuaW5nIHwgZGFuZ2VyIHwgZGVmYXVsdCB8IGxpZ2h0IHwgc3RyaW5nXG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVRhZyh2YWx1ZTogVGh5VGFnQ29sb3IpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmoIfnrb7lvaLnirZcbiAgICAgKiBAdHlwZSBwaWxsIHwgcmVjdGFuZ2xlXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5U2hhcGU6IFRoeVRhZ1NoYXBlID0gJ3JlY3RhbmdsZSc7XG5cbiAgICAvKipcbiAgICAgKiDmoIfnrb7popzoibLvvIzmlK/mjIHorr7nva7kuLvpopjoibLlkozpopzoibLlgLzvvIzkuLvpopjoibLkuLogZGVmYXVsdOOAgXByaW1hcnnjgIFzdWNjZXNz44CBaW5mb+OAgXdhcm5pbmfjgIFkYW5nZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlDb2xvcihjb2xvcjogVGh5VGFnQ29sb3IpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOagh+etvuS4u+mimO+8jGZpbGwg5Li66aKc6Imy5aGr5YWF77yMb3V0bGluZSDkuLrnur/moYbvvIx3ZWFrLWZpbGwg5Li66IOM5pmv6ImyMC4x6YCP5piO5bqm5pWI5p6cXG4gICAgICogQHR5cGUgb3V0bGluZSB8IGZpbGwgfCB3ZWFrLWZpbGxcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUaGVtZTogJ291dGxpbmUnIHwgJ2ZpbGwnIHwgJ3dlYWstZmlsbCcgPSAnZmlsbCc7XG5cbiAgICAvKipcbiAgICAgKiDmoIfnrb7lpKflsI9cbiAgICAgKiBAdHlwZSBzbSB8IG1kIHwgbGdcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlTaXplOiBUaHlUYWdTaXplID0gJ21kJztcblxuICAgIC8qKlxuICAgICAqIOWPryBIb3ZlciDmgqzlgZznmoTmoIfnrb7vvIzorr7nva7kuLogdHJ1ZSDml7bkvJrmnInkuIDkuKogSG92ZXIg5pWI5p6cXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9KVxuICAgIHRoeUhvdmVyYWJsZTogYm9vbGVhbiB8IHN0cmluZztcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbG9yKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlDb2xvciAmJiBjaGFuZ2VzLnRoeUNvbG9yLmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy50aHlDb2xvci5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb2xvcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeVRoZW1lICYmIGNoYW5nZXMudGh5VGhlbWUuY3VycmVudFZhbHVlICYmICFjaGFuZ2VzLnRoeVRoZW1lLmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLnNldENvbG9yKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbG9yKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnYm9yZGVyLWNvbG9yJyk7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCdjb2xvcicpO1xuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhbXSk7XG5cbiAgICAgICAgaWYgKGlzVGhlbWVDb2xvcih0aGlzLmNvbG9yKSkge1xuICAgICAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3MoW2B0aHktdGFnLSR7dGhpcy50aHlUaGVtZSA9PT0gJ2ZpbGwnID8gJycgOiB0aGlzLnRoeVRoZW1lICsgJy0nfSR7dGhpcy5jb2xvcn1gXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy50aHlUaGVtZSA9PT0gJ2ZpbGwnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50aHlUaGVtZSA9PT0gJ291dGxpbmUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlWydib3JkZXItY29sb3InXSA9IHRoaXMuY29sb3I7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGhleFRvUmdiKHRoaXMuY29sb3IsIDAuMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, inject } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { getControlsValue } from '../time-picker-controls.util';
4
4
  import { TimePickerConfig } from './inner-time-picker.config';
@@ -6,8 +6,6 @@ import { isHourInputValid, isInputLimitValid, isInputValid, isMinuteInputValid,
6
6
  import { Subscription } from 'rxjs';
7
7
  import { ThyTimePickerStore } from './inner-time-picker.store';
8
8
  import * as i0 from "@angular/core";
9
- import * as i1 from "./inner-time-picker.config";
10
- import * as i2 from "./inner-time-picker.store";
11
9
  export const TIMEPICKER_CONTROL_VALUE_ACCESSOR = {
12
10
  provide: NG_VALUE_ACCESSOR,
13
11
  useExisting: forwardRef(() => ThyInnerTimePicker),
@@ -20,9 +18,9 @@ export class ThyInnerTimePicker {
20
18
  get isEditable() {
21
19
  return !(this.readonlyInput || this.disabled);
22
20
  }
23
- constructor(_config, _cd, _store) {
24
- this._cd = _cd;
25
- this._store = _store;
21
+ constructor() {
22
+ this._cd = inject(ChangeDetectorRef);
23
+ this._store = inject(ThyTimePickerStore);
26
24
  /** emits true if value is a valid date */
27
25
  this.isValid = new EventEmitter();
28
26
  // min/max validation for input fields
@@ -33,6 +31,9 @@ export class ThyInnerTimePicker {
33
31
  this.onChange = Function.prototype;
34
32
  this.onTouched = Function.prototype;
35
33
  this.timerPickerSubscription = new Subscription();
34
+ const _config = inject(TimePickerConfig);
35
+ const _cd = this._cd;
36
+ const _store = this._store;
36
37
  Object.assign(this, _config);
37
38
  this.timerPickerSubscription.add(_store
38
39
  .select(state => state.value)
@@ -192,13 +193,13 @@ export class ThyInnerTimePicker {
192
193
  this.minutes = padNumber(_value.getMinutes());
193
194
  this.seconds = padNumber(_value.getUTCSeconds());
194
195
  }
195
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyInnerTimePicker, deps: [{ token: i1.TimePickerConfig }, { token: i0.ChangeDetectorRef }, { token: i2.ThyTimePickerStore }], target: i0.ɵɵFactoryTarget.Component }); }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyInnerTimePicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
196
197
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyInnerTimePicker, isStandalone: true, selector: "thy-inner-time-picker", inputs: { hourStep: "hourStep", minuteStep: "minuteStep", secondsStep: "secondsStep", readonlyInput: "readonlyInput", disabled: "disabled", mousewheel: "mousewheel", arrowKeys: "arrowKeys", showSpinners: "showSpinners", showMeridian: "showMeridian", showMinutes: "showMinutes", showSeconds: "showSeconds", meridians: "meridians", min: "min", max: "max", hoursPlaceholder: "hoursPlaceholder", minutesPlaceholder: "minutesPlaceholder", secondsPlaceholder: "secondsPlaceholder" }, outputs: { isValid: "isValid" }, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, ThyTimePickerStore], usesOnChanges: true, ngImport: i0, template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\" (click)=\"changeHours(hourStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- increment minutes button -->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\" (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- increment seconds button -->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\" (click)=\"changeSeconds(secondsStep)\">\n <span class=\"thy-chevron thy-chevron-up\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"hoursPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event); changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"\n />\n </td>\n\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- minutes -->\n @if (showMinutes) {\n <td class=\"form-group\" [class.has-error]=\"invalidMinutes\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"minutesPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event); changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\"\n />\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- seconds -->\n @if (showSeconds) {\n <td class=\"form-group\" [class.has-error]=\"invalidSeconds\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"secondsPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event); changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\"\n />\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian -->\n @if (showMeridian) {\n <td>\n <button\n type=\"button\"\n class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >\n {{ meridian }}\n </button>\n </td>\n }\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\" (click)=\"changeHours(-hourStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- decrement minutes button-->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\" (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- decrement seconds button-->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\" (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n </tbody>\n</table>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
198
  }
198
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyInnerTimePicker, decorators: [{
199
200
  type: Component,
200
201
  args: [{ selector: 'thy-inner-time-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TIMEPICKER_CONTROL_VALUE_ACCESSOR, ThyTimePickerStore], standalone: true, imports: [], template: "<table>\n <tbody>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- increment hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementHours || !isEditable\" (click)=\"changeHours(hourStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- increment minutes button -->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementMinutes || !isEditable\" (click)=\"changeMinutes(minuteStep)\"\n ><span class=\"thy-chevron thy-chevron-up\"></span\n ></a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- increment seconds button -->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canIncrementSeconds || !isEditable\" (click)=\"changeSeconds(secondsStep)\">\n <span class=\"thy-chevron thy-chevron-up\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n <tr>\n <!-- hours -->\n <td class=\"form-group\" [class.has-error]=\"invalidHours\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidHours\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"hoursPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"hours\"\n (wheel)=\"prevDef($event); changeHours(hourStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeHours(hourStep, 'key')\"\n (keydown.ArrowDown)=\"changeHours(-hourStep, 'key')\"\n (change)=\"updateHours($event.target.value)\"\n />\n </td>\n\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- minutes -->\n @if (showMinutes) {\n <td class=\"form-group\" [class.has-error]=\"invalidMinutes\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidMinutes\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"minutesPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"minutes\"\n (wheel)=\"prevDef($event); changeMinutes(minuteStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeMinutes(minuteStep, 'key')\"\n (keydown.ArrowDown)=\"changeMinutes(-minuteStep, 'key')\"\n (change)=\"updateMinutes($event.target.value)\"\n />\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;:&nbsp;</td>\n }\n <!-- seconds -->\n @if (showSeconds) {\n <td class=\"form-group\" [class.has-error]=\"invalidSeconds\">\n <input\n type=\"text\"\n [class.is-invalid]=\"invalidSeconds\"\n class=\"form-control text-center thy-time-picker-field\"\n [placeholder]=\"secondsPlaceholder\"\n maxlength=\"2\"\n [readonly]=\"readonlyInput\"\n [disabled]=\"disabled\"\n [value]=\"seconds\"\n (wheel)=\"prevDef($event); changeSeconds(secondsStep * wheelSign($event), 'wheel')\"\n (keydown.ArrowUp)=\"changeSeconds(secondsStep, 'key')\"\n (keydown.ArrowDown)=\"changeSeconds(-secondsStep, 'key')\"\n (change)=\"updateSeconds($event.target.value)\"\n />\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian -->\n @if (showMeridian) {\n <td>\n <button\n type=\"button\"\n class=\"btn btn-default text-center\"\n [disabled]=\"!isEditable || !canToggleMeridian\"\n [class.disabled]=\"!isEditable || !canToggleMeridian\"\n (click)=\"toggleMeridian()\"\n >\n {{ meridian }}\n </button>\n </td>\n }\n </tr>\n <tr class=\"text-center\" [hidden]=\"!showSpinners\">\n <!-- decrement hours button-->\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementHours || !isEditable\" (click)=\"changeHours(-hourStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n <!-- divider -->\n @if (showMinutes) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- decrement minutes button-->\n @if (showMinutes) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementMinutes || !isEditable\" (click)=\"changeMinutes(-minuteStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- divider -->\n @if (showSeconds) {\n <td>&nbsp;</td>\n }\n <!-- decrement seconds button-->\n @if (showSeconds) {\n <td>\n <a class=\"btn btn-link\" [class.disabled]=\"!canDecrementSeconds || !isEditable\" (click)=\"changeSeconds(-secondsStep)\">\n <span class=\"thy-chevron thy-chevron-down\"></span>\n </a>\n </td>\n }\n <!-- space between -->\n @if (showMeridian) {\n <td>&nbsp;&nbsp;&nbsp;</td>\n }\n <!-- meridian placeholder-->\n @if (showMeridian) {\n <td></td>\n }\n </tr>\n </tbody>\n</table>\n" }]
201
- }], ctorParameters: () => [{ type: i1.TimePickerConfig }, { type: i0.ChangeDetectorRef }, { type: i2.ThyTimePickerStore }], propDecorators: { hourStep: [{
202
+ }], ctorParameters: () => [], propDecorators: { hourStep: [{
202
203
  type: Input
203
204
  }], minuteStep: [{
204
205
  type: Input
@@ -235,4 +236,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
235
236
  }], isValid: [{
236
237
  type: Output
237
238
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9pbm5lci9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUk5RCxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsRUFDWixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7QUFFL0QsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQW1CO0lBQzdELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztJQUNqRCxLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRjs7R0FFRztBQVNILE1BQU0sT0FBTyxrQkFBa0I7SUE2QzNCLElBQUksVUFBVTtRQUNWLE9B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O2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU3RhdGljUHJvdmlkZXJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgZ2V0Q29udHJvbHNWYWx1ZSB9IGZyb20gJy4uL3RpbWUtcGlja2VyLWNvbnRyb2xzLnV0aWwnO1xuaW1wb3J0IHsgVGltZVBpY2tlckNvbmZpZyB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuY29uZmlnJztcblxuaW1wb3J0IHsgVGltZUNoYW5nZVNvdXJjZSwgVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBUaW1lUGlja2VyQ29udHJvbHMgfSBmcm9tICcuL2lubmVyLXRpbWUtcGlja2VyLmNsYXNzJztcblxuaW1wb3J0IHtcbiAgICBpc0hvdXJJbnB1dFZhbGlkLFxuICAgIGlzSW5wdXRMaW1pdFZhbGlkLFxuICAgIGlzSW5wdXRWYWxpZCxcbiAgICBpc01pbnV0ZUlucHV0VmFsaWQsXG4gICAgaXNTZWNvbmRJbnB1dFZhbGlkLFxuICAgIGlzVmFsaWREYXRlLFxuICAgIHBhZE51bWJlcixcbiAgICBwYXJzZVRpbWVcbn0gZnJvbSAnLi4vdGltZS1waWNrZXIudXRpbHMnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGh5VGltZVBpY2tlclN0b3JlIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5zdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBUSU1FUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IFN0YXRpY1Byb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRoeUlubmVyVGltZVBpY2tlciksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWlubmVyLXRpbWUtcGlja2VyJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtUSU1FUElDS0VSX0NPTlRST0xfVkFMVUVfQUNDRVNTT1IsIFRoeVRpbWVQaWNrZXJTdG9yZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2lubmVyLXRpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUlubmVyVGltZVBpY2tlciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBUaW1lUGlja2VyQ29tcG9uZW50U3RhdGUsIFRpbWVQaWNrZXJDb250cm9scywgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICAgIEBJbnB1dCgpIGhvdXJTdGVwOiBudW1iZXI7XG4gICAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgbWludXRlU3RlcDogbnVtYmVyO1xuICAgIC8qKiBzZWNvbmRzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgc2Vjb25kc1N0ZXA6IG51bWJlcjtcbiAgICAvKiogaWYgdHJ1ZSBob3VycyBhbmQgbWludXRlcyBmaWVsZHMgd2lsbCBiZSByZWFkb25seSAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXQ6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gICAgQElucHV0KCkgbW91c2V3aGVlbDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSB0aGUgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSB1cC9kb3duIGFycm93IGtleXMgb24gdGhlIGtleWJvYXJkICovXG4gICAgQElucHV0KCkgYXJyb3dLZXlzOiBib29sZWFuO1xuICAgIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93U3Bpbm5lcnM6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgbWVyaWRpYW4gYnV0dG9uIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93TWVyaWRpYW46IGJvb2xlYW47XG4gICAgLyoqIHNob3cgbWludXRlcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd01pbnV0ZXM6IGJvb2xlYW47XG4gICAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gICAgLyoqIG1lcmlkaWFuIGxhYmVscyBiYXNlZCBvbiBsb2NhbGUgKi9cbiAgICBASW5wdXQoKSBtZXJpZGlhbnM6IHN0cmluZ1tdO1xuICAgIC8qKiBtaW5pbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWluOiBEYXRlO1xuICAgIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWF4OiBEYXRlO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3IgaG91cnMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIGhvdXJzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIG1pbnV0ZXMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIG1pbnV0ZXNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3Igc2Vjb25kcyBmaWVsZCBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2Vjb25kc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogZW1pdHMgdHJ1ZSBpZiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgKi9cbiAgICBAT3V0cHV0KCkgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIHVpIHZhcmlhYmxlc1xuICAgIGhvdXJzOiBzdHJpbmc7XG4gICAgbWludXRlczogc3RyaW5nO1xuICAgIHNlY29uZHM6IHN0cmluZztcbiAgICBtZXJpZGlhbjogc3RyaW5nO1xuXG4gICAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHlJbnB1dCB8fCB0aGlzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICAvLyBtaW4vbWF4IHZhbGlkYXRpb24gZm9yIGlucHV0IGZpZWxkc1xuICAgIGludmFsaWRIb3VycyA9IGZhbHNlO1xuICAgIGludmFsaWRNaW51dGVzID0gZmFsc2U7XG4gICAgaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcblxuICAgIC8vIHRpbWUgcGlja2VyIGNvbnRyb2xzIHN0YXRlXG4gICAgY2FuSW5jcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuSW5jcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5JbmNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuRGVjcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuRGVjcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5EZWNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuVG9nZ2xlTWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcbiAgICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcml2YXRlIHRpbWVyUGlja2VyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9jb25maWc6IFRpbWVQaWNrZXJDb25maWcsXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfc3RvcmU6IFRoeVRpbWVQaWNrZXJTdG9yZVxuICAgICkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIF9jb25maWcpO1xuXG4gICAgICAgIHRoaXMudGltZXJQaWNrZXJTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgX3N0b3JlXG4gICAgICAgICAgICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgVUkgdmFsdWVzIGlmIGRhdGUgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUaW1lKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy50aW1lclBpY2tlclN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBfc3RvcmVcbiAgICAgICAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmNvbnRyb2xzKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbnRyb2xzU3RhdGU6IFRpbWVQaWNrZXJDb250cm9scykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChpc0lucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMsIHRoaXMuaXNQTSgpKSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29udHJvbHNTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc2V0VmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkSG91cnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnZhbGlkTWludXRlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNQTSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd01lcmlkaWFuICYmIHRoaXMubWVyaWRpYW4gPT09IHRoaXMubWVyaWRpYW5zWzFdO1xuICAgIH1cblxuICAgIHByZXZEZWYoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB3aGVlbFNpZ24oJGV2ZW50OiBXaGVlbEV2ZW50SW5pdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLnNpZ24oJGV2ZW50LmRlbHRhWSkgKiAtMTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgIH1cblxuICAgIGNoYW5nZUhvdXJzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlTWludXRlcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZU1pbnV0ZXMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2Vjb25kcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZVNlY29uZHMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSG91cnMoaG91cnM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgICAgICB0aGlzLmhvdXJzID0gaG91cnM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzSG91cklucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5pc1BNKCkpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRIb3VycyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWludXRlcyhtaW51dGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5taW51dGVzID0gbWludXRlcztcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gaXNNaW51dGVJbnB1dFZhbGlkKHRoaXMubWludXRlcykgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZE1pbnV0ZXMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlY29uZHMoc2Vjb25kczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHNlY29uZHM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzU2Vjb25kSW5wdXRWYWxpZCh0aGlzLnNlY29uZHMpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkTGltaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0lucHV0TGltaXRWYWxpZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5taW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgICAgICBpc1BNOiB0aGlzLmlzUE0oKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgdGhpcy5taW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlVGltZSgpIHtcbiAgICAgICAgY29uc3QgX3NlY29uZHMgPSB0aGlzLnNob3dTZWNvbmRzID8gdGhpcy5zZWNvbmRzIDogdm9pZCAwO1xuICAgICAgICBjb25zdCBfbWludXRlcyA9IHRoaXMuc2hvd01pbnV0ZXMgPyB0aGlzLm1pbnV0ZXMgOiB2b2lkIDA7XG4gICAgICAgIGlmICghaXNJbnB1dFZhbGlkKHRoaXMuaG91cnMsIF9taW51dGVzLCBfc2Vjb25kcywgdGhpcy5pc1BNKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9yZS5zZXRUaW1lKHtcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMubWludXRlcyxcbiAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lcmlkaWFuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd01lcmlkaWFuIHx8ICF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9ob3Vyc1BlckRheUhhbGYgPSAxMjtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoe1xuICAgICAgICAgICAgc3RlcDogX2hvdXJzUGVyRGF5SGFsZixcbiAgICAgICAgICAgIHNvdXJjZTogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZShvYmopKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yZS53cml0ZVZhbHVlKHBhcnNlVGltZShvYmopKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUud3JpdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWVyUGlja2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVuZGVyVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5taW51dGVzID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlY29uZHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gPSB0aGlzLm1lcmlkaWFuc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX3ZhbHVlID0gcGFyc2VUaW1lKHZhbHVlKTtcbiAgICAgICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgICAgICBsZXQgX2hvdXJzID0gX3ZhbHVlLmdldEhvdXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuID0gdGhpcy5tZXJpZGlhbnNbX2hvdXJzID49IF9ob3Vyc1BlckRheUhhbGYgPyAxIDogMF07XG4gICAgICAgICAgICBfaG91cnMgPSBfaG91cnMgJSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgLy8gc2hvdWxkIGJlIDEyIFBNLCBub3QgMDAgUE1cbiAgICAgICAgICAgIGlmIChfaG91cnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBfaG91cnMgPSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3VycyA9IHBhZE51bWJlcihfaG91cnMpO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBwYWROdW1iZXIoX3ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICB9XG59XG4iLCI8dGFibGU+XG4gIDx0Ym9keT5cbiAgICA8dHIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtoaWRkZW5dPVwiIXNob3dTcGlubmVyc1wiPlxuICAgICAgPCEtLSBpbmNyZW1lbnQgaG91cnMgYnV0dG9uLS0+XG4gICAgICA8dGQ+XG4gICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRIb3VycyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VIb3Vycyhob3VyU3RlcClcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInRoeS1jaGV2cm9uIHRoeS1jaGV2cm9uLXVwXCI+PC9zcGFuXG4gICAgICAgID48L2E+XG4gICAgICA8L3RkPlxuICAgICAgPCEtLSBkaXZpZGVyIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gaW5jcmVtZW50IG1pbnV0ZXMgYnV0dG9uIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwKVwiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3BhblxuICAgICAgICAgID48L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBpbmNyZW1lbnQgc2Vjb25kcyBidXR0b24gLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50U2Vjb25kcyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VTZWNvbmRzKHNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIHNwYWNlIGJldHdlZW4gLS0+XG4gICAgICBAaWYgKHNob3dNZXJpZGlhbikge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gbWVyaWRpYW4gcGxhY2Vob2xkZXItLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD48L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyPlxuICAgICAgPCEtLSBob3VycyAtLT5cbiAgICAgIDx0ZCBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbY2xhc3MuaGFzLWVycm9yXT1cImludmFsaWRIb3Vyc1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZEhvdXJzXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LWNlbnRlciB0aHktdGltZS1waWNrZXItZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJob3Vyc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaG91cnNcIlxuICAgICAgICAgICh3aGVlbCk9XCJwcmV2RGVmKCRldmVudCk7IGNoYW5nZUhvdXJzKGhvdXJTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZUhvdXJzKGhvdXJTdGVwLCAna2V5JylcIlxuICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VycygtaG91clN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVIb3VycygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgIDwvdGQ+XG5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtaW51dGVzIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkTWludXRlc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZE1pbnV0ZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlTWludXRlcyhtaW51dGVTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwLCAna2V5JylcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZU1pbnV0ZXMoLW1pbnV0ZVN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU1pbnV0ZXMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBzZWNvbmRzIC0tPlxuICAgICAgQGlmIChzaG93U2Vjb25kcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkU2Vjb25kc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFNlY29uZHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWNvbmRzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlY29uZHNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlU2Vjb25kcyhzZWNvbmRzU3RlcCAqIHdoZWVsU2lnbigkZXZlbnQpLCAnd2hlZWwnKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZHMoc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlU2Vjb25kcygtc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZHMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFZGl0YWJsZSB8fCAhY2FuVG9nZ2xlTWVyaWRpYW5cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VkaXRhYmxlIHx8ICFjYW5Ub2dnbGVNZXJpZGlhblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBtZXJpZGlhbiB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaGlkZGVuXT1cIiFzaG93U3Bpbm5lcnNcIj5cbiAgICAgIDwhLS0gZGVjcmVtZW50IGhvdXJzIGJ1dHRvbi0tPlxuICAgICAgPHRkPlxuICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50SG91cnMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlSG91cnMoLWhvdXJTdGVwKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRlY3JlbWVudCBtaW51dGVzIGJ1dHRvbi0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcygtbWludXRlU3RlcClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBkZWNyZW1lbnQgc2Vjb25kcyBidXR0b24tLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5EZWNyZW1lbnRTZWNvbmRzIHx8ICFpc0VkaXRhYmxlXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZHMoLXNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiBwbGFjZWhvbGRlci0tPlxuICAgICAgQGlmIChzaG93TWVyaWRpYW4pIHtcbiAgICAgICAgPHRkPjwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5uZXItdGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RpbWUtcGlja2VyL2lubmVyL2lubmVyLXRpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy90aW1lLXBpY2tlci9pbm5lci9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUdOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFJOUQsT0FBTyxFQUNILGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUUvRCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBbUI7SUFDN0QsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO0lBQ2pELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGOztHQUVHO0FBU0gsTUFBTSxPQUFPLGtCQUFrQjtJQWdEM0IsSUFBSSxVQUFV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QUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxHQUFHO3NCQUFYLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgU3RhdGljUHJvdmlkZXIsXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IGdldENvbnRyb2xzVmFsdWUgfSBmcm9tICcuLi90aW1lLXBpY2tlci1jb250cm9scy51dGlsJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb25maWcgfSBmcm9tICcuL2lubmVyLXRpbWUtcGlja2VyLmNvbmZpZyc7XG5cbmltcG9ydCB7IFRpbWVDaGFuZ2VTb3VyY2UsIFRpbWVQaWNrZXJDb21wb25lbnRTdGF0ZSwgVGltZVBpY2tlckNvbnRyb2xzIH0gZnJvbSAnLi9pbm5lci10aW1lLXBpY2tlci5jbGFzcyc7XG5cbmltcG9ydCB7XG4gICAgaXNIb3VySW5wdXRWYWxpZCxcbiAgICBpc0lucHV0TGltaXRWYWxpZCxcbiAgICBpc0lucHV0VmFsaWQsXG4gICAgaXNNaW51dGVJbnB1dFZhbGlkLFxuICAgIGlzU2Vjb25kSW5wdXRWYWxpZCxcbiAgICBpc1ZhbGlkRGF0ZSxcbiAgICBwYWROdW1iZXIsXG4gICAgcGFyc2VUaW1lXG59IGZyb20gJy4uL3RpbWUtcGlja2VyLnV0aWxzJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFRoeVRpbWVQaWNrZXJTdG9yZSB9IGZyb20gJy4vaW5uZXItdGltZS1waWNrZXIuc3RvcmUnO1xuXG5leHBvcnQgY29uc3QgVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBTdGF0aWNQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaHlJbm5lclRpbWVQaWNrZXIpLFxuICAgIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1pbm5lci10aW1lLXBpY2tlcicsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbVElNRVBJQ0tFUl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLCBUaHlUaW1lUGlja2VyU3RvcmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbm5lci10aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlJbm5lclRpbWVQaWNrZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVGltZVBpY2tlckNvbXBvbmVudFN0YXRlLCBUaW1lUGlja2VyQ29udHJvbHMsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSBfc3RvcmUgPSBpbmplY3QoVGh5VGltZVBpY2tlclN0b3JlKTtcblxuICAgIC8qKiBob3VycyBjaGFuZ2Ugc3RlcCAqL1xuICAgIEBJbnB1dCgpIGhvdXJTdGVwOiBudW1iZXI7XG4gICAgLyoqIGhvdXJzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgbWludXRlU3RlcDogbnVtYmVyO1xuICAgIC8qKiBzZWNvbmRzIGNoYW5nZSBzdGVwICovXG4gICAgQElucHV0KCkgc2Vjb25kc1N0ZXA6IG51bWJlcjtcbiAgICAvKiogaWYgdHJ1ZSBob3VycyBhbmQgbWludXRlcyBmaWVsZHMgd2lsbCBiZSByZWFkb25seSAqL1xuICAgIEBJbnB1dCgpIHJlYWRvbmx5SW5wdXQ6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgaG91cnMgYW5kIG1pbnV0ZXMgZmllbGRzIHdpbGwgYmUgZGlzYWJsZWQgKi9cbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSBzY3JvbGwgaW5zaWRlIGhvdXJzIGFuZCBtaW51dGVzIGlucHV0cyB3aWxsIGNoYW5nZSB0aW1lICovXG4gICAgQElucHV0KCkgbW91c2V3aGVlbDogYm9vbGVhbjtcbiAgICAvKiogaWYgdHJ1ZSB0aGUgdmFsdWVzIG9mIGhvdXJzIGFuZCBtaW51dGVzIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSB1cC9kb3duIGFycm93IGtleXMgb24gdGhlIGtleWJvYXJkICovXG4gICAgQElucHV0KCkgYXJyb3dLZXlzOiBib29sZWFuO1xuICAgIC8qKiBpZiB0cnVlIHNwaW5uZXIgYXJyb3dzIGFib3ZlIGFuZCBiZWxvdyB0aGUgaW5wdXRzIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93U3Bpbm5lcnM6IGJvb2xlYW47XG4gICAgLyoqIGlmIHRydWUgbWVyaWRpYW4gYnV0dG9uIHdpbGwgYmUgc2hvd24gKi9cbiAgICBASW5wdXQoKSBzaG93TWVyaWRpYW46IGJvb2xlYW47XG4gICAgLyoqIHNob3cgbWludXRlcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd01pbnV0ZXM6IGJvb2xlYW47XG4gICAgLyoqIHNob3cgc2Vjb25kcyBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2hvd1NlY29uZHM6IGJvb2xlYW47XG4gICAgLyoqIG1lcmlkaWFuIGxhYmVscyBiYXNlZCBvbiBsb2NhbGUgKi9cbiAgICBASW5wdXQoKSBtZXJpZGlhbnM6IHN0cmluZ1tdO1xuICAgIC8qKiBtaW5pbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWluOiBEYXRlO1xuICAgIC8qKiBtYXhpbXVtIHRpbWUgdXNlciBjYW4gc2VsZWN0ICovXG4gICAgQElucHV0KCkgbWF4OiBEYXRlO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3IgaG91cnMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIGhvdXJzUGxhY2Vob2xkZXI6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIG1pbnV0ZXMgZmllbGQgaW4gdGltZVBpY2tlciAqL1xuICAgIEBJbnB1dCgpIG1pbnV0ZXNQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBwbGFjZWhvbGRlciBmb3Igc2Vjb25kcyBmaWVsZCBpbiB0aW1lUGlja2VyICovXG4gICAgQElucHV0KCkgc2Vjb25kc1BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKiogZW1pdHMgdHJ1ZSBpZiB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgKi9cbiAgICBAT3V0cHV0KCkgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8vIHVpIHZhcmlhYmxlc1xuICAgIGhvdXJzOiBzdHJpbmc7XG4gICAgbWludXRlczogc3RyaW5nO1xuICAgIHNlY29uZHM6IHN0cmluZztcbiAgICBtZXJpZGlhbjogc3RyaW5nO1xuXG4gICAgZ2V0IGlzRWRpdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhKHRoaXMucmVhZG9ubHlJbnB1dCB8fCB0aGlzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICAvLyBtaW4vbWF4IHZhbGlkYXRpb24gZm9yIGlucHV0IGZpZWxkc1xuICAgIGludmFsaWRIb3VycyA9IGZhbHNlO1xuICAgIGludmFsaWRNaW51dGVzID0gZmFsc2U7XG4gICAgaW52YWxpZFNlY29uZHMgPSBmYWxzZTtcblxuICAgIC8vIHRpbWUgcGlja2VyIGNvbnRyb2xzIHN0YXRlXG4gICAgY2FuSW5jcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuSW5jcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5JbmNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuRGVjcmVtZW50SG91cnM6IGJvb2xlYW47XG4gICAgY2FuRGVjcmVtZW50TWludXRlczogYm9vbGVhbjtcbiAgICBjYW5EZWNyZW1lbnRTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgY2FuVG9nZ2xlTWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvLyBjb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcbiAgICBvbkNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgICBvblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbiAgICBwcml2YXRlIHRpbWVyUGlja2VyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGNvbnN0IF9jb25maWcgPSBpbmplY3QoVGltZVBpY2tlckNvbmZpZyk7XG4gICAgICAgIGNvbnN0IF9jZCA9IHRoaXMuX2NkO1xuICAgICAgICBjb25zdCBfc3RvcmUgPSB0aGlzLl9zdG9yZTtcblxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIF9jb25maWcpO1xuXG4gICAgICAgIHRoaXMudGltZXJQaWNrZXJTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgX3N0b3JlXG4gICAgICAgICAgICAgICAgLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgVUkgdmFsdWVzIGlmIGRhdGUgY2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJUaW1lKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy50aW1lclBpY2tlclN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBfc3RvcmVcbiAgICAgICAgICAgICAgICAuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmNvbnRyb2xzKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGNvbnRyb2xzU3RhdGU6IFRpbWVQaWNrZXJDb250cm9scykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChpc0lucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5taW51dGVzLCB0aGlzLnNlY29uZHMsIHRoaXMuaXNQTSgpKSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29udHJvbHNTdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlc2V0VmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnZhbGlkSG91cnMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnZhbGlkTWludXRlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaXNQTSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hvd01lcmlkaWFuICYmIHRoaXMubWVyaWRpYW4gPT09IHRoaXMubWVyaWRpYW5zWzFdO1xuICAgIH1cblxuICAgIHByZXZEZWYoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB3aGVlbFNpZ24oJGV2ZW50OiBXaGVlbEV2ZW50SW5pdCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBNYXRoLnNpZ24oJGV2ZW50LmRlbHRhWSkgKiAtMTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0b3JlLnVwZGF0ZUNvbnRyb2xzKGdldENvbnRyb2xzVmFsdWUodGhpcykpO1xuICAgIH1cblxuICAgIGNoYW5nZUhvdXJzKHN0ZXA6IG51bWJlciwgc291cmNlOiBUaW1lQ2hhbmdlU291cmNlID0gJycpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlTWludXRlcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZU1pbnV0ZXMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlU2Vjb25kcyhzdGVwOiBudW1iZXIsIHNvdXJjZTogVGltZUNoYW5nZVNvdXJjZSA9ICcnKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuX3N0b3JlLmNoYW5nZVNlY29uZHMoeyBzdGVwLCBzb3VyY2UgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlSG91cnMoaG91cnM6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbigpO1xuICAgICAgICB0aGlzLmhvdXJzID0gaG91cnM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzSG91cklucHV0VmFsaWQodGhpcy5ob3VycywgdGhpcy5pc1BNKCkpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRIb3VycyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91cGRhdGVUaW1lKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlTWludXRlcyhtaW51dGVzOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb24oKTtcbiAgICAgICAgdGhpcy5taW51dGVzID0gbWludXRlcztcblxuICAgICAgICBjb25zdCBpc1ZhbGlkID0gaXNNaW51dGVJbnB1dFZhbGlkKHRoaXMubWludXRlcykgJiYgdGhpcy5pc1ZhbGlkTGltaXQoKTtcblxuICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZE1pbnV0ZXMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlVGltZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVNlY29uZHMoc2Vjb25kczogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHNlY29uZHM7XG5cbiAgICAgICAgY29uc3QgaXNWYWxpZCA9IGlzU2Vjb25kSW5wdXRWYWxpZCh0aGlzLnNlY29uZHMpICYmIHRoaXMuaXNWYWxpZExpbWl0KCk7XG5cbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWRTZWNvbmRzID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVRpbWUoKTtcbiAgICB9XG5cbiAgICBpc1ZhbGlkTGltaXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0lucHV0TGltaXRWYWxpZChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5taW51dGVzLFxuICAgICAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgICAgICBpc1BNOiB0aGlzLmlzUE0oKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMubWF4LFxuICAgICAgICAgICAgdGhpcy5taW5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlVGltZSgpIHtcbiAgICAgICAgY29uc3QgX3NlY29uZHMgPSB0aGlzLnNob3dTZWNvbmRzID8gdGhpcy5zZWNvbmRzIDogdm9pZCAwO1xuICAgICAgICBjb25zdCBfbWludXRlcyA9IHRoaXMuc2hvd01pbnV0ZXMgPyB0aGlzLm1pbnV0ZXMgOiB2b2lkIDA7XG4gICAgICAgIGlmICghaXNJbnB1dFZhbGlkKHRoaXMuaG91cnMsIF9taW51dGVzLCBfc2Vjb25kcywgdGhpcy5pc1BNKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdG9yZS5zZXRUaW1lKHtcbiAgICAgICAgICAgIGhvdXI6IHRoaXMuaG91cnMsXG4gICAgICAgICAgICBtaW51dGU6IHRoaXMubWludXRlcyxcbiAgICAgICAgICAgIHNlY29uZHM6IHRoaXMuc2Vjb25kcyxcbiAgICAgICAgICAgIGlzUE06IHRoaXMuaXNQTSgpXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHRvZ2dsZU1lcmlkaWFuKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2hvd01lcmlkaWFuIHx8ICF0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IF9ob3Vyc1BlckRheUhhbGYgPSAxMjtcbiAgICAgICAgdGhpcy5fc3RvcmUuY2hhbmdlSG91cnMoe1xuICAgICAgICAgICAgc3RlcDogX2hvdXJzUGVyRGF5SGFsZixcbiAgICAgICAgICAgIHNvdXJjZTogJydcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShvYmo6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBEYXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZShvYmopKSB7XG4gICAgICAgICAgICB0aGlzLl9zdG9yZS53cml0ZVZhbHVlKHBhcnNlVGltZShvYmopKTtcbiAgICAgICAgfSBlbHNlIGlmIChvYmogPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUud3JpdGVWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRpbWVyUGlja2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVuZGVyVGltZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzVmFsaWREYXRlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5ob3VycyA9ICcnO1xuICAgICAgICAgICAgdGhpcy5taW51dGVzID0gJyc7XG4gICAgICAgICAgICB0aGlzLnNlY29uZHMgPSAnJztcbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gPSB0aGlzLm1lcmlkaWFuc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgX3ZhbHVlID0gcGFyc2VUaW1lKHZhbHVlKTtcbiAgICAgICAgY29uc3QgX2hvdXJzUGVyRGF5SGFsZiA9IDEyO1xuICAgICAgICBsZXQgX2hvdXJzID0gX3ZhbHVlLmdldEhvdXJzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2hvd01lcmlkaWFuKSB7XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuID0gdGhpcy5tZXJpZGlhbnNbX2hvdXJzID49IF9ob3Vyc1BlckRheUhhbGYgPyAxIDogMF07XG4gICAgICAgICAgICBfaG91cnMgPSBfaG91cnMgJSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgLy8gc2hvdWxkIGJlIDEyIFBNLCBub3QgMDAgUE1cbiAgICAgICAgICAgIGlmIChfaG91cnMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBfaG91cnMgPSBfaG91cnNQZXJEYXlIYWxmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ob3VycyA9IHBhZE51bWJlcihfaG91cnMpO1xuICAgICAgICB0aGlzLm1pbnV0ZXMgPSBwYWROdW1iZXIoX3ZhbHVlLmdldE1pbnV0ZXMoKSk7XG4gICAgICAgIHRoaXMuc2Vjb25kcyA9IHBhZE51bWJlcihfdmFsdWUuZ2V0VVRDU2Vjb25kcygpKTtcbiAgICB9XG59XG4iLCI8dGFibGU+XG4gIDx0Ym9keT5cbiAgICA8dHIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIFtoaWRkZW5dPVwiIXNob3dTcGlubmVyc1wiPlxuICAgICAgPCEtLSBpbmNyZW1lbnQgaG91cnMgYnV0dG9uLS0+XG4gICAgICA8dGQ+XG4gICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5JbmNyZW1lbnRIb3VycyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VIb3Vycyhob3VyU3RlcClcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInRoeS1jaGV2cm9uIHRoeS1jaGV2cm9uLXVwXCI+PC9zcGFuXG4gICAgICAgID48L2E+XG4gICAgICA8L3RkPlxuICAgICAgPCEtLSBkaXZpZGVyIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gaW5jcmVtZW50IG1pbnV0ZXMgYnV0dG9uIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkluY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwKVwiXG4gICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3BhblxuICAgICAgICAgID48L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBpbmNyZW1lbnQgc2Vjb25kcyBidXR0b24gLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuSW5jcmVtZW50U2Vjb25kcyB8fCAhaXNFZGl0YWJsZVwiIChjbGljayk9XCJjaGFuZ2VTZWNvbmRzKHNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi11cFwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIHNwYWNlIGJldHdlZW4gLS0+XG4gICAgICBAaWYgKHNob3dNZXJpZGlhbikge1xuICAgICAgICA8dGQ+Jm5ic3A7Jm5ic3A7Jm5ic3A7PC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gbWVyaWRpYW4gcGxhY2Vob2xkZXItLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD48L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyPlxuICAgICAgPCEtLSBob3VycyAtLT5cbiAgICAgIDx0ZCBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbY2xhc3MuaGFzLWVycm9yXT1cImludmFsaWRIb3Vyc1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZEhvdXJzXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCB0ZXh0LWNlbnRlciB0aHktdGltZS1waWNrZXItZmllbGRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJob3Vyc1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICBtYXhsZW5ndGg9XCIyXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaG91cnNcIlxuICAgICAgICAgICh3aGVlbCk9XCJwcmV2RGVmKCRldmVudCk7IGNoYW5nZUhvdXJzKGhvdXJTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZUhvdXJzKGhvdXJTdGVwLCAna2V5JylcIlxuICAgICAgICAgIChrZXlkb3duLkFycm93RG93bik9XCJjaGFuZ2VIb3VycygtaG91clN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVIb3VycygkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgIDwvdGQ+XG5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtaW51dGVzIC0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkTWludXRlc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZE1pbnV0ZXNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJtaW51dGVzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlTWludXRlcyhtaW51dGVTdGVwICogd2hlZWxTaWduKCRldmVudCksICd3aGVlbCcpXCJcbiAgICAgICAgICAgIChrZXlkb3duLkFycm93VXApPVwiY2hhbmdlTWludXRlcyhtaW51dGVTdGVwLCAna2V5JylcIlxuICAgICAgICAgICAgKGtleWRvd24uQXJyb3dEb3duKT1cImNoYW5nZU1pbnV0ZXMoLW1pbnV0ZVN0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZU1pbnV0ZXMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPiZuYnNwOzombmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBzZWNvbmRzIC0tPlxuICAgICAgQGlmIChzaG93U2Vjb25kcykge1xuICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmhhcy1lcnJvcl09XCJpbnZhbGlkU2Vjb25kc1wiPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaW52YWxpZFNlY29uZHNcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgdGV4dC1jZW50ZXIgdGh5LXRpbWUtcGlja2VyLWZpZWxkXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWNvbmRzUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMlwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlJbnB1dFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInNlY29uZHNcIlxuICAgICAgICAgICAgKHdoZWVsKT1cInByZXZEZWYoJGV2ZW50KTsgY2hhbmdlU2Vjb25kcyhzZWNvbmRzU3RlcCAqIHdoZWVsU2lnbigkZXZlbnQpLCAnd2hlZWwnKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd1VwKT1cImNoYW5nZVNlY29uZHMoc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5BcnJvd0Rvd24pPVwiY2hhbmdlU2Vjb25kcygtc2Vjb25kc1N0ZXAsICdrZXknKVwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVNlY29uZHMoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFZGl0YWJsZSB8fCAhY2FuVG9nZ2xlTWVyaWRpYW5cIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiFpc0VkaXRhYmxlIHx8ICFjYW5Ub2dnbGVNZXJpZGlhblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVyaWRpYW4oKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBtZXJpZGlhbiB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvdHI+XG4gICAgPHRyIGNsYXNzPVwidGV4dC1jZW50ZXJcIiBbaGlkZGVuXT1cIiFzaG93U3Bpbm5lcnNcIj5cbiAgICAgIDwhLS0gZGVjcmVtZW50IGhvdXJzIGJ1dHRvbi0tPlxuICAgICAgPHRkPlxuICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tbGlua1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhY2FuRGVjcmVtZW50SG91cnMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlSG91cnMoLWhvdXJTdGVwKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgPC90ZD5cbiAgICAgIDwhLS0gZGl2aWRlciAtLT5cbiAgICAgIEBpZiAoc2hvd01pbnV0ZXMpIHtcbiAgICAgICAgPHRkPiZuYnNwOyZuYnNwOyZuYnNwOzwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRlY3JlbWVudCBtaW51dGVzIGJ1dHRvbi0tPlxuICAgICAgQGlmIChzaG93TWludXRlcykge1xuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWxpbmtcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWNhbkRlY3JlbWVudE1pbnV0ZXMgfHwgIWlzRWRpdGFibGVcIiAoY2xpY2spPVwiY2hhbmdlTWludXRlcygtbWludXRlU3RlcClcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGh5LWNoZXZyb24gdGh5LWNoZXZyb24tZG93blwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgICA8IS0tIGRpdmlkZXIgLS0+XG4gICAgICBAaWYgKHNob3dTZWNvbmRzKSB7XG4gICAgICAgIDx0ZD4mbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBkZWNyZW1lbnQgc2Vjb25kcyBidXR0b24tLT5cbiAgICAgIEBpZiAoc2hvd1NlY29uZHMpIHtcbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFjYW5EZWNyZW1lbnRTZWNvbmRzIHx8ICFpc0VkaXRhYmxlXCIgKGNsaWNrKT1cImNoYW5nZVNlY29uZHMoLXNlY29uZHNTdGVwKVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aHktY2hldnJvbiB0aHktY2hldnJvbi1kb3duXCI+PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC90ZD5cbiAgICAgIH1cbiAgICAgIDwhLS0gc3BhY2UgYmV0d2VlbiAtLT5cbiAgICAgIEBpZiAoc2hvd01lcmlkaWFuKSB7XG4gICAgICAgIDx0ZD4mbmJzcDsmbmJzcDsmbmJzcDs8L3RkPlxuICAgICAgfVxuICAgICAgPCEtLSBtZXJpZGlhbiBwbGFjZWhvbGRlci0tPlxuICAgICAgQGlmIChzaG93TWVyaWRpYW4pIHtcbiAgICAgICAgPHRkPjwvdGQ+XG4gICAgICB9XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvdGFibGU+XG4iXX0=