@fundamental-ngx/core 0.49.1 → 0.49.2

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 (310) hide show
  1. package/avatar-group-legacy/avatar-group-legacy.component.d.ts +6 -6
  2. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.d.ts +2 -2
  3. package/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.d.ts +2 -2
  4. package/bar/bar.component.d.ts +6 -6
  5. package/bar/button-bar/button-bar.component.d.ts +4 -4
  6. package/calendar/calendar-header/calendar-header.component.d.ts +2 -2
  7. package/card/card-content.component.d.ts +2 -2
  8. package/card/card-counter.directive.d.ts +2 -2
  9. package/card/card-header.component.d.ts +6 -6
  10. package/card/card-loader.component.d.ts +2 -2
  11. package/card/card-second-subtitle.directive.d.ts +2 -2
  12. package/card/card-subtitle.directive.d.ts +2 -2
  13. package/card/card-title.directive.d.ts +2 -2
  14. package/card/card.component.d.ts +3 -3
  15. package/card/kpi/card-kpi-analytics-content.directive.d.ts +2 -2
  16. package/card/kpi/card-kpi-analytics-label.directive.d.ts +2 -2
  17. package/card/kpi/card-kpi-analytics.directive.d.ts +2 -2
  18. package/card/kpi/card-kpi-header.component.d.ts +2 -2
  19. package/card/kpi/card-kpi-scale-icon.directive.d.ts +2 -2
  20. package/card/kpi/card-kpi-scale-text.directive.d.ts +2 -2
  21. package/card/kpi/card-kpi-value.directive.d.ts +4 -4
  22. package/checkbox/checkbox/checkbox.component.d.ts +3 -5
  23. package/content-density/providers/url-content-density-storage.d.ts +4 -4
  24. package/content-density/services/content-density-observer.service.d.ts +15 -15
  25. package/datetime/datetime-adapter.d.ts +9 -2
  26. package/datetime/fd-date.d.ts +10 -14
  27. package/datetime/fd-datetime-adapter.d.ts +2 -2
  28. package/dialog/base/dialog-base.class.d.ts +2 -2
  29. package/dialog/base/dialog-header-base.class.d.ts +4 -4
  30. package/dialog/base/dialog-ref-base.class.d.ts +6 -4
  31. package/dynamic-side-content/dynamic-side-content.component.d.ts +4 -4
  32. package/esm2022/avatar-group-legacy/avatar-group-legacy.component.mjs +15 -15
  33. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-body.directive.mjs +12 -12
  34. package/esm2022/avatar-group-legacy/directives/avatar-group-legacy-overflow-button.directive.mjs +9 -9
  35. package/esm2022/bar/bar.component.mjs +13 -13
  36. package/esm2022/bar/button-bar/button-bar.component.mjs +3 -3
  37. package/esm2022/calendar/calendar-header/calendar-header.component.mjs +1 -1
  38. package/esm2022/card/card-content.component.mjs +5 -5
  39. package/esm2022/card/card-counter.directive.mjs +6 -6
  40. package/esm2022/card/card-header.component.mjs +5 -5
  41. package/esm2022/card/card-loader.component.mjs +5 -5
  42. package/esm2022/card/card-second-subtitle.directive.mjs +5 -5
  43. package/esm2022/card/card-subtitle.directive.mjs +5 -5
  44. package/esm2022/card/card-title.directive.mjs +5 -5
  45. package/esm2022/card/card.component.mjs +5 -5
  46. package/esm2022/card/kpi/card-kpi-analytics-content.directive.mjs +5 -5
  47. package/esm2022/card/kpi/card-kpi-analytics-label.directive.mjs +5 -5
  48. package/esm2022/card/kpi/card-kpi-analytics.directive.mjs +5 -5
  49. package/esm2022/card/kpi/card-kpi-header.component.mjs +5 -5
  50. package/esm2022/card/kpi/card-kpi-scale-icon.directive.mjs +5 -5
  51. package/esm2022/card/kpi/card-kpi-scale-text.directive.mjs +5 -5
  52. package/esm2022/card/kpi/card-kpi-value.directive.mjs +5 -5
  53. package/esm2022/checkbox/checkbox/checkbox.component.mjs +1 -1
  54. package/esm2022/combobox/combobox.component.mjs +2 -2
  55. package/esm2022/content-density/providers/url-content-density-storage.mjs +11 -11
  56. package/esm2022/content-density/services/content-density-observer.service.mjs +7 -16
  57. package/esm2022/datetime/datetime-adapter.mjs +4 -2
  58. package/esm2022/datetime/fd-date.mjs +34 -27
  59. package/esm2022/datetime/fd-datetime-adapter.mjs +1 -1
  60. package/esm2022/dialog/base/dialog-base.class.mjs +1 -1
  61. package/esm2022/dialog/base/dialog-header-base.class.mjs +1 -1
  62. package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -8
  63. package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +9 -9
  64. package/esm2022/feed-input/directives/feed-input-avatar.directive.mjs +5 -5
  65. package/esm2022/feed-list-item/components/list/feed-list.component.mjs +15 -15
  66. package/esm2022/file-uploader/directives/file-uploader-select.directive.mjs +1 -1
  67. package/esm2022/file-uploader/file-uploader.component.mjs +5 -5
  68. package/esm2022/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  69. package/esm2022/form/form-group/form-group.component.mjs +8 -8
  70. package/esm2022/form/form-message/form-message.component.mjs +9 -9
  71. package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -3
  72. package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  73. package/esm2022/illustrated-message/illustrated-message.component.mjs +10 -10
  74. package/esm2022/input-group/input-group-directives.mjs +22 -22
  75. package/esm2022/layout-grid/directives/layout-grid-col.directive.mjs +9 -9
  76. package/esm2022/layout-grid/layout-grid.component.mjs +9 -9
  77. package/esm2022/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +9 -9
  78. package/esm2022/list/list-item/list-item.component.mjs +20 -17
  79. package/esm2022/list/list-message.directive.mjs +9 -9
  80. package/esm2022/menu/directives/segmented-button/segmented-button-header.directive.mjs +1 -2
  81. package/esm2022/menu/directives/toggle-button.directive.mjs +1 -2
  82. package/esm2022/message-box/message-box.component.mjs +17 -17
  83. package/esm2022/message-page/message-page.component.mjs +5 -5
  84. package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +5 -5
  85. package/esm2022/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.mjs +1 -1
  86. package/esm2022/message-strip/alert/message-strip-alert.service.mjs +2 -3
  87. package/esm2022/message-strip/message-strip.component.mjs +16 -16
  88. package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +43 -45
  89. package/esm2022/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +1 -1
  90. package/esm2022/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +13 -13
  91. package/esm2022/multi-combobox/multi-combobox.component.mjs +2 -5
  92. package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
  93. package/esm2022/multi-input/multi-input.component.mjs +2 -2
  94. package/esm2022/nested-list/nested-content/nested-list-content.directive.mjs +6 -6
  95. package/esm2022/nested-list/nested-item/nested-item.directive.mjs +3 -3
  96. package/esm2022/nested-list/nested-list/nested-list.directive.mjs +3 -3
  97. package/esm2022/notification/directives/notification-indicator.directive.mjs +9 -9
  98. package/esm2022/notification/notification/notification.component.mjs +9 -9
  99. package/esm2022/notification/notification-group/notification-group.component.mjs +5 -5
  100. package/esm2022/notification/notification-service/notification.service.mjs +5 -2
  101. package/esm2022/notification/notification-utils/notification-ref.mjs +2 -5
  102. package/esm2022/object-number/object-number.component.mjs +9 -9
  103. package/esm2022/object-status/object-status.component.mjs +13 -12
  104. package/esm2022/overflow-layout/directives/overflow-expand.directive.mjs +5 -5
  105. package/esm2022/overflow-layout/directives/overflow-item-ref.directive.mjs +1 -1
  106. package/esm2022/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +5 -5
  107. package/esm2022/overflow-layout/directives/overflow-layout-item-container.directive.mjs +8 -8
  108. package/esm2022/overflow-layout/interfaces/overflow-focusable-item.interface.mjs +1 -1
  109. package/esm2022/overflow-layout/overflow-layout.component.mjs +18 -18
  110. package/esm2022/radio/radio-button/radio-button.component.mjs +8 -9
  111. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +28 -28
  112. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +23 -23
  113. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +7 -8
  114. package/esm2022/select/select.component.mjs +18 -18
  115. package/esm2022/shared/interfaces/search-component.interface.mjs +1 -1
  116. package/esm2022/shellbar/shellbar.component.mjs +7 -7
  117. package/esm2022/side-navigation/side-navigation.component.mjs +7 -7
  118. package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
  119. package/esm2022/status-indicator/status-indicator.component.mjs +15 -15
  120. package/esm2022/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  121. package/esm2022/tabs/tab-item/tab-item.directive.mjs +9 -9
  122. package/esm2022/tabs/tab-link/tab-link.directive.mjs +8 -8
  123. package/esm2022/tabs/tab-nav/tab-nav.component.mjs +15 -15
  124. package/esm2022/tabs/tab-panel/tab-panel.component.mjs +3 -3
  125. package/esm2022/tabs/tab-utils/tab-directives.mjs +8 -8
  126. package/esm2022/tile/directives/tile.directives.mjs +25 -25
  127. package/esm2022/tile/tile.component.mjs +9 -11
  128. package/esm2022/time/time-column/time-column.component.mjs +23 -23
  129. package/esm2022/timeline/services/position-strategies/base-strategy.mjs +1 -1
  130. package/esm2022/timeline/timeline.component.mjs +5 -5
  131. package/esm2022/title/title.component.mjs +4 -4
  132. package/esm2022/token/tokenizer.component.mjs +71 -71
  133. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  134. package/esm2022/tree/components/tree-item/tree-item.component.mjs +4 -6
  135. package/esm2022/tree/tree.component.mjs +1 -4
  136. package/esm2022/upload-collection/upload-collection-item.directive.mjs +3 -3
  137. package/esm2022/vertical-navigation/vertical-navigation.component.mjs +6 -6
  138. package/esm2022/wizard/wizard-step/wizard-step.component.mjs +3 -3
  139. package/feed-input/directives/feed-input-avatar.directive.d.ts +2 -2
  140. package/feed-list-item/components/list/feed-list.component.d.ts +6 -6
  141. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs +33 -33
  142. package/fesm2022/fundamental-ngx-core-avatar-group-legacy.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-bar.mjs +14 -14
  144. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  146. package/fesm2022/fundamental-ngx-core-card.mjs +61 -61
  147. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  148. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-combobox.mjs +1 -1
  150. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-content-density.mjs +17 -26
  152. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-datetime.mjs +36 -27
  154. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -7
  156. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +8 -8
  158. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-feed-input.mjs +4 -4
  160. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +14 -14
  162. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +4 -4
  164. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  166. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-form.mjs +15 -15
  168. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-grid-list.mjs +3 -4
  170. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +9 -9
  172. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-input-group.mjs +21 -21
  174. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +16 -16
  176. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +8 -8
  178. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-list.mjs +27 -24
  180. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core-menu.mjs +0 -2
  182. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-core-message-box.mjs +16 -16
  184. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-core-message-page.mjs +4 -4
  186. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-core-message-strip.mjs +20 -21
  188. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +55 -57
  190. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +1 -4
  192. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-core-multi-input.mjs +1 -1
  194. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-core-nested-list.mjs +9 -9
  196. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-core-notification.mjs +25 -25
  198. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-core-object-number.mjs +8 -8
  200. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-core-object-status.mjs +12 -11
  202. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +32 -32
  204. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-core-radio.mjs +7 -8
  206. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +27 -27
  208. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +28 -29
  210. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-core-select.mjs +17 -17
  212. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  214. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +6 -6
  216. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  218. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +14 -14
  220. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-core-table.mjs +2 -2
  222. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-core-tabs.mjs +38 -38
  224. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-core-tile.mjs +32 -34
  226. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-core-time.mjs +23 -23
  228. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-core-timeline.mjs +4 -4
  230. package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-core-title.mjs +3 -3
  232. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-core-token.mjs +70 -70
  234. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  236. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-core-tree.mjs +3 -8
  238. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  239. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  240. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  241. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +5 -5
  242. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  243. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  244. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  245. package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
  246. package/file-uploader/file-uploader.component.d.ts +4 -4
  247. package/form/form-group/form-group.component.d.ts +4 -4
  248. package/form/form-message/form-message.component.d.ts +2 -2
  249. package/grid-list/components/grid-list/grid-list.component.d.ts +3 -2
  250. package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +8 -8
  251. package/illustrated-message/illustrated-message.component.d.ts +7 -7
  252. package/input-group/input-group-directives.d.ts +12 -12
  253. package/layout-grid/directives/layout-grid-col.directive.d.ts +2 -2
  254. package/layout-grid/layout-grid.component.d.ts +2 -2
  255. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +2 -2
  256. package/list/list-item/list-item.component.d.ts +13 -13
  257. package/list/list-message.directive.d.ts +4 -4
  258. package/message-box/message-box.component.d.ts +5 -5
  259. package/message-page/message-page.component.d.ts +2 -2
  260. package/message-strip/alert/message-strip-alert/message-strip-alert.component.d.ts +4 -4
  261. package/message-strip/alert/message-strip-alert-container/message-strip-alert-container.component.d.ts +4 -4
  262. package/message-strip/alert/message-strip-alert.service.d.ts +3 -2
  263. package/message-strip/message-strip.component.d.ts +6 -6
  264. package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +15 -17
  265. package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +2 -2
  266. package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +6 -6
  267. package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  268. package/nested-list/nested-content/nested-list-content.directive.d.ts +2 -2
  269. package/nested-list/nested-item/nested-item.directive.d.ts +2 -2
  270. package/nested-list/nested-list/nested-list.directive.d.ts +2 -2
  271. package/notification/directives/notification-indicator.directive.d.ts +4 -4
  272. package/notification/notification/notification.component.d.ts +2 -2
  273. package/notification/notification-group/notification-group.component.d.ts +2 -2
  274. package/notification/notification-utils/notification-ref.d.ts +5 -3
  275. package/object-number/object-number.component.d.ts +4 -4
  276. package/object-status/object-status.component.d.ts +5 -4
  277. package/overflow-layout/directives/overflow-expand.directive.d.ts +2 -2
  278. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +2 -2
  279. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +2 -2
  280. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +2 -2
  281. package/overflow-layout/interfaces/overflow-focusable-item.interface.d.ts +1 -1
  282. package/overflow-layout/overflow-layout.component.d.ts +4 -4
  283. package/package.json +3 -3
  284. package/radio/radio-button/radio-button.component.d.ts +7 -7
  285. package/rating-indicator/components/rating-indicator.component.d.ts +12 -12
  286. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +8 -8
  287. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +2 -2
  288. package/select/select.component.d.ts +19 -19
  289. package/shared/interfaces/search-component.interface.d.ts +1 -1
  290. package/shellbar/shellbar.component.d.ts +12 -12
  291. package/side-navigation/side-navigation.component.d.ts +2 -2
  292. package/skeleton/components/skeleton.component.d.ts +2 -2
  293. package/status-indicator/status-indicator.component.d.ts +7 -7
  294. package/tabs/tab-item/tab-item.directive.d.ts +2 -2
  295. package/tabs/tab-link/tab-link.directive.d.ts +2 -2
  296. package/tabs/tab-nav/tab-nav.component.d.ts +8 -8
  297. package/tabs/tab-panel/tab-panel.component.d.ts +2 -2
  298. package/tabs/tab-utils/tab-directives.d.ts +5 -5
  299. package/tile/directives/tile.directives.d.ts +12 -12
  300. package/tile/tile.component.d.ts +4 -6
  301. package/time/time-column/time-column.component.d.ts +6 -6
  302. package/timeline/services/position-strategies/base-strategy.d.ts +2 -2
  303. package/timeline/timeline.component.d.ts +2 -2
  304. package/title/title.component.d.ts +2 -2
  305. package/token/tokenizer.component.d.ts +16 -16
  306. package/toolbar/toolbar.component.d.ts +2 -2
  307. package/tree/components/tree-item/tree-item.component.d.ts +10 -9
  308. package/upload-collection/upload-collection-item.directive.d.ts +2 -2
  309. package/vertical-navigation/vertical-navigation.component.d.ts +2 -2
  310. package/wizard/wizard-step/wizard-step.component.d.ts +4 -4
@@ -16,6 +16,16 @@ export class UrlContentDensityStorage {
16
16
  this._storageKey = _storageKey;
17
17
  this._initialize();
18
18
  }
19
+ /** Content density observable */
20
+ getContentDensity() {
21
+ return this._current$.asObservable().pipe(distinctUntilChanged());
22
+ }
23
+ /** Change content density */
24
+ setContentDensity(density) {
25
+ this._current$.next(density);
26
+ this._setUrlQueryParam(density);
27
+ return of(undefined);
28
+ }
19
29
  /** @hidden */
20
30
  _initialize() {
21
31
  this._current$ = new BehaviorSubject(this._defaultContentDensity);
@@ -34,16 +44,6 @@ export class UrlContentDensityStorage {
34
44
  url.searchParams.forEach((value, key) => (queryParams[key] = value));
35
45
  this._router.navigateByUrl(url.pathname + '?' + url.searchParams.toString());
36
46
  }
37
- /** Content density observable */
38
- getContentDensity() {
39
- return this._current$.asObservable().pipe(distinctUntilChanged());
40
- }
41
- /** Change content density */
42
- setContentDensity(density) {
43
- this._current$.next(density);
44
- this._setUrlQueryParam(density);
45
- return of(undefined);
46
- }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UrlContentDensityStorage, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: DEFAULT_CONTENT_DENSITY }, { token: CONTENT_DENSITY_STORAGE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
48
48
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: UrlContentDensityStorage }); }
49
49
  }
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
56
56
  type: Inject,
57
57
  args: [CONTENT_DENSITY_STORAGE_KEY]
58
58
  }] }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2NvbnRlbnQtZGVuc2l0eS9wcm92aWRlcnMvdXJsLWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBR25FLE1BQU0sT0FBTyx3QkFBd0I7SUFJakMsY0FBYztJQUNkLFlBQ1ksT0FBZSxFQUNmLGVBQStCLEVBQ0Usc0JBQTBDLEVBQ3RDLFdBQW1CO1FBSHhELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDRSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQW9CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRWhFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztJQUNOLFdBQVc7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV0RixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVc7YUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUM5RCxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQixDQUFDLE9BQTJCO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLHFCQUFxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0QsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbkQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLGlCQUFpQixDQUFDLE9BQTJCO1FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QixDQUFDOzhHQTlDUSx3QkFBd0Isc0VBUXJCLHVCQUF1QixhQUN2QiwyQkFBMkI7a0hBVDlCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7MEJBU0YsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eVN0b3JhZ2UgfSBmcm9tICcuLi9jbGFzc2VzL2Fic3RyYWN0LWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlJztcbmltcG9ydCB7IENPTlRFTlRfREVOU0lUWV9TVE9SQUdFX0tFWSB9IGZyb20gJy4uL3Rva2Vucy9jb250ZW50LWRlbnNpdHktc3RvcmFnZS1rZXkudG9rZW4nO1xuaW1wb3J0IHsgREVGQVVMVF9DT05URU5UX0RFTlNJVFkgfSBmcm9tICcuLi90b2tlbnMvZGVmYXVsdC1jb250ZW50LWRlbnNpdHkudG9rZW4nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsQ29udGVudERlbnNpdHlTdG9yYWdlIGltcGxlbWVudHMgQ29udGVudERlbnNpdHlTdG9yYWdlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnQkOiBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIEBJbmplY3QoREVGQVVMVF9DT05URU5UX0RFTlNJVFkpIHByaXZhdGUgX2RlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLFxuICAgICAgICBASW5qZWN0KENPTlRFTlRfREVOU0lUWV9TVE9SQUdFX0tFWSkgcHJpdmF0ZSBfc3RvcmFnZUtleTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb250ZW50RGVuc2l0eU1vZGU+KHRoaXMuX2RlZmF1bHRDb250ZW50RGVuc2l0eSk7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigocXVlcnlQYXJhbXMpID0+ICEhcXVlcnlQYXJhbXNbdGhpcy5fc3RvcmFnZUtleV0pKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocXVlcnlQYXJhbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50JC5uZXh0KHF1ZXJ5UGFyYW1zW3RoaXMuX3N0b3JhZ2VLZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXJsUXVlcnlQYXJhbShkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChgaHR0cHM6Ly9nb29nbGUuY29tJHt0aGlzLl9yb3V0ZXIudXJsfWApO1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSh0aGlzLl9zdG9yYWdlS2V5KTtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQodGhpcy5fc3RvcmFnZUtleSwgZGVuc2l0eSk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHF1ZXJ5UGFyYW1zW2tleV0gPSB2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybC5wYXRobmFtZSArICc/JyArIHVybC5zZWFyY2hQYXJhbXMudG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgLyoqIENvbnRlbnQgZGVuc2l0eSBvYnNlcnZhYmxlICovXG4gICAgZ2V0Q29udGVudERlbnNpdHkoKTogT2JzZXJ2YWJsZTxDb250ZW50RGVuc2l0eU1vZGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gICAgfVxuXG4gICAgLyoqIENoYW5nZSBjb250ZW50IGRlbnNpdHkgKi9cbiAgICBzZXRDb250ZW50RGVuc2l0eShkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5fY3VycmVudCQubmV4dChkZW5zaXR5KTtcbiAgICAgICAgdGhpcy5fc2V0VXJsUXVlcnlQYXJhbShkZW5zaXR5KTtcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2NvbnRlbnQtZGVuc2l0eS9wcm92aWRlcnMvdXJsLWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBR25FLE1BQU0sT0FBTyx3QkFBd0I7SUFJakMsY0FBYztJQUNkLFlBQ1ksT0FBZSxFQUNmLGVBQStCLEVBQ0Usc0JBQTBDLEVBQ3RDLFdBQW1CO1FBSHhELFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDRSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQW9CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBRWhFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsaUJBQWlCLENBQUMsT0FBMkI7UUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjO0lBQ04sV0FBVztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXRGLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVzthQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2FBQzlELFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxjQUFjO0lBQ04saUJBQWlCLENBQUMsT0FBMkI7UUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMscUJBQXFCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM3RCxHQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXJFLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDOzhHQTlDUSx3QkFBd0Isc0VBUXJCLHVCQUF1QixhQUN2QiwyQkFBMkI7a0hBVDlCLHdCQUF3Qjs7MkZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVTs7MEJBU0YsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUM5QixNQUFNOzJCQUFDLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eVN0b3JhZ2UgfSBmcm9tICcuLi9jbGFzc2VzL2Fic3RyYWN0LWNvbnRlbnQtZGVuc2l0eS1zdG9yYWdlJztcbmltcG9ydCB7IENPTlRFTlRfREVOU0lUWV9TVE9SQUdFX0tFWSB9IGZyb20gJy4uL3Rva2Vucy9jb250ZW50LWRlbnNpdHktc3RvcmFnZS1rZXkudG9rZW4nO1xuaW1wb3J0IHsgREVGQVVMVF9DT05URU5UX0RFTlNJVFkgfSBmcm9tICcuLi90b2tlbnMvZGVmYXVsdC1jb250ZW50LWRlbnNpdHkudG9rZW4nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXJsQ29udGVudERlbnNpdHlTdG9yYWdlIGltcGxlbWVudHMgQ29udGVudERlbnNpdHlTdG9yYWdlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnQkOiBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIEBJbmplY3QoREVGQVVMVF9DT05URU5UX0RFTlNJVFkpIHByaXZhdGUgX2RlZmF1bHRDb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLFxuICAgICAgICBASW5qZWN0KENPTlRFTlRfREVOU0lUWV9TVE9SQUdFX0tFWSkgcHJpdmF0ZSBfc3RvcmFnZUtleTogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICAvKiogQ29udGVudCBkZW5zaXR5IG9ic2VydmFibGUgKi9cbiAgICBnZXRDb250ZW50RGVuc2l0eSgpOiBPYnNlcnZhYmxlPENvbnRlbnREZW5zaXR5TW9kZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudCQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgICB9XG5cbiAgICAvKiogQ2hhbmdlIGNvbnRlbnQgZGVuc2l0eSAqL1xuICAgIHNldENvbnRlbnREZW5zaXR5KGRlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICB0aGlzLl9jdXJyZW50JC5uZXh0KGRlbnNpdHkpO1xuICAgICAgICB0aGlzLl9zZXRVcmxRdWVyeVBhcmFtKGRlbnNpdHkpO1xuICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRpYWxpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb250ZW50RGVuc2l0eU1vZGU+KHRoaXMuX2RlZmF1bHRDb250ZW50RGVuc2l0eSk7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbXNcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigocXVlcnlQYXJhbXMpID0+ICEhcXVlcnlQYXJhbXNbdGhpcy5fc3RvcmFnZUtleV0pKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocXVlcnlQYXJhbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXJyZW50JC5uZXh0KHF1ZXJ5UGFyYW1zW3RoaXMuX3N0b3JhZ2VLZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXJsUXVlcnlQYXJhbShkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChgaHR0cHM6Ly9nb29nbGUuY29tJHt0aGlzLl9yb3V0ZXIudXJsfWApO1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSh0aGlzLl9zdG9yYWdlS2V5KTtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQodGhpcy5fc3RvcmFnZUtleSwgZGVuc2l0eSk7XG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4gKHF1ZXJ5UGFyYW1zW2tleV0gPSB2YWx1ZSkpO1xuXG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHVybC5wYXRobmFtZSArICc/JyArIHVybC5zZWFyY2hQYXJhbXMudG9TdHJpbmcoKSk7XG4gICAgfVxufVxuIl19
@@ -73,21 +73,6 @@ export class ContentDensityObserver extends BehaviorSubject {
73
73
  /** @hidden */
74
74
  this._isCondensed$ = new BehaviorSubject(false);
75
75
  /** @hidden */
76
- // eslint-disable-next-line @typescript-eslint/member-ordering
77
- this.isCompact$ = this._isCompact$.asObservable();
78
- /** @hidden */
79
- // eslint-disable-next-line @typescript-eslint/member-ordering
80
- this.isCozy$ = this._isCozy$.asObservable();
81
- /** @hidden */
82
- // eslint-disable-next-line @typescript-eslint/member-ordering
83
- this.isCondensed$ = this._isCondensed$.asObservable();
84
- /** @hidden */
85
- this.isCompactSignal = toSignal(this.isCompact$);
86
- /** @hidden */
87
- this.isCozySignal = toSignal(this.isCozy$);
88
- /** @hidden */
89
- this.isCondensedSignal = toSignal(this.isCondensed$);
90
- /** @hidden */
91
76
  this._globalContentDensityService = inject(GlobalContentDensityService, {
92
77
  optional: true
93
78
  });
@@ -114,6 +99,12 @@ export class ContentDensityObserver extends BehaviorSubject {
114
99
  [ContentDensityMode.CONDENSED]: () => this._isSupported(ContentDensityMode.COMPACT) ? ContentDensityMode.COMPACT : ContentDensityMode.COZY,
115
100
  [ContentDensityMode.COZY]: () => ContentDensityMode.COZY // No alternative here, everyone should support it
116
101
  };
102
+ this.isCompact$ = this._isCompact$.asObservable();
103
+ this.isCozy$ = this._isCozy$.asObservable();
104
+ this.isCondensed$ = this._isCondensed$.asObservable();
105
+ this.isCompactSignal = toSignal(this.isCompact$, { initialValue: this._isCompact$.value });
106
+ this.isCozySignal = toSignal(this.isCozy$, { initialValue: this._isCozy$.value });
107
+ this.isCondensedSignal = toSignal(this.isCondensed$, { initialValue: this._isCondensed$.value });
117
108
  this._destroyRef.onDestroy(() => {
118
109
  this.complete();
119
110
  if (this.config.debug) {
@@ -209,4 +200,4 @@ export class ContentDensityObserver extends BehaviorSubject {
209
200
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ContentDensityObserver, decorators: [{
210
201
  type: Injectable
211
202
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ContentDensityObserverSettings }] });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvY29udGVudC1kZW5zaXR5L3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUVWLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7QUFFNUcsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQVEsRUFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSyxHQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXZILE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBa0IsRUFBRSxxQkFBMEMsRUFBYyxFQUFFLENBQzNGLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FB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RGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBGYWN0b3J5U2Fuc1Byb3ZpZGVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdEZsYWdzLFxuICAgIEluamVjdG9yLFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncyB9IGZyb20gJy4uL2NsYXNzZXMvY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNldHRpbmdzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJUYXJnZXQgfSBmcm9tICcuLi9jb250ZW50LWRlbnNpdHkudHlwZXMnO1xuaW1wb3J0IHsgZ2V0Q2hhbmdlc1NvdXJjZSQgfSBmcm9tICcuLi9oZWxwZXJzL2dldC1jaGFuZ2VzLXNvdXJjZS5wcm92aWRlcic7XG5pbXBvcnQgeyBHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9nbG9iYWwtY29udGVudC1kZW5zaXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSB9IGZyb20gJy4uL3Rva2Vucy9jb250ZW50LWRlbnNpdHktZGlyZWN0aXZlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQtZGVuc2l0eS5tb2RlJztcbmltcG9ydCB7IGRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyB9IGZyb20gJy4uL3ZhcmlhYmxlcy9kZWZhdWx0LWNvbnRlbnQtZGVuc2l0eS1jb25zdW1lci1jb25maWcnO1xuXG5jb25zdCBpc0ZhY3RvcnlQcm92aWRlciA9IChvYmo6IGFueSk6IG9iaiBpcyBGYWN0b3J5U2Fuc1Byb3ZpZGVyID0+ICEhKG9iaiAmJiAob2JqIGFzIEZhY3RvcnlTYW5zUHJvdmlkZXIpLnVzZUZhY3RvcnkpO1xuXG5jb25zdCBnZXREZXBzID0gKGluamVjdG9yOiBJbmplY3RvciwgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBGYWN0b3J5U2Fuc1Byb3ZpZGVyKTogQXJyYXk8YW55PiA9PlxuICAgIChkZWZhdWx0Q29udGVudERlbnNpdHkuZGVwcyB8fCBbXSkubWFwKChkZXApOiBhbnkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXApKSB7XG4gICAgICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgICAgIGxldCBmbGFncyA9IEluamVjdEZsYWdzLkRlZmF1bHQ7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZGVwLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZsYWcgPSBkZXBbaW5kZXhdWydfX05HX0RJX0ZMQUdfXyddO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmxhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gZmxhZztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gZGVwW2luZGV4XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KHR5cGUsIHVuZGVmaW5lZCwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoZGVwLCB1bmRlZmluZWQsIEluamVjdEZsYWdzLkRlZmF1bHQpO1xuICAgIH0pO1xuXG5jb25zdCBnZXREZWZhdWx0Q29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb246IFJlcXVpcmVkPENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJTZXR0aW5ncz5cbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5IGFzIENvbnRlbnREZW5zaXR5TW9kZTtcbiAgICB9XG4gICAgaWYgKGlzRmFjdG9yeVByb3ZpZGVyKGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5KSkge1xuICAgICAgICBjb25zdCBkZXBzID0gZ2V0RGVwcyhpbmplY3RvciwgY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpO1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkudXNlRmFjdG9yeSguLi5kZXBzKTtcbiAgICB9XG4gICAgcmV0dXJuIGluamVjdG9yLmdldChjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufTtcblxuY29uc3QgaW5pdGlhbENvbnRlbnREZW5zaXR5ID0gKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBjb25maWd1cmF0aW9uPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzXG4pOiBDb250ZW50RGVuc2l0eU1vZGUgPT4ge1xuICAgIGNvbnN0IHNlcnZpY2VWYWx1ZSA9IGluamVjdG9yLmdldChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIG51bGwsIEluamVjdEZsYWdzLk9wdGlvbmFsKT8uY3VycmVudENvbnRlbnREZW5zaXR5O1xuICAgIGlmIChzZXJ2aWNlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHNlcnZpY2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGdldERlZmF1bHRDb250ZW50RGVuc2l0eShpbmplY3Rvciwge1xuICAgICAgICAuLi5kZWZhdWx0Q29udGVudERlbnNpdHlPYnNlcnZlckNvbmZpZ3MsXG4gICAgICAgIC4uLihjb25maWd1cmF0aW9uIHx8IHt9KVxuICAgIH0pO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgZXh0ZW5kcyBCZWhhdmlvclN1YmplY3Q8Q29udGVudERlbnNpdHlNb2RlPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjb250ZW50RGVuc2l0eSQgPSB0b1NpZ25hbCh0aGlzKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNvbmZpZzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNDb21wYWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNDb3p5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNDb25kZW5zZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHJlYWRvbmx5IGlzQ29tcGFjdCQgPSB0aGlzLl9pc0NvbXBhY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICByZWFkb25seSBpc0NvenkkID0gdGhpcy5faXNDb3p5JC5hc09ic2VydmFibGUoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgcmVhZG9ubHkgaXNDb25kZW5zZWQkID0gdGhpcy5faXNDb25kZW5zZWQkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvbXBhY3RTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzQ29tcGFjdCQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvenlTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzQ296eSQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvbmRlbnNlZFNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaXNDb25kZW5zZWQkKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGFjdCQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ296eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ296eSQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29uZGVuc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25kZW5zZWQkLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gaW5qZWN0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA9IGluamVjdChDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudERlbnNpdHlPYnNlcnZlciwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgc2tpcFNlbGY6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiB8IG51bGwgPSBpbmplY3QoUmVuZGVyZXIyKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxhbnk+IHwgbnVsbCA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHMgPSBbdGhpcy5fZWxlbWVudFJlZl07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FsdGVybmF0aXZlVG8gPSB7XG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVF06ICgpOiBDb250ZW50RGVuc2l0eU1vZGUgPT5cbiAgICAgICAgICAgIHRoaXMuX2lzU3VwcG9ydGVkKENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpID8gQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCA6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRF06ICgpOiBDb250ZW50RGVuc2l0eU1vZGUgPT5cbiAgICAgICAgICAgIHRoaXMuX2lzU3VwcG9ydGVkKENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUKSA/IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUIDogQ29udGVudERlbnNpdHlNb2RlLkNPWlksXG4gICAgICAgIFtDb250ZW50RGVuc2l0eU1vZGUuQ09aWV06ICgpOiBDb250ZW50RGVuc2l0eU1vZGUgPT4gQ29udGVudERlbnNpdHlNb2RlLkNPWlkgLy8gTm8gYWx0ZXJuYXRpdmUgaGVyZSwgZXZlcnlvbmUgc2hvdWxkIHN1cHBvcnQgaXRcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihfaW5qZWN0b3I6IEluamVjdG9yLCBfcHJvdmlkZWRDb25maWc/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3MpIHtcbiAgICAgICAgc3VwZXIoaW5pdGlhbENvbnRlbnREZW5zaXR5KF9pbmplY3RvciwgX3Byb3ZpZGVkQ29uZmlnKSk7XG5cbiAgICAgICAgdGhpcy5fZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IGRlc3Ryb3llZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLmRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyxcbiAgICAgICAgICAgIC4uLih0aGlzLl9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyPy5jb25maWcgPz8ge30pLFxuICAgICAgICAgICAgLi4uKF9wcm92aWRlZENvbmZpZyB8fCB7fSlcbiAgICAgICAgfTtcblxuICAgICAgICBnZXRDaGFuZ2VzU291cmNlJCh7XG4gICAgICAgICAgICBkZWZhdWx0Q29udGVudERlbnNpdHk6IHRoaXMudmFsdWUsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eURpcmVjdGl2ZTogdGhpcy5fY29udGVudERlbnNpdHlEaXJlY3RpdmUgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudERlbnNpdHlTZXJ2aWNlOiB0aGlzLl9nbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgcGFyZW50Q29udGVudERlbnNpdHlTZXJ2aWNlOiB0aGlzLmNvbmZpZy5yZXN0cmljdENoaWxkQ29udGVudERlbnNpdHlcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LmFzT2JzZXJ2YWJsZSgpID8/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRlbnNpdHkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ29udGVudERlbnNpdHlPYnNlcnZlcjogZGVuc2l0eSBjaGFuZ2VkIHRvICR7ZGVuc2l0eX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzU3VwcG9ydGVkKGRlbnNpdHkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiAke2RlbnNpdHl9IGlzIG5vdCBzdXBwb3J0ZWQuIEZhaWxpbmcgYmFjayB0byBhbHRlcm5hdGl2ZSBvbmUuYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWx0ZXJuYXRpdmVUb1tkZW5zaXR5XSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29udGVudERlbnNpdHlPYnNlcnZlcjogZGVuc2l0eSAke2RlbnNpdHl9IGlzIG5vdCBzdXBwb3J0ZWRgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVuc2l0eTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dChkZW5zaXR5KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBseUNsYXNzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb21wYWN0JC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNUKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvenkkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPWlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5uZXh0KGRlbnNpdHkgPT09IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdW1lKC4uLmNvbnN1bWVyczogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmNvbmNhdCguLi5jb25zdW1lcnMubWFwKChjKSA9PiBjLmVsZW1lbnRSZWYpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wbGV0ZXMgdGhlIHN0cmVhbSBhbmQgY2xvc2VzIGFsbCBpbnRlcm5hbCBzdWJzY3JpcHRpb25zLlxuICAgICAqL1xuICAgIG92ZXJyaWRlIGNvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICBzdXBlci5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvbmRlbnNlZCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5faXNDb3p5JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvbXBhY3QkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzID0gW107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZW1vdmVDb25zdW1lcihjb25zdW1lcjogQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9lbGVtZW50cy5zcGxpY2UodGhpcy5fZWxlbWVudHMuaW5kZXhPZihjb25zdW1lci5lbGVtZW50UmVmKSwgMSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBseUNsYXNzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnPy5tb2RpZmllcnMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RpZmllcnMgPSB0aGlzLmNvbmZpZy5tb2RpZmllcnM7XG5cbiAgICAgICAgY29uc3QgcGFyZW50Q29udGVudERlbnNpdHlFcXVhbCA9IHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LnZhbHVlID09PSB0aGlzLnZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIE9iamVjdC52YWx1ZXMobW9kaWZpZXJzKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW5kZXJlcj8ucmVtb3ZlQ2xhc3MoZWxlbWVudD8ubmF0aXZlRWxlbWVudCwgY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBTaW1wbHkgcmVtb3ZlIGFsbCBtb2RpZmllcnMgZnJvbSBjdXJyZW50IGVsZW1lbnQuIENvbnRlbnQgZGVuc2l0eSBzdGF0ZSBpcyBjb3ZlcmVkIGJ5IHBhcmVudCBlbGVtZW50LlxuICAgICAgICAgICAgaWYgKHBhcmVudENvbnRlbnREZW5zaXR5RXF1YWwgJiYgIXRoaXMuY29uZmlnLmFsd2F5c0FkZE1vZGlmaWVycykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXI/LmFkZENsYXNzKGVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQsIG1vZGlmaWVyc1t0aGlzLnZhbHVlXSEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQ2hlY2sgaWYgdGhlIGdpdmVuIGRlbnNpdHkgaXMgc3VwcG9ydGVkICovXG4gICAgcHJpdmF0ZSBfaXNTdXBwb3J0ZWQoZGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5zdXBwb3J0ZWRDb250ZW50RGVuc2l0eT8uaW5jbHVkZXMoZGVuc2l0eSkgPz8gZmFsc2U7XG4gICAgfVxufVxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1kZW5zaXR5LW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvY29udGVudC1kZW5zaXR5L3NlcnZpY2VzL2NvbnRlbnQtZGVuc2l0eS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUVWLE1BQU0sRUFDTixVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixTQUFTLEVBRVosTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTlGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7QUFFNUcsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEdBQVEsRUFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSyxHQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBRXZILE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBa0IsRUFBRSxxQkFBMEMsRUFBYyxFQUFFLENBQzNGLENBQUMscUJBQXFCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FB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Q0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQzNFLENBQUM7OEdBL0xRLHNCQUFzQjtrSEFBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRmFjdG9yeVNhbnNQcm92aWRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3RGbGFncyxcbiAgICBJbmplY3RvcixcbiAgICBSZW5kZXJlcjIsXG4gICAgU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzIH0gZnJvbSAnLi4vY2xhc3Nlcy9jb250ZW50LWRlbnNpdHktb2JzZXJ2ZXIuc2V0dGluZ3MnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlclRhcmdldCB9IGZyb20gJy4uL2NvbnRlbnQtZGVuc2l0eS50eXBlcyc7XG5pbXBvcnQgeyBnZXRDaGFuZ2VzU291cmNlJCB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWNoYW5nZXMtc291cmNlLnByb3ZpZGVyJztcbmltcG9ydCB7IEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2dsb2JhbC1jb250ZW50LWRlbnNpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDT05URU5UX0RFTlNJVFlfRElSRUNUSVZFIH0gZnJvbSAnLi4vdG9rZW5zL2NvbnRlbnQtZGVuc2l0eS1kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnLi4vdHlwZXMvY29udGVudC1kZW5zaXR5Lm1vZGUnO1xuaW1wb3J0IHsgZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzIH0gZnJvbSAnLi4vdmFyaWFibGVzL2RlZmF1bHQtY29udGVudC1kZW5zaXR5LWNvbnN1bWVyLWNvbmZpZyc7XG5cbmNvbnN0IGlzRmFjdG9yeVByb3ZpZGVyID0gKG9iajogYW55KTogb2JqIGlzIEZhY3RvcnlTYW5zUHJvdmlkZXIgPT4gISEob2JqICYmIChvYmogYXMgRmFjdG9yeVNhbnNQcm92aWRlcikudXNlRmFjdG9yeSk7XG5cbmNvbnN0IGdldERlcHMgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBkZWZhdWx0Q29udGVudERlbnNpdHk6IEZhY3RvcnlTYW5zUHJvdmlkZXIpOiBBcnJheTxhbnk+ID0+XG4gICAgKGRlZmF1bHRDb250ZW50RGVuc2l0eS5kZXBzIHx8IFtdKS5tYXAoKGRlcCk6IGFueSA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlcCkpIHtcbiAgICAgICAgICAgIGxldCB0eXBlO1xuICAgICAgICAgICAgbGV0IGZsYWdzID0gSW5qZWN0RmxhZ3MuRGVmYXVsdDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkZXAubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmxhZyA9IGRlcFtpbmRleF1bJ19fTkdfRElfRkxBR19fJ107XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmbGFnID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBmbGFnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBkZXBbaW5kZXhdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpbmplY3Rvci5nZXQodHlwZSwgdW5kZWZpbmVkLCBmbGFncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluamVjdG9yLmdldChkZXAsIHVuZGVmaW5lZCwgSW5qZWN0RmxhZ3MuRGVmYXVsdCk7XG4gICAgfSk7XG5cbmNvbnN0IGdldERlZmF1bHRDb250ZW50RGVuc2l0eSA9IChcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgY29uZmlndXJhdGlvbjogUmVxdWlyZWQ8Q29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzPlxuKTogQ29udGVudERlbnNpdHlNb2RlID0+IHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5ID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkgYXMgQ29udGVudERlbnNpdHlNb2RlO1xuICAgIH1cbiAgICBpZiAoaXNGYWN0b3J5UHJvdmlkZXIoY29uZmlndXJhdGlvbi5kZWZhdWx0Q29udGVudERlbnNpdHkpKSB7XG4gICAgICAgIGNvbnN0IGRlcHMgPSBnZXREZXBzKGluamVjdG9yLCBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eSk7XG4gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uLmRlZmF1bHRDb250ZW50RGVuc2l0eS51c2VGYWN0b3J5KC4uLmRlcHMpO1xuICAgIH1cbiAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KGNvbmZpZ3VyYXRpb24uZGVmYXVsdENvbnRlbnREZW5zaXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59O1xuXG5jb25zdCBpbml0aWFsQ29udGVudERlbnNpdHkgPSAoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIGNvbmZpZ3VyYXRpb24/OiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3Ncbik6IENvbnRlbnREZW5zaXR5TW9kZSA9PiB7XG4gICAgY29uc3Qgc2VydmljZVZhbHVlID0gaW5qZWN0b3IuZ2V0KEdsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSwgbnVsbCwgSW5qZWN0RmxhZ3MuT3B0aW9uYWwpPy5jdXJyZW50Q29udGVudERlbnNpdHk7XG4gICAgaWYgKHNlcnZpY2VWYWx1ZSkge1xuICAgICAgICByZXR1cm4gc2VydmljZVZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0RGVmYXVsdENvbnRlbnREZW5zaXR5KGluamVjdG9yLCB7XG4gICAgICAgIC4uLmRlZmF1bHRDb250ZW50RGVuc2l0eU9ic2VydmVyQ29uZmlncyxcbiAgICAgICAgLi4uKGNvbmZpZ3VyYXRpb24gfHwge30pXG4gICAgfSk7XG59O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29udGVudERlbnNpdHlPYnNlcnZlciBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxDb250ZW50RGVuc2l0eU1vZGU+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNvbnRlbnREZW5zaXR5JCA9IHRvU2lnbmFsKHRoaXMpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY29uZmlnOiBDb250ZW50RGVuc2l0eU9ic2VydmVyU2V0dGluZ3M7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvbXBhY3QkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb3p5JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ29uZGVuc2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGlzQ29tcGFjdFNpZ25hbDogU2lnbmFsPGJvb2xlYW4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBpc0NvenlTaWduYWw6IFNpZ25hbDxib29sZWFuPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgaXNDb25kZW5zZWRTaWduYWw6IFNpZ25hbDxib29sZWFuPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29tcGFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGFjdCQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ296eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ296eSQudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzQ29uZGVuc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDb25kZW5zZWQkLnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ29tcGFjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzQ296eSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaXNDb25kZW5zZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA9IGluamVjdChHbG9iYWxDb250ZW50RGVuc2l0eVNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29udGVudERlbnNpdHlEaXJlY3RpdmUgPSBpbmplY3QoQ09OVEVOVF9ERU5TSVRZX0RJUkVDVElWRSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wYXJlbnRDb250ZW50RGVuc2l0eU9ic2VydmVyID0gaW5qZWN0KENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIHNraXBTZWxmOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIgfCBudWxsID0gaW5qZWN0KFJlbmRlcmVyMik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8YW55PiB8IG51bGwgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRzID0gW3RoaXMuX2VsZW1lbnRSZWZdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hbHRlcm5hdGl2ZVRvID0ge1xuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1RdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09OREVOU0VEKSA/IENvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRUQgOiBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSxcbiAgICAgICAgW0NvbnRlbnREZW5zaXR5TW9kZS5DT05ERU5TRURdOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+XG4gICAgICAgICAgICB0aGlzLl9pc1N1cHBvcnRlZChDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCkgPyBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCA6IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZLFxuICAgICAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAoKTogQ29udGVudERlbnNpdHlNb2RlID0+IENvbnRlbnREZW5zaXR5TW9kZS5DT1pZIC8vIE5vIGFsdGVybmF0aXZlIGhlcmUsIGV2ZXJ5b25lIHNob3VsZCBzdXBwb3J0IGl0XG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoX2luamVjdG9yOiBJbmplY3RvciwgX3Byb3ZpZGVkQ29uZmlnPzogQ29udGVudERlbnNpdHlPYnNlcnZlclNldHRpbmdzKSB7XG4gICAgICAgIHN1cGVyKGluaXRpYWxDb250ZW50RGVuc2l0eShfaW5qZWN0b3IsIF9wcm92aWRlZENvbmZpZykpO1xuICAgICAgICB0aGlzLmlzQ29tcGFjdCQgPSB0aGlzLl9pc0NvbXBhY3QkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmlzQ296eSQgPSB0aGlzLl9pc0NvenkkLmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgICB0aGlzLmlzQ29uZGVuc2VkJCA9IHRoaXMuX2lzQ29uZGVuc2VkJC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5pc0NvbXBhY3RTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzQ29tcGFjdCQsIHsgaW5pdGlhbFZhbHVlOiB0aGlzLl9pc0NvbXBhY3QkLnZhbHVlIH0pO1xuICAgICAgICB0aGlzLmlzQ296eVNpZ25hbCA9IHRvU2lnbmFsKHRoaXMuaXNDb3p5JCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuX2lzQ296eSQudmFsdWUgfSk7XG4gICAgICAgIHRoaXMuaXNDb25kZW5zZWRTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmlzQ29uZGVuc2VkJCwgeyBpbml0aWFsVmFsdWU6IHRoaXMuX2lzQ29uZGVuc2VkJC52YWx1ZSB9KTtcblxuICAgICAgICB0aGlzLl9kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ29udGVudERlbnNpdHlPYnNlcnZlcjogZGVzdHJveWVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJDb25maWdzLFxuICAgICAgICAgICAgLi4uKHRoaXMuX3BhcmVudENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI/LmNvbmZpZyA/PyB7fSksXG4gICAgICAgICAgICAuLi4oX3Byb3ZpZGVkQ29uZmlnIHx8IHt9KVxuICAgICAgICB9O1xuXG4gICAgICAgIGdldENoYW5nZXNTb3VyY2UkKHtcbiAgICAgICAgICAgIGRlZmF1bHRDb250ZW50RGVuc2l0eTogdGhpcy52YWx1ZSxcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5RGlyZWN0aXZlOiB0aGlzLl9jb250ZW50RGVuc2l0eURpcmVjdGl2ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBjb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuX2dsb2JhbENvbnRlbnREZW5zaXR5U2VydmljZSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICBwYXJlbnRDb250ZW50RGVuc2l0eVNlcnZpY2U6IHRoaXMuY29uZmlnLnJlc3RyaWN0Q2hpbGRDb250ZW50RGVuc2l0eVxuICAgICAgICAgICAgICAgID8gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8uYXNPYnNlcnZhYmxlKCkgPz8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZGVuc2l0eSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25maWcuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5IGNoYW5nZWQgdG8gJHtkZW5zaXR5fWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faXNTdXBwb3J0ZWQoZGVuc2l0eSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYENvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZC4gRmFpbGluZyBiYWNrIHRvIGFsdGVybmF0aXZlIG9uZS5gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGl2ZVRvW2RlbnNpdHldKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb250ZW50RGVuc2l0eU9ic2VydmVyOiBkZW5zaXR5ICR7ZGVuc2l0eX0gaXMgbm90IHN1cHBvcnRlZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZW5zaXR5O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkZW5zaXR5KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KGRlbnNpdHkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2xhc3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0NvbXBhY3QkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQ296eSQubmV4dChkZW5zaXR5ID09PSBDb250ZW50RGVuc2l0eU1vZGUuQ09aWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNDb25kZW5zZWQkLm5leHQoZGVuc2l0eSA9PT0gQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN1bWUoLi4uY29uc3VtZXJzOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMuY29uY2F0KC4uLmNvbnN1bWVycy5tYXAoKGMpID0+IGMuZWxlbWVudFJlZikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbXBsZXRlcyB0aGUgc3RyZWFtIGFuZCBjbG9zZXMgYWxsIGludGVybmFsIHN1YnNjcmlwdGlvbnMuXG4gICAgICovXG4gICAgb3ZlcnJpZGUgY29tcGxldGUoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29uZGVuc2VkJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9pc0NvenkkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2lzQ29tcGFjdCQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlciA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbnRlbnREZW5zaXR5RGlyZWN0aXZlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZ2xvYmFsQ29udGVudERlbnNpdHlTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5fZWxlbWVudHMgPSBbXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlbW92ZUNvbnN1bWVyKGNvbnN1bWVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyVGFyZ2V0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnRzLnNwbGljZSh0aGlzLl9lbGVtZW50cy5pbmRleE9mKGNvbnN1bWVyLmVsZW1lbnRSZWYpLCAxKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGx5Q2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWc/Lm1vZGlmaWVycykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGlmaWVycyA9IHRoaXMuY29uZmlnLm1vZGlmaWVycztcblxuICAgICAgICBjb25zdCBwYXJlbnRDb250ZW50RGVuc2l0eUVxdWFsID0gdGhpcy5fcGFyZW50Q29udGVudERlbnNpdHlPYnNlcnZlcj8udmFsdWUgPT09IHRoaXMudmFsdWU7XG5cbiAgICAgICAgdGhpcy5fZWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhtb2RpZmllcnMpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyPy5yZW1vdmVDbGFzcyhlbGVtZW50Py5uYXRpdmVFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIFNpbXBseSByZW1vdmUgYWxsIG1vZGlmaWVycyBmcm9tIGN1cnJlbnQgZWxlbWVudC4gQ29udGVudCBkZW5zaXR5IHN0YXRlIGlzIGNvdmVyZWQgYnkgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgICAgICBpZiAocGFyZW50Q29udGVudERlbnNpdHlFcXVhbCAmJiAhdGhpcy5jb25maWcuYWx3YXlzQWRkTW9kaWZpZXJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcj8uYWRkQ2xhc3MoZWxlbWVudD8ubmF0aXZlRWxlbWVudCwgbW9kaWZpZXJzW3RoaXMudmFsdWVdISk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBDaGVjayBpZiB0aGUgZ2l2ZW4gZGVuc2l0eSBpcyBzdXBwb3J0ZWQgKi9cbiAgICBwcml2YXRlIF9pc1N1cHBvcnRlZChkZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnN1cHBvcnRlZENvbnRlbnREZW5zaXR5Py5pbmNsdWRlcyhkZW5zaXR5KSA/PyBmYWxzZTtcbiAgICB9XG59XG4iXX0=
@@ -9,7 +9,6 @@ export class DatetimeAdapter {
9
9
  constructor() {
10
10
  /** @hidden */
11
11
  this._localeChanges = new Subject();
12
- /** locale changes stream */
13
12
  this.localeChanges = this._localeChanges.asObservable();
14
13
  }
15
14
  /**
@@ -23,6 +22,9 @@ export class DatetimeAdapter {
23
22
  /**
24
23
  * Set hours, minutes and seconds at once.
25
24
  * @param date The date to set time to.
25
+ * @param hours
26
+ * @param minutes
27
+ * @param seconds
26
28
  * @returns The new date instance.
27
29
  */
28
30
  setTime(date, hours, minutes, seconds) {
@@ -61,4 +63,4 @@ export class DatetimeAdapter {
61
63
  this.getSeconds(first) - this.getSeconds(second));
62
64
  }
63
65
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFBckM7UUE2U0ksY0FBYztRQUNOLG1CQUFjLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFdEQsNEJBQTRCO1FBQ25CLGtCQUFhLEdBQXFCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUF5RGxGLENBQUM7SUF2REc7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxJQUFPLEVBQUUsS0FBYSxFQUFFLE9BQWUsRUFBRSxPQUFlO1FBQzVELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLGNBQXNCO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFN0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsY0FBYyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuRSxNQUFNLElBQUksR0FBRyxTQUFTLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRS9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxLQUFRLEVBQUUsTUFBUztRQUMzQixPQUFPLENBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FDbkQsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIERhdGV0aW1lIEFkYXB0ZXIgaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IGVhY2ggYWRhcHRlci5cbiAqIEl0J3MgdXNlZCB0byBlbmNhcHN1bGF0ZSBhIGRhdGUvdGltZSBtYW5pcHVsYXRpb25zIGFzIHJlc3VsdFxuICogb3RoZXJzIHBsYWNlcyB0aGF0IHVzZXMgaXQgcmVtYWluIGRhdGUgdHlwZSBhZ25vc3RpYy5cbiAqXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRldGltZUFkYXB0ZXI8RD4ge1xuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHllYXIgY29tcG9uZW50IG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIHllYXIgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgeWVhciBudW1iZXIuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0WWVhcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgbW9udGggZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbW9udGggbnVtYmVyIChtaW4gMSwgbWF4IDEyKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF5IG9mIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIGRhdGUgb2YgdGhlIG1vbnRoIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGRhdGUgbnVtYmVyIChtaW4gMSwgbWF4IDMxKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXkgb2YgdGhlIHdlZWsgY29tcG9uZW50IG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIGRheSBvZiB0aGUgd2VlayBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBkYXkgb2Ygd2VlayBudW1iZXIgKG1pbiAxLCBtYXggNywgMSA9IFN1bmRheSkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGhvdXJzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIGhvdXJzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGhvdXJzIG51bWJlciAobWluIDAsIG1heCAyMykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0SG91cnMoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBtaW51dGVzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIG1pbnV0ZXMgbnVtYmVyIChtaW4gMCwgbWF4IDU5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNaW51dGVzKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHNlY29uZHMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgc2Vjb25kcyBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBzZWNvbmRzIG51bWJlciAobWluIDAsIG1heCA1OSkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0U2Vjb25kcyhkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXJzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBob3VycyB0by5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgc2V0SG91cnMoZGF0ZTogRCwgaG91cnM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbWludXRlcy5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBzZXQgbWludXRlcyB0by5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgYWJzdHJhY3Qgc2V0TWludXRlcyhkYXRlOiBELCBtaW51dGVzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogU2V0IHNlY29uZHMuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IHNlY29uZHMgdG8uXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogRCwgc2Vjb25kczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSB3ZWVrIG51bWJlciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB3ZWVrIG51bWJlciAobWluIDEsIG1heCA1MykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0V2Vla051bWJlcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBtb250aHMuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdKYW51YXJ5Jywgc2hvcnQgPSAnSmFuJywgbmFycm93ID0gJ0onKS5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoIEphbnVhcnkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGRhdGUgb2YgdGhlIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICcxJy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdTdW5kYXknLCBzaG9ydCA9ICdTdW4nLCBuYXJyb3cgPSAnUycpLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBhbGwgd2Vla2RheSBuYW1lcywgc3RhcnRpbmcgd2l0aCBTdW5kYXkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSB5ZWFyIG5hbWUgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZ2l2ZW4geWVhciAoZS5nLiAnMjAyMCcpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFllYXJOYW1lKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIGZvciB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgbmFtZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0aGUgd2Vlay5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRXZWVrTmFtZShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgaG91ciBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBtaW51dGUgbmFtZXMuXG4gICAgICogQHJldHVybnMgQW4gb3JkZXJlZCBsaXN0IG9mIGFsbCBob3VycyAoMCAtIDI0KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNaW51dGVOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaXN0IG9mIHNlY29uZCBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFNlY29uZE5hbWVzKG9wdGlvbnM6IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgZGF5IHBlcmlvZHMuXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBkYXkgcGVyaW9kcywgc3RhcnRzIGZyb20gQU0gWydBTScsICdQTSddLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMC1pbmRleGVkLCAwID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgd2hvc2UgbW9udGggc2hvdWxkIGJlIGNoZWNrZWQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgZGF0ZSBmcm9tIGEgdXNlci1wcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHBhcnNlLlxuICAgICAqIEBwYXJhbSBwYXJzZUZvcm1hdCBUaGUgZXhwZWN0ZWQgZm9ybWF0IG9mIHRoZSB2YWx1ZSBiZWluZyBwYXJzZWRcbiAgICAgKiAgICAgKHR5cGUgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50KS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGFyc2UodmFsdWU6IHVua25vd24sIHBhcnNlRm9ybWF0OiB1bmtub3duKTogRCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSBhcyBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdC5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgdmFsdWUgdG8gZm9ybWF0LlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBmb3JtYXQoZGF0ZTogTnVsbGFibGU8RD4sIGRpc3BsYXlGb3JtYXQ6IHVua25vd24pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGF0ZSB3aXRoIHRoZSBnaXZlbiB5ZWFyLCBtb250aCwgYW5kIGRhdGUuXG4gICAgICogQHBhcmFtIHllYXIgVGhlIGZ1bGwgeWVhciBvZiB0aGUgZGF0ZS4gKGUuZy4gMTk4OSkuXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZSAoMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBtb250aCBkYXRlLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGguXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlLCBvciBudWxsIGlmIGludmFsaWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXRlPzogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBkYXRlIHdoZXJlIHRpbWUgdmFsdWUgaXMgc2V0IHRvIDBcbiAgICAgKiBAcmV0dXJucyBUb2RheSdzIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9kYXkoKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgZGF0ZSBhbmQgdGltZSBhdCB0aGlzIG1vbWVudC5cbiAgICAgKiBAcmV0dXJucyBkYXRlIGFuZCB0aW1lIGF0IHRoaXMgbW9tZW50LlxuICAgICAqL1xuICAgIGFic3RyYWN0IG5vdygpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBkYXRlLiBZZWFycyBhcmUgY291bnRlZCBhcyBpZiBmbGlwcGluZyAxMiBwYWdlcyBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCB5ZWFyIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgeWVhciB0byBGZWIgMjksIDIwMTYsIHRoZSByZXN1bHRpbmcgZGF0ZSB3aWxsIGJlIEZlYiAyOCwgMjAxNy5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgeWVhcnMgdG8uXG4gICAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRCwgeWVhcnM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBnaXZlbiBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBkYXRlLiBNb250aHMgYXJlIGNvdW50ZWQgYXMgaWYgZmxpcHBpbmcgYSBwYWdlIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIG1vbnRoIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgbW9udGggdG8gSmFuIDMxLCAyMDE3LCB0aGUgcmVzdWx0aW5nIGRhdGUgd2lsbCBiZSBGZWIgMjgsIDIwMTcuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIG1vbnRocyB0by5cbiAgICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRheXMgdG8gdGhlIGRhdGUuIERheXMgYXJlIGNvdW50ZWQgYXMgaWYgbW92aW5nIG9uZSBjZWxsIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIGRheS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgZGF5cyB0by5cbiAgICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEQsIGRheXM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xvbmVcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGNsb25lKGRhdGU6IEQpOiBEO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcy5cbiAgICAgKiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHZhbHVlXG4gICAgICogQHBhcmFtIGRhdGUxIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEBwYXJhbSBkYXRlMiBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHJldHVybnMgSWYgZGF0ZXMgYXJlIGVxdWFsIG9yIG5vdFxuICAgICAqL1xuICAgIGFic3RyYWN0IGRhdGVzRXF1YWwoZGF0ZTE6IE51bGxhYmxlPEQ+LCBkYXRlMjogTnVsbGFibGU8RD4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcyB0YWtpbmcgaW50byBhY2NvdW50IHRpbWUgdmFsdWUgYXMgd2VsbFxuICAgICAqIEBwYXJhbSBkYXRlMSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gZGF0ZTIgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEByZXR1cm5zIElmIGRhdGVzIGFyZSBlcXVhbCBvciBub3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBkYXRlVGltZXNFcXVhbChkYXRlMTogTnVsbGFibGU8RD4sIGRhdGUyOiBOdWxsYWJsZTxEPik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgZGF0ZSBpcyBiZXR3ZWVuIDIgZGF0ZXNcbiAgICAgKiBAcGFyYW0gZGF0ZVRvQ2hlY2sgVGhlIGRhdGUgdG8gY2hlY2sgaWYgaXQncyBpbiBhIHJhbmdlXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBUaGUgc3RhcnQgZGF0ZSBvZiBhIHJhbmdlXG4gICAgICogQHBhcmFtIGVuZERhdGUgVGhlIGVuZCBkYXRlIG9mIGEgcmFuZ2VcbiAgICAgKiBAcmV0dXJucyBJZiBkYXRlIGlzIGluIGEgZ2l2ZW4gZGF0ZSByYW5nZVxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzQmV0d2VlbihkYXRlVG9DaGVjazogRCwgc3RhcnREYXRlOiBELCBlbmREYXRlOiBEKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYmUgY2hlY2tlZFxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTnVsbGFibGU8RD4pOiBkYXRlIGlzIEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBSRkMgMzMzOSBjb21wYXRpYmxlIHN0cmluZyAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRhdGUgc3RyaW5ncyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggbmF0aXZlIEhUTUwgYXR0cmlidXRlc1xuICAgICAqIHN1Y2ggYXMgdGhlIGBtaW5gIG9yIGBtYXhgIGF0dHJpYnV0ZSBvZiBhbiBgPGlucHV0PmAuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSBJU08gZGF0ZSBzdHJpbmcgZm9yLlxuICAgICAqIEByZXR1cm5zIFRoZSBJU08gZGF0ZSBzdHJpbmcgZGF0ZSBzdHJpbmcuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9Jc284NjAxKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIHBlcmlvZCBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgcGVyaW9kIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIGhvdXJzIGluZm8uXG4gICAgICogQHBhcmFtIGRpc3BsYXlGb3JtYXQgVGhlIGZvcm1hdCB0byB1c2UgdG8gZGlzcGxheSB0aGUgZGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyBJZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBtaW51dGVzIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGJlaW5nIHJlZmVyZW5jZWQuXG4gICAgICogQHJldHVybnMgU3RyaW5nIHJlcHJlc2VudGluZyBob3cgbXVjaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGRhdGUgcGFyYW0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgZnJvbU5vdz8oZGF0ZTogRCk6IHN0cmluZztcblxuICAgIC8qKiBjdXJyZW50IGxvY2FsZSAqL1xuICAgIHByb3RlY3RlZCBsb2NhbGU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbG9jYWxlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKiogbG9jYWxlIGNoYW5nZXMgc3RyZWFtICovXG4gICAgcmVhZG9ubHkgbG9jYWxlQ2hhbmdlczogT2JzZXJ2YWJsZTx2b2lkPiA9IHRoaXMuX2xvY2FsZUNoYW5nZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsb2NhbGUgdXNlZCBmb3IgYWxsIGRhdGVzLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgVGhlIG5ldyBsb2NhbGUuXG4gICAgICovXG4gICAgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlO1xuICAgICAgICB0aGlzLl9sb2NhbGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaG91cnMsIG1pbnV0ZXMgYW5kIHNlY29uZHMgYXQgb25jZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBzZXQgdGltZSB0by5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgc2V0VGltZShkYXRlOiBELCBob3VyczogbnVtYmVyLCBtaW51dGVzOiBudW1iZXIsIHNlY29uZHM6IG51bWJlcik6IEQge1xuICAgICAgICBkYXRlID0gdGhpcy5zZXRIb3VycyhkYXRlLCBob3Vycyk7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldE1pbnV0ZXMoZGF0ZSwgbWludXRlcyk7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldFNlY29uZHMoZGF0ZSwgc2Vjb25kcyk7XG4gICAgICAgIHJldHVybiBkYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBBbW91bnQgb2Ygd2Vla3MgaW4gZ2l2ZW4gbW9udGgveWVhclxuICAgICAqIEBwYXJhbSB5ZWFyIFRoZSB5ZWFyIG9mIHRoZSBkYXRlXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZVxuICAgICAqIEBwYXJhbSBmaXJzdERheU9mV2VlayBUaGUgZmlyc3QgZGF5IG9mIHdlZWsuIDEgLSBTdW5kYXksIDIgLSBNb25kYXkuLi5cbiAgICAgKiBAcmV0dXJucyBOdW1iZXIgb2Ygd2Vla3MgaW4gdGhlIGdpdmVuIG1vbnRoXG4gICAgICovXG4gICAgZ2V0QW1vdW50T2ZXZWVrcyh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBmaXJzdE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIDEpO1xuICAgICAgICBjb25zdCBsYXN0T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKTtcblxuICAgICAgICBjb25zdCBkYXlPZmZzZXQgPSAoZmlyc3RPZk1vbnRoLmdldERheSgpIC0gZmlyc3REYXlPZldlZWsgKyA4KSAlIDc7XG4gICAgICAgIGNvbnN0IHVzZWQgPSBkYXlPZmZzZXQgKyBsYXN0T2ZNb250aC5nZXREYXRlKCk7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguY2VpbCh1c2VkIC8gNyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdHdvIGRhdGVzLlxuICAgICAqIEBwYXJhbSBmaXJzdCBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSBzZWNvbmQgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMgMCBpZiB0aGUgZGF0ZXMgYXJlIGVxdWFsLCBhIG51bWJlciBsZXNzIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBlYXJsaWVyLFxuICAgICAqICAgICBhIG51bWJlciBncmVhdGVyIHRoYW4gMCBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBsYXRlci5cbiAgICAgKi9cbiAgICBjb21wYXJlRGF0ZShmaXJzdDogRCwgc2Vjb25kOiBEKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0WWVhcihmaXJzdCkgLSB0aGlzLmdldFllYXIoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNb250aChmaXJzdCkgLSB0aGlzLmdldE1vbnRoKHNlY29uZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0ZShmaXJzdCkgLSB0aGlzLmdldERhdGUoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRIb3VycyhmaXJzdCkgLSB0aGlzLmdldEhvdXJzKHNlY29uZCkgfHxcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlcyhmaXJzdCkgLSB0aGlzLmdldE1pbnV0ZXMoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRTZWNvbmRzKGZpcnN0KSAtIHRoaXMuZ2V0U2Vjb25kcyhzZWNvbmQpXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUtYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9kYXRldGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLGVBQWU7SUFzVGpDO1FBSEEsY0FBYztRQUNOLG1CQUFjLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVELENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsTUFBYztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsT0FBTyxDQUFDLElBQU8sRUFBRSxLQUFhLEVBQUUsT0FBZSxFQUFFLE9BQWU7UUFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsY0FBc0I7UUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3QyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxjQUFjLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLEtBQVEsRUFBRSxNQUFTO1FBQzNCLE9BQU8sQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUNuRCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogRGF0ZXRpbWUgQWRhcHRlciBpcyBhbiBhYnN0cmFjdCBjbGFzcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZWFjaCBhZGFwdGVyLlxuICogSXQncyB1c2VkIHRvIGVuY2Fwc3VsYXRlIGEgZGF0ZS90aW1lIG1hbmlwdWxhdGlvbnMgYXMgcmVzdWx0XG4gKiBvdGhlcnMgcGxhY2VzIHRoYXQgdXNlcyBpdCByZW1haW4gZGF0ZSB0eXBlIGFnbm9zdGljLlxuICpcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGV0aW1lQWRhcHRlcjxEPiB7XG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgeWVhciBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgeWVhciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB5ZWFyIG51bWJlci5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRZZWFyKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBtb250aCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBtb250aCBudW1iZXIgKG1pbiAxLCBtYXggMTIpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1vbnRoKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXkgb2YgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF0ZSBvZiB0aGUgbW9udGggZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgZGF0ZSBudW1iZXIgKG1pbiAxLCBtYXggMzEpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERhdGUoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRheSBvZiB0aGUgd2VlayBjb21wb25lbnQgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgZGF5IG9mIHRoZSB3ZWVrIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIGRheSBvZiB3ZWVrIG51bWJlciAobWluIDEsIG1heCA3LCAxID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXlPZldlZWsoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgaG91cnMgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZXh0cmFjdCB0aGUgaG91cnMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgaG91cnMgbnVtYmVyIChtaW4gMCwgbWF4IDIzKS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRIb3VycyhkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBtaW51dGVzIG9mIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIGV4dHJhY3QgdGhlIG1pbnV0ZXMgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbWludXRlcyBudW1iZXIgKG1pbiAwLCBtYXggNTkpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldE1pbnV0ZXMoZGF0ZTogRCk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgc2Vjb25kcyBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSBzZWNvbmRzIGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIHNlY29uZHMgbnVtYmVyIChtaW4gMCwgbWF4IDU5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRTZWNvbmRzKGRhdGU6IEQpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgaG91cnMuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IGhvdXJzIHRvLlxuICAgICAqIEBwYXJhbSBob3Vyc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBzZXRIb3VycyhkYXRlOiBELCBob3VyczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBtaW51dGVzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBtaW51dGVzIHRvLlxuICAgICAqIEBwYXJhbSBtaW51dGVzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldE1pbnV0ZXMoZGF0ZTogRCwgbWludXRlczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIFNldCBzZWNvbmRzLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIHRvIHNldCBzZWNvbmRzIHRvLlxuICAgICAqIEBwYXJhbSBzZWNvbmRzXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogRCwgc2Vjb25kczogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgd2VlayBudW1iZXIgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBleHRyYWN0IHRoZSB3ZWVrIG51bWJlciBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSB3ZWVrIG51bWJlciAobWluIDEsIG1heCA1MykuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0V2Vla051bWJlcihkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgbmFtZXMgZm9yIHRoZSBtb250aHMuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdKYW51YXJ5Jywgc2hvcnQgPSAnSmFuJywgbmFycm93ID0gJ0onKS5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoIEphbnVhcnkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGRhdGUgb2YgdGhlIG1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICcxJy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRheXMgb2YgdGhlIHdlZWsuXG4gICAgICogQHBhcmFtIHN0eWxlIFRoZSBuYW1pbmcgc3R5bGUgKGUuZy4gbG9uZyA9ICdTdW5kYXknLCBzaG9ydCA9ICdTdW4nLCBuYXJyb3cgPSAnUycpLlxuICAgICAqIEByZXR1cm5zIEFuIG9yZGVyZWQgbGlzdCBvZiBhbGwgd2Vla2RheSBuYW1lcywgc3RhcnRpbmcgd2l0aCBTdW5kYXkuXG4gICAgICovXG4gICAgYWJzdHJhY3QgZ2V0RGF5T2ZXZWVrTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSB5ZWFyIG5hbWUgZnJvbS5cbiAgICAgKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgZ2l2ZW4geWVhciAoZS5nLiAnMjAyMCcpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFllYXJOYW1lKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIGZvciB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBnZXQgdGhlIHdlZWsgbmFtZSBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSB0aGUgd2Vlay5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRXZWVrTmFtZShkYXRlOiBEKTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgaG91ciBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldEhvdXJOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuOyBtZXJpZGlhbjogYm9vbGVhbiB9KTogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgbGlzdCBvZiBtaW51dGUgbmFtZXMuXG4gICAgICogQHJldHVybnMgQW4gb3JkZXJlZCBsaXN0IG9mIGFsbCBob3VycyAoMCAtIDI0KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRNaW51dGVOYW1lcyhvcHRpb25zOiB7IHR3b0RpZ2l0OiBib29sZWFuIH0pOiBzdHJpbmdbXTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBsaXN0IG9mIHNlY29uZCBuYW1lcy5cbiAgICAgKiBAcmV0dXJucyBBbiBvcmRlcmVkIGxpc3Qgb2YgYWxsIGhvdXJzICgwIC0gMjQpLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldFNlY29uZE5hbWVzKG9wdGlvbnM6IHsgdHdvRGlnaXQ6IGJvb2xlYW4gfSk6IHN0cmluZ1tdO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGxpc3Qgb2YgZGF5IHBlcmlvZHMuXG4gICAgICogQHJldHVybnMgTGlzdCBvZiBkYXkgcGVyaW9kcywgc3RhcnRzIGZyb20gQU0gWydBTScsICdQTSddLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGdldERheVBlcmlvZE5hbWVzKCk6IFtzdHJpbmcsIHN0cmluZ107XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuXG4gICAgICogQHJldHVybnMgVGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayAoMC1pbmRleGVkLCAwID0gU3VuZGF5KS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgd2hvc2UgbW9udGggc2hvdWxkIGJlIGNoZWNrZWQuXG4gICAgICogQHJldHVybnMgVGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBEKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIGEgZGF0ZSBmcm9tIGEgdXNlci1wcm92aWRlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHBhcnNlLlxuICAgICAqIEBwYXJhbSBwYXJzZUZvcm1hdCBUaGUgZXhwZWN0ZWQgZm9ybWF0IG9mIHRoZSB2YWx1ZSBiZWluZyBwYXJzZWRcbiAgICAgKiAgICAgKHR5cGUgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50KS5cbiAgICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgcGFyc2UodmFsdWU6IHVua25vd24sIHBhcnNlRm9ybWF0OiB1bmtub3duKTogRCB8IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXRzIGEgZGF0ZSBhcyBhIHN0cmluZyBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZvcm1hdC5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgdmFsdWUgdG8gZm9ybWF0LlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZy5cbiAgICAgKi9cbiAgICBhYnN0cmFjdCBmb3JtYXQoZGF0ZTogTnVsbGFibGU8RD4sIGRpc3BsYXlGb3JtYXQ6IHVua25vd24pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZGF0ZSB3aXRoIHRoZSBnaXZlbiB5ZWFyLCBtb250aCwgYW5kIGRhdGUuXG4gICAgICogQHBhcmFtIHllYXIgVGhlIGZ1bGwgeWVhciBvZiB0aGUgZGF0ZS4gKGUuZy4gMTk4OSkuXG4gICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBvZiB0aGUgZGF0ZSAoMSA9IEphbnVhcnkpLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIDEyLlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBtb250aCBkYXRlLiBNdXN0IGJlIGFuIGludGVnZXIgMSAtIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGguXG4gICAgICogQHJldHVybnMgVGhlIG5ldyBkYXRlLCBvciBudWxsIGlmIGludmFsaWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgY3JlYXRlRGF0ZSh5ZWFyOiBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXRlPzogbnVtYmVyKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdG9kYXkncyBkYXRlIHdoZXJlIHRpbWUgdmFsdWUgaXMgc2V0IHRvIDBcbiAgICAgKiBAcmV0dXJucyBUb2RheSdzIGRhdGUuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9kYXkoKTogRDtcblxuICAgIC8qKlxuICAgICAqIEdldHMgZGF0ZSBhbmQgdGltZSBhdCB0aGlzIG1vbWVudC5cbiAgICAgKiBAcmV0dXJucyBkYXRlIGFuZCB0aW1lIGF0IHRoaXMgbW9tZW50LlxuICAgICAqL1xuICAgIGFic3RyYWN0IG5vdygpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBkYXRlLiBZZWFycyBhcmUgY291bnRlZCBhcyBpZiBmbGlwcGluZyAxMiBwYWdlcyBvbiB0aGVcbiAgICAgKiBjYWxlbmRhciBmb3IgZWFjaCB5ZWFyIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgeWVhciB0byBGZWIgMjksIDIwMTYsIHRoZSByZXN1bHRpbmcgZGF0ZSB3aWxsIGJlIEZlYiAyOCwgMjAxNy5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgeWVhcnMgdG8uXG4gICAgICogQHBhcmFtIHllYXJzIFRoZSBudW1iZXIgb2YgeWVhcnMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIGFkZGVkLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGFkZENhbGVuZGFyWWVhcnMoZGF0ZTogRCwgeWVhcnM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHRoZSBnaXZlbiBudW1iZXIgb2YgbW9udGhzIHRvIHRoZSBkYXRlLiBNb250aHMgYXJlIGNvdW50ZWQgYXMgaWYgZmxpcHBpbmcgYSBwYWdlIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIG1vbnRoIGFuZCB0aGVuIGZpbmRpbmcgdGhlIGNsb3Nlc3QgZGF0ZSBpbiB0aGUgbmV3IG1vbnRoLiBGb3IgZXhhbXBsZSB3aGVuXG4gICAgICogYWRkaW5nIDEgbW9udGggdG8gSmFuIDMxLCAyMDE3LCB0aGUgcmVzdWx0aW5nIGRhdGUgd2lsbCBiZSBGZWIgMjgsIDIwMTcuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYWRkIG1vbnRocyB0by5cbiAgICAgKiBAcGFyYW0gbW9udGhzIFRoZSBudW1iZXIgb2YgbW9udGhzIHRvIGFkZCAobWF5IGJlIG5lZ2F0aXZlKS5cbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJNb250aHMoZGF0ZTogRCwgbW9udGhzOiBudW1iZXIpOiBEO1xuXG4gICAgLyoqXG4gICAgICogQWRkcyB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRheXMgdG8gdGhlIGRhdGUuIERheXMgYXJlIGNvdW50ZWQgYXMgaWYgbW92aW5nIG9uZSBjZWxsIG9uIHRoZVxuICAgICAqIGNhbGVuZGFyIGZvciBlYWNoIGRheS5cbiAgICAgKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBhZGQgZGF5cyB0by5cbiAgICAgKiBAcGFyYW0gZGF5cyBUaGUgbnVtYmVyIG9mIGRheXMgdG8gYWRkIChtYXkgYmUgbmVnYXRpdmUpLlxuICAgICAqIEByZXR1cm5zIEEgbmV3IGRhdGUgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZSB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgYWRkZWQuXG4gICAgICovXG4gICAgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IEQsIGRheXM6IG51bWJlcik6IEQ7XG5cbiAgICAvKipcbiAgICAgKiBDbG9uZXMgdGhlIGdpdmVuIGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2xvbmVcbiAgICAgKiBAcmV0dXJucyBBIG5ldyBkYXRlIGVxdWFsIHRvIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGNsb25lKGRhdGU6IEQpOiBEO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcy5cbiAgICAgKiBEb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHZhbHVlXG4gICAgICogQHBhcmFtIGRhdGUxIFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEBwYXJhbSBkYXRlMiBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZSB3aXRoXG4gICAgICogQHJldHVybnMgSWYgZGF0ZXMgYXJlIGVxdWFsIG9yIG5vdFxuICAgICAqL1xuICAgIGFic3RyYWN0IGRhdGVzRXF1YWwoZGF0ZTE6IE51bGxhYmxlPEQ+LCBkYXRlMjogTnVsbGFibGU8RD4pOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2sgZXF1YWxpdHkgb2YgMiBkYXRlcyB0YWtpbmcgaW50byBhY2NvdW50IHRpbWUgdmFsdWUgYXMgd2VsbFxuICAgICAqIEBwYXJhbSBkYXRlMSBUaGUgZmlyc3QgZGF0ZSB0byBjb21wYXJlIHdpdGhcbiAgICAgKiBAcGFyYW0gZGF0ZTIgVGhlIHNlY29uZCBkYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgICAqIEByZXR1cm5zIElmIGRhdGVzIGFyZSBlcXVhbCBvciBub3RcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBkYXRlVGltZXNFcXVhbChkYXRlMTogTnVsbGFibGU8RD4sIGRhdGUyOiBOdWxsYWJsZTxEPik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gY2hlY2sgaWYgZGF0ZSBpcyBiZXR3ZWVuIDIgZGF0ZXNcbiAgICAgKiBAcGFyYW0gZGF0ZVRvQ2hlY2sgVGhlIGRhdGUgdG8gY2hlY2sgaWYgaXQncyBpbiBhIHJhbmdlXG4gICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBUaGUgc3RhcnQgZGF0ZSBvZiBhIHJhbmdlXG4gICAgICogQHBhcmFtIGVuZERhdGUgVGhlIGVuZCBkYXRlIG9mIGEgcmFuZ2VcbiAgICAgKiBAcmV0dXJucyBJZiBkYXRlIGlzIGluIGEgZ2l2ZW4gZGF0ZSByYW5nZVxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzQmV0d2VlbihkYXRlVG9DaGVjazogRCwgc3RhcnREYXRlOiBELCBlbmREYXRlOiBEKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0aGF0IGNoZWNrcyB2YWxpZGl0eSBvZiBjdXJyZW50IGRhdGUuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gYmUgY2hlY2tlZFxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVmFsaWQoZGF0ZTogTnVsbGFibGU8RD4pOiBkYXRlIGlzIEQ7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBSRkMgMzMzOSBjb21wYXRpYmxlIHN0cmluZyAoaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMzMzkpIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIGRhdGUgc3RyaW5ncyB0aGF0IGFyZSBjb21wYXRpYmxlIHdpdGggbmF0aXZlIEhUTUwgYXR0cmlidXRlc1xuICAgICAqIHN1Y2ggYXMgdGhlIGBtaW5gIG9yIGBtYXhgIGF0dHJpYnV0ZSBvZiBhbiBgPGlucHV0PmAuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZ2V0IHRoZSBJU08gZGF0ZSBzdHJpbmcgZm9yLlxuICAgICAqIEByZXR1cm5zIFRoZSBJU08gZGF0ZSBzdHJpbmcgZGF0ZSBzdHJpbmcuXG4gICAgICovXG4gICAgYWJzdHJhY3QgdG9Jc284NjAxKGRhdGU6IEQpOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIHBlcmlvZCBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgcGVyaW9kIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZGlzcGxheUZvcm1hdDogdW5rbm93bik6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBGb3JtYXQgb3B0aW9uIGluY2x1ZGVzIGhvdXJzIGluZm8uXG4gICAgICogQHBhcmFtIGRpc3BsYXlGb3JtYXQgVGhlIGZvcm1hdCB0byB1c2UgdG8gZGlzcGxheSB0aGUgZGF0ZSBhcyBhIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyBJZiB0aW1lIGZvcm1hdCBpbmNsdWRlcyBtaW51dGVzIGluZm8uXG4gICAgICovXG4gICAgYWJzdHJhY3QgaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3VycyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgbWludXRlcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEZvcm1hdCBvcHRpb24gaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqIEBwYXJhbSBkaXNwbGF5Rm9ybWF0IFRoZSBmb3JtYXQgdG8gdXNlIHRvIGRpc3BsYXkgdGhlIGRhdGUgYXMgYSBzdHJpbmcuXG4gICAgICogQHJldHVybnMgSWYgdGltZSBmb3JtYXQgaW5jbHVkZXMgc2Vjb25kcyBpbmZvLlxuICAgICAqL1xuICAgIGFic3RyYWN0IGlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhkaXNwbGF5Rm9ybWF0OiB1bmtub3duKTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBkYXRlIFRoZSBkYXRlIGJlaW5nIHJlZmVyZW5jZWQuXG4gICAgICogQHJldHVybnMgU3RyaW5nIHJlcHJlc2VudGluZyBob3cgbXVjaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGRhdGUgcGFyYW0uXG4gICAgICovXG4gICAgYWJzdHJhY3QgZnJvbU5vdz8oZGF0ZTogRCk6IHN0cmluZztcblxuICAgIC8qKiBsb2NhbGUgY2hhbmdlcyBzdHJlYW0gKi9cbiAgICByZWFkb25seSBsb2NhbGVDaGFuZ2VzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gICAgLyoqIGN1cnJlbnQgbG9jYWxlICovXG4gICAgcHJvdGVjdGVkIGxvY2FsZTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sb2NhbGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sb2NhbGVDaGFuZ2VzID0gdGhpcy5fbG9jYWxlQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbG9jYWxlIHVzZWQgZm9yIGFsbCBkYXRlcy5cbiAgICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBuZXcgbG9jYWxlLlxuICAgICAqL1xuICAgIHNldExvY2FsZShsb2NhbGU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcbiAgICAgICAgdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzIGF0IG9uY2UuXG4gICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc2V0IHRpbWUgdG8uXG4gICAgICogQHBhcmFtIGhvdXJzXG4gICAgICogQHBhcmFtIG1pbnV0ZXNcbiAgICAgKiBAcGFyYW0gc2Vjb25kc1xuICAgICAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBzZXRUaW1lKGRhdGU6IEQsIGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM6IG51bWJlciwgc2Vjb25kczogbnVtYmVyKTogRCB7XG4gICAgICAgIGRhdGUgPSB0aGlzLnNldEhvdXJzKGRhdGUsIGhvdXJzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0TWludXRlcyhkYXRlLCBtaW51dGVzKTtcbiAgICAgICAgZGF0ZSA9IHRoaXMuc2V0U2Vjb25kcyhkYXRlLCBzZWNvbmRzKTtcbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IEFtb3VudCBvZiB3ZWVrcyBpbiBnaXZlbiBtb250aC95ZWFyXG4gICAgICogQHBhcmFtIHllYXIgVGhlIHllYXIgb2YgdGhlIGRhdGVcbiAgICAgKiBAcGFyYW0gbW9udGggVGhlIG1vbnRoIG9mIHRoZSBkYXRlXG4gICAgICogQHBhcmFtIGZpcnN0RGF5T2ZXZWVrIFRoZSBmaXJzdCBkYXkgb2Ygd2Vlay4gMSAtIFN1bmRheSwgMiAtIE1vbmRheS4uLlxuICAgICAqIEByZXR1cm5zIE51bWJlciBvZiB3ZWVrcyBpbiB0aGUgZ2l2ZW4gbW9udGhcbiAgICAgKi9cbiAgICBnZXRBbW91bnRPZldlZWtzKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZmlyc3REYXlPZldlZWs6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGZpcnN0T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgMSk7XG4gICAgICAgIGNvbnN0IGxhc3RPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDApO1xuXG4gICAgICAgIGNvbnN0IGRheU9mZnNldCA9IChmaXJzdE9mTW9udGguZ2V0RGF5KCkgLSBmaXJzdERheU9mV2VlayArIDgpICUgNztcbiAgICAgICAgY29uc3QgdXNlZCA9IGRheU9mZnNldCArIGxhc3RPZk1vbnRoLmdldERhdGUoKTtcblxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHVzZWQgLyA3KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28gZGF0ZXMuXG4gICAgICogQHBhcmFtIGZpcnN0IFRoZSBmaXJzdCBkYXRlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHNlY29uZCBUaGUgc2Vjb25kIGRhdGUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyAwIGlmIHRoZSBkYXRlcyBhcmUgZXF1YWwsIGEgbnVtYmVyIGxlc3MgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGVhcmxpZXIsXG4gICAgICogICAgIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwIGlmIHRoZSBmaXJzdCBkYXRlIGlzIGxhdGVyLlxuICAgICAqL1xuICAgIGNvbXBhcmVEYXRlKGZpcnN0OiBELCBzZWNvbmQ6IEQpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5nZXRZZWFyKGZpcnN0KSAtIHRoaXMuZ2V0WWVhcihzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldE1vbnRoKGZpcnN0KSAtIHRoaXMuZ2V0TW9udGgoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXREYXRlKGZpcnN0KSAtIHRoaXMuZ2V0RGF0ZShzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldEhvdXJzKGZpcnN0KSAtIHRoaXMuZ2V0SG91cnMoc2Vjb25kKSB8fFxuICAgICAgICAgICAgdGhpcy5nZXRNaW51dGVzKGZpcnN0KSAtIHRoaXMuZ2V0TWludXRlcyhzZWNvbmQpIHx8XG4gICAgICAgICAgICB0aGlzLmdldFNlY29uZHMoZmlyc3QpIC0gdGhpcy5nZXRTZWNvbmRzKHNlY29uZClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=
@@ -9,35 +9,24 @@ import { isValidByParams, toIso8601 } from './fd-date.utils';
9
9
  */
10
10
  export class FdDate {
11
11
  /**
12
- * Create FdDate instance of the current moment
12
+ * Create FdDate
13
+ * @param year e.g. 2020
14
+ * @param month 1 = January, 12 = December
15
+ * @param day 1 - 31
16
+ * @param hour 0 - 23
17
+ * @param minute 0 - 59
18
+ * @param second 0 - 59
13
19
  */
14
- static getNow() {
15
- return FdDate.getFdDateByDate(new Date());
16
- }
17
- /**
18
- * Gets today's FdDate where hour, minute and second is set to 0
19
- */
20
- static getToday() {
21
- return FdDate.getNow().setTime(0, 0, 0);
22
- }
23
- /**
24
- * Convert js date object to FdDate model
25
- */
26
- static getFdDateByDate(date) {
27
- return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
28
- }
29
- /** Create a date object */
30
- constructor(...args) {
31
- if (args.length === 0) {
20
+ constructor(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) {
21
+ if (year === undefined) {
32
22
  return FdDate.getNow();
33
23
  }
34
- let [year, month = 1, day = 1, hour = 0, minute = 0, second = 0] = args;
35
- year = Number.parseInt(year, 10);
36
- month = Number.parseInt(month, 10);
37
- day = Number.parseInt(day, 10);
38
- hour = Number.parseInt(hour, 10);
39
- minute = Number.parseInt(minute, 10);
40
- second = Number.parseInt(second, 10);
24
+ year = Number.parseInt(year + '', 10);
25
+ month = Number.parseInt(month + '', 10);
26
+ day = Number.parseInt(day + '', 10);
27
+ hour = Number.parseInt(hour + '', 10);
28
+ minute = Number.parseInt(minute + '', 10);
29
+ second = Number.parseInt(second + '', 10);
41
30
  this._isValid = isValidByParams({
42
31
  year,
43
32
  month,
@@ -54,6 +43,24 @@ export class FdDate {
54
43
  this.second = this._isValid ? second : NaN;
55
44
  return this;
56
45
  }
46
+ /**
47
+ * Create FdDate instance of the current moment
48
+ */
49
+ static getNow() {
50
+ return FdDate.getFdDateByDate(new Date());
51
+ }
52
+ /**
53
+ * Gets today's FdDate where hour, minute and second is set to 0
54
+ */
55
+ static getToday() {
56
+ return FdDate.getNow().setTime(0, 0, 0);
57
+ }
58
+ /**
59
+ * Convert js date object to FdDate model
60
+ */
61
+ static getFdDateByDate(date) {
62
+ return new FdDate(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds());
63
+ }
57
64
  /**
58
65
  * Set hour, minute and second data
59
66
  * @param hour
@@ -155,4 +162,4 @@ export class FdDate {
155
162
  return toIso8601(this).split('T')[1];
156
163
  }
157
164
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFxQ2Y7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNULE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFFBQVE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVU7UUFDN0IsT0FBTyxJQUFJLE1BQU0sQ0FDYixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQ2YsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ3BCLENBQUM7SUFDTixDQUFDO0lBa0JELDJCQUEyQjtJQUMzQixZQUFZLEdBQUcsSUFBVztRQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE9BQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFeEUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7WUFDNUIsSUFBSTtZQUNKLEtBQUs7WUFDTCxHQUFHO1lBQ0gsSUFBSTtZQUNKLE1BQU07WUFDTixNQUFNO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFFM0MsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLElBQVksRUFBRSxNQUFlLEVBQUUsTUFBZTtRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsSUFBSTtZQUNKLE1BQU07WUFDTixNQUFNO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7U0FDckI7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQy9EO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNGLHNEQUFzRDtRQUN0RCxnRUFBZ0U7UUFDaEUsbUZBQW1GO1FBQ25GLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDckIsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNQLE9BQU8sSUFBSSxZQUFZLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sa0JBQWtCLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNILE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sa0JBQWtCLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDckIsT0FBTyxrQkFBa0IsQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTlZBTElEX0RBVEVfRVJST1IgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc1ZhbGlkQnlQYXJhbXMsIHRvSXNvODYwMSB9IGZyb20gJy4vZmQtZGF0ZS51dGlscyc7XG5cbi8qKlxuICogRmREYXRlIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGRhdGUgYW5kIHRpbWUuXG4gKlxuICogSXQncyBhIHNpbXBsaWZpZWQgYW5hbG9nIG9mIG5hdGl2ZSBEYXRlIGluc3RhbmNlLlxuICogSXQgZ2l2ZXMgc29tZSBjb252ZW5pZW5jZSBtZXRob2RzIHRvIHdvcmsgd2l0aCBkYXRlIG9yIHRpbWUgZGF0YS5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBGZERhdGUge1xuICAgIC8qKlxuICAgICAqIFRoZSB5ZWFyIG9mIHRoZSBkYXRlLlxuICAgICAqL1xuICAgIHllYXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtb250aCBvZiB0aGUgZGF0ZS4gMSA9IEphbnVhcnksIDEyID0gRGVjZW1iZXIuXG4gICAgICovXG4gICAgbW9udGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERheSBvZiB0aGUgZGF0ZS4gU3RhcnRzIGF0IDEuXG4gICAgICovXG4gICAgZGF5OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIGhvdXJzLiAwIC0gMjMuXG4gICAgICovXG4gICAgaG91cjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBtaW51dGVzLiAwIC0gNTkuXG4gICAgICovXG4gICAgbWludXRlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIHNlY29uZHMuIDAgLSA1OS5cbiAgICAgKi9cbiAgICBzZWNvbmQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRpb24gc3RhdGVcbiAgICAgKi9cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzVmFsaWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgRmREYXRlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IG1vbWVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROb3coKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0b2RheSdzIEZkRGF0ZSB3aGVyZSBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBpcyBzZXQgdG8gMFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUb2RheSgpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpLnNldFRpbWUoMCwgMCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENvbnZlcnQganMgZGF0ZSBvYmplY3QgdG8gRmREYXRlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGdldEZkRGF0ZUJ5RGF0ZShkYXRlOiBEYXRlKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoXG4gICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIEZkRGF0ZSBpbnN0YW5jZSBvZiB0aGUgY3VycmVudCBtb21lbnRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpO1xuICAgIC8qKlxuICAgICAqIENyZWF0ZSBGZERhdGVcbiAgICAgKiBAcGFyYW0geWVhciBlLmcuIDIwMjBcbiAgICAgKiBAcGFyYW0gbW9udGggMSA9IEphbnVhcnksIDEyID0gRGVjZW1iZXJcbiAgICAgKiBAcGFyYW0gZGF5IDEgLSAzMVxuICAgICAqIEBwYXJhbSBob3VyIDAgLSAyM1xuICAgICAqIEBwYXJhbSBtaW51dGUgMCAtIDU5XG4gICAgICogQHBhcmFtIHNlY29uZCAwIC0gNTlcbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuaWZpZWQtc2lnbmF0dXJlc1xuICAgIGNvbnN0cnVjdG9yKHllYXI6IG51bWJlciwgbW9udGg/OiBudW1iZXIsIGRheT86IG51bWJlciwgaG91cj86IG51bWJlciwgbWludXRlPzogbnVtYmVyLCBzZWNvbmQ/OiBudW1iZXIpO1xuXG4gICAgLyoqIENyZWF0ZSBhIGRhdGUgb2JqZWN0ICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IFt5ZWFyLCBtb250aCA9IDEsIGRheSA9IDEsIGhvdXIgPSAwLCBtaW51dGUgPSAwLCBzZWNvbmQgPSAwXSA9IGFyZ3M7XG5cbiAgICAgICAgeWVhciA9IE51bWJlci5wYXJzZUludCh5ZWFyLCAxMCk7XG4gICAgICAgIG1vbnRoID0gTnVtYmVyLnBhcnNlSW50KG1vbnRoLCAxMCk7XG4gICAgICAgIGRheSA9IE51bWJlci5wYXJzZUludChkYXksIDEwKTtcbiAgICAgICAgaG91ciA9IE51bWJlci5wYXJzZUludChob3VyLCAxMCk7XG4gICAgICAgIG1pbnV0ZSA9IE51bWJlci5wYXJzZUludChtaW51dGUsIDEwKTtcbiAgICAgICAgc2Vjb25kID0gTnVtYmVyLnBhcnNlSW50KHNlY29uZCwgMTApO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc1ZhbGlkQnlQYXJhbXMoe1xuICAgICAgICAgICAgeWVhcixcbiAgICAgICAgICAgIG1vbnRoLFxuICAgICAgICAgICAgZGF5LFxuICAgICAgICAgICAgaG91cixcbiAgICAgICAgICAgIG1pbnV0ZSxcbiAgICAgICAgICAgIHNlY29uZFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnllYXIgPSB0aGlzLl9pc1ZhbGlkID8geWVhciA6IE5hTjtcbiAgICAgICAgdGhpcy5tb250aCA9IHRoaXMuX2lzVmFsaWQgPyBtb250aCA6IE5hTjtcbiAgICAgICAgdGhpcy5kYXkgPSB0aGlzLl9pc1ZhbGlkID8gZGF5IDogTmFOO1xuICAgICAgICB0aGlzLmhvdXIgPSB0aGlzLl9pc1ZhbGlkID8gaG91ciA6IE5hTjtcbiAgICAgICAgdGhpcy5taW51dGUgPSB0aGlzLl9pc1ZhbGlkID8gbWludXRlIDogTmFOO1xuICAgICAgICB0aGlzLnNlY29uZCA9IHRoaXMuX2lzVmFsaWQgPyBzZWNvbmQgOiBOYU47XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXIsIG1pbnV0ZSBhbmQgc2Vjb25kIGRhdGFcbiAgICAgKiBAcGFyYW0gaG91clxuICAgICAqIEBwYXJhbSBtaW51dGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kXG4gICAgICovXG4gICAgc2V0VGltZShob3VyOiBudW1iZXIsIG1pbnV0ZT86IG51bWJlciwgc2Vjb25kPzogbnVtYmVyKTogRmREYXRlIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWRCeVBhcmFtcyh7XG4gICAgICAgICAgICB5ZWFyOiB0aGlzLnllYXIsXG4gICAgICAgICAgICBtb250aDogdGhpcy5tb250aCxcbiAgICAgICAgICAgIGRheTogdGhpcy5kYXksXG4gICAgICAgICAgICBob3VyLFxuICAgICAgICAgICAgbWludXRlLFxuICAgICAgICAgICAgc2Vjb25kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5faXNWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gTmFOO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBOYU47XG4gICAgICAgICAgICB0aGlzLnNlY29uZCA9IE5hTjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IGhvdXIgfHwgaG91ciA9PT0gMCA/IGhvdXIgOiB0aGlzLmhvdXI7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZSB8fCBtaW51dGUgPT09IDAgPyBtaW51dGUgOiB0aGlzLm1pbnV0ZTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kIHx8IHNlY29uZCA9PT0gMCA/IHNlY29uZCA6IHRoaXMuc2Vjb25kO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFtb3VudCBvZiBtaWxsaXNlY29uZHMgZnJvbSAwMS4wMS4xOTcwXG4gICAgICovXG4gICAgZ2V0VGltZVN0YW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbnVtYmVyIG9mIHdlZWtkYXkgZXguIFN1bmRheSA9IDEsIE1vbmRheSA9IDIsIFR1ZXNkYXkgPSAzIGV0Yy5cbiAgICAgKi9cbiAgICBnZXREYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkuZ2V0RGF5KCkgKyAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBuYXRpdmUgZGF0ZSBvYmplY3QgZnJvbSBGZERhdGUuXG4gICAgICovXG4gICAgdG9EYXRlKCk6IERhdGUge1xuICAgICAgICAvLyBXZSBoYXZlIHN0cmljdGVyIHZhbGlkYXRpb24gcnVsZXMgdGhhbiBEYXRlIG9iamVjdC5cbiAgICAgICAgLy8gRm9yIGV4YW1wbGUsIERhdGUgYWxsb3dzIHZhbHVlcyBmb3IgbW9udGg9MTAwIG9yIGZvciBkYXk9MTAwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gZG8gdGhpcyB0cmljayBmb3IgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCAtIDEsIHRoaXMuZGF5LCB0aGlzLmhvdXIsIHRoaXMubWludXRlLCB0aGlzLnNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGN1cnJlbnQgRmREYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGlzRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEZkRGF0ZSAmJiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4geXl5eS1tbS1kZFRoaDptbTpzcyBmb3JtYXRcbiAgICAgKi9cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlT2YoKSBtZXRob2QgcmV0dXJucyB0aGUgcHJpbWl0aXZlIHZhbHVlIG9mIGEgRmREYXRlLlxuICAgICAqIFJldHVybnM6IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDIGFuZCB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICB2YWx1ZU9mKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRpbWVTdGFtcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBkYXRlIHN0cmluZyBpbiB5eXl5LW1tLWRkIGZvcm1hdFxuICAgICAqL1xuICAgIHRvRGF0ZVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcykuc3BsaXQoJ1QnKVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGltZSBzdHJpbmcgaW4gaGg6bW06c3MgZm9ybWF0XG4gICAgICovXG4gICAgdG9UaW1lU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9EQVRFX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy55ZWFyIHx8ICF0aGlzLm1vbnRoIHx8ICF0aGlzLmRheSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcykuc3BsaXQoJ1QnKVsxXTtcbiAgICB9XG59XG4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmQtZGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9kYXRldGltZS9mZC1kYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLE1BQU07SUFxQ2Y7Ozs7Ozs7O09BUUc7SUFDSCxZQUNJLElBQWEsRUFDYixRQUFnQixDQUFDLEVBQ2pCLE1BQWMsQ0FBQyxFQUNmLE9BQWUsQ0FBQyxFQUNoQixTQUFpQixDQUFDLEVBQ2xCLFNBQWlCLENBQUM7UUFFbEIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3BCLE9BQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzFCO1FBRUQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFFBQVEsR0FB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QVksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3JCLE9BQU8sa0JBQWtCLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDckIsT0FBTyxrQkFBa0IsQ0FBQztTQUM3QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxFQUFFLENBQUM7U0FDYjtRQUNELE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTlZBTElEX0RBVEVfRVJST1IgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc1ZhbGlkQnlQYXJhbXMsIHRvSXNvODYwMSB9IGZyb20gJy4vZmQtZGF0ZS51dGlscyc7XG5cbi8qKlxuICogRmREYXRlIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGRhdGUgYW5kIHRpbWUuXG4gKlxuICogSXQncyBhIHNpbXBsaWZpZWQgYW5hbG9nIG9mIG5hdGl2ZSBEYXRlIGluc3RhbmNlLlxuICogSXQgZ2l2ZXMgc29tZSBjb252ZW5pZW5jZSBtZXRob2RzIHRvIHdvcmsgd2l0aCBkYXRlIG9yIHRpbWUgZGF0YS5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBGZERhdGUge1xuICAgIC8qKlxuICAgICAqIFRoZSB5ZWFyIG9mIHRoZSBkYXRlLlxuICAgICAqL1xuICAgIHllYXI6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBtb250aCBvZiB0aGUgZGF0ZS4gMSA9IEphbnVhcnksIDEyID0gRGVjZW1iZXIuXG4gICAgICovXG4gICAgbW9udGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIERheSBvZiB0aGUgZGF0ZS4gU3RhcnRzIGF0IDEuXG4gICAgICovXG4gICAgZGF5OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIGhvdXJzLiAwIC0gMjMuXG4gICAgICovXG4gICAgaG91cjogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRGF0ZSBtaW51dGVzLiAwIC0gNTkuXG4gICAgICovXG4gICAgbWludXRlOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRlIHNlY29uZHMuIDAgLSA1OS5cbiAgICAgKi9cbiAgICBzZWNvbmQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFZhbGlkYXRpb24gc3RhdGVcbiAgICAgKi9cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2lzVmFsaWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgRmREYXRlXG4gICAgICogQHBhcmFtIHllYXIgZS5nLiAyMDIwXG4gICAgICogQHBhcmFtIG1vbnRoIDEgPSBKYW51YXJ5LCAxMiA9IERlY2VtYmVyXG4gICAgICogQHBhcmFtIGRheSAxIC0gMzFcbiAgICAgKiBAcGFyYW0gaG91ciAwIC0gMjNcbiAgICAgKiBAcGFyYW0gbWludXRlIDAgLSA1OVxuICAgICAqIEBwYXJhbSBzZWNvbmQgMCAtIDU5XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHllYXI/OiBudW1iZXIsXG4gICAgICAgIG1vbnRoOiBudW1iZXIgPSAxLFxuICAgICAgICBkYXk6IG51bWJlciA9IDEsXG4gICAgICAgIGhvdXI6IG51bWJlciA9IDAsXG4gICAgICAgIG1pbnV0ZTogbnVtYmVyID0gMCxcbiAgICAgICAgc2Vjb25kOiBudW1iZXIgPSAwXG4gICAgKSB7XG4gICAgICAgIGlmICh5ZWFyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBGZERhdGUuZ2V0Tm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICB5ZWFyID0gTnVtYmVyLnBhcnNlSW50KHllYXIgKyAnJywgMTApO1xuICAgICAgICBtb250aCA9IE51bWJlci5wYXJzZUludChtb250aCArICcnLCAxMCk7XG4gICAgICAgIGRheSA9IE51bWJlci5wYXJzZUludChkYXkgKyAnJywgMTApO1xuICAgICAgICBob3VyID0gTnVtYmVyLnBhcnNlSW50KGhvdXIgKyAnJywgMTApO1xuICAgICAgICBtaW51dGUgPSBOdW1iZXIucGFyc2VJbnQobWludXRlICsgJycsIDEwKTtcbiAgICAgICAgc2Vjb25kID0gTnVtYmVyLnBhcnNlSW50KHNlY29uZCArICcnLCAxMCk7XG5cbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWRCeVBhcmFtcyh7XG4gICAgICAgICAgICB5ZWFyLFxuICAgICAgICAgICAgbW9udGgsXG4gICAgICAgICAgICBkYXksXG4gICAgICAgICAgICBob3VyLFxuICAgICAgICAgICAgbWludXRlLFxuICAgICAgICAgICAgc2Vjb25kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMueWVhciA9IHRoaXMuX2lzVmFsaWQgPyB5ZWFyIDogTmFOO1xuICAgICAgICB0aGlzLm1vbnRoID0gdGhpcy5faXNWYWxpZCA/IG1vbnRoIDogTmFOO1xuICAgICAgICB0aGlzLmRheSA9IHRoaXMuX2lzVmFsaWQgPyBkYXkgOiBOYU47XG4gICAgICAgIHRoaXMuaG91ciA9IHRoaXMuX2lzVmFsaWQgPyBob3VyIDogTmFOO1xuICAgICAgICB0aGlzLm1pbnV0ZSA9IHRoaXMuX2lzVmFsaWQgPyBtaW51dGUgOiBOYU47XG4gICAgICAgIHRoaXMuc2Vjb25kID0gdGhpcy5faXNWYWxpZCA/IHNlY29uZCA6IE5hTjtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgRmREYXRlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IG1vbWVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROb3coKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0b2RheSdzIEZkRGF0ZSB3aGVyZSBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBpcyBzZXQgdG8gMFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUb2RheSgpOiBGZERhdGUge1xuICAgICAgICByZXR1cm4gRmREYXRlLmdldE5vdygpLnNldFRpbWUoMCwgMCwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENvbnZlcnQganMgZGF0ZSBvYmplY3QgdG8gRmREYXRlIG1vZGVsXG4gICAgICovXG4gICAgc3RhdGljIGdldEZkRGF0ZUJ5RGF0ZShkYXRlOiBEYXRlKTogRmREYXRlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZERhdGUoXG4gICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICBkYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICBkYXRlLmdldEhvdXJzKCksXG4gICAgICAgICAgICBkYXRlLmdldE1pbnV0ZXMoKSxcbiAgICAgICAgICAgIGRhdGUuZ2V0U2Vjb25kcygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGhvdXIsIG1pbnV0ZSBhbmQgc2Vjb25kIGRhdGFcbiAgICAgKiBAcGFyYW0gaG91clxuICAgICAqIEBwYXJhbSBtaW51dGVcbiAgICAgKiBAcGFyYW0gc2Vjb25kXG4gICAgICovXG4gICAgc2V0VGltZShob3VyOiBudW1iZXIsIG1pbnV0ZT86IG51bWJlciwgc2Vjb25kPzogbnVtYmVyKTogRmREYXRlIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGlzVmFsaWRCeVBhcmFtcyh7XG4gICAgICAgICAgICB5ZWFyOiB0aGlzLnllYXIsXG4gICAgICAgICAgICBtb250aDogdGhpcy5tb250aCxcbiAgICAgICAgICAgIGRheTogdGhpcy5kYXksXG4gICAgICAgICAgICBob3VyLFxuICAgICAgICAgICAgbWludXRlLFxuICAgICAgICAgICAgc2Vjb25kXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5faXNWYWxpZCkge1xuICAgICAgICAgICAgdGhpcy5ob3VyID0gTmFOO1xuICAgICAgICAgICAgdGhpcy5taW51dGUgPSBOYU47XG4gICAgICAgICAgICB0aGlzLnNlY29uZCA9IE5hTjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaG91ciA9IGhvdXIgfHwgaG91ciA9PT0gMCA/IGhvdXIgOiB0aGlzLmhvdXI7XG4gICAgICAgICAgICB0aGlzLm1pbnV0ZSA9IG1pbnV0ZSB8fCBtaW51dGUgPT09IDAgPyBtaW51dGUgOiB0aGlzLm1pbnV0ZTtcbiAgICAgICAgICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kIHx8IHNlY29uZCA9PT0gMCA/IHNlY29uZCA6IHRoaXMuc2Vjb25kO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFtb3VudCBvZiBtaWxsaXNlY29uZHMgZnJvbSAwMS4wMS4xOTcwXG4gICAgICovXG4gICAgZ2V0VGltZVN0YW1wKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvRGF0ZSgpLmdldFRpbWUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgbnVtYmVyIG9mIHdlZWtkYXkgZXguIFN1bmRheSA9IDEsIE1vbmRheSA9IDIsIFR1ZXNkYXkgPSAzIGV0Yy5cbiAgICAgKi9cbiAgICBnZXREYXlPZldlZWsoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkuZ2V0RGF5KCkgKyAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBuYXRpdmUgZGF0ZSBvYmplY3QgZnJvbSBGZERhdGUuXG4gICAgICovXG4gICAgdG9EYXRlKCk6IERhdGUge1xuICAgICAgICAvLyBXZSBoYXZlIHN0cmljdGVyIHZhbGlkYXRpb24gcnVsZXMgdGhhbiBEYXRlIG9iamVjdC5cbiAgICAgICAgLy8gRm9yIGV4YW1wbGUsIERhdGUgYWxsb3dzIHZhbHVlcyBmb3IgbW9udGg9MTAwIG9yIGZvciBkYXk9MTAwLlxuICAgICAgICAvLyBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gZG8gdGhpcyB0cmljayBmb3IgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSB2YWxpZGF0aW9uIHN0YXR1c1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKE5hTik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCAtIDEsIHRoaXMuZGF5LCB0aGlzLmhvdXIsIHRoaXMubWludXRlLCB0aGlzLnNlY29uZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHRoYXQgY2hlY2tzIHZhbGlkaXR5IG9mIGN1cnJlbnQgRmREYXRlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGlzRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEZkRGF0ZSAmJiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4geXl5eS1tbS1kZFRoaDptbTpzcyBmb3JtYXRcbiAgICAgKi9cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlT2YoKSBtZXRob2QgcmV0dXJucyB0aGUgcHJpbWl0aXZlIHZhbHVlIG9mIGEgRmREYXRlLlxuICAgICAqIFJldHVybnM6IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGJldHdlZW4gMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDIGFuZCB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICAgKi9cbiAgICB2YWx1ZU9mKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRpbWVTdGFtcCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBkYXRlIHN0cmluZyBpbiB5eXl5LW1tLWRkIGZvcm1hdFxuICAgICAqL1xuICAgIHRvRGF0ZVN0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuaXNEYXRlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfREFURV9FUlJPUjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMueWVhciB8fCAhdGhpcy5tb250aCB8fCAhdGhpcy5kYXkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcykuc3BsaXQoJ1QnKVswXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGltZSBzdHJpbmcgaW4gaGg6bW06c3MgZm9ybWF0XG4gICAgICovXG4gICAgdG9UaW1lU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9EQVRFX0VSUk9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy55ZWFyIHx8ICF0aGlzLm1vbnRoIHx8ICF0aGlzLmRheSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b0lzbzg2MDEodGhpcykuc3BsaXQoJ1QnKVsxXTtcbiAgICB9XG59XG4iXX0=