@datarailsshared/datarailsshared 1.4.203-rocket → 1.4.215

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 (365) hide show
  1. package/_datarailsshared.styles.css +4 -4
  2. package/assets/styles/_styles.scss +2 -2
  3. package/assets/styles/colors.scss +4 -1
  4. package/bundles/datarailsshared-datarailsshared.umd.js +8108 -0
  5. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -0
  6. package/datarailsshared-datarailsshared-1.4.215.tgz +0 -0
  7. package/datarailsshared-datarailsshared.d.ts +34 -0
  8. package/datarailsshared-datarailsshared.metadata.json +1 -0
  9. package/esm2015/datarailsshared-datarailsshared.js +35 -0
  10. package/esm2015/lib/date-tags/date-tag.component.js +73 -0
  11. package/esm2015/lib/date-tags/date-tag.module.js +36 -0
  12. package/esm2015/lib/date-tags/day-tag/day-tag.component.js +77 -0
  13. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.component.js +153 -0
  14. package/esm2015/lib/date-tags/month-tag/month-tag.component.js +80 -0
  15. package/esm2015/lib/date-tags/quarter-tag/quarter-tag.component.js +105 -0
  16. package/esm2015/lib/date-tags/week-tag/week-tag.component.js +84 -0
  17. package/esm2015/lib/date-tags/year-tag/year-tag.component.js +78 -0
  18. package/esm2015/lib/dr-accordion/accordion-item-body.component.js +55 -0
  19. package/esm2015/lib/dr-accordion/accordion-item-header.component.js +77 -0
  20. package/esm2015/lib/dr-accordion/accordion-item.component.js +123 -0
  21. package/esm2015/lib/dr-accordion/accordion.component.js +43 -0
  22. package/esm2015/lib/dr-accordion/accordion.module.js +23 -0
  23. package/esm2015/lib/dr-alert/dr-alert.component.js +35 -0
  24. package/esm2015/lib/dr-alert/dr-alert.module.js +18 -0
  25. package/esm2015/lib/dr-alert/enums/dr-alert-theme.enum.js +10 -0
  26. package/esm2015/lib/dr-avatar/dr-avatar.component.js +44 -0
  27. package/esm2015/lib/dr-avatar/dr-avatar.module.js +26 -0
  28. package/esm2015/lib/dr-avatar/dr-avatar.pipe.js +16 -0
  29. package/esm2015/lib/dr-badge-status/dr-badge-status.component.js +25 -0
  30. package/esm2015/lib/dr-badge-status/dr-badge-status.module.js +20 -0
  31. package/esm2015/lib/dr-chat/chat.component.js +119 -0
  32. package/esm2015/lib/dr-chat/chat.module.js +41 -0
  33. package/esm2015/lib/dr-chat/dr-chat-form/chat-form.component.js +155 -0
  34. package/esm2015/lib/dr-chat/dr-chat-message/chat-message.component.js +71 -0
  35. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.js +49 -0
  36. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.js +23 -0
  37. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.js +47 -0
  38. package/esm2015/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.js +18 -0
  39. package/esm2015/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.js +87 -0
  40. package/esm2015/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.js +15 -0
  41. package/esm2015/lib/dr-details-list/dr-details-list.component.js +65 -0
  42. package/esm2015/lib/dr-details-list/dr-details-list.module.js +16 -0
  43. package/esm2015/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.js +70 -0
  44. package/esm2015/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.js +92 -0
  45. package/esm2015/lib/dr-dialog/dialog.module.js +34 -0
  46. package/esm2015/lib/dr-dialog/interfaces/dialog-data.js +25 -0
  47. package/esm2015/lib/dr-dialog/services/dialog.service.js +78 -0
  48. package/esm2015/lib/dr-dropdown/dr-dropdown-item-show.pipe.js +12 -0
  49. package/esm2015/lib/dr-dropdown/dr-dropdown-position.directive.js +104 -0
  50. package/esm2015/lib/dr-dropdown/dr-dropdown.component.js +114 -0
  51. package/esm2015/lib/dr-dropdown/dr-dropdown.directive.js +104 -0
  52. package/esm2015/lib/dr-dropdown/dr-dropdown.module.js +34 -0
  53. package/esm2015/lib/dr-dropdown/dr-dropdown.service.js +24 -0
  54. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +103 -0
  55. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.module.js +19 -0
  56. package/esm2015/lib/dr-error/dr-error.component.js +54 -0
  57. package/esm2015/lib/dr-error/dr-error.module.js +22 -0
  58. package/esm2015/lib/dr-inputs/button/button.component.js +39 -0
  59. package/esm2015/lib/dr-inputs/checkbox/checkbox.component.js +65 -0
  60. package/esm2015/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.js +47 -0
  61. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.js +216 -0
  62. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.js +181 -0
  63. package/esm2015/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.js +183 -0
  64. package/esm2015/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.js +12 -0
  65. package/esm2015/lib/dr-inputs/date-pickers/services/dr-date-picker.service.js +194 -0
  66. package/esm2015/lib/dr-inputs/dr-input/dr-input.component.js +194 -0
  67. package/esm2015/lib/dr-inputs/dr-inputs.module.js +66 -0
  68. package/esm2015/lib/dr-inputs/dr-model-debounce-change.directive.js +29 -0
  69. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +121 -0
  70. package/esm2015/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.js +74 -0
  71. package/esm2015/lib/dr-inputs/dr-toggle/dr-toggle.component.js +68 -0
  72. package/esm2015/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.js +63 -0
  73. package/esm2015/lib/dr-inputs/radio-button/radio-button.component.js +73 -0
  74. package/esm2015/lib/dr-inputs/radio-button/radio-group.component.js +157 -0
  75. package/esm2015/lib/dr-layout/dr-layout-body.component.js +13 -0
  76. package/esm2015/lib/dr-layout/dr-layout-header.component.js +17 -0
  77. package/esm2015/lib/dr-layout/dr-layout.component.js +14 -0
  78. package/esm2015/lib/dr-layout/dr-layout.module.js +20 -0
  79. package/esm2015/lib/dr-popover/dr-popover.component.js +106 -0
  80. package/esm2015/lib/dr-popover/dr-popover.directive.js +84 -0
  81. package/esm2015/lib/dr-popover/dr-popover.module.js +23 -0
  82. package/esm2015/lib/dr-popover/dr-popover.service.js +106 -0
  83. package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +102 -0
  84. package/esm2015/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.js +74 -0
  85. package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +73 -0
  86. package/esm2015/lib/dr-scenario/dr-scenario.module.js +28 -0
  87. package/esm2015/lib/dr-scenario/services/scenario.service.js +167 -0
  88. package/esm2015/lib/dr-spinner/dr-spinner.component.js +18 -0
  89. package/esm2015/lib/dr-spinner/dr-spinner.directive.js +56 -0
  90. package/esm2015/lib/dr-spinner/dr-spinner.module.js +18 -0
  91. package/esm2015/lib/dr-tabs/dr-tab.component.js +26 -0
  92. package/esm2015/lib/dr-tabs/dr-tabs.component.js +35 -0
  93. package/esm2015/lib/dr-tabs/dr-tabs.module.js +32 -0
  94. package/esm2015/lib/dr-tags/dr-tag.component.js +177 -0
  95. package/esm2015/lib/dr-tags/dr-tag.module.js +24 -0
  96. package/esm2015/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.js +19 -0
  97. package/esm2015/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.js +18 -0
  98. package/esm2015/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.js +20 -0
  99. package/esm2015/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.js +34 -0
  100. package/esm2015/lib/dr-tooltip/dr-tooltip.component.js +40 -0
  101. package/esm2015/lib/dr-tooltip/dr-tooltip.directive.js +147 -0
  102. package/esm2015/lib/dr-tooltip/dr-tooltip.module.js +35 -0
  103. package/esm2015/lib/dr-treeview/components/treeview/treeview.component.js +210 -0
  104. package/esm2015/lib/dr-treeview/components/treeview-item/treeview-item.component.js +58 -0
  105. package/esm2015/lib/dr-treeview/dr-tree-view.module.js +38 -0
  106. package/esm2015/lib/dr-treeview/helpers/treeview-event-parser.js +97 -0
  107. package/esm2015/lib/dr-treeview/models/treeview-config.js +22 -0
  108. package/esm2015/lib/dr-treeview/models/treeview-i18n.js +42 -0
  109. package/esm2015/lib/dr-treeview/pipes/treeview.pipe.js +17 -0
  110. package/esm2015/lib/list-tags/list-tag.component.js +37 -0
  111. package/esm2015/lib/list-tags/list-tag.module.js +23 -0
  112. package/esm2015/lib/models/chat.js +36 -0
  113. package/{esm2022/lib/models/datePicker.mjs → esm2015/lib/models/datePicker.js} +1 -1
  114. package/esm2015/lib/models/popover.js +27 -0
  115. package/esm2015/lib/stepper/stepper.component.js +55 -0
  116. package/esm2015/lib/stepper/stepper.module.js +17 -0
  117. package/esm2015/lib/utils/dr-shared-utils.js +47 -0
  118. package/esm2015/public-api.js +96 -0
  119. package/fesm2015/datarailsshared-datarailsshared.js +6938 -0
  120. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -0
  121. package/lib/date-tags/date-tag.component.d.ts +16 -4
  122. package/lib/date-tags/date-tag.module.d.ts +2 -19
  123. package/lib/date-tags/day-tag/day-tag.component.d.ts +1 -4
  124. package/lib/date-tags/forecast-tag/forecast-tag.component.d.ts +2 -5
  125. package/lib/date-tags/month-tag/month-tag.component.d.ts +1 -4
  126. package/lib/date-tags/quarter-tag/quarter-tag.component.d.ts +1 -4
  127. package/lib/date-tags/week-tag/week-tag.component.d.ts +1 -4
  128. package/lib/date-tags/year-tag/year-tag.component.d.ts +1 -4
  129. package/lib/dr-accordion/accordion-item-body.component.d.ts +0 -3
  130. package/lib/dr-accordion/accordion-item-header.component.d.ts +0 -3
  131. package/lib/dr-accordion/accordion-item.component.d.ts +0 -3
  132. package/lib/dr-accordion/accordion.component.d.ts +0 -3
  133. package/lib/dr-accordion/accordion.module.d.ts +0 -9
  134. package/lib/dr-alert/dr-alert.component.d.ts +8 -0
  135. package/lib/dr-alert/dr-alert.module.d.ts +2 -0
  136. package/lib/dr-alert/enums/dr-alert-theme.enum.d.ts +7 -0
  137. package/lib/dr-avatar/dr-avatar.component.d.ts +0 -3
  138. package/lib/dr-avatar/dr-avatar.module.d.ts +0 -9
  139. package/lib/dr-avatar/dr-avatar.pipe.d.ts +0 -3
  140. package/lib/dr-badge-status/dr-badge-status.component.d.ts +0 -3
  141. package/lib/dr-badge-status/dr-badge-status.module.d.ts +0 -7
  142. package/lib/dr-chat/chat.component.d.ts +0 -3
  143. package/lib/dr-chat/chat.module.d.ts +0 -17
  144. package/lib/dr-chat/dr-chat-form/chat-form.component.d.ts +0 -3
  145. package/lib/dr-chat/dr-chat-message/chat-message.component.d.ts +0 -3
  146. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.d.ts +0 -3
  147. package/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.d.ts +0 -3
  148. package/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.d.ts +0 -3
  149. package/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.d.ts +0 -3
  150. package/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.d.ts +0 -3
  151. package/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.d.ts +0 -3
  152. package/lib/dr-details-list/dr-details-list.component.d.ts +0 -3
  153. package/lib/dr-details-list/dr-details-list.module.d.ts +0 -6
  154. package/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.d.ts +1 -4
  155. package/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.d.ts +2 -5
  156. package/lib/dr-dialog/dialog.module.d.ts +0 -12
  157. package/lib/dr-dialog/interfaces/dialog-data.d.ts +7 -7
  158. package/lib/dr-dialog/services/dialog.service.d.ts +1 -4
  159. package/lib/dr-dropdown/dr-dropdown-item-show.pipe.d.ts +0 -3
  160. package/lib/dr-dropdown/dr-dropdown-position.directive.d.ts +0 -3
  161. package/lib/dr-dropdown/dr-dropdown.component.d.ts +0 -3
  162. package/lib/dr-dropdown/dr-dropdown.directive.d.ts +0 -3
  163. package/lib/dr-dropdown/dr-dropdown.module.d.ts +0 -10
  164. package/lib/dr-dropdown/dr-dropdown.service.d.ts +0 -3
  165. package/lib/dr-dynamic-tag/dr-dynamic-tag.component.d.ts +0 -3
  166. package/lib/dr-dynamic-tag/dr-dynamic-tag.module.d.ts +0 -8
  167. package/lib/dr-error/dr-error.component.d.ts +3 -7
  168. package/lib/dr-error/dr-error.module.d.ts +0 -8
  169. package/lib/dr-inputs/button/button.component.d.ts +1 -4
  170. package/lib/dr-inputs/checkbox/checkbox.component.d.ts +0 -3
  171. package/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.d.ts +0 -3
  172. package/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.d.ts +0 -3
  173. package/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.d.ts +0 -3
  174. package/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.d.ts +8 -4
  175. package/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.d.ts +2 -4
  176. package/lib/dr-inputs/date-pickers/services/dr-date-picker.service.d.ts +0 -3
  177. package/lib/dr-inputs/dr-input/dr-input.component.d.ts +0 -3
  178. package/lib/dr-inputs/dr-inputs.module.d.ts +0 -25
  179. package/lib/dr-inputs/dr-model-debounce-change.directive.d.ts +0 -3
  180. package/lib/dr-inputs/dr-select/dr-select.component.d.ts +1 -3
  181. package/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.d.ts +0 -3
  182. package/lib/dr-inputs/dr-toggle/dr-toggle.component.d.ts +0 -3
  183. package/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.d.ts +0 -3
  184. package/lib/dr-inputs/radio-button/radio-button.component.d.ts +0 -3
  185. package/lib/dr-inputs/radio-button/radio-group.component.d.ts +0 -3
  186. package/lib/dr-layout/dr-layout-body.component.d.ts +0 -3
  187. package/lib/dr-layout/dr-layout-header.component.d.ts +0 -3
  188. package/lib/dr-layout/dr-layout.component.d.ts +0 -3
  189. package/lib/dr-layout/dr-layout.module.d.ts +0 -8
  190. package/lib/dr-popover/dr-popover.component.d.ts +4 -8
  191. package/lib/dr-popover/dr-popover.directive.d.ts +0 -3
  192. package/lib/dr-popover/dr-popover.module.d.ts +0 -7
  193. package/lib/dr-popover/dr-popover.service.d.ts +0 -3
  194. package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +0 -3
  195. package/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.d.ts +0 -3
  196. package/lib/dr-scenario/dr-scenario.module.d.ts +0 -10
  197. package/lib/dr-scenario/interfaces/scenario.d.ts +3 -3
  198. package/lib/dr-scenario/services/scenario.service.d.ts +0 -3
  199. package/lib/dr-spinner/dr-spinner.component.d.ts +0 -3
  200. package/lib/dr-spinner/dr-spinner.directive.d.ts +0 -3
  201. package/lib/dr-spinner/dr-spinner.module.d.ts +0 -7
  202. package/lib/dr-tabs/dr-tab.component.d.ts +0 -3
  203. package/lib/dr-tabs/dr-tabs.component.d.ts +0 -3
  204. package/lib/dr-tabs/dr-tabs.module.d.ts +0 -11
  205. package/lib/dr-tags/dr-tag.component.d.ts +0 -3
  206. package/lib/dr-tags/dr-tag.module.d.ts +0 -9
  207. package/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.d.ts +0 -3
  208. package/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.d.ts +0 -3
  209. package/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.d.ts +0 -3
  210. package/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.d.ts +0 -3
  211. package/lib/dr-tooltip/dr-tooltip.component.d.ts +1 -4
  212. package/lib/dr-tooltip/dr-tooltip.directive.d.ts +0 -3
  213. package/lib/dr-tooltip/dr-tooltip.module.d.ts +0 -11
  214. package/lib/dr-tooltip/interfaces/tooltip-component-context.d.ts +1 -1
  215. package/lib/dr-treeview/components/treeview/treeview.component.d.ts +0 -3
  216. package/lib/dr-treeview/components/treeview-item/treeview-item.component.d.ts +0 -3
  217. package/lib/dr-treeview/dr-tree-view.module.d.ts +0 -9
  218. package/lib/dr-treeview/helpers/treeview-event-parser.d.ts +0 -9
  219. package/lib/dr-treeview/models/treeview-config.d.ts +0 -3
  220. package/lib/dr-treeview/models/treeview-i18n.d.ts +0 -5
  221. package/lib/dr-treeview/pipes/treeview.pipe.d.ts +0 -3
  222. package/lib/list-tags/list-tag.component.d.ts +0 -3
  223. package/lib/list-tags/list-tag.module.d.ts +0 -8
  224. package/lib/models/chat.d.ts +2 -2
  225. package/lib/models/datePicker.d.ts +3 -10
  226. package/lib/models/dropdown.d.ts +1 -1
  227. package/lib/models/popover.d.ts +1 -1
  228. package/lib/models/serverTags.d.ts +4 -4
  229. package/lib/stepper/interfaces/stepper.d.ts +1 -1
  230. package/lib/stepper/stepper.component.d.ts +0 -3
  231. package/lib/stepper/stepper.module.d.ts +0 -7
  232. package/package.json +15 -27
  233. package/public-api.d.ts +3 -27
  234. package/datarailsshared-datarailsshared-1.4.203-rocket.tgz +0 -0
  235. package/esm2022/datarailsshared-datarailsshared.mjs +0 -5
  236. package/esm2022/lib/date-tags/any-tag.component.mjs +0 -44
  237. package/esm2022/lib/date-tags/date-tag.component.mjs +0 -47
  238. package/esm2022/lib/date-tags/date-tag.module.mjs +0 -66
  239. package/esm2022/lib/date-tags/day-tag/day-tag.component.mjs +0 -82
  240. package/esm2022/lib/date-tags/forecast-tag/forecast-tag.component.mjs +0 -159
  241. package/esm2022/lib/date-tags/month-tag/month-tag.component.mjs +0 -87
  242. package/esm2022/lib/date-tags/quarter-tag/quarter-tag.component.mjs +0 -106
  243. package/esm2022/lib/date-tags/week-tag/week-tag.component.mjs +0 -89
  244. package/esm2022/lib/date-tags/year-tag/year-tag.component.mjs +0 -83
  245. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +0 -92
  246. package/esm2022/lib/directives/click-outside/click-outside.module.mjs +0 -18
  247. package/esm2022/lib/dr-accordion/accordion-item-body.component.mjs +0 -58
  248. package/esm2022/lib/dr-accordion/accordion-item-header.component.mjs +0 -108
  249. package/esm2022/lib/dr-accordion/accordion-item.component.mjs +0 -138
  250. package/esm2022/lib/dr-accordion/accordion.component.mjs +0 -42
  251. package/esm2022/lib/dr-accordion/accordion.module.mjs +0 -34
  252. package/esm2022/lib/dr-avatar/dr-avatar.component.mjs +0 -48
  253. package/esm2022/lib/dr-avatar/dr-avatar.module.mjs +0 -37
  254. package/esm2022/lib/dr-avatar/dr-avatar.pipe.mjs +0 -20
  255. package/esm2022/lib/dr-badge-status/dr-badge-status.component.mjs +0 -27
  256. package/esm2022/lib/dr-badge-status/dr-badge-status.module.mjs +0 -27
  257. package/esm2022/lib/dr-chat/chat.component.mjs +0 -138
  258. package/esm2022/lib/dr-chat/chat.module.mjs +0 -68
  259. package/esm2022/lib/dr-chat/dr-chat-form/chat-form.component.mjs +0 -168
  260. package/esm2022/lib/dr-chat/dr-chat-message/chat-message.component.mjs +0 -89
  261. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.directive.mjs +0 -47
  262. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-custom/chat-custom-message.service.mjs +0 -26
  263. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-file/chat-message-file.component.mjs +0 -49
  264. package/esm2022/lib/dr-chat/dr-chat-message/dr-chat-message-text/chat-message-text.component.mjs +0 -17
  265. package/esm2022/lib/dr-chat/dr-chat-suggestions/chat-suggestions.component.mjs +0 -88
  266. package/esm2022/lib/dr-chat/dr-dot-flashing/dr-dot-flashing.component.mjs +0 -13
  267. package/esm2022/lib/dr-details-list/dr-details-list.component.mjs +0 -79
  268. package/esm2022/lib/dr-details-list/dr-details-list.module.mjs +0 -21
  269. package/esm2022/lib/dr-dialog/components/dialog-modal-wrapper/dialog-modal-wrapper.component.mjs +0 -76
  270. package/esm2022/lib/dr-dialog/components/dialog-wrapper/dialog-wrapper.component.mjs +0 -97
  271. package/esm2022/lib/dr-dialog/dialog.module.mjs +0 -51
  272. package/esm2022/lib/dr-dialog/interfaces/dialog-data.mjs +0 -25
  273. package/esm2022/lib/dr-dialog/services/dialog.service.mjs +0 -77
  274. package/esm2022/lib/dr-dropdown/dr-dropdown-item-show.pipe.mjs +0 -16
  275. package/esm2022/lib/dr-dropdown/dr-dropdown-position.directive.mjs +0 -104
  276. package/esm2022/lib/dr-dropdown/dr-dropdown.component.mjs +0 -116
  277. package/esm2022/lib/dr-dropdown/dr-dropdown.directive.mjs +0 -117
  278. package/esm2022/lib/dr-dropdown/dr-dropdown.module.mjs +0 -49
  279. package/esm2022/lib/dr-dropdown/dr-dropdown.service.mjs +0 -25
  280. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.component.mjs +0 -112
  281. package/esm2022/lib/dr-dynamic-tag/dr-dynamic-tag.module.mjs +0 -28
  282. package/esm2022/lib/dr-error/dr-error.component.mjs +0 -67
  283. package/esm2022/lib/dr-error/dr-error.module.mjs +0 -31
  284. package/esm2022/lib/dr-inputs/button/button.component.mjs +0 -66
  285. package/esm2022/lib/dr-inputs/checkbox/checkbox.component.mjs +0 -65
  286. package/esm2022/lib/dr-inputs/date-pickers/directives/dr-date-picker-format.directive.mjs +0 -64
  287. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker/dr-date-picker.component.mjs +0 -226
  288. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker-with-timeframe/dr-date-picker-with-timeframe.component.mjs +0 -190
  289. package/esm2022/lib/dr-inputs/date-pickers/dr-date-picker_custom-header/dr-date-picker_custom-header.component.mjs +0 -186
  290. package/esm2022/lib/dr-inputs/date-pickers/dr-show-timeframe.pipe.mjs +0 -16
  291. package/esm2022/lib/dr-inputs/date-pickers/services/dr-date-picker.service.mjs +0 -195
  292. package/esm2022/lib/dr-inputs/dr-input/dr-input.component.mjs +0 -218
  293. package/esm2022/lib/dr-inputs/dr-inputs.module.mjs +0 -108
  294. package/esm2022/lib/dr-inputs/dr-model-debounce-change.directive.mjs +0 -31
  295. package/esm2022/lib/dr-inputs/dr-select/dr-select.component.mjs +0 -159
  296. package/esm2022/lib/dr-inputs/dr-select-add-item/dr-select-add-item.component.mjs +0 -79
  297. package/esm2022/lib/dr-inputs/dr-toggle/dr-toggle.component.mjs +0 -72
  298. package/esm2022/lib/dr-inputs/dr-toggle-button/dr-toggle-button.component.mjs +0 -66
  299. package/esm2022/lib/dr-inputs/radio-button/radio-button.component.mjs +0 -78
  300. package/esm2022/lib/dr-inputs/radio-button/radio-group.component.mjs +0 -173
  301. package/esm2022/lib/dr-layout/dr-layout-body.component.mjs +0 -16
  302. package/esm2022/lib/dr-layout/dr-layout-header.component.mjs +0 -24
  303. package/esm2022/lib/dr-layout/dr-layout.component.mjs +0 -13
  304. package/esm2022/lib/dr-layout/dr-layout.module.mjs +0 -29
  305. package/esm2022/lib/dr-popover/dr-popover.component.mjs +0 -126
  306. package/esm2022/lib/dr-popover/dr-popover.directive.mjs +0 -110
  307. package/esm2022/lib/dr-popover/dr-popover.module.mjs +0 -30
  308. package/esm2022/lib/dr-popover/dr-popover.service.mjs +0 -107
  309. package/esm2022/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.mjs +0 -105
  310. package/esm2022/lib/dr-scenario/components/dr-scenario-tag-configuration/dr-scenario-tag-configuration.component.mjs +0 -83
  311. package/esm2022/lib/dr-scenario/consts/scenario-tags-config.mjs +0 -81
  312. package/esm2022/lib/dr-scenario/dr-scenario.module.mjs +0 -41
  313. package/esm2022/lib/dr-scenario/services/scenario.service.mjs +0 -165
  314. package/esm2022/lib/dr-spinner/dr-spinner.component.mjs +0 -17
  315. package/esm2022/lib/dr-spinner/dr-spinner.directive.mjs +0 -59
  316. package/esm2022/lib/dr-spinner/dr-spinner.module.mjs +0 -23
  317. package/esm2022/lib/dr-tabs/dr-tab.component.mjs +0 -37
  318. package/esm2022/lib/dr-tabs/dr-tabs.component.mjs +0 -47
  319. package/esm2022/lib/dr-tabs/dr-tabs.module.mjs +0 -49
  320. package/esm2022/lib/dr-tags/dr-tag.component.mjs +0 -188
  321. package/esm2022/lib/dr-tags/dr-tag.module.mjs +0 -35
  322. package/esm2022/lib/dr-tooltip/components/tooltip-info/tooltip-info.component.mjs +0 -18
  323. package/esm2022/lib/dr-tooltip/components/tooltip-info-simple/tooltip-info-simple.component.mjs +0 -16
  324. package/esm2022/lib/dr-tooltip/components/tooltip-no-body/tooltip-no-body.component.mjs +0 -18
  325. package/esm2022/lib/dr-tooltip/components/tooltip-process-default/tooltip-process-default.component.mjs +0 -19
  326. package/esm2022/lib/dr-tooltip/dr-tooltip.component.mjs +0 -48
  327. package/esm2022/lib/dr-tooltip/dr-tooltip.directive.mjs +0 -156
  328. package/esm2022/lib/dr-tooltip/dr-tooltip.module.mjs +0 -48
  329. package/esm2022/lib/dr-treeview/components/treeview/treeview.component.mjs +0 -215
  330. package/esm2022/lib/dr-treeview/components/treeview-item/treeview-item.component.mjs +0 -60
  331. package/esm2022/lib/dr-treeview/dr-tree-view.module.mjs +0 -48
  332. package/esm2022/lib/dr-treeview/helpers/treeview-event-parser.mjs +0 -106
  333. package/esm2022/lib/dr-treeview/models/treeview-config.mjs +0 -25
  334. package/esm2022/lib/dr-treeview/models/treeview-i18n.mjs +0 -47
  335. package/esm2022/lib/dr-treeview/pipes/treeview.pipe.mjs +0 -21
  336. package/esm2022/lib/list-tags/list-tag.component.mjs +0 -42
  337. package/esm2022/lib/list-tags/list-tag.module.mjs +0 -34
  338. package/esm2022/lib/models/chat.mjs +0 -36
  339. package/esm2022/lib/models/popover.mjs +0 -27
  340. package/esm2022/lib/stepper/stepper.component.mjs +0 -63
  341. package/esm2022/lib/stepper/stepper.module.mjs +0 -24
  342. package/esm2022/lib/utils/dr-shared-utils.mjs +0 -47
  343. package/esm2022/public-api.mjs +0 -120
  344. package/fesm2022/datarailsshared-datarailsshared.mjs +0 -7551
  345. package/fesm2022/datarailsshared-datarailsshared.mjs.map +0 -1
  346. package/index.d.ts +0 -5
  347. package/lib/date-tags/any-tag.component.d.ts +0 -20
  348. package/lib/directives/click-outside/click-outside.directive.d.ts +0 -23
  349. package/lib/directives/click-outside/click-outside.module.d.ts +0 -8
  350. /package/{esm2022/lib/dr-inputs/dr-toggle-button/toggle-button-mode.mjs → esm2015/lib/dr-inputs/dr-toggle-button/toggle-button-mode.js} +0 -0
  351. /package/{esm2022/lib/dr-popover/dr-popover-ref.mjs → esm2015/lib/dr-popover/dr-popover-ref.js} +0 -0
  352. /package/{esm2022/lib/dr-scenario/interfaces/scenario.mjs → esm2015/lib/dr-scenario/interfaces/scenario.js} +0 -0
  353. /package/{esm2022/lib/dr-tooltip/enums/tooltip-position.enum.mjs → esm2015/lib/dr-tooltip/enums/tooltip-position.enum.js} +0 -0
  354. /package/{esm2022/lib/dr-tooltip/interfaces/tooltip-component-context.mjs → esm2015/lib/dr-tooltip/interfaces/tooltip-component-context.js} +0 -0
  355. /package/{esm2022/lib/dr-treeview/helpers/treeview-helper.mjs → esm2015/lib/dr-treeview/helpers/treeview-helper.js} +0 -0
  356. /package/{esm2022/lib/dr-treeview/models/treeview-header-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-header-template-context.js} +0 -0
  357. /package/{esm2022/lib/dr-treeview/models/treeview-item-template-context.mjs → esm2015/lib/dr-treeview/models/treeview-item-template-context.js} +0 -0
  358. /package/{esm2022/lib/dr-treeview/models/treeview-item.mjs → esm2015/lib/dr-treeview/models/treeview-item.js} +0 -0
  359. /package/{esm2022/lib/models/badgeStatus.mjs → esm2015/lib/models/badgeStatus.js} +0 -0
  360. /package/{esm2022/lib/models/constants.mjs → esm2015/lib/models/constants.js} +0 -0
  361. /package/{esm2022/lib/models/dropdown.mjs → esm2015/lib/models/dropdown.js} +0 -0
  362. /package/{esm2022/lib/models/serverTags.mjs → esm2015/lib/models/serverTags.js} +0 -0
  363. /package/{esm2022/lib/models/spinnerOptions.mjs → esm2015/lib/models/spinnerOptions.js} +0 -0
  364. /package/{esm2022/lib/models/validationError.mjs → esm2015/lib/models/validationError.js} +0 -0
  365. /package/{esm2022/lib/stepper/interfaces/stepper.mjs → esm2015/lib/stepper/interfaces/stepper.js} +0 -0
@@ -1,165 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
3
- import { Scenario } from '../interfaces/scenario';
4
- import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, } from 'lodash';
5
- import { getScenarioTagDataConfig } from '../consts/scenario-tags-config';
6
- import * as i0 from "@angular/core";
7
- export class ScenarioService {
8
- constructor() {
9
- this.DEFAULT_FORECAST_DATE_TAG = 'Month';
10
- }
11
- get scenarios() {
12
- return _orderBy(Object.values(Scenario), (scenario) => scenario === Scenario.NONE ? 1 : 0);
13
- }
14
- get areExistingTagsConfig() {
15
- return !!this.currentTagsConfig;
16
- }
17
- initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension) {
18
- if (!wholeTagsConfig?.length)
19
- return;
20
- this.wholeTagsConfig = _cloneDeep(wholeTagsConfig);
21
- this.currentTagsConfig = currentTagsConfig;
22
- this.isMultipleDimension = isMultipleDimension;
23
- }
24
- getTagsConfigByScenarioTags(scenarioTags, tagsConfig) {
25
- const scenarioTagsConfig = _filter(tagsConfig, (tagConfig) => _some(scenarioTags, (scenarioTag) => scenarioTag.toggle && scenarioTag.selectedTagSubType === tagConfig.options.sub_type));
26
- return this.sortScenarioTags(scenarioTagsConfig);
27
- }
28
- getScenarioTagsByScenario(scenario) {
29
- const scenarioTagsConfig = this.getScenarioTagsConfig(scenario, this.wholeTagsConfig);
30
- const scenarioTagsUi = [];
31
- _forEach(scenarioTagsConfig, (scenarioTag) => {
32
- const isTagWithSubTags = scenarioTag.type === TagTypes.DATE;
33
- const tagWithSubTags = isTagWithSubTags && _find(scenarioTagsUi, { type: scenarioTag.type });
34
- const tag = tagWithSubTags || this.prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isTagWithSubTags);
35
- if (isTagWithSubTags) {
36
- this.updateScenarioSubTags(tag, scenarioTag);
37
- tag.subTags = this.sortedScenarioSubTags(tag);
38
- }
39
- if (tagWithSubTags)
40
- return;
41
- scenarioTagsUi.push(tag);
42
- });
43
- if (this.areExistingTagsConfig) {
44
- this.initExistingTagsConfig(scenario, scenarioTagsUi);
45
- }
46
- const isTagNotSupportingDates = _some(scenarioTagsUi, { turnOffDateTags: true, toggle: true });
47
- if (isTagNotSupportingDates) {
48
- this.turnOffDateTag(scenarioTagsUi);
49
- }
50
- const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => tag.toggle && !!tag.acceptableDateTags?.length);
51
- if (tagWithSpecificDateTags) {
52
- this.hideNotAvailableTags(tagWithSpecificDateTags, scenarioTagsUi);
53
- }
54
- return this.sortScenarioTags(scenarioTagsUi);
55
- }
56
- sortScenarioTags(scenarioTagsUi) {
57
- return _orderBy(scenarioTagsUi, [
58
- (tag) => (tag.type === TagTypes.DATE ? 0 : 1),
59
- (tag) => (tag.name === 'File Status')
60
- ]);
61
- }
62
- initExistingTagsConfig(scenario, scenarioTagsUi) {
63
- _forEach(this.currentTagsConfig, (tagConfig) => {
64
- const tagSubType = tagConfig?.options?.sub_type;
65
- const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
66
- if (!scenarioTagDataConfig || !scenarioTagDataConfig[scenario] || !scenarioTagDataConfig[scenario][tagSubType]) {
67
- return;
68
- }
69
- const scenarioTagUi = tagConfig.type === TagTypes.DATE
70
- ? _find(scenarioTagsUi, { type: tagConfig.type })
71
- : _find(scenarioTagsUi, { selectedTagSubType: tagSubType });
72
- scenarioTagUi.toggle = true;
73
- scenarioTagUi.selectedTagSubType = tagSubType;
74
- });
75
- }
76
- prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isDateTag) {
77
- const toggleStatus = isDateTag
78
- ? _some(scenarioTagsConfig, (tag) => tag.type === TagTypes.DATE && tag.scenarioData.toggle)
79
- : scenarioTag.scenarioData.toggle;
80
- const selectedTagSubType = isDateTag
81
- ? this.getScenarioSelectedDateTag(scenario, scenarioTagsConfig)
82
- : scenarioTag.options.sub_type;
83
- const tag = {
84
- toggle: this.areExistingTagsConfig ? false : toggleStatus,
85
- name: scenarioTag.scenarioData.name || scenarioTag.name,
86
- description: scenarioTag.scenarioData.description || scenarioTag.description,
87
- type: scenarioTag.type,
88
- selectedTagSubType,
89
- };
90
- if (scenarioTag.scenarioData.turnOffDateTags) {
91
- tag.turnOffDateTags = scenarioTag.scenarioData.turnOffDateTags;
92
- }
93
- if (scenarioTag.scenarioData.acceptableDateTags) {
94
- tag.acceptableDateTags = scenarioTag.scenarioData.acceptableDateTags;
95
- }
96
- return tag;
97
- }
98
- sortedScenarioSubTags(tag) {
99
- const SUB_TAGS_ORDER = [TagsConfigSubType.DAY, TagsConfigSubType.WEEK, TagsConfigSubType.MONTH, TagsConfigSubType.QUARTER, TagsConfigSubType.YEAR];
100
- return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
101
- }
102
- updateScenarioSubTags(tag, scenarioTag) {
103
- if (!tag.subTags) {
104
- tag.subTags = [];
105
- }
106
- const tagSubType = scenarioTag.options.sub_type;
107
- tag.subTags.push({
108
- subType: tagSubType,
109
- name: tagSubType === TagsConfigSubType.FORECAST_NEW ? this.DEFAULT_FORECAST_DATE_TAG : scenarioTag.name,
110
- });
111
- }
112
- turnOffDateTag(scenarioTags) {
113
- const dateTag = _find(scenarioTags, { type: TagTypes.DATE });
114
- if (!dateTag)
115
- return;
116
- dateTag.toggle = false;
117
- }
118
- hideNotAvailableTags(tagWithSpecificDateTags, scenarioTags) {
119
- const subTags = _find(scenarioTags, { type: TagTypes.DATE })?.subTags;
120
- if (!subTags.length)
121
- return;
122
- _forEach(scenarioTags, (tag) => {
123
- if (!tag.acceptableDateTags?.length)
124
- return;
125
- if (tag !== tagWithSpecificDateTags) {
126
- tag.toggle = false;
127
- }
128
- });
129
- _forEach(subTags, (subTag) => {
130
- subTag.hidden = !tagWithSpecificDateTags.acceptableDateTags.includes(subTag.subType);
131
- });
132
- }
133
- getScenarioSelectedDateTag(scenario, dateTags) {
134
- const monthSubType = _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.MONTH)?.options?.sub_type;
135
- const scenarioSelectedDateTag = {
136
- [Scenario.ACTUALS]: () => monthSubType,
137
- [Scenario.BUDGET]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.YEAR)?.options?.sub_type,
138
- [Scenario.FORECAST]: () => _find(dateTags, (tag) => tag.options.sub_type === TagsConfigSubType.FORECAST_NEW)?.options?.sub_type,
139
- [Scenario.NONE]: () => monthSubType,
140
- };
141
- if (!scenarioSelectedDateTag[scenario])
142
- return;
143
- return scenarioSelectedDateTag[scenario]();
144
- }
145
- getScenarioTagsConfig(scenario, tagsConfig) {
146
- return _reduce(tagsConfig, (acc, tagConfig) => {
147
- const tagSubType = tagConfig?.options?.sub_type;
148
- const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
149
- const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ?
150
- scenarioTagDataConfig[scenario][tagSubType] : null;
151
- if (!scenarioTagConfig || scenarioTagConfig.hidden)
152
- return acc;
153
- const clonedTagConfig = _cloneDeep(tagConfig);
154
- const scenarioTag = { ...clonedTagConfig, scenarioData: scenarioTagConfig };
155
- acc.push(scenarioTag);
156
- return acc;
157
- }, []);
158
- }
159
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
160
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService }); }
161
- }
162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: ScenarioService, decorators: [{
163
- type: Injectable
164
- }] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXNjZW5hcmlvL3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxHQUNoQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFHMUUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFWSw4QkFBeUIsR0FBRyxPQUFPLENBQUM7S0E0TC9DO0lBdExHLElBQVcsU0FBUztRQUNoQixPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsSUFBWSxxQkFBcUI7UUFDN0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ3BDLENBQUM7SUFFTSxnQkFBZ0IsQ0FB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ZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRhZywgVGFnc0NvbmZpZ1N1YlR5cGUsIFRhZ1R5cGVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgSVNjZW5hcmlvLCBJU2NlbmFyaW9TdWJUYWcsIElTY2VuYXJpb1RhZywgSVNjZW5hcmlvVGFnVWksIFNjZW5hcmlvIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zY2VuYXJpbyc7XG5pbXBvcnQge1xuICAgIGNsb25lRGVlcCBhcyBfY2xvbmVEZWVwLFxuICAgIGZpbHRlciBhcyBfZmlsdGVyLFxuICAgIGZpbmQgYXMgX2ZpbmQsXG4gICAgZm9yRWFjaCBhcyBfZm9yRWFjaCxcbiAgICBvcmRlckJ5IGFzIF9vcmRlckJ5LFxuICAgIGluZGV4T2YgYXMgX2luZGV4T2YsXG4gICAgcmVkdWNlIGFzIF9yZWR1Y2UsXG4gICAgc29tZSBhcyBfc29tZSxcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyB9IGZyb20gJy4uL2NvbnN0cy9zY2VuYXJpby10YWdzLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA9ICdNb250aCc7XG5cbiAgICBwcml2YXRlIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXTtcbiAgICBwcml2YXRlIGlzTXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvcygpOiBTY2VuYXJpb1tdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KE9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLCAoc2NlbmFyaW8pID0+IHNjZW5hcmlvID09PSBTY2VuYXJpby5OT05FID8gMSA6IDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFyZUV4aXN0aW5nVGFnc0NvbmZpZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VGFnc0NvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdFNjZW5hcmlvVGFncyh3aG9sZVRhZ3NDb25maWc6IElUYWdbXSwgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXSwgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXdob2xlVGFnc0NvbmZpZz8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy53aG9sZVRhZ3NDb25maWcgPSBfY2xvbmVEZWVwKHdob2xlVGFnc0NvbmZpZyk7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ3NDb25maWcgPSBjdXJyZW50VGFnc0NvbmZpZztcbiAgICAgICAgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uID0gaXNNdWx0aXBsZURpbWVuc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFnc0NvbmZpZ0J5U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSwgdGFnc0NvbmZpZzogSVRhZ1tdKTogSVRhZ1tdIHtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzQ29uZmlnID0gX2ZpbHRlcih0YWdzQ29uZmlnLCAodGFnQ29uZmlnKSA9PlxuICAgICAgICAgICAgX3NvbWUoc2NlbmFyaW9UYWdzLCAoc2NlbmFyaW9UYWcpID0+IHNjZW5hcmlvVGFnLnRvZ2dsZSAmJiBzY2VuYXJpb1RhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPT09IHRhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NDb25maWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY2VuYXJpb1RhZ3NCeVNjZW5hcmlvKHNjZW5hcmlvOiBTY2VuYXJpbykge1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NDb25maWc6IElTY2VuYXJpb1RhZ1tdID0gdGhpcy5nZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW8sIHRoaXMud2hvbGVUYWdzQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzVWk6IElTY2VuYXJpb1RhZ1VpW10gPSBbXTtcblxuICAgICAgICBfZm9yRWFjaChzY2VuYXJpb1RhZ3NDb25maWcsIChzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1RhZ1dpdGhTdWJUYWdzID0gc2NlbmFyaW9UYWcudHlwZSA9PT0gVGFnVHlwZXMuREFURTtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1dpdGhTdWJUYWdzID0gaXNUYWdXaXRoU3ViVGFncyAmJiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiBzY2VuYXJpb1RhZy50eXBlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0YWc6IElTY2VuYXJpb1RhZ1VpID0gdGFnV2l0aFN1YlRhZ3MgfHwgdGhpcy5wcmVwYXJlU2NlbmFyaW9UYWcoc2NlbmFyaW9UYWdzQ29uZmlnLCBzY2VuYXJpb1RhZywgc2NlbmFyaW8sIGlzVGFnV2l0aFN1YlRhZ3MpO1xuXG4gICAgICAgICAgICBpZiAoaXNUYWdXaXRoU3ViVGFncykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2NlbmFyaW9TdWJUYWdzKHRhZywgc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gdGhpcy5zb3J0ZWRTY2VuYXJpb1N1YlRhZ3ModGFnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZ1dpdGhTdWJUYWdzKSByZXR1cm47XG4gICAgICAgICAgICBzY2VuYXJpb1RhZ3NVaS5wdXNoKHRhZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmFyZUV4aXN0aW5nVGFnc0NvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5pbml0RXhpc3RpbmdUYWdzQ29uZmlnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NVaSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RhZ05vdFN1cHBvcnRpbmdEYXRlcyA9IF9zb21lKHNjZW5hcmlvVGFnc1VpLCB7IHR1cm5PZmZEYXRlVGFnczogdHJ1ZSwgdG9nZ2xlOiB0cnVlIH0pO1xuICAgICAgICBpZiAoaXNUYWdOb3RTdXBwb3J0aW5nRGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMudHVybk9mZkRhdGVUYWcoc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpID0gX2ZpbmQoc2NlbmFyaW9UYWdzVWksICh0YWcpID0+IHRhZy50b2dnbGUgJiYgISF0YWcuYWNjZXB0YWJsZURhdGVUYWdzPy5sZW5ndGgpO1xuICAgICAgICBpZiAodGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU5vdEF2YWlsYWJsZVRhZ3ModGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MsIHNjZW5hcmlvVGFnc1VpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRTY2VuYXJpb1RhZ3Moc2NlbmFyaW9UYWdzVWkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc1VpOiBhbnlbXSk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHNjZW5hcmlvVGFnc1VpLCBbXG4gICAgICAgICAgICAodGFnKSA9PiAodGFnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEUgPyAwIDogMSksXG4gICAgICAgICAgICAodGFnKSA9PiAodGFnLm5hbWUgPT09ICdGaWxlIFN0YXR1cycpXG4gICAgICAgIF0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdEV4aXN0aW5nVGFnc0NvbmZpZyhzY2VuYXJpbzogU2NlbmFyaW8sIHNjZW5hcmlvVGFnc1VpOiBJU2NlbmFyaW9UYWdVaVtdKSB7XG4gICAgICAgIF9mb3JFYWNoKHRoaXMuY3VycmVudFRhZ3NDb25maWcsICh0YWdDb25maWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgICAgICBpZiAoIXNjZW5hcmlvVGFnRGF0YUNvbmZpZyB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXVt0YWdTdWJUeXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdVaSA9IHRhZ0NvbmZpZy50eXBlID09PSBUYWdUeXBlcy5EQVRFXG4gICAgICAgICAgICAgICAgPyBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiB0YWdDb25maWcudHlwZSB9KVxuICAgICAgICAgICAgICAgIDogX2ZpbmQoc2NlbmFyaW9UYWdzVWksIHsgc2VsZWN0ZWRUYWdTdWJUeXBlOiB0YWdTdWJUeXBlIH0pO1xuXG4gICAgICAgICAgICBzY2VuYXJpb1RhZ1VpLnRvZ2dsZSA9IHRydWU7XG4gICAgICAgICAgICBzY2VuYXJpb1RhZ1VpLnNlbGVjdGVkVGFnU3ViVHlwZSA9IHRhZ1N1YlR5cGU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZVNjZW5hcmlvVGFnKHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10sIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcsIHNjZW5hcmlvOiBTY2VuYXJpbywgaXNEYXRlVGFnOiBib29sZWFuKTogSVNjZW5hcmlvVGFnVWkge1xuICAgICAgICBjb25zdCB0b2dnbGVTdGF0dXMgPSBpc0RhdGVUYWdcbiAgICAgICAgICAgID8gX3NvbWUoc2NlbmFyaW9UYWdzQ29uZmlnLCAodGFnKSA9PiB0YWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSAmJiB0YWcuc2NlbmFyaW9EYXRhLnRvZ2dsZSlcbiAgICAgICAgICAgIDogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnRvZ2dsZTtcblxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhZ1N1YlR5cGUgPSAgaXNEYXRlVGFnXG4gICAgICAgICAgICAgICAgPyB0aGlzLmdldFNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NDb25maWcpXG4gICAgICAgICAgICAgICAgOiBzY2VuYXJpb1RhZy5vcHRpb25zLnN1Yl90eXBlO1xuXG4gICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPSB7XG4gICAgICAgICAgICB0b2dnbGU6IHRoaXMuYXJlRXhpc3RpbmdUYWdzQ29uZmlnID8gZmFsc2UgOiB0b2dnbGVTdGF0dXMsXG4gICAgICAgICAgICBuYW1lOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEubmFtZSB8fCBzY2VuYXJpb1RhZy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5kZXNjcmlwdGlvbiB8fCBzY2VuYXJpb1RhZy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIHR5cGU6IHNjZW5hcmlvVGFnLnR5cGUsXG4gICAgICAgICAgICBzZWxlY3RlZFRhZ1N1YlR5cGUsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50dXJuT2ZmRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy50dXJuT2ZmRGF0ZVRhZ3MgPSBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudHVybk9mZkRhdGVUYWdzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5hY2NlcHRhYmxlRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5hY2NlcHRhYmxlRGF0ZVRhZ3MgPSBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuYWNjZXB0YWJsZURhdGVUYWdzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRlZFNjZW5hcmlvU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpKTogSVNjZW5hcmlvU3ViVGFnW10ge1xuICAgICAgICBjb25zdCBTVUJfVEFHU19PUkRFUiA9IFtUYWdzQ29uZmlnU3ViVHlwZS5EQVksIFRhZ3NDb25maWdTdWJUeXBlLldFRUssIFRhZ3NDb25maWdTdWJUeXBlLk1PTlRILCBUYWdzQ29uZmlnU3ViVHlwZS5RVUFSVEVSLCBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXTtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KHRhZy5zdWJUYWdzLCAoc3ViVGFnKSA9PiBfaW5kZXhPZihTVUJfVEFHU19PUkRFUiwgc3ViVGFnLnN1YlR5cGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNjZW5hcmlvU3ViVGFncyh0YWc6IElTY2VuYXJpb1RhZ1VpLCBzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnKTogdm9pZCB7XG4gICAgICAgIGlmICghdGFnLnN1YlRhZ3MpIHtcbiAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gc2NlbmFyaW9UYWcub3B0aW9ucy5zdWJfdHlwZTtcblxuICAgICAgICB0YWcuc3ViVGFncy5wdXNoKHtcbiAgICAgICAgICAgIHN1YlR5cGU6IHRhZ1N1YlR5cGUsXG4gICAgICAgICAgICBuYW1lOiB0YWdTdWJUeXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcgPyB0aGlzLkRFRkFVTFRfRk9SRUNBU1RfREFURV9UQUcgOiBzY2VuYXJpb1RhZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHR1cm5PZmZEYXRlVGFnKHNjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlVGFnID0gX2ZpbmQoc2NlbmFyaW9UYWdzLCB7IHR5cGU6IFRhZ1R5cGVzLkRBVEUgfSk7XG5cbiAgICAgICAgaWYgKCFkYXRlVGFnKSByZXR1cm47XG4gICAgICAgIGRhdGVUYWcudG9nZ2xlPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVOb3RBdmFpbGFibGVUYWdzKHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzOiBJU2NlbmFyaW9UYWdVaSwgc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN1YlRhZ3MgPSBfZmluZChzY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KT8uc3ViVGFncztcbiAgICAgICAgaWYgKCFzdWJUYWdzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFncywgKHRhZykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0YWcuYWNjZXB0YWJsZURhdGVUYWdzPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgIGlmICh0YWcgIT09IHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzKSB7XG4gICAgICAgICAgICAgICAgdGFnLnRvZ2dsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBfZm9yRWFjaChzdWJUYWdzLCAoc3ViVGFnKSA9PiB7XG4gICAgICAgICAgICBzdWJUYWcuaGlkZGVuID0gIXRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzLmFjY2VwdGFibGVEYXRlVGFncy5pbmNsdWRlcyhzdWJUYWcuc3ViVHlwZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW86IFNjZW5hcmlvLCBkYXRlVGFnczogSVNjZW5hcmlvVGFnW10pOiBUYWdzQ29uZmlnU3ViVHlwZSB7XG4gICAgICAgIGNvbnN0IG1vbnRoU3ViVHlwZSA9IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5NT05USCk/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuXG4gICAgICAgIGNvbnN0IHNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnID0ge1xuICAgICAgICAgICAgW1NjZW5hcmlvLkFDVFVBTFNdOiAoKSA9PiBtb250aFN1YlR5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uQlVER0VUXTogKCkgPT4gX2ZpbmQoZGF0ZVRhZ3MsICh0YWc6IElTY2VuYXJpb1RhZykgPT4gdGFnLm9wdGlvbnMuc3ViX3R5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLllFQVIpPy5vcHRpb25zPy5zdWJfdHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5GT1JFQ0FTVF06ICgpID0+IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVcpPy5vcHRpb25zPy5zdWJfdHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5OT05FXTogKCkgPT4gbW9udGhTdWJUeXBlLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzY2VuYXJpb1NlbGVjdGVkRGF0ZVRhZ1tzY2VuYXJpb10pIHJldHVybjtcbiAgICAgICAgcmV0dXJuIHNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnW3NjZW5hcmlvXSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2NlbmFyaW9UYWdzQ29uZmlnKHNjZW5hcmlvOiBTY2VuYXJpbywgdGFnc0NvbmZpZzogSVRhZ1tdKTogSVNjZW5hcmlvVGFnW10ge1xuICAgICAgICByZXR1cm4gX3JlZHVjZSh0YWdzQ29uZmlnLCAoYWNjOiBJU2NlbmFyaW9UYWdbXSwgdGFnQ29uZmlnOiBJVGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0YWdTdWJUeXBlID0gdGFnQ29uZmlnPy5vcHRpb25zPy5zdWJfdHlwZTtcblxuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ0NvbmZpZzogSVNjZW5hcmlvID0gc2NlbmFyaW9UYWdEYXRhQ29uZmlnICYmIHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb10gP1xuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0gOiBudWxsO1xuICAgICAgICAgICAgaWYgKCFzY2VuYXJpb1RhZ0NvbmZpZyB8fCBzY2VuYXJpb1RhZ0NvbmZpZy5oaWRkZW4pIHJldHVybiBhY2M7XG5cbiAgICAgICAgICAgIGNvbnN0IGNsb25lZFRhZ0NvbmZpZyA9IF9jbG9uZURlZXAodGFnQ29uZmlnKTtcbiAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcgPSB7IC4uLmNsb25lZFRhZ0NvbmZpZywgc2NlbmFyaW9EYXRhOiBzY2VuYXJpb1RhZ0NvbmZpZyB9O1xuXG4gICAgICAgICAgICBhY2MucHVzaChzY2VuYXJpb1RhZyk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxufVxuIl19