cmat 0.0.7 → 0.0.9

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 (320) hide show
  1. package/components/adapter/dayjs-datetime-adapter.d.ts +1 -1
  2. package/components/breadcrumb/breadcrumb.service.d.ts +1 -1
  3. package/components/card/card.component.d.ts +1 -1
  4. package/components/cascade/cascade-list/cascade-list.component.d.ts +45 -21
  5. package/components/chip-input/chip-input.component.d.ts +39 -12
  6. package/components/custom-formly/extension/addons.extension.d.ts +2 -0
  7. package/components/custom-formly/index.d.ts +5 -0
  8. package/components/custom-formly/public-api.d.ts +26 -0
  9. package/components/custom-formly/types/button/button.component.d.ts +18 -0
  10. package/components/custom-formly/types/cascade/cascade.component.d.ts +38 -0
  11. package/components/custom-formly/types/checklist/checklist.component.d.ts +41 -0
  12. package/components/custom-formly/types/chips/chips.component.d.ts +27 -0
  13. package/components/custom-formly/types/color-picker/color-picker.component.d.ts +7 -0
  14. package/components/custom-formly/types/date-range/date-range.component.d.ts +20 -0
  15. package/components/custom-formly/types/datepicker/datepicker.component.d.ts +41 -0
  16. package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +44 -0
  17. package/components/custom-formly/types/number/number.component.d.ts +20 -0
  18. package/components/custom-formly/types/radio/radio.component.d.ts +44 -0
  19. package/components/custom-formly/types/rating/rating.component.d.ts +24 -0
  20. package/components/custom-formly/types/repeat/repeat.component.d.ts +16 -0
  21. package/components/custom-formly/types/select/select.component.d.ts +54 -0
  22. package/components/custom-formly/types/select-tree/select-tree.component.d.ts +43 -0
  23. package/components/custom-formly/types/stepper/horizontal/stepper.component.d.ts +9 -0
  24. package/components/custom-formly/types/stepper/stepper.type.d.ts +6 -0
  25. package/components/custom-formly/types/stepper/vertical/stepper.component.d.ts +9 -0
  26. package/components/custom-formly/types/table/table.component.d.ts +43 -0
  27. package/components/custom-formly/types/tabs/tab.component.d.ts +8 -0
  28. package/components/custom-formly/types/tags/tags.component.d.ts +41 -0
  29. package/components/custom-formly/types/textarea/textarea.component.d.ts +13 -0
  30. package/components/custom-formly/types/upload/upload.component.d.ts +31 -0
  31. package/components/custom-formly/wrappers/addons/addons.component.d.ts +10 -0
  32. package/components/custom-formly/wrappers/card/card.component.d.ts +6 -0
  33. package/components/custom-formly/wrappers/expansion/expansion.component.d.ts +6 -0
  34. package/components/custom-formly/wrappers/panel/panel.component.d.ts +6 -0
  35. package/components/date-range/date-range.component.d.ts +8 -6
  36. package/components/drawer/drawer.component.d.ts +2 -2
  37. package/components/fullscreen/fullscreen.component.d.ts +2 -9
  38. package/components/fullscreen/public-api.d.ts +0 -1
  39. package/components/material-color-picker/material-color-picker.component.d.ts +8 -4
  40. package/components/material-datetimepicker/calendar.d.ts +2 -2
  41. package/components/material-datetimepicker/clock.d.ts +1 -1
  42. package/components/material-datetimepicker/datetimepicker-input.d.ts +1 -1
  43. package/components/material-datetimepicker/datetimepicker-toggle.d.ts +1 -1
  44. package/components/material-datetimepicker/datetimepicker.d.ts +5 -10
  45. package/components/material-datetimepicker/month-view.d.ts +1 -2
  46. package/components/material-datetimepicker/multi-year-view.d.ts +1 -1
  47. package/components/material-datetimepicker/time.d.ts +2 -2
  48. package/components/material-datetimepicker/year-view.d.ts +1 -1
  49. package/components/navigation/horizontal/components/basic/basic.component.d.ts +1 -1
  50. package/components/navigation/horizontal/components/branch/branch.component.d.ts +1 -1
  51. package/components/navigation/horizontal/horizontal.component.d.ts +2 -2
  52. package/components/navigation/vertical/components/aside/aside.component.d.ts +1 -1
  53. package/components/navigation/vertical/components/basic/basic.component.d.ts +1 -7
  54. package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +1 -1
  55. package/components/navigation/vertical/components/group/group.component.d.ts +1 -1
  56. package/components/navigation/vertical/vertical.component.d.ts +5 -5
  57. package/components/popover/popover-trigger.d.ts +1 -1
  58. package/components/popover/popover.component.d.ts +3 -3
  59. package/components/rating/rating.component.d.ts +38 -9
  60. package/components/select-search/select-search.component.d.ts +4 -4
  61. package/components/select-tree/select-tree.component.d.ts +50 -21
  62. package/components/toast/toast.component.d.ts +4 -4
  63. package/components/transfer-picker/filter/filter.component.d.ts +1 -1
  64. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +2 -2
  65. package/components/transfer-picker/transfer-picker.component.d.ts +1 -1
  66. package/components/upload/files.type.d.ts +22 -0
  67. package/components/upload/files.util.service.d.ts +20 -0
  68. package/components/upload/index.d.ts +5 -0
  69. package/components/upload/public-api.d.ts +4 -0
  70. package/components/upload/upload-queue/upload-queue.component.d.ts +39 -0
  71. package/components/upload/upload.component.d.ts +32 -0
  72. package/esm2022/animations/public-api.mjs +2 -2
  73. package/esm2022/components/adapter/dayjs-date-adapter.mjs +6 -6
  74. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +5 -5
  75. package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
  76. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  77. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +6 -6
  78. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +5 -5
  79. package/esm2022/components/card/card.component.mjs +5 -5
  80. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +7 -7
  81. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +207 -114
  82. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +4 -4
  83. package/esm2022/components/chip-input/chip-input.component.mjs +152 -49
  84. package/esm2022/components/custom-formly/cmat-components-custom-formly.mjs +5 -0
  85. package/esm2022/components/custom-formly/extension/addons.extension.mjs +13 -0
  86. package/esm2022/components/custom-formly/public-api.mjs +27 -0
  87. package/esm2022/components/custom-formly/types/button/button.component.mjs +39 -0
  88. package/esm2022/components/custom-formly/types/cascade/cascade.component.mjs +71 -0
  89. package/esm2022/components/custom-formly/types/checklist/checklist.component.mjs +161 -0
  90. package/esm2022/components/custom-formly/types/chips/chips.component.mjs +55 -0
  91. package/esm2022/components/custom-formly/types/color-picker/color-picker.component.mjs +15 -0
  92. package/esm2022/components/custom-formly/types/date-range/date-range.component.mjs +25 -0
  93. package/esm2022/components/custom-formly/types/datepicker/datepicker.component.mjs +51 -0
  94. package/esm2022/components/custom-formly/types/multicheckbox/multicheckbox.component.mjs +89 -0
  95. package/esm2022/components/custom-formly/types/number/number.component.mjs +27 -0
  96. package/esm2022/components/custom-formly/types/radio/radio.component.mjs +88 -0
  97. package/esm2022/components/custom-formly/types/rating/rating.component.mjs +27 -0
  98. package/esm2022/components/custom-formly/types/repeat/repeat.component.mjs +28 -0
  99. package/esm2022/components/custom-formly/types/select/select.component.mjs +169 -0
  100. package/esm2022/components/custom-formly/types/select-tree/select-tree.component.mjs +66 -0
  101. package/esm2022/components/custom-formly/types/stepper/horizontal/stepper.component.mjs +31 -0
  102. package/esm2022/components/custom-formly/types/stepper/stepper.type.mjs +2 -0
  103. package/esm2022/components/custom-formly/types/stepper/vertical/stepper.component.mjs +31 -0
  104. package/esm2022/components/custom-formly/types/table/table.component.mjs +116 -0
  105. package/esm2022/components/custom-formly/types/tabs/tab.component.mjs +19 -0
  106. package/esm2022/components/custom-formly/types/tags/tags.component.mjs +149 -0
  107. package/esm2022/components/custom-formly/types/textarea/textarea.component.mjs +25 -0
  108. package/esm2022/components/custom-formly/types/upload/upload.component.mjs +58 -0
  109. package/esm2022/components/custom-formly/wrappers/addons/addons.component.mjs +92 -0
  110. package/esm2022/components/custom-formly/wrappers/card/card.component.mjs +14 -0
  111. package/esm2022/components/custom-formly/wrappers/expansion/expansion.component.mjs +14 -0
  112. package/esm2022/components/custom-formly/wrappers/panel/panel.component.mjs +12 -0
  113. package/esm2022/components/date-range/date-range.component.mjs +26 -17
  114. package/esm2022/components/drawer/drawer.component.mjs +5 -5
  115. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  116. package/esm2022/components/fullscreen/fullscreen.component.mjs +16 -73
  117. package/esm2022/components/fullscreen/public-api.mjs +1 -2
  118. package/esm2022/components/highlight/highlight.component.mjs +5 -5
  119. package/esm2022/components/highlight/highlight.service.mjs +3 -3
  120. package/esm2022/components/json-editor/json-editor.component.mjs +3 -3
  121. package/esm2022/components/masonry/masonry.component.mjs +5 -5
  122. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +22 -12
  123. package/esm2022/components/material-datetimepicker/calendar-body.mjs +3 -3
  124. package/esm2022/components/material-datetimepicker/calendar.mjs +11 -12
  125. package/esm2022/components/material-datetimepicker/clock.mjs +5 -5
  126. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +4 -5
  127. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  128. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +9 -9
  129. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +17 -22
  130. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -6
  131. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +7 -8
  132. package/esm2022/components/material-datetimepicker/time.mjs +8 -8
  133. package/esm2022/components/material-datetimepicker/year-view.mjs +7 -8
  134. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +8 -8
  135. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +8 -8
  136. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +5 -5
  137. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +6 -6
  138. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +6 -6
  139. package/esm2022/components/navigation/navigation.service.mjs +3 -3
  140. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +11 -11
  141. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +7 -24
  142. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +10 -10
  143. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +5 -5
  144. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +9 -9
  145. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +6 -6
  146. package/esm2022/components/navigation/vertical/vertical.component.mjs +11 -11
  147. package/esm2022/components/pagination/pagination.component.mjs +10 -10
  148. package/esm2022/components/pagination/pagination.directive.mjs +4 -4
  149. package/esm2022/components/pagination/pagination.pipe.mjs +4 -4
  150. package/esm2022/components/pagination/pagination.service.mjs +3 -3
  151. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +6 -6
  152. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +5 -5
  153. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +6 -6
  154. package/esm2022/components/popover/popover-trigger.mjs +5 -5
  155. package/esm2022/components/popover/popover.component.mjs +8 -9
  156. package/esm2022/components/popover/popover.target.mjs +3 -3
  157. package/esm2022/components/progress-bar/progress-bar.component.mjs +6 -6
  158. package/esm2022/components/rating/rating.component.mjs +122 -23
  159. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  160. package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
  161. package/esm2022/components/select-search/select-search.component.mjs +15 -15
  162. package/esm2022/components/select-tree/select-tree.component.mjs +281 -157
  163. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +9 -9
  164. package/esm2022/components/timeline/timeline.component.mjs +5 -5
  165. package/esm2022/components/toast/toast-modal.component.mjs +5 -5
  166. package/esm2022/components/toast/toast.component.mjs +6 -6
  167. package/esm2022/components/toast/toast.service.mjs +3 -3
  168. package/esm2022/components/transfer-picker/filter/filter.component.mjs +9 -9
  169. package/esm2022/components/transfer-picker/search/search.component.mjs +6 -6
  170. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +11 -11
  171. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +5 -5
  172. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +7 -7
  173. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +4 -4
  174. package/esm2022/components/upload/cmat-components-upload.mjs +5 -0
  175. package/esm2022/components/upload/files.type.mjs +2 -0
  176. package/esm2022/components/upload/files.util.service.mjs +100 -0
  177. package/esm2022/components/upload/public-api.mjs +5 -0
  178. package/esm2022/components/upload/upload-queue/upload-queue.component.mjs +154 -0
  179. package/esm2022/components/upload/upload.component.mjs +118 -0
  180. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
  181. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  182. package/esm2022/directives/autofocus/autofocus.directive.mjs +3 -3
  183. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  184. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  185. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +3 -3
  186. package/esm2022/directives/digit-only/digit-only.directive.mjs +3 -3
  187. package/esm2022/directives/digit-only/mask.directive.mjs +3 -3
  188. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
  189. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +5 -5
  190. package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
  191. package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
  192. package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
  193. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
  194. package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
  195. package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
  196. package/esm2022/pipes/secure/secure-pipe.mjs +5 -5
  197. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  198. package/esm2022/public-api.mjs +1 -1
  199. package/esm2022/services/alert/alert.service.mjs +7 -7
  200. package/esm2022/services/alert/enum.mjs +2 -2
  201. package/esm2022/services/config/config.service.mjs +5 -5
  202. package/esm2022/services/config/urlStateConfig.service.mjs +5 -5
  203. package/esm2022/services/confirmation/confirmation.service.mjs +5 -5
  204. package/esm2022/services/confirmation/dialog/dialog.component.mjs +7 -7
  205. package/esm2022/services/data/data.service.mjs +5 -5
  206. package/esm2022/services/loading/loading.interceptor.mjs +4 -4
  207. package/esm2022/services/loading/loading.service.mjs +3 -3
  208. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  209. package/esm2022/services/media-watcher/media-watcher.service.mjs +5 -5
  210. package/esm2022/services/platform/platform.service.mjs +4 -4
  211. package/esm2022/services/splash-screen/splash-screen.service.mjs +6 -6
  212. package/esm2022/services/title/title.service.mjs +4 -4
  213. package/esm2022/services/translation/translation.service.mjs +3 -3
  214. package/esm2022/services/utils/utils.service.mjs +54 -9
  215. package/fesm2022/cmat-animations.mjs +15 -15
  216. package/fesm2022/cmat-animations.mjs.map +1 -1
  217. package/fesm2022/cmat-components-adapter.mjs +11 -11
  218. package/fesm2022/cmat-components-adapter.mjs.map +1 -1
  219. package/fesm2022/cmat-components-breadcrumb.mjs +11 -11
  220. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  221. package/fesm2022/cmat-components-card.mjs +4 -4
  222. package/fesm2022/cmat-components-card.mjs.map +1 -1
  223. package/fesm2022/cmat-components-cascade.mjs +215 -123
  224. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  225. package/fesm2022/cmat-components-chip-input.mjs +153 -50
  226. package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
  227. package/fesm2022/cmat-components-custom-formly.mjs +1331 -0
  228. package/fesm2022/cmat-components-custom-formly.mjs.map +1 -0
  229. package/fesm2022/cmat-components-date-range.mjs +27 -18
  230. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  231. package/fesm2022/cmat-components-drawer.mjs +8 -8
  232. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  233. package/fesm2022/cmat-components-fullscreen.mjs +16 -73
  234. package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
  235. package/fesm2022/cmat-components-highlight.mjs +7 -7
  236. package/fesm2022/cmat-components-highlight.mjs.map +1 -1
  237. package/fesm2022/cmat-components-json-editor.mjs +3 -3
  238. package/fesm2022/cmat-components-masonry.mjs +4 -4
  239. package/fesm2022/cmat-components-masonry.mjs.map +1 -1
  240. package/fesm2022/cmat-components-material-color-picker.mjs +21 -11
  241. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  242. package/fesm2022/cmat-components-material-datetimepicker.mjs +189 -195
  243. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  244. package/fesm2022/cmat-components-navigation.mjs +166 -183
  245. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  246. package/fesm2022/cmat-components-pagination.mjs +20 -20
  247. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  248. package/fesm2022/cmat-components-password-strength.mjs +13 -13
  249. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  250. package/fesm2022/cmat-components-popover.mjs +13 -14
  251. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  252. package/fesm2022/cmat-components-progress-bar.mjs +6 -6
  253. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  254. package/fesm2022/cmat-components-rating.mjs +121 -22
  255. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  256. package/fesm2022/cmat-components-select-search.mjs +41 -41
  257. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  258. package/fesm2022/cmat-components-select-tree.mjs +281 -157
  259. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  260. package/fesm2022/cmat-components-timeline.mjs +12 -12
  261. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  262. package/fesm2022/cmat-components-toast.mjs +12 -12
  263. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  264. package/fesm2022/cmat-components-transfer-picker.mjs +33 -33
  265. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  266. package/fesm2022/cmat-components-upload.mjs +366 -0
  267. package/fesm2022/cmat-components-upload.mjs.map +1 -0
  268. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  269. package/fesm2022/cmat-directives-autofocus.mjs +3 -3
  270. package/fesm2022/cmat-directives-debounce.mjs +9 -9
  271. package/fesm2022/cmat-directives-digit-only.mjs +6 -6
  272. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  273. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  274. package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
  275. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  276. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  277. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  278. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  279. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  280. package/fesm2022/cmat-pipes-secure.mjs +4 -4
  281. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  282. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  283. package/fesm2022/cmat-services-alert.mjs +6 -6
  284. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  285. package/fesm2022/cmat-services-config.mjs +7 -7
  286. package/fesm2022/cmat-services-config.mjs.map +1 -1
  287. package/fesm2022/cmat-services-confirmation.mjs +11 -11
  288. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  289. package/fesm2022/cmat-services-data.mjs +5 -5
  290. package/fesm2022/cmat-services-data.mjs.map +1 -1
  291. package/fesm2022/cmat-services-loading.mjs +6 -6
  292. package/fesm2022/cmat-services-loading.mjs.map +1 -1
  293. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  294. package/fesm2022/cmat-services-media-watcher.mjs +4 -4
  295. package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
  296. package/fesm2022/cmat-services-platform.mjs +3 -3
  297. package/fesm2022/cmat-services-platform.mjs.map +1 -1
  298. package/fesm2022/cmat-services-splash-screen.mjs +5 -5
  299. package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
  300. package/fesm2022/cmat-services-title.mjs +3 -3
  301. package/fesm2022/cmat-services-title.mjs.map +1 -1
  302. package/fesm2022/cmat-services-translation.mjs +3 -3
  303. package/fesm2022/cmat-services-utils.mjs +53 -8
  304. package/fesm2022/cmat-services-utils.mjs.map +1 -1
  305. package/package.json +30 -18
  306. package/pipes/secure/secure-pipe.d.ts +1 -1
  307. package/services/alert/enum.d.ts +1 -1
  308. package/services/confirmation/confirmation.service.d.ts +1 -1
  309. package/services/data/data.service.d.ts +1 -1
  310. package/services/media-watcher/media-watcher.service.d.ts +1 -1
  311. package/services/title/title.service.d.ts +1 -1
  312. package/services/utils/utils.service.d.ts +1 -0
  313. package/styles/components/bundle.scss +18 -5
  314. package/styles/overrides/angular-material.scss +51 -52
  315. package/styles/tailwind.scss +2 -8
  316. package/styles/themes.scss +7 -7
  317. package/styles/user-themes.scss +1 -1
  318. package/tailwind/plugins/utilities.js +1 -1
  319. package/components/fullscreen/fullscreen.types.d.ts +0 -13
  320. package/esm2022/components/fullscreen/fullscreen.types.mjs +0 -2
@@ -1,6 +1,6 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
1
2
  import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
3
  import { Router } from '@angular/router';
3
- import { BooleanInput } from '@angular/cdk/coercion';
4
4
  import { CmatNavigationService } from '../../../navigation.service';
5
5
  import { CmatNavigationItem } from '../../../navigation.types';
6
6
  import * as i0 from "@angular/core";
@@ -1,5 +1,5 @@
1
- import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
1
  import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
3
3
  import { CmatNavigationService } from '../../../navigation.service';
4
4
  import { CmatNavigationItem } from '../../../navigation.types';
5
5
  import * as i0 from "@angular/core";
@@ -1,12 +1,12 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
2
1
  import { AnimationBuilder } from '@angular/animations';
3
- import { Router } from '@angular/router';
2
+ import { BooleanInput } from '@angular/cdk/coercion';
4
3
  import { ScrollStrategyOptions } from '@angular/cdk/overlay';
4
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, Renderer2, SimpleChanges } from '@angular/core';
5
+ import { Router } from '@angular/router';
5
6
  import { ReplaySubject } from 'rxjs';
6
- import { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';
7
- import { CmatNavigationService } from '../navigation.service';
8
- import { BooleanInput } from '@angular/cdk/coercion';
9
7
  import { CmatUtilsService } from 'cmat/services/utils';
8
+ import { CmatNavigationService } from '../navigation.service';
9
+ import { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class CmatVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {
12
12
  private _animationBuilder;
@@ -1,6 +1,6 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, ViewContainerRef } from '@angular/core';
2
1
  import { Direction, Directionality } from '@angular/cdk/bidi';
3
2
  import { Overlay } from '@angular/cdk/overlay';
3
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, ViewContainerRef } from '@angular/core';
4
4
  import { Subject } from 'rxjs';
5
5
  import { CmatPopoverPanel, CmatTarget } from './popover.interfaces';
6
6
  import { CmatPopoverTriggerEvent } from './popover.type';
@@ -1,9 +1,9 @@
1
- import { ElementRef, EventEmitter, NgZone, OnDestroy, TemplateRef } from '@angular/core';
2
1
  import { AnimationEvent } from '@angular/animations';
3
- import { BooleanInput } from '@angular/cdk/coercion';
4
2
  import { Directionality } from '@angular/cdk/bidi';
5
- import { CmatPopoverPosition, CmatPopoverScrollStrategy, CmatPopoverTriggerEvent } from './popover.type';
3
+ import { BooleanInput } from '@angular/cdk/coercion';
4
+ import { ElementRef, EventEmitter, NgZone, OnDestroy, TemplateRef } from '@angular/core';
6
5
  import { CmatPopoverPanel } from './popover.interfaces';
6
+ import { CmatPopoverPosition, CmatPopoverScrollStrategy, CmatPopoverTriggerEvent } from './popover.type';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class CmatPopoverComponent implements CmatPopoverPanel, OnDestroy {
9
9
  private _dir;
@@ -1,29 +1,58 @@
1
- import { EventEmitter, OnChanges, SimpleChanges, OnInit } from '@angular/core';
2
- import { ControlValueAccessor } from '@angular/forms';
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { EventEmitter, OnChanges, SimpleChanges, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
3
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
4
+ import { MatFormFieldControl } from '@angular/material/form-field';
5
+ import { Subject } from 'rxjs';
3
6
  import * as i0 from "@angular/core";
4
- export declare class CmatRatingComponent implements ControlValueAccessor, OnInit, OnChanges {
7
+ export declare class CmatRatingComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnInit, OnChanges, OnDestroy {
8
+ ngControl: NgControl;
9
+ private _changeDetectorRef;
10
+ id: string;
11
+ private _ratingElementRef;
5
12
  stars: number;
6
13
  readonly: boolean;
7
14
  hover: boolean;
8
15
  half: boolean;
9
- color: string;
10
- value: number;
11
- showMode: 'horizontal' | 'vertical';
16
+ color?: string;
17
+ showMode?: 'horizontal' | 'vertical';
12
18
  valueChange: EventEmitter<any>;
13
19
  starArray: number[];
14
20
  currentValue: number;
21
+ readonly stateChanges: Subject<void>;
22
+ focused: boolean;
23
+ touched: boolean;
24
+ controlType: string;
25
+ constructor(ngControl: NgControl, _changeDetectorRef: ChangeDetectorRef);
15
26
  onModelChange: (value: any) => void;
16
27
  onTouchedChange: () => any;
17
28
  ngOnInit(): void;
18
29
  ngOnChanges(changes: SimpleChanges): void;
30
+ ngOnDestroy(): void;
31
+ onFocus(): void;
32
+ get placeholder(): string;
33
+ set placeholder(value: string);
34
+ private _placeholder;
35
+ get value(): any;
36
+ set value(value: any);
37
+ protected _value: any;
38
+ get empty(): boolean;
39
+ get errorState(): boolean;
40
+ get shouldLabelFloat(): boolean;
41
+ get required(): boolean;
42
+ set required(value: any);
43
+ protected _required: boolean;
44
+ get disabled(): boolean;
45
+ set disabled(value: BooleanInput);
19
46
  writeValue(value: number): void;
47
+ setDisabledState(isDisabled: boolean): void;
20
48
  registerOnChange(fn: any): void;
21
49
  registerOnTouched(fn: any): void;
50
+ setDescribedByIds(ids: string[]): void;
51
+ onContainerClick(): void;
22
52
  isIn(value: number): boolean;
23
53
  onClick(event: any, value: number, half?: boolean): void;
24
54
  onMouseover(event: any, value: number, half?: boolean): void;
25
55
  onMouseleave(): void;
26
- onFocus(): void;
27
- static ɵfac: i0.ɵɵFactoryDeclaration<CmatRatingComponent, never>;
28
- static ɵcmp: i0.ɵɵComponentDeclaration<CmatRatingComponent, "cmat-rating", ["cmatRating"], { "stars": { "alias": "stars"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hover": { "alias": "hover"; "required": false; }; "half": { "alias": "half"; "required": false; }; "color": { "alias": "color"; "required": false; }; "value": { "alias": "value"; "required": false; }; "showMode": { "alias": "showMode"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatRatingComponent, [{ optional: true; self: true; }, null]>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatRatingComponent, "cmat-rating", ["cmatRating"], { "id": { "alias": "id"; "required": false; }; "stars": { "alias": "stars"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "hover": { "alias": "hover"; "required": false; }; "half": { "alias": "half"; "required": false; }; "color": { "alias": "color"; "required": false; }; "showMode": { "alias": "showMode"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
29
58
  }
@@ -1,12 +1,12 @@
1
+ import { ViewportRuler } from '@angular/cdk/scrolling';
1
2
  import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
2
3
  import { ControlValueAccessor, FormControl } from '@angular/forms';
3
- import { MatSelect } from '@angular/material/select';
4
- import { ViewportRuler } from '@angular/cdk/scrolling';
5
- import { Observable } from 'rxjs';
6
- import { CmatSelectSearchClearDirective } from './select-search-clear.directive';
7
4
  import { MatOption } from '@angular/material/core';
8
5
  import { MatFormField } from '@angular/material/form-field';
6
+ import { MatSelect } from '@angular/material/select';
7
+ import { Observable } from 'rxjs';
9
8
  import { CmatSelectNoEntriesFoundDirective } from './select-no-entries-found.directive';
9
+ import { CmatSelectSearchClearDirective } from './select-search-clear.directive';
10
10
  import * as i0 from "@angular/core";
11
11
  export declare class CmatSelectSearchComponent implements OnInit, OnDestroy, ControlValueAccessor {
12
12
  protected matSelect: MatSelect;
@@ -1,29 +1,29 @@
1
- import { AfterViewInit, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
- import { ControlValueAccessor, FormControl } from '@angular/forms';
3
- import { ReplaySubject } from 'rxjs';
1
+ import { BooleanInput } from '@angular/cdk/coercion';
4
2
  import { SelectionModel } from '@angular/cdk/collections';
5
3
  import { FlatTreeControl } from '@angular/cdk/tree';
4
+ import { AfterViewInit, ChangeDetectorRef, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
5
+ import { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';
6
+ import { MatFormFieldControl } from '@angular/material/form-field';
7
+ import { MatSelect } from '@angular/material/select';
6
8
  import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
9
+ import { ReplaySubject, Subject } from 'rxjs';
7
10
  import { CmatSelectTreeFlatNode } from './select-tree.flatnode';
8
11
  import { CmatSelectTreeNode } from './select-tree.node';
9
12
  import * as i0 from "@angular/core";
10
- export declare class CmatSelectTreeComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {
11
- private _cd;
13
+ export declare class CmatSelectTreeComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnChanges, AfterViewInit, OnDestroy {
14
+ ngControl: NgControl;
15
+ private _changeDetectorRef;
16
+ id: string;
12
17
  dataSource: CmatSelectTreeNode[];
13
- showLabel: boolean;
14
18
  noEntriesFoundLabel: string;
15
19
  showNoFoundLabel: boolean;
16
- placeholder: string;
17
- prefixIcon: string;
18
20
  multiple: boolean;
19
- required: boolean;
20
21
  overallSearchEnabled: boolean;
21
22
  canNull: boolean;
22
23
  customTriggerLabelFn: (value: CmatSelectTreeNode[]) => string;
23
24
  customTriggerLabelTemplate: string;
24
25
  expandable: boolean;
25
26
  showToggleAllCheckbox: boolean;
26
- private _matSelect;
27
27
  flatNodeMap: Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>;
28
28
  nestedNodeMap: Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>;
29
29
  selectedParent: CmatSelectTreeFlatNode | null;
@@ -34,23 +34,49 @@ export declare class CmatSelectTreeComponent implements ControlValueAccessor, On
34
34
  overallFilterControl: FormControl;
35
35
  isIndeterminate: boolean;
36
36
  isChecked: boolean;
37
- dataCount: number;
37
+ checkCount: number;
38
38
  selectControl: FormControl;
39
39
  matSelectData: ReplaySubject<any[]>;
40
+ readonly stateChanges: Subject<void>;
41
+ focused: boolean;
42
+ touched: boolean;
43
+ controlType: string;
44
+ private _matSelect;
40
45
  private _unsubscribeAll;
41
- constructor(_cd: ChangeDetectorRef);
46
+ constructor(ngControl: NgControl, _changeDetectorRef: ChangeDetectorRef);
47
+ set matSelect(m: MatSelect);
48
+ clickedOut(): void;
42
49
  getLevel: (node: CmatSelectTreeFlatNode) => number;
43
50
  isExpandable: (node: CmatSelectTreeFlatNode) => boolean;
44
51
  getChildren: (node: CmatSelectTreeNode) => CmatSelectTreeNode[] | null;
45
52
  hasChild: (_: number, _nodeData: CmatSelectTreeFlatNode) => boolean;
46
53
  hasNoContent: (_: number, _nodeData: CmatSelectTreeFlatNode) => boolean;
47
54
  transformer: (node: CmatSelectTreeNode, level: number) => CmatSelectTreeFlatNode;
48
- ngOnInit(): void;
55
+ ngOnChanges(changes: SimpleChanges): void;
49
56
  ngAfterViewInit(): void;
50
57
  ngOnDestroy(): void;
51
- registerOnChange(fn: (value: any) => void): void;
58
+ get placeholder(): string;
59
+ set placeholder(value: string);
60
+ private _placeholder;
61
+ get value(): any;
62
+ set value(value: any);
63
+ protected _value: any;
64
+ get empty(): boolean;
65
+ get errorState(): boolean;
66
+ get shouldLabelFloat(): boolean;
67
+ get required(): boolean;
68
+ set required(value: any);
69
+ protected _required: boolean;
70
+ get disabled(): boolean;
71
+ set disabled(value: BooleanInput);
72
+ protected _disabled: boolean;
73
+ registerOnChange(fn: any): void;
52
74
  registerOnTouched(fn: any): void;
53
75
  setDisabledState(isDisabled: boolean): void;
76
+ setDescribedByIds(ids: string[]): void;
77
+ onContainerClick(): void;
78
+ onFocusIn(): void;
79
+ onFocusOut(event: FocusEvent): void;
54
80
  writeValue(value: any): void;
55
81
  simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string;
56
82
  /** Whether all the descendants of the node are selected. */
@@ -62,17 +88,20 @@ export declare class CmatSelectTreeComponent implements ControlValueAccessor, On
62
88
  /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */
63
89
  todoLeafItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void;
64
90
  clearSelection(): void;
65
- checkAllParentsSelection(node: CmatSelectTreeFlatNode): void;
66
- /** Check root node checked state and change it accordingly */
67
- checkRootNodeSelection(node: CmatSelectTreeFlatNode): void;
68
- getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null;
69
91
  toggleSelectAll(selectAllValue: boolean): void;
70
92
  compareObjects(o1: any, o2: any): boolean;
71
93
  trackByFn(index: number, item: any): any;
94
+ private _onModelChange;
95
+ private _onTouchedChange;
96
+ private _init;
97
+ private _checkAllParentsSelection;
98
+ /** Check root node checked state and change it accordingly */
99
+ private _checkRootNodeSelection;
100
+ private _getParentNode;
72
101
  private _updateChecklistSelection;
73
102
  private _updateSelect;
74
103
  private _applyColumnLevelFilters;
75
- private _resetFilters;
76
- static ɵfac: i0.ɵɵFactoryDeclaration<CmatSelectTreeComponent, never>;
77
- static ɵcmp: i0.ɵɵComponentDeclaration<CmatSelectTreeComponent, "cmat-select-tree", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "noEntriesFoundLabel": { "alias": "noEntriesFoundLabel"; "required": false; }; "showNoFoundLabel": { "alias": "showNoFoundLabel"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "prefixIcon": { "alias": "prefixIcon"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "required": { "alias": "required"; "required": false; }; "overallSearchEnabled": { "alias": "overallSearchEnabled"; "required": false; }; "canNull": { "alias": "canNull"; "required": false; }; "customTriggerLabelFn": { "alias": "customTriggerLabelFn"; "required": false; }; "customTriggerLabelTemplate": { "alias": "customTriggerLabelTemplate"; "required": false; }; "expandable": { "alias": "expandable"; "required": false; }; "showToggleAllCheckbox": { "alias": "showToggleAllCheckbox"; "required": false; }; }, {}, never, never, true, never>;
104
+ private _updateCheckState;
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatSelectTreeComponent, [{ optional: true; self: true; }, null]>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatSelectTreeComponent, "cmat-select-tree", ["cmatSelectTree"], { "id": { "alias": "id"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; "noEntriesFoundLabel": { "alias": "noEntriesFoundLabel"; "required": false; }; "showNoFoundLabel": { "alias": "showNoFoundLabel"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "overallSearchEnabled": { "alias": "overallSearchEnabled"; "required": false; }; "canNull": { "alias": "canNull"; "required": false; }; "customTriggerLabelFn": { "alias": "customTriggerLabelFn"; "required": false; }; "customTriggerLabelTemplate": { "alias": "customTriggerLabelTemplate"; "required": false; }; "expandable": { "alias": "expandable"; "required": false; }; "showToggleAllCheckbox": { "alias": "showToggleAllCheckbox"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
78
107
  }
@@ -1,9 +1,9 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { CmatToastService } from './toast.service';
4
3
  import { CmatToastModel } from './models/toast.model';
4
+ import { CmatToastService } from './toast.service';
5
5
  import * as i0 from "@angular/core";
6
- export declare class CmaToastComponent implements OnInit {
6
+ export declare class CmatToastComponent implements OnInit {
7
7
  private _cmatToastService;
8
8
  toasts$: Observable<CmatToastModel[]>;
9
9
  position$: Observable<string>;
@@ -12,6 +12,6 @@ export declare class CmaToastComponent implements OnInit {
12
12
  listenForToastEvent(): void;
13
13
  clearToast(toastId: any): void;
14
14
  trackByFn(index: number, item: CmatToastModel): any;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<CmaToastComponent, never>;
16
- static ɵcmp: i0.ɵɵComponentDeclaration<CmaToastComponent, "cmat-toast", ["cmatToast"], {}, {}, never, never, true, never>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatToastComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatToastComponent, "cmat-toast", ["cmatToast"], {}, {}, never, never, true, never>;
17
17
  }
@@ -1,6 +1,6 @@
1
- import { OnInit } from '@angular/core';
2
1
  import { CdkOverlayOrigin, Overlay, OverlayRef } from '@angular/cdk/overlay';
3
2
  import { CdkPortal } from '@angular/cdk/portal';
3
+ import { OnInit } from '@angular/core';
4
4
  import { CmatTransferFilterData, CmatTransferFilterItem } from '../interface';
5
5
  import { CmatTransferPickerService } from '../transfer-picker.service';
6
6
  import * as i0 from "@angular/core";
@@ -1,9 +1,9 @@
1
- import { AfterViewInit, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
2
1
  import { SelectionModel } from '@angular/cdk/collections';
3
2
  import { FlatTreeControl } from '@angular/cdk/tree';
3
+ import { AfterViewInit, ChangeDetectorRef, OnDestroy, OnInit } from '@angular/core';
4
4
  import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
5
- import { CmatTransferPickerService } from '../transfer-picker.service';
6
5
  import { CmatSourceOptions, CmatTransferItemFlatNode, CmatTransferItemNode } from '../interface';
6
+ import { CmatTransferPickerService } from '../transfer-picker.service';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class CmatTransferPickerSourceComponent implements OnInit, AfterViewInit, OnDestroy {
9
9
  private _service;
@@ -1,7 +1,7 @@
1
1
  import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { CmatTransferFilterItem, CmatTransferItemFlatNode, CmatTransferItemNode } from './interface';
3
- import { CmatTransferPickerService } from './transfer-picker.service';
4
3
  import { CmatTransferPickerSourceComponent } from './transfer-picker-source/transfer-picker-source.component';
4
+ import { CmatTransferPickerService } from './transfer-picker.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class CmatTransferPickerComponent implements OnInit, AfterViewInit {
7
7
  private _service;
@@ -0,0 +1,22 @@
1
+ export interface FileModel {
2
+ id?: string | null;
3
+ fileName: string;
4
+ filePath: string;
5
+ fileStatus?: 'Uploaded' | 'Processed';
6
+ length: number;
7
+ uploadUserId?: string;
8
+ uploadUserName?: string;
9
+ uploadDate: Date;
10
+ fileType: 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip';
11
+ fileCategory: string;
12
+ data?: any;
13
+ }
14
+ export interface FileCategoryModel {
15
+ name: string;
16
+ value: number;
17
+ }
18
+ export interface FileListModel {
19
+ data: FileModel[];
20
+ dataCount: number;
21
+ category: FileCategoryModel[];
22
+ }
@@ -0,0 +1,20 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { OnDestroy } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { CmatUrlStateConfigService } from 'cmat/services/config';
5
+ import * as i0 from "@angular/core";
6
+ export declare class CmatFilesUtilService implements OnDestroy {
7
+ private _http;
8
+ private _urlStateConfigService;
9
+ private _config;
10
+ private _unsubscribeAll;
11
+ constructor(_http: HttpClient, _urlStateConfigService: CmatUrlStateConfigService);
12
+ ngOnDestroy(): void;
13
+ downloadFile(fileId: string): Observable<any>;
14
+ downloadFileZip(fileIds?: string[]): Observable<any>;
15
+ uploadFile(file: FormData): Observable<any>;
16
+ deleteFile(fileId: string): Observable<any>;
17
+ getFileList(ids?: [], fileName?: string, fileCategory?: string, searchDate?: Date, pageIndex?: number, pageSize?: number): Observable<any>;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatFilesUtilService, never>;
19
+ static ɵprov: i0.ɵɵInjectableDeclaration<CmatFilesUtilService>;
20
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="cmat/components/upload" />
5
+ export * from './public-api';
@@ -0,0 +1,4 @@
1
+ export * from './upload-queue/upload-queue.component';
2
+ export * from './upload.component';
3
+ export * from './files.util.service';
4
+ export * from './files.type';
@@ -0,0 +1,39 @@
1
+ import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
2
+ import { CmatMediaWatcherService } from 'cmat/services/media-watcher';
3
+ import { CmatUploadComponent } from '../upload.component';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CmatUploadQueueComponent implements OnDestroy, AfterViewInit {
6
+ private _changeDetectorRef;
7
+ private _cmatMediaWatcherService;
8
+ fileUploads: QueryList<CmatUploadComponent>;
9
+ fileAlias: string;
10
+ filePath: string;
11
+ fileCategory: string;
12
+ required: boolean;
13
+ autoUpload: boolean;
14
+ multiple: boolean;
15
+ accept: string;
16
+ title: string;
17
+ editMode: boolean;
18
+ filesData: Array<any>;
19
+ outputRemoveIdEvent: EventEmitter<string>;
20
+ outputUploadIdEvent: EventEmitter<string>;
21
+ outputFilesDataEvent: EventEmitter<any>;
22
+ id: string;
23
+ isHandSet: boolean;
24
+ private _unsubscribeAll;
25
+ constructor(_changeDetectorRef: ChangeDetectorRef, _cmatMediaWatcherService: CmatMediaWatcherService);
26
+ onDrop(event: any): void;
27
+ onDropOver(event: any): void;
28
+ ngAfterViewInit(): void;
29
+ ngOnDestroy(): void;
30
+ add(file: any): void;
31
+ upload(event: any): void;
32
+ remove(event: CmatUploadComponent): void;
33
+ uploadAll(): void;
34
+ removeAll(): void;
35
+ choose(): void;
36
+ getData(): any;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatUploadQueueComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatUploadQueueComponent, "cmat-upload-queue", ["cmatUploadQueue"], { "fileAlias": { "alias": "fileAlias"; "required": false; }; "filePath": { "alias": "filePath"; "required": false; }; "fileCategory": { "alias": "fileCategory"; "required": false; }; "required": { "alias": "required"; "required": false; }; "autoUpload": { "alias": "autoUpload"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "title": { "alias": "title"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "filesData": { "alias": "filesData"; "required": false; }; }, { "outputRemoveIdEvent": "outputRemoveIdEvent"; "outputUploadIdEvent": "outputUploadIdEvent"; "outputFilesDataEvent": "outputFilesDataEvent"; }, never, never, true, never>;
39
+ }
@@ -0,0 +1,32 @@
1
+ import { ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
+ import { CmatFilesUtilService } from './files.util.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CmatUploadComponent implements OnInit, OnDestroy {
5
+ private _fileService;
6
+ private _changeDetectorRef;
7
+ fileAlias: string;
8
+ filePath: string;
9
+ fileCategory: string;
10
+ editMode: boolean;
11
+ autoUpload: boolean;
12
+ id: string;
13
+ removeEvent: EventEmitter<CmatUploadComponent>;
14
+ uploadEvent: EventEmitter<any>;
15
+ progressPercentage: number;
16
+ loaded: number;
17
+ total: number;
18
+ isUploading: boolean;
19
+ private _file;
20
+ private _unsubscribeAll;
21
+ constructor(_fileService: CmatFilesUtilService, _changeDetectorRef: ChangeDetectorRef);
22
+ get file(): any;
23
+ set file(file: any);
24
+ get fileType(): 'csv' | 'gif' | 'word' | 'excel' | 'jpg' | 'outlook' | 'pdf' | 'png' | 'ppt' | 'file' | 'text' | 'video' | 'zip';
25
+ ngOnInit(): void;
26
+ ngOnDestroy(): void;
27
+ upload(): void;
28
+ download(): void;
29
+ remove(): void;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<CmatUploadComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<CmatUploadComponent, "cmat-upload", ["cmatUpload"], { "fileAlias": { "alias": "fileAlias"; "required": false; }; "filePath": { "alias": "filePath"; "required": false; }; "fileCategory": { "alias": "fileCategory"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "autoUpload": { "alias": "autoUpload"; "required": false; }; "id": { "alias": "id"; "required": false; }; "file": { "alias": "file"; "required": false; }; }, { "removeEvent": "removeEvent"; "uploadEvent": "uploadEvent"; }, never, never, true, never>;
32
+ }
@@ -3,8 +3,8 @@ import { expandCollapse } from './expand-collapse';
3
3
  import { fadeIn, fadeInBottom, fadeInLeft, fadeInRight, fadeInTop, fadeOut, fadeOutBottom, fadeOutLeft, fadeOutRight, fadeOutTop } from './fade';
4
4
  import { shake } from './shake';
5
5
  import { slideInBottom, slideInLeft, slideInRight, slideInTop, slideOutBottom, slideOutLeft, slideOutRight, slideOutTop } from './slide';
6
- import { zoomIn, zoomOut } from './zoom';
7
6
  import { transform } from './transform';
7
+ import { zoomIn, zoomOut } from './zoom';
8
8
  export const cmatAnimations = [
9
9
  expandCollapse,
10
10
  fadeIn, fadeInTop, fadeInBottom, fadeInLeft, fadeInRight,
@@ -16,4 +16,4 @@ export const cmatAnimations = [
16
16
  dropdown,
17
17
  transform
18
18
  ];
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvYW5pbWF0aW9ucy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ2IsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixjQUFjO0lBQ2QsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDN0QsS0FBSztJQUNMLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDcEQsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYTtJQUN4RCxNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVE7SUFDUixTQUFTO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XHJcbmltcG9ydCB7IGV4cGFuZENvbGxhcHNlIH0gZnJvbSAnLi9leHBhbmQtY29sbGFwc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgZmFkZUluLFxyXG4gICAgZmFkZUluQm90dG9tLFxyXG4gICAgZmFkZUluTGVmdCxcclxuICAgIGZhZGVJblJpZ2h0LFxyXG4gICAgZmFkZUluVG9wLFxyXG4gICAgZmFkZU91dCxcclxuICAgIGZhZGVPdXRCb3R0b20sXHJcbiAgICBmYWRlT3V0TGVmdCxcclxuICAgIGZhZGVPdXRSaWdodCxcclxuICAgIGZhZGVPdXRUb3BcclxufSBmcm9tICcuL2ZhZGUnO1xyXG5pbXBvcnQgeyBzaGFrZSB9IGZyb20gJy4vc2hha2UnO1xyXG5pbXBvcnQge1xyXG4gICAgc2xpZGVJbkJvdHRvbSxcclxuICAgIHNsaWRlSW5MZWZ0LFxyXG4gICAgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVJblRvcCxcclxuICAgIHNsaWRlT3V0Qm90dG9tLFxyXG4gICAgc2xpZGVPdXRMZWZ0LFxyXG4gICAgc2xpZGVPdXRSaWdodCxcclxuICAgIHNsaWRlT3V0VG9wXHJcbn0gZnJvbSAnLi9zbGlkZSc7XHJcbmltcG9ydCB7IHpvb21Jbiwgem9vbU91dCB9IGZyb20gJy4vem9vbSc7XHJcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4vdHJhbnNmb3JtJztcclxuXHJcbmV4cG9ydCBjb25zdCBjbWF0QW5pbWF0aW9ucyA9IFtcclxuICAgIGV4cGFuZENvbGxhcHNlLFxyXG4gICAgZmFkZUluLCBmYWRlSW5Ub3AsIGZhZGVJbkJvdHRvbSwgZmFkZUluTGVmdCwgZmFkZUluUmlnaHQsXHJcbiAgICBmYWRlT3V0LCBmYWRlT3V0VG9wLCBmYWRlT3V0Qm90dG9tLCBmYWRlT3V0TGVmdCwgZmFkZU91dFJpZ2h0LFxyXG4gICAgc2hha2UsXHJcbiAgICBzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tLCBzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHQsXHJcbiAgICB6b29tSW4sIHpvb21PdXQsXHJcbiAgICBkcm9wZG93bixcclxuICAgIHRyYW5zZm9ybVxyXG5dO1xyXG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvYW5pbWF0aW9ucy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxNQUFNLEVBQ04sWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsU0FBUyxFQUNULE9BQU8sRUFDUCxhQUFhLEVBQ2IsV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ2IsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxFQUNWLGNBQWMsRUFDZCxZQUFZLEVBQ1osYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUMxQixjQUFjO0lBQ2QsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDN0QsS0FBSztJQUNMLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVk7SUFDcEQsV0FBVyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYTtJQUN4RCxNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVE7SUFDUixTQUFTO0NBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRyb3Bkb3duIH0gZnJvbSAnLi9kcm9wZG93bic7XHJcbmltcG9ydCB7IGV4cGFuZENvbGxhcHNlIH0gZnJvbSAnLi9leHBhbmQtY29sbGFwc2UnO1xyXG5pbXBvcnQge1xyXG4gICAgZmFkZUluLFxyXG4gICAgZmFkZUluQm90dG9tLFxyXG4gICAgZmFkZUluTGVmdCxcclxuICAgIGZhZGVJblJpZ2h0LFxyXG4gICAgZmFkZUluVG9wLFxyXG4gICAgZmFkZU91dCxcclxuICAgIGZhZGVPdXRCb3R0b20sXHJcbiAgICBmYWRlT3V0TGVmdCxcclxuICAgIGZhZGVPdXRSaWdodCxcclxuICAgIGZhZGVPdXRUb3BcclxufSBmcm9tICcuL2ZhZGUnO1xyXG5pbXBvcnQgeyBzaGFrZSB9IGZyb20gJy4vc2hha2UnO1xyXG5pbXBvcnQge1xyXG4gICAgc2xpZGVJbkJvdHRvbSxcclxuICAgIHNsaWRlSW5MZWZ0LFxyXG4gICAgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVJblRvcCxcclxuICAgIHNsaWRlT3V0Qm90dG9tLFxyXG4gICAgc2xpZGVPdXRMZWZ0LFxyXG4gICAgc2xpZGVPdXRSaWdodCxcclxuICAgIHNsaWRlT3V0VG9wXHJcbn0gZnJvbSAnLi9zbGlkZSc7XHJcbmltcG9ydCB7IHRyYW5zZm9ybSB9IGZyb20gJy4vdHJhbnNmb3JtJztcclxuaW1wb3J0IHsgem9vbUluLCB6b29tT3V0IH0gZnJvbSAnLi96b29tJztcclxuXHJcbmV4cG9ydCBjb25zdCBjbWF0QW5pbWF0aW9ucyA9IFtcclxuICAgIGV4cGFuZENvbGxhcHNlLFxyXG4gICAgZmFkZUluLCBmYWRlSW5Ub3AsIGZhZGVJbkJvdHRvbSwgZmFkZUluTGVmdCwgZmFkZUluUmlnaHQsXHJcbiAgICBmYWRlT3V0LCBmYWRlT3V0VG9wLCBmYWRlT3V0Qm90dG9tLCBmYWRlT3V0TGVmdCwgZmFkZU91dFJpZ2h0LFxyXG4gICAgc2hha2UsXHJcbiAgICBzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tLCBzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0LFxyXG4gICAgc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dExlZnQsIHNsaWRlT3V0UmlnaHQsXHJcbiAgICB6b29tSW4sIHpvb21PdXQsXHJcbiAgICBkcm9wZG93bixcclxuICAgIHRyYW5zZm9ybVxyXG5dO1xyXG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
2
2
  import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
3
3
  import dayjs from 'dayjs';
4
- import utc from 'dayjs/plugin/utc';
4
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
5
5
  import localeData from 'dayjs/plugin/localeData';
6
6
  import LocalizedFormat from 'dayjs/plugin/localizedFormat';
7
- import customParseFormat from 'dayjs/plugin/customParseFormat';
7
+ import utc from 'dayjs/plugin/utc';
8
8
  import * as i0 from "@angular/core";
9
9
  /** InjectionToken for Dayjs date adapter to configure options. */
10
10
  export const CMAT_DAYJS_DATE_ADAPTER_OPTIONS = new InjectionToken('CMAT_DAYJS_DATE_ADAPTER_OPTIONS', {
@@ -179,10 +179,10 @@ export class DayjsDateAdapter extends DateAdapter {
179
179
  dayjs.extend(localeData);
180
180
  this.setLocale(dateLocale);
181
181
  }
182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: CMAT_DAYJS_DATE_ADAPTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
183
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter }); }
182
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DayjsDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: CMAT_DAYJS_DATE_ADAPTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
183
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DayjsDateAdapter }); }
184
184
  }
185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: DayjsDateAdapter, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DayjsDateAdapter, decorators: [{
186
186
  type: Injectable
187
187
  }], ctorParameters: () => [{ type: undefined, decorators: [{
188
188
  type: Optional
@@ -195,4 +195,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
195
195
  type: Inject,
196
196
  args: [CMAT_DAYJS_DATE_ADAPTER_OPTIONS]
197
197
  }] }] });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2FkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sZUFBZSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7O0FBWS9ELGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsaUNBQWlDLEVBQUU7SUFDbkMsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHVDQUF1QztDQUNuRCxDQUFDLENBQUM7QUFFSCxnRUFBZ0U7QUFDaEUsTUFBTSxVQUFVLHVDQUF1QztJQUNuRCxPQUFPO1FBQ0gsTUFBTSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBSSxNQUFjLEVBQUUsYUFBbUM7SUFDakUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQztJQUNELE9B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ZUFBZSxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQS9MUSxnQkFBZ0Isa0JBV08sZUFBZSw2QkFDdkIsK0JBQStCO2tIQVo5QyxnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRjVCLFVBQVU7OzBCQWFNLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQzFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgZGF5anMsIHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmltcG9ydCBsb2NhbGVEYXRhIGZyb20gJ2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhJztcclxuaW1wb3J0IExvY2FsaXplZEZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxpemVkRm9ybWF0JztcclxuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYXlKc0RhdGVBZGFwdGVyT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIFR1cm5zIHRoZSB1c2Ugb2YgdXRjIGRhdGVzIG9uIG9yIG9mZi5cclxuICAgICAqIENoYW5naW5nIHRoaXMgd2lsbCBjaGFuZ2UgaG93IEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBsaWtlIERhdGVQaWNrZXIgb3V0cHV0IGRhdGVzLlxyXG4gICAgICoge0BkZWZhdWx0IGZhbHNlfVxyXG4gICAgICovXHJcbiAgICB1c2VVdGM/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogSW5qZWN0aW9uVG9rZW4gZm9yIERheWpzIGRhdGUgYWRhcHRlciB0byBjb25maWd1cmUgb3B0aW9ucy4gKi9cclxuZXhwb3J0IGNvbnN0IENNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF5SnNEYXRlQWRhcHRlck9wdGlvbnM+KFxyXG4gICAgJ0NNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMnLCB7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbiAgICBmYWN0b3J5OiBDTUFUX0RBWUpTX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUllcclxufSk7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbmV4cG9ydCBmdW5jdGlvbiBDTUFUX0RBWUpTX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUlkoKTogRGF5SnNEYXRlQWRhcHRlck9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB1c2VVdGM6IGZhbHNlXHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiByYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xyXG4gICAgY29uc3QgdmFsdWVzQXJyYXkgPSBBcnJheShsZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlc0FycmF5W2ldID0gdmFsdWVGdW5jdGlvbihpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXNBcnJheTtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG4vKiogQWRhcHRzIERheWpzIERhdGVzIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsLiAqL1xyXG5leHBvcnQgY2xhc3MgRGF5anNEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERheWpzPiB7XHJcbiAgICBwcml2YXRlIF9sb2NhbGVEYXRhOiB7XHJcbiAgICAgICAgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcclxuICAgICAgICBsb25nTW9udGhzOiBzdHJpbmdbXTtcclxuICAgICAgICBzaG9ydE1vbnRoczogc3RyaW5nW107XHJcbiAgICAgICAgZGF0ZXM6IHN0cmluZ1tdO1xyXG4gICAgICAgIGxvbmdEYXlzT2ZXZWVrOiBzdHJpbmdbXTtcclxuICAgICAgICBzaG9ydERheXNPZldlZWs6IHN0cmluZ1tdO1xyXG4gICAgICAgIG5hcnJvd0RheXNPZldlZWs6IHN0cmluZ1tdO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0xPQ0FMRSkgcHVibGljIGRhdGVMb2NhbGU6IHN0cmluZyxcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMpIHByaXZhdGUgX29wdGlvbnM/OiBEYXlKc0RhdGVBZGFwdGVyT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVQYXJzZXIoZGF0ZUxvY2FsZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBfc2hvdWxkVXNlVXRjKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHsgdXNlVXRjIH06IERheUpzRGF0ZUFkYXB0ZXJPcHRpb25zID0gdGhpcy5fb3B0aW9ucyB8fCB7fTtcclxuICAgICAgICByZXR1cm4gISF1c2VVdGM7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuc2V0TG9jYWxlKGxvY2FsZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGRheUpzTG9jYWxlRGF0YSA9IHRoaXMuX2RheUpzKCkubG9jYWxlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX2xvY2FsZURhdGEgPSB7XHJcbiAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEuZmlyc3REYXlPZldlZWsoKSxcclxuICAgICAgICAgICAgbG9uZ01vbnRoczogZGF5SnNMb2NhbGVEYXRhLm1vbnRocygpLFxyXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogZGF5SnNMb2NhbGVEYXRhLm1vbnRoc1Nob3J0KCksXHJcbiAgICAgICAgICAgIGRhdGVzOiByYW5nZSgzMSwgaSA9PiB0aGlzLmNyZWF0ZURhdGUoMjAxNywgMCwgaSArIDEpLmZvcm1hdCgnRCcpKSxcclxuICAgICAgICAgICAgbG9uZ0RheXNPZldlZWs6IHJhbmdlKDcsIGkgPT4gdGhpcy5fZGF5SnMoKS5zZXQoJ2RheScsIGkpLmZvcm1hdCgnZGRkZCcpKSxcclxuICAgICAgICAgICAgc2hvcnREYXlzT2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEud2Vla2RheXNTaG9ydCgpLFxyXG4gICAgICAgICAgICBuYXJyb3dEYXlzT2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEud2Vla2RheXNNaW4oKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFllYXIoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS55ZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9udGgoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5tb250aCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGUoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5kYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF5T2ZXZWVrKGRhdGU6IERheWpzKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoZGF0ZSkuZGF5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBzdHlsZSA9PT0gJ2xvbmcnID8gdGhpcy5fbG9jYWxlRGF0YS5sb25nTW9udGhzIDogdGhpcy5fbG9jYWxlRGF0YS5zaG9ydE1vbnRocztcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmRhdGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgaWYgKHN0eWxlID09PSAnbG9uZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEubG9uZ0RheXNPZldlZWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdHlsZSA9PT0gJ3Nob3J0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5zaG9ydERheXNPZldlZWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLm5hcnJvd0RheXNPZldlZWs7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0WWVhck5hbWUoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5mb3JtYXQoJ1lZWVknKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmZpcnN0RGF5T2ZXZWVrO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE51bURheXNJbk1vbnRoKGRhdGU6IERheWpzKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoZGF0ZSkuZGF5c0luTW9udGgoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9uZShkYXRlOiBEYXlqcyk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgY29uc3QgcmV0dXJuRGF5anMgPSB0aGlzLl9kYXlKcygpXHJcbiAgICAgICAgICAgIC5zZXQoJ3llYXInLCB5ZWFyKVxyXG4gICAgICAgICAgICAuc2V0KCdtb250aCcsIG1vbnRoKVxyXG4gICAgICAgICAgICAuc2V0KCdkYXRlJywgZGF0ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJldHVybkRheWpzO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZGF5KCk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogc3RyaW5nKTogRGF5anMgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnModmFsdWUsIHBhcnNlRm9ybWF0LCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuX2RheUpzKHZhbHVlKS5sb2NhbGUodGhpcy5sb2NhbGUpIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXQoZGF0ZTogRGF5anMsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0RheWpzRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZS5sb2NhbGUodGhpcy5sb2NhbGUpLmZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERheWpzLCB5ZWFyczogbnVtYmVyKTogRGF5anMge1xyXG4gICAgICAgIHJldHVybiBkYXRlLmFkZCh5ZWFycywgJ3llYXInKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBEYXlqcywgbW9udGhzOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKG1vbnRocywgJ21vbnRoJyk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IERheWpzLCBkYXlzOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKGRheXMsICdkYXknKTtcclxuICAgIH1cclxuXHJcbiAgICB0b0lzbzg2MDEoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRlbXB0cyB0byBkZXNlcmlhbGl6ZSBhIHZhbHVlIHRvIGEgdmFsaWQgZGF0ZSBvYmplY3QuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gcGFyc2luZyBpbiB0aGF0XHJcbiAgICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxyXG4gICAgICogc3RyaW5nKS4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgYW55IGRlc2VyaWFsaXphdGlvbiwgaXQgc2ltcGx5IGNoZWNrcyB0aGF0XHJcbiAgICAgKiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYWxyZWFkeSBhIHZhbGlkIGRhdGUgb2JqZWN0IG9yIG51bGwuIFRoZSBgPG1hdC1kYXRlcGlja2VyPmAgd2lsbCBjYWxsIHRoaXNcclxuICAgICAqIG1ldGhvZCBvbiBhbGwgb2YgaXQncyBgQElucHV0KClgIHByb3BlcnRpZXMgdGhhdCBhY2NlcHQgZGF0ZXMuIEl0IGlzIHRoZXJlZm9yZSBwb3NzaWJsZSB0b1xyXG4gICAgICogc3VwcG9ydCBwYXNzaW5nIHZhbHVlcyBmcm9tIHlvdXIgYmFja2VuZCBkaXJlY3RseSB0byB0aGVzZSBwcm9wZXJ0aWVzIGJ5IG92ZXJyaWRpbmcgdGhpcyBtZXRob2RcclxuICAgICAqIHRvIGFsc28gZGVzZXJpYWxpemUgdGhlIGZvcm1hdCB1c2VkIGJ5IHlvdXIgYmFja2VuZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGRlc2VyaWFsaXplZCBpbnRvIGEgZGF0ZSBvYmplY3QuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIGRhdGUgb2JqZWN0LCBlaXRoZXIgYSB2YWxpZCBkYXRlLCBudWxsIGlmIHRoZSB2YWx1ZSBjYW4gYmVcclxuICAgICAqICAgICBkZXNlcmlhbGl6ZWQgaW50byBhIG51bGwgZGF0ZSAoZS5nLiB0aGUgZW1wdHkgc3RyaW5nKSwgb3IgYW4gaW52YWxpZCBkYXRlLlxyXG4gICAgICovXHJcbiAgICBvdmVycmlkZSBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogRGF5anMgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZTogYW55O1xyXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuX2RheUpzKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIC8vIE5PVEU6IGFzc3VtZXMgdGhhdCBjbG9uaW5nIGFsc28gc2V0cyB0aGUgY29ycmVjdCBsb2NhbGUuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuX2RheUpzKHZhbHVlKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RheUpzKGRhdGUpOyAvLyBOT1RFOiBJcyB0aGlzIG5lY2Vzc2FyeSBzaW5jZSBEYXlqcyBpcyBpbW11dGFibGUgYW5kIE1vbWVudCB3YXMgbm90P1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGRheWpzLmlzRGF5anMob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1ZhbGlkKGRhdGU6IERheWpzKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RheUpzKGRhdGUpLmlzVmFsaWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnZhbGlkKCk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZGF5SnMoaW5wdXQ/OiBhbnksIGZvcm1hdD86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogRGF5anMge1xyXG4gICAgICAgIGlmICghdGhpcy5fc2hvdWxkVXNlVXRjKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXlqcyhpbnB1dCwgeyBmb3JtYXQsIGxvY2FsZSB9LCBsb2NhbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF5anMoaW5wdXQsIHsgZm9ybWF0LCBsb2NhbGUsIHV0YzogdGhpcy5fc2hvdWxkVXNlVXRjIH0sIGxvY2FsZSkudXRjKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVBhcnNlcihkYXRlTG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkVXNlVXRjKSB7XHJcbiAgICAgICAgICAgIGRheWpzLmV4dGVuZCh1dGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKExvY2FsaXplZEZvcm1hdCk7XHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxlRGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKGRhdGVMb2NhbGUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL2FkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEtBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3JDLE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxVQUFVLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxlQUFlLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxHQUFHLE1BQU0sa0JBQWtCLENBQUM7O0FBWW5DLGtFQUFrRTtBQUNsRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLGNBQWMsQ0FDN0QsaUNBQWlDLEVBQUU7SUFDbkMsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHVDQUF1QztDQUNuRCxDQUFDLENBQUM7QUFFSCxnRUFBZ0U7QUFDaEUsTUFBTSxVQUFVLHVDQUF1QztJQUNuRCxPQUFPO1FBQ0gsTUFBTSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztBQUNOLENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBSSxNQUFjLEVBQUUsYUFBbUM7SUFDakUsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDN0IsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQztJQUNELE9B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ZUFBZSxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQS9MUSxnQkFBZ0Isa0JBV08sZUFBZSw2QkFDdkIsK0JBQStCO2tIQVo5QyxnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRjVCLFVBQVU7OzBCQWFNLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQzFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0xPQ0FMRSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgZGF5anMsIHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnO1xyXG5pbXBvcnQgbG9jYWxlRGF0YSBmcm9tICdkYXlqcy9wbHVnaW4vbG9jYWxlRGF0YSc7XHJcbmltcG9ydCBMb2NhbGl6ZWRGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2xvY2FsaXplZEZvcm1hdCc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYXlKc0RhdGVBZGFwdGVyT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIFR1cm5zIHRoZSB1c2Ugb2YgdXRjIGRhdGVzIG9uIG9yIG9mZi5cclxuICAgICAqIENoYW5naW5nIHRoaXMgd2lsbCBjaGFuZ2UgaG93IEFuZ3VsYXIgTWF0ZXJpYWwgY29tcG9uZW50cyBsaWtlIERhdGVQaWNrZXIgb3V0cHV0IGRhdGVzLlxyXG4gICAgICoge0BkZWZhdWx0IGZhbHNlfVxyXG4gICAgICovXHJcbiAgICB1c2VVdGM/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogSW5qZWN0aW9uVG9rZW4gZm9yIERheWpzIGRhdGUgYWRhcHRlciB0byBjb25maWd1cmUgb3B0aW9ucy4gKi9cclxuZXhwb3J0IGNvbnN0IENNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48RGF5SnNEYXRlQWRhcHRlck9wdGlvbnM+KFxyXG4gICAgJ0NNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMnLCB7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbiAgICBmYWN0b3J5OiBDTUFUX0RBWUpTX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUllcclxufSk7XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXHJcbmV4cG9ydCBmdW5jdGlvbiBDTUFUX0RBWUpTX0RBVEVfQURBUFRFUl9PUFRJT05TX0ZBQ1RPUlkoKTogRGF5SnNEYXRlQWRhcHRlck9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB1c2VVdGM6IGZhbHNlXHJcbiAgICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiByYW5nZTxUPihsZW5ndGg6IG51bWJlciwgdmFsdWVGdW5jdGlvbjogKGluZGV4OiBudW1iZXIpID0+IFQpOiBUW10ge1xyXG4gICAgY29uc3QgdmFsdWVzQXJyYXkgPSBBcnJheShsZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlc0FycmF5W2ldID0gdmFsdWVGdW5jdGlvbihpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZXNBcnJheTtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG4vKiogQWRhcHRzIERheWpzIERhdGVzIGZvciB1c2Ugd2l0aCBBbmd1bGFyIE1hdGVyaWFsLiAqL1xyXG5leHBvcnQgY2xhc3MgRGF5anNEYXRlQWRhcHRlciBleHRlbmRzIERhdGVBZGFwdGVyPERheWpzPiB7XHJcbiAgICBwcml2YXRlIF9sb2NhbGVEYXRhOiB7XHJcbiAgICAgICAgZmlyc3REYXlPZldlZWs6IG51bWJlcjtcclxuICAgICAgICBsb25nTW9udGhzOiBzdHJpbmdbXTtcclxuICAgICAgICBzaG9ydE1vbnRoczogc3RyaW5nW107XHJcbiAgICAgICAgZGF0ZXM6IHN0cmluZ1tdO1xyXG4gICAgICAgIGxvbmdEYXlzT2ZXZWVrOiBzdHJpbmdbXTtcclxuICAgICAgICBzaG9ydERheXNPZldlZWs6IHN0cmluZ1tdO1xyXG4gICAgICAgIG5hcnJvd0RheXNPZldlZWs6IHN0cmluZ1tdO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9EQVRFX0xPQ0FMRSkgcHVibGljIGRhdGVMb2NhbGU6IHN0cmluZyxcclxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENNQVRfREFZSlNfREFURV9BREFQVEVSX09QVElPTlMpIHByaXZhdGUgX29wdGlvbnM/OiBEYXlKc0RhdGVBZGFwdGVyT3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVQYXJzZXIoZGF0ZUxvY2FsZSk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGdldCBfc2hvdWxkVXNlVXRjKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHsgdXNlVXRjIH06IERheUpzRGF0ZUFkYXB0ZXJPcHRpb25zID0gdGhpcy5fb3B0aW9ucyB8fCB7fTtcclxuICAgICAgICByZXR1cm4gISF1c2VVdGM7XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIuc2V0TG9jYWxlKGxvY2FsZSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGRheUpzTG9jYWxlRGF0YSA9IHRoaXMuX2RheUpzKCkubG9jYWxlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX2xvY2FsZURhdGEgPSB7XHJcbiAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEuZmlyc3REYXlPZldlZWsoKSxcclxuICAgICAgICAgICAgbG9uZ01vbnRoczogZGF5SnNMb2NhbGVEYXRhLm1vbnRocygpLFxyXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogZGF5SnNMb2NhbGVEYXRhLm1vbnRoc1Nob3J0KCksXHJcbiAgICAgICAgICAgIGRhdGVzOiByYW5nZSgzMSwgaSA9PiB0aGlzLmNyZWF0ZURhdGUoMjAxNywgMCwgaSArIDEpLmZvcm1hdCgnRCcpKSxcclxuICAgICAgICAgICAgbG9uZ0RheXNPZldlZWs6IHJhbmdlKDcsIGkgPT4gdGhpcy5fZGF5SnMoKS5zZXQoJ2RheScsIGkpLmZvcm1hdCgnZGRkZCcpKSxcclxuICAgICAgICAgICAgc2hvcnREYXlzT2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEud2Vla2RheXNTaG9ydCgpLFxyXG4gICAgICAgICAgICBuYXJyb3dEYXlzT2ZXZWVrOiBkYXlKc0xvY2FsZURhdGEud2Vla2RheXNNaW4oKSxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldFllYXIoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS55ZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9udGgoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5tb250aCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERhdGUoZGF0ZTogRGF5anMpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5kYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF5T2ZXZWVrKGRhdGU6IERheWpzKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoZGF0ZSkuZGF5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9udGhOYW1lcyhzdHlsZTogJ2xvbmcnIHwgJ3Nob3J0JyB8ICduYXJyb3cnKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiBzdHlsZSA9PT0gJ2xvbmcnID8gdGhpcy5fbG9jYWxlRGF0YS5sb25nTW9udGhzIDogdGhpcy5fbG9jYWxlRGF0YS5zaG9ydE1vbnRocztcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRlTmFtZXMoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmRhdGVzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgaWYgKHN0eWxlID09PSAnbG9uZycpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZURhdGEubG9uZ0RheXNPZldlZWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzdHlsZSA9PT0gJ3Nob3J0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlRGF0YS5zaG9ydERheXNPZldlZWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLm5hcnJvd0RheXNPZldlZWs7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0WWVhck5hbWUoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXlKcyhkYXRlKS5mb3JtYXQoJ1lZWVknKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaXJzdERheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGVEYXRhLmZpcnN0RGF5T2ZXZWVrO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE51bURheXNJbk1vbnRoKGRhdGU6IERheWpzKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoZGF0ZSkuZGF5c0luTW9udGgoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9uZShkYXRlOiBEYXlqcyk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5jbG9uZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZURhdGUoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXRlOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgY29uc3QgcmV0dXJuRGF5anMgPSB0aGlzLl9kYXlKcygpXHJcbiAgICAgICAgICAgIC5zZXQoJ3llYXInLCB5ZWFyKVxyXG4gICAgICAgICAgICAuc2V0KCdtb250aCcsIG1vbnRoKVxyXG4gICAgICAgICAgICAuc2V0KCdkYXRlJywgZGF0ZSk7XHJcbiAgICAgICAgcmV0dXJuIHJldHVybkRheWpzO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZGF5KCk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYXJzZSh2YWx1ZTogYW55LCBwYXJzZUZvcm1hdDogc3RyaW5nKTogRGF5anMgfCBudWxsIHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnModmFsdWUsIHBhcnNlRm9ybWF0LCB0aGlzLmxvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuX2RheUpzKHZhbHVlKS5sb2NhbGUodGhpcy5sb2NhbGUpIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXQoZGF0ZTogRGF5anMsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0RheWpzRGF0ZUFkYXB0ZXI6IENhbm5vdCBmb3JtYXQgaW52YWxpZCBkYXRlLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0ZS5sb2NhbGUodGhpcy5sb2NhbGUpLmZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDYWxlbmRhclllYXJzKGRhdGU6IERheWpzLCB5ZWFyczogbnVtYmVyKTogRGF5anMge1xyXG4gICAgICAgIHJldHVybiBkYXRlLmFkZCh5ZWFycywgJ3llYXInKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBEYXlqcywgbW9udGhzOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKG1vbnRocywgJ21vbnRoJyk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IERheWpzLCBkYXlzOiBudW1iZXIpOiBEYXlqcyB7XHJcbiAgICAgICAgcmV0dXJuIGRhdGUuYWRkKGRheXMsICdkYXknKTtcclxuICAgIH1cclxuXHJcbiAgICB0b0lzbzg2MDEoZGF0ZTogRGF5anMpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBdHRlbXB0cyB0byBkZXNlcmlhbGl6ZSBhIHZhbHVlIHRvIGEgdmFsaWQgZGF0ZSBvYmplY3QuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gcGFyc2luZyBpbiB0aGF0XHJcbiAgICAgKiBkZXNlcmlhbGl6ZSBzaG91bGQgb25seSBhY2NlcHQgbm9uLWFtYmlndW91cywgbG9jYWxlLWluZGVwZW5kZW50IGZvcm1hdHMgKGUuZy4gYSBJU08gODYwMVxyXG4gICAgICogc3RyaW5nKS4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgYW55IGRlc2VyaWFsaXphdGlvbiwgaXQgc2ltcGx5IGNoZWNrcyB0aGF0XHJcbiAgICAgKiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYWxyZWFkeSBhIHZhbGlkIGRhdGUgb2JqZWN0IG9yIG51bGwuIFRoZSBgPG1hdC1kYXRlcGlja2VyPmAgd2lsbCBjYWxsIHRoaXNcclxuICAgICAqIG1ldGhvZCBvbiBhbGwgb2YgaXQncyBgQElucHV0KClgIHByb3BlcnRpZXMgdGhhdCBhY2NlcHQgZGF0ZXMuIEl0IGlzIHRoZXJlZm9yZSBwb3NzaWJsZSB0b1xyXG4gICAgICogc3VwcG9ydCBwYXNzaW5nIHZhbHVlcyBmcm9tIHlvdXIgYmFja2VuZCBkaXJlY3RseSB0byB0aGVzZSBwcm9wZXJ0aWVzIGJ5IG92ZXJyaWRpbmcgdGhpcyBtZXRob2RcclxuICAgICAqIHRvIGFsc28gZGVzZXJpYWxpemUgdGhlIGZvcm1hdCB1c2VkIGJ5IHlvdXIgYmFja2VuZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGRlc2VyaWFsaXplZCBpbnRvIGEgZGF0ZSBvYmplY3QuXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgZGVzZXJpYWxpemVkIGRhdGUgb2JqZWN0LCBlaXRoZXIgYSB2YWxpZCBkYXRlLCBudWxsIGlmIHRoZSB2YWx1ZSBjYW4gYmVcclxuICAgICAqICAgICBkZXNlcmlhbGl6ZWQgaW50byBhIG51bGwgZGF0ZSAoZS5nLiB0aGUgZW1wdHkgc3RyaW5nKSwgb3IgYW4gaW52YWxpZCBkYXRlLlxyXG4gICAgICovXHJcbiAgICBvdmVycmlkZSBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55KTogRGF5anMgfCBudWxsIHtcclxuICAgICAgICBsZXQgZGF0ZTogYW55O1xyXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuX2RheUpzKHZhbHVlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIC8vIE5PVEU6IGFzc3VtZXMgdGhhdCBjbG9uaW5nIGFsc28gc2V0cyB0aGUgY29ycmVjdCBsb2NhbGUuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb25lKHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZGF0ZSA9IHRoaXMuX2RheUpzKHZhbHVlKS50b0lTT1N0cmluZygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGF0ZSAmJiB0aGlzLmlzVmFsaWQoZGF0ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RheUpzKGRhdGUpOyAvLyBOT1RFOiBJcyB0aGlzIG5lY2Vzc2FyeSBzaW5jZSBEYXlqcyBpcyBpbW11dGFibGUgYW5kIE1vbWVudCB3YXMgbm90P1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3VwZXIuZGVzZXJpYWxpemUodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzRGF0ZUluc3RhbmNlKG9iajogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGRheWpzLmlzRGF5anMob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1ZhbGlkKGRhdGU6IERheWpzKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RheUpzKGRhdGUpLmlzVmFsaWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnZhbGlkKCk6IERheWpzIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF5SnMobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZGF5SnMoaW5wdXQ/OiBhbnksIGZvcm1hdD86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogRGF5anMge1xyXG4gICAgICAgIGlmICghdGhpcy5fc2hvdWxkVXNlVXRjKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXlqcyhpbnB1dCwgeyBmb3JtYXQsIGxvY2FsZSB9LCBsb2NhbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF5anMoaW5wdXQsIHsgZm9ybWF0LCBsb2NhbGUsIHV0YzogdGhpcy5fc2hvdWxkVXNlVXRjIH0sIGxvY2FsZSkudXRjKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVBhcnNlcihkYXRlTG9jYWxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkVXNlVXRjKSB7XHJcbiAgICAgICAgICAgIGRheWpzLmV4dGVuZCh1dGMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKExvY2FsaXplZEZvcm1hdCk7XHJcbiAgICAgICAgZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuICAgICAgICBkYXlqcy5leHRlbmQobG9jYWxlRGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKGRhdGVMb2NhbGUpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==