@wavemaker/app-ng-runtime 11.10.5-rc.6100 → 11.11.0-rc.6106

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 (1167) hide show
  1. package/build-task/bundles/index.umd.js +94 -68
  2. package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +8 -8
  3. package/build-task/esm2022/containers/repeat-template.build.mjs +5 -5
  4. package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +2 -2
  5. package/build-task/esm2022/containers/wizard/wizard.build.mjs +33 -4
  6. package/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -10
  7. package/build-task/esm2022/data/table/table-column/table-column.build.mjs +15 -11
  8. package/build-task/esm2022/page/page.build.mjs +2 -8
  9. package/build-task/esm2022/public_api.mjs +1 -1
  10. package/build-task/fesm2022/index.mjs +95 -69
  11. package/build-task/fesm2022/index.mjs.map +1 -1
  12. package/components/advanced/carousel/bundles/index.umd.js +8 -36
  13. package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +1 -1
  14. package/components/advanced/carousel/carousel.directive.d.ts +1 -1
  15. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +3 -2
  16. package/components/advanced/carousel/esm2022/carousel.directive.mjs +3 -2
  17. package/components/advanced/carousel/esm2022/public_api.mjs +1 -2
  18. package/components/advanced/carousel/fesm2022/index.mjs +8 -36
  19. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  20. package/components/advanced/carousel/public_api.d.ts +0 -1
  21. package/components/advanced/custom/bundles/index.umd.js +8 -33
  22. package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
  23. package/components/advanced/custom/custom-widget.directive.d.ts +1 -1
  24. package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +3 -2
  25. package/components/advanced/custom/esm2022/custom-widget.directive.mjs +3 -2
  26. package/components/advanced/custom/esm2022/public_api.mjs +1 -2
  27. package/components/advanced/custom/fesm2022/index.mjs +7 -32
  28. package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  29. package/components/advanced/custom/public_api.d.ts +0 -1
  30. package/components/advanced/login/bundles/index.umd.js +10 -34
  31. package/components/advanced/login/esm2022/login.component.mjs +7 -6
  32. package/components/advanced/login/esm2022/public_api.mjs +1 -2
  33. package/components/advanced/login/fesm2022/index.mjs +8 -32
  34. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  35. package/components/advanced/login/login.component.d.ts +1 -1
  36. package/components/advanced/login/public_api.d.ts +0 -1
  37. package/components/advanced/marquee/bundles/index.umd.js +6 -29
  38. package/components/advanced/marquee/esm2022/marquee.directive.mjs +3 -2
  39. package/components/advanced/marquee/esm2022/public_api.mjs +1 -2
  40. package/components/advanced/marquee/fesm2022/index.mjs +5 -28
  41. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  42. package/components/advanced/marquee/marquee.directive.d.ts +1 -1
  43. package/components/advanced/marquee/public_api.d.ts +0 -1
  44. package/components/base/bundles/index.umd.js +76 -274
  45. package/components/base/components.module.d.ts +13 -15
  46. package/components/base/directives/show-in-device.directive.d.ts +1 -1
  47. package/components/base/esm2022/components.module.mjs +7 -13
  48. package/components/base/esm2022/directives/show-in-device.directive.mjs +3 -2
  49. package/components/base/esm2022/pipes/custom-pipes.mjs +32 -16
  50. package/components/base/esm2022/pipes/image.pipe.mjs +3 -2
  51. package/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -2
  52. package/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -2
  53. package/components/base/esm2022/public_api.mjs +1 -2
  54. package/components/base/esm2022/utils/form-utils.mjs +2 -1
  55. package/components/base/esm2022/utils/live-utils.mjs +3 -7
  56. package/components/base/esm2022/widgets/common/base/base.component.mjs +3 -5
  57. package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +3 -2
  58. package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
  59. package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -2
  60. package/components/base/esm2022/widgets/common/container/container.directive.mjs +3 -2
  61. package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -3
  62. package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +3 -2
  63. package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -2
  64. package/components/base/esm2022/widgets/common/message/message.component.mjs +5 -5
  65. package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
  66. package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +5 -3
  67. package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +3 -2
  68. package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +3 -2
  69. package/components/base/fesm2022/index.mjs +76 -272
  70. package/components/base/fesm2022/index.mjs.map +1 -1
  71. package/components/base/pipes/custom-pipes.d.ts +16 -16
  72. package/components/base/pipes/image.pipe.d.ts +1 -1
  73. package/components/base/pipes/sanitize.pipe.d.ts +1 -1
  74. package/components/base/pipes/trust-as.pipe.d.ts +1 -1
  75. package/components/base/public_api.d.ts +0 -1
  76. package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +1 -1
  77. package/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
  78. package/components/base/widgets/common/base/text-content.directive.d.ts +1 -1
  79. package/components/base/widgets/common/container/container.directive.d.ts +1 -1
  80. package/components/base/widgets/common/item-template/item-template.directive.d.ts +1 -1
  81. package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
  82. package/components/base/widgets/common/message/message.component.d.ts +1 -1
  83. package/components/base/widgets/common/partial/partial.directive.d.ts +1 -1
  84. package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +2 -2
  85. package/components/base/widgets/common/redraw/redrawable.directive.d.ts +1 -1
  86. package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +1 -1
  87. package/components/basic/default/anchor/anchor.component.d.ts +1 -1
  88. package/components/basic/default/audio/audio.component.d.ts +1 -1
  89. package/components/basic/default/bundles/index.umd.js +100 -148
  90. package/components/basic/default/esm2022/anchor/anchor.component.mjs +23 -21
  91. package/components/basic/default/esm2022/audio/audio.component.mjs +7 -6
  92. package/components/basic/default/esm2022/html/html.directive.mjs +3 -2
  93. package/components/basic/default/esm2022/icon/icon.component.mjs +17 -16
  94. package/components/basic/default/esm2022/iframe/iframe.component.mjs +14 -13
  95. package/components/basic/default/esm2022/label/label.directive.mjs +3 -2
  96. package/components/basic/default/esm2022/picture/picture.directive.mjs +3 -2
  97. package/components/basic/default/esm2022/picture/picture.props.mjs +1 -5
  98. package/components/basic/default/esm2022/public_api.mjs +1 -2
  99. package/components/basic/default/esm2022/spinner/spinner.component.mjs +26 -24
  100. package/components/basic/default/esm2022/video/video.component.mjs +19 -18
  101. package/components/basic/default/fesm2022/index.mjs +101 -148
  102. package/components/basic/default/fesm2022/index.mjs.map +1 -1
  103. package/components/basic/default/html/html.directive.d.ts +1 -1
  104. package/components/basic/default/icon/icon.component.d.ts +1 -1
  105. package/components/basic/default/iframe/iframe.component.d.ts +1 -1
  106. package/components/basic/default/label/label.directive.d.ts +1 -1
  107. package/components/basic/default/picture/picture.directive.d.ts +1 -1
  108. package/components/basic/default/public_api.d.ts +0 -1
  109. package/components/basic/default/spinner/spinner.component.d.ts +1 -1
  110. package/components/basic/default/video/video.component.d.ts +1 -1
  111. package/components/basic/progress/bundles/index.umd.js +20 -51
  112. package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +12 -11
  113. package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  114. package/components/basic/progress/esm2022/public_api.mjs +1 -2
  115. package/components/basic/progress/fesm2022/index.mjs +19 -49
  116. package/components/basic/progress/fesm2022/index.mjs.map +1 -1
  117. package/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -1
  118. package/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -1
  119. package/components/basic/progress/public_api.d.ts +0 -1
  120. package/components/basic/rich-text-editor/bundles/index.umd.js +15 -40
  121. package/components/basic/rich-text-editor/esm2022/public_api.mjs +1 -2
  122. package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +13 -12
  123. package/components/basic/rich-text-editor/fesm2022/index.mjs +13 -37
  124. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  125. package/components/basic/rich-text-editor/public_api.d.ts +0 -1
  126. package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
  127. package/components/basic/search/bundles/index.umd.js +170 -207
  128. package/components/basic/search/esm2022/public_api.mjs +1 -2
  129. package/components/basic/search/esm2022/scrollable.directive.mjs +3 -2
  130. package/components/basic/search/esm2022/search.component.mjs +76 -72
  131. package/components/basic/search/fesm2022/index.mjs +107 -143
  132. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  133. package/components/basic/search/public_api.d.ts +0 -1
  134. package/components/basic/search/scrollable.directive.d.ts +1 -1
  135. package/components/basic/search/search.component.d.ts +1 -1
  136. package/components/basic/tree/bundles/index.umd.js +9 -33
  137. package/components/basic/tree/esm2022/public_api.mjs +1 -2
  138. package/components/basic/tree/esm2022/tree.component.mjs +7 -6
  139. package/components/basic/tree/fesm2022/index.mjs +8 -32
  140. package/components/basic/tree/fesm2022/index.mjs.map +1 -1
  141. package/components/basic/tree/public_api.d.ts +0 -1
  142. package/components/basic/tree/tree.component.d.ts +1 -1
  143. package/components/chart/bundles/index.umd.js +25 -53
  144. package/components/chart/chart.component.d.ts +1 -1
  145. package/components/chart/esm2022/chart.component.mjs +26 -24
  146. package/components/chart/esm2022/chart.utils.mjs +2 -1
  147. package/components/chart/esm2022/public_api.mjs +1 -2
  148. package/components/chart/fesm2022/index.mjs +26 -52
  149. package/components/chart/fesm2022/index.mjs.map +1 -1
  150. package/components/chart/public_api.d.ts +0 -1
  151. package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -1
  152. package/components/containers/accordion/accordion.directive.d.ts +1 -1
  153. package/components/containers/accordion/bundles/index.umd.js +208 -237
  154. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -11
  155. package/components/containers/accordion/esm2022/accordion.directive.mjs +5 -4
  156. package/components/containers/accordion/esm2022/public_api.mjs +1 -2
  157. package/components/containers/accordion/fesm2022/index.mjs +189 -217
  158. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  159. package/components/containers/accordion/public_api.d.ts +0 -1
  160. package/components/containers/layout-grid/bundles/index.umd.js +13 -43
  161. package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +7 -9
  162. package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +3 -2
  163. package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +3 -2
  164. package/components/containers/layout-grid/esm2022/public_api.mjs +1 -2
  165. package/components/containers/layout-grid/fesm2022/index.mjs +13 -43
  166. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  167. package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +1 -1
  168. package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +1 -1
  169. package/components/containers/layout-grid/layout-grid.directive.d.ts +1 -1
  170. package/components/containers/layout-grid/public_api.d.ts +0 -1
  171. package/components/containers/linear-layout/bundles/index.umd.js +8 -33
  172. package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +3 -2
  173. package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +3 -2
  174. package/components/containers/linear-layout/esm2022/public_api.mjs +1 -2
  175. package/components/containers/linear-layout/fesm2022/index.mjs +7 -32
  176. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  177. package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +1 -1
  178. package/components/containers/linear-layout/linear-layout.directive.d.ts +1 -1
  179. package/components/containers/linear-layout/public_api.d.ts +0 -1
  180. package/components/containers/panel/bundles/index.umd.js +87 -118
  181. package/components/containers/panel/esm2022/panel.component.mjs +48 -46
  182. package/components/containers/panel/esm2022/public_api.mjs +1 -2
  183. package/components/containers/panel/fesm2022/index.mjs +49 -79
  184. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  185. package/components/containers/panel/panel.component.d.ts +1 -1
  186. package/components/containers/panel/public_api.d.ts +0 -1
  187. package/components/containers/tabs/bundles/index.umd.js +84 -116
  188. package/components/containers/tabs/esm2022/public_api.mjs +1 -2
  189. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +8 -10
  190. package/components/containers/tabs/esm2022/tabs.component.mjs +35 -33
  191. package/components/containers/tabs/esm2022/tabs.props.mjs +1 -5
  192. package/components/containers/tabs/fesm2022/index.mjs +45 -76
  193. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  194. package/components/containers/tabs/public_api.d.ts +0 -1
  195. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +1 -1
  196. package/components/containers/tabs/tabs.component.d.ts +1 -1
  197. package/components/containers/tile/bundles/index.umd.js +6 -29
  198. package/components/containers/tile/esm2022/public_api.mjs +1 -2
  199. package/components/containers/tile/esm2022/tile.directive.mjs +3 -2
  200. package/components/containers/tile/fesm2022/index.mjs +5 -28
  201. package/components/containers/tile/fesm2022/index.mjs.map +1 -1
  202. package/components/containers/tile/public_api.d.ts +0 -1
  203. package/components/containers/tile/tile.directive.d.ts +1 -1
  204. package/components/containers/wizard/bundles/index.umd.js +355 -186
  205. package/components/containers/wizard/esm2022/public_api.mjs +2 -3
  206. package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +3 -2
  207. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +176 -0
  208. package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +8 -5
  209. package/components/containers/wizard/esm2022/wizard.component.mjs +264 -102
  210. package/components/containers/wizard/esm2022/wizard.props.mjs +8 -4
  211. package/components/containers/wizard/fesm2022/index.mjs +323 -152
  212. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  213. package/components/containers/wizard/public_api.d.ts +1 -2
  214. package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +1 -1
  215. package/components/containers/wizard/wizard-step/{wizard-step.directive.d.ts → wizard-step.component.d.ts} +12 -6
  216. package/components/containers/wizard/wizard.component.d.ts +64 -18
  217. package/components/data/card/bundles/index.umd.js +92 -135
  218. package/components/data/card/card-actions/card-actions.directive.d.ts +1 -1
  219. package/components/data/card/card-content/card-content.component.d.ts +1 -1
  220. package/components/data/card/card-footer/card-footer.directive.d.ts +1 -1
  221. package/components/data/card/card.component.d.ts +1 -1
  222. package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +3 -2
  223. package/components/data/card/esm2022/card-content/card-content.component.mjs +7 -6
  224. package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +3 -2
  225. package/components/data/card/esm2022/card.component.mjs +39 -38
  226. package/components/data/card/esm2022/public_api.mjs +1 -2
  227. package/components/data/card/fesm2022/index.mjs +49 -92
  228. package/components/data/card/fesm2022/index.mjs.map +1 -1
  229. package/components/data/card/public_api.d.ts +0 -1
  230. package/components/data/form/bundles/index.umd.js +115 -182
  231. package/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
  232. package/components/data/form/esm2022/form-field/form-field.directive.mjs +3 -2
  233. package/components/data/form/esm2022/form-widget.directive.mjs +3 -2
  234. package/components/data/form/esm2022/form.component.mjs +101 -104
  235. package/components/data/form/esm2022/form.props.mjs +1 -11
  236. package/components/data/form/esm2022/live-actions/dependson.directive.mjs +3 -2
  237. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +3 -2
  238. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
  239. package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -6
  240. package/components/data/form/esm2022/public_api.mjs +1 -2
  241. package/components/data/form/fesm2022/index.mjs +117 -184
  242. package/components/data/form/fesm2022/index.mjs.map +1 -1
  243. package/components/data/form/form-action/form-action.directive.d.ts +1 -1
  244. package/components/data/form/form-field/form-field.directive.d.ts +1 -1
  245. package/components/data/form/form-widget.directive.d.ts +1 -1
  246. package/components/data/form/form.component.d.ts +1 -1
  247. package/components/data/form/live-actions/dependson.directive.d.ts +1 -1
  248. package/components/data/form/live-actions/live-actions.directive.d.ts +1 -1
  249. package/components/data/form/live-filter/live-filter.directive.d.ts +1 -1
  250. package/components/data/form/live-form/live-form.directive.d.ts +1 -1
  251. package/components/data/form/public_api.d.ts +0 -1
  252. package/components/data/list/bundles/index.umd.js +195 -504
  253. package/components/data/list/esm2022/list-item.directive.mjs +4 -3
  254. package/components/data/list/esm2022/list.component.mjs +187 -232
  255. package/components/data/list/esm2022/list.props.mjs +2 -3
  256. package/components/data/list/esm2022/public_api.mjs +1 -2
  257. package/components/data/list/fesm2022/index.mjs +193 -502
  258. package/components/data/list/fesm2022/index.mjs.map +1 -1
  259. package/components/data/list/list-item.directive.d.ts +1 -1
  260. package/components/data/list/list.component.d.ts +1 -1
  261. package/components/data/list/public_api.d.ts +0 -1
  262. package/components/data/live-table/bundles/index.umd.js +9 -33
  263. package/components/data/live-table/esm2022/live-table.component.mjs +7 -6
  264. package/components/data/live-table/esm2022/public_api.mjs +1 -2
  265. package/components/data/live-table/fesm2022/index.mjs +8 -32
  266. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  267. package/components/data/live-table/live-table.component.d.ts +1 -1
  268. package/components/data/live-table/public_api.d.ts +0 -1
  269. package/components/data/pagination/bundles/index.umd.js +80 -110
  270. package/components/data/pagination/esm2022/pagination.component.mjs +80 -76
  271. package/components/data/pagination/esm2022/public_api.mjs +1 -2
  272. package/components/data/pagination/fesm2022/index.mjs +81 -110
  273. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  274. package/components/data/pagination/pagination.component.d.ts +1 -1
  275. package/components/data/pagination/public_api.d.ts +0 -1
  276. package/components/data/table/bundles/index.umd.js +66 -135
  277. package/components/data/table/esm2022/public_api.mjs +1 -2
  278. package/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
  279. package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
  280. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +3 -2
  281. package/components/data/table/esm2022/table-cud.directive.mjs +3 -2
  282. package/components/data/table/esm2022/table-filter.directive.mjs +4 -2
  283. package/components/data/table/esm2022/table-row/table-row.directive.mjs +3 -2
  284. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
  285. package/components/data/table/esm2022/table.component.mjs +50 -49
  286. package/components/data/table/fesm2022/index.mjs +70 -140
  287. package/components/data/table/fesm2022/index.mjs.map +1 -1
  288. package/components/data/table/public_api.d.ts +0 -1
  289. package/components/data/table/table-action/table-action.directive.d.ts +1 -1
  290. package/components/data/table/table-column/table-column.directive.d.ts +1 -1
  291. package/components/data/table/table-column-group/table-column-group.directive.d.ts +1 -1
  292. package/components/data/table/table-cud.directive.d.ts +1 -1
  293. package/components/data/table/table-filter.directive.d.ts +1 -1
  294. package/components/data/table/table-row/table-row.directive.d.ts +1 -1
  295. package/components/data/table/table-row-action/table-row-action.directive.d.ts +1 -1
  296. package/components/data/table/table.component.d.ts +1 -1
  297. package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
  298. package/components/dialogs/alert-dialog/bundles/index.umd.js +32 -64
  299. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +10 -10
  300. package/components/dialogs/alert-dialog/esm2022/public_api.mjs +1 -2
  301. package/components/dialogs/alert-dialog/fesm2022/index.mjs +11 -43
  302. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  303. package/components/dialogs/alert-dialog/public_api.d.ts +0 -1
  304. package/components/dialogs/confirm-dialog/bundles/index.umd.js +10 -42
  305. package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  306. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -9
  307. package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +1 -2
  308. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +10 -42
  309. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  310. package/components/dialogs/confirm-dialog/public_api.d.ts +0 -1
  311. package/components/dialogs/default/bundles/index.umd.js +76 -136
  312. package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +1 -1
  313. package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +1 -1
  314. package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +1 -1
  315. package/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
  316. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +3 -2
  317. package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +3 -2
  318. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +70 -97
  319. package/components/dialogs/default/esm2022/public_api.mjs +1 -2
  320. package/components/dialogs/default/fesm2022/index.mjs +78 -137
  321. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  322. package/components/dialogs/default/public_api.d.ts +0 -1
  323. package/components/dialogs/design-dialog/bundles/index.umd.js +16 -47
  324. package/components/dialogs/design-dialog/dialog.component.d.ts +1 -1
  325. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +14 -13
  326. package/components/dialogs/design-dialog/esm2022/public_api.mjs +1 -2
  327. package/components/dialogs/design-dialog/fesm2022/index.mjs +14 -45
  328. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  329. package/components/dialogs/design-dialog/public_api.d.ts +0 -1
  330. package/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -57
  331. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -21
  332. package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +1 -2
  333. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +21 -57
  334. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  335. package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +1 -1
  336. package/components/dialogs/iframe-dialog/public_api.d.ts +0 -1
  337. package/components/dialogs/login-dialog/bundles/index.umd.js +6 -38
  338. package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +3 -2
  339. package/components/dialogs/login-dialog/esm2022/public_api.mjs +1 -2
  340. package/components/dialogs/login-dialog/fesm2022/index.mjs +6 -41
  341. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  342. package/components/dialogs/login-dialog/login-dialog.directive.d.ts +1 -1
  343. package/components/dialogs/login-dialog/public_api.d.ts +0 -1
  344. package/components/dialogs/partial-dialog/bundles/index.umd.js +17 -49
  345. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +16 -15
  346. package/components/dialogs/partial-dialog/esm2022/public_api.mjs +1 -2
  347. package/components/dialogs/partial-dialog/fesm2022/index.mjs +16 -47
  348. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  349. package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +1 -1
  350. package/components/dialogs/partial-dialog/public_api.d.ts +0 -1
  351. package/components/input/calendar/bundles/index.umd.js +19 -46
  352. package/components/input/calendar/calendar.component.d.ts +1 -1
  353. package/components/input/calendar/esm2022/calendar.component.mjs +24 -10
  354. package/components/input/calendar/esm2022/calendar.props.mjs +1 -1
  355. package/components/input/calendar/esm2022/public_api.mjs +1 -2
  356. package/components/input/calendar/fesm2022/index.mjs +26 -48
  357. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  358. package/components/input/calendar/public_api.d.ts +0 -1
  359. package/components/input/chips/bundles/index.umd.js +86 -114
  360. package/components/input/chips/chips.component.d.ts +1 -1
  361. package/components/input/chips/esm2022/chips.component.mjs +28 -27
  362. package/components/input/chips/esm2022/public_api.mjs +1 -2
  363. package/components/input/chips/fesm2022/index.mjs +29 -56
  364. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  365. package/components/input/chips/public_api.d.ts +0 -1
  366. package/components/input/color-picker/bundles/index.umd.js +10 -40
  367. package/components/input/color-picker/color-picker.component.d.ts +1 -1
  368. package/components/input/color-picker/esm2022/color-picker.component.mjs +10 -6
  369. package/components/input/color-picker/esm2022/public_api.mjs +1 -2
  370. package/components/input/color-picker/fesm2022/index.mjs +11 -40
  371. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  372. package/components/input/color-picker/public_api.d.ts +0 -1
  373. package/components/input/currency/bundles/index.umd.js +11 -41
  374. package/components/input/currency/currency.component.d.ts +1 -1
  375. package/components/input/currency/esm2022/currency.component.mjs +8 -6
  376. package/components/input/currency/esm2022/public_api.mjs +1 -2
  377. package/components/input/currency/fesm2022/index.mjs +11 -41
  378. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  379. package/components/input/currency/public_api.d.ts +0 -1
  380. package/components/input/default/bundles/index.umd.js +2183 -2263
  381. package/components/input/default/button/button.component.d.ts +1 -1
  382. package/components/input/default/button-group/button-group.directive.d.ts +1 -1
  383. package/components/input/default/caption-position.directive.d.ts +1 -1
  384. package/components/input/default/checkbox/checkbox.component.d.ts +1 -1
  385. package/components/input/default/checkboxset/checkboxset.component.d.ts +1 -1
  386. package/components/input/default/composite/composite.directive.d.ts +1 -1
  387. package/components/input/default/esm2022/button/button.component.mjs +23 -21
  388. package/components/input/default/esm2022/button-group/button-group.directive.mjs +3 -2
  389. package/components/input/default/esm2022/caption-position.directive.mjs +3 -2
  390. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +9 -6
  391. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +73 -72
  392. package/components/input/default/esm2022/composite/composite.directive.mjs +3 -2
  393. package/components/input/default/esm2022/number/number.component.mjs +9 -6
  394. package/components/input/default/esm2022/public_api.mjs +1 -2
  395. package/components/input/default/esm2022/radioset/radioset.component.mjs +73 -72
  396. package/components/input/default/esm2022/select/select.component.mjs +29 -32
  397. package/components/input/default/esm2022/switch/switch.component.mjs +29 -27
  398. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +9 -6
  399. package/components/input/default/esm2022/text/color/input-color.component.mjs +9 -6
  400. package/components/input/default/esm2022/text/email/input-email.component.mjs +9 -6
  401. package/components/input/default/esm2022/text/number/input-number.component.mjs +9 -6
  402. package/components/input/default/esm2022/text/text/input-text.component.mjs +10 -6
  403. package/components/input/default/esm2022/textarea/textarea.component.mjs +14 -11
  404. package/components/input/default/fesm2022/index.mjs +2198 -2277
  405. package/components/input/default/fesm2022/index.mjs.map +1 -1
  406. package/components/input/default/number/number.component.d.ts +1 -1
  407. package/components/input/default/public_api.d.ts +0 -1
  408. package/components/input/default/radioset/radioset.component.d.ts +1 -1
  409. package/components/input/default/select/select.component.d.ts +1 -1
  410. package/components/input/default/switch/switch.component.d.ts +1 -1
  411. package/components/input/default/text/calendar/input-calendar.component.d.ts +1 -1
  412. package/components/input/default/text/color/input-color.component.d.ts +1 -1
  413. package/components/input/default/text/email/input-email.component.d.ts +1 -1
  414. package/components/input/default/text/number/input-number.component.d.ts +1 -1
  415. package/components/input/default/text/text/input-text.component.d.ts +1 -1
  416. package/components/input/default/textarea/textarea.component.d.ts +1 -1
  417. package/components/input/epoch/base-date-time.component.d.ts +0 -1
  418. package/components/input/epoch/bundles/index.umd.js +181 -229
  419. package/components/input/epoch/date/date.component.d.ts +1 -1
  420. package/components/input/epoch/date/imaskUtil.d.ts +2 -2
  421. package/components/input/epoch/date-time/date-time-picker.component.d.ts +6 -6
  422. package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
  423. package/components/input/epoch/esm2022/base-date-time.component.mjs +5 -9
  424. package/components/input/epoch/esm2022/date/date.component.mjs +19 -18
  425. package/components/input/epoch/esm2022/date/imaskUtil.mjs +2 -1
  426. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +75 -62
  427. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +27 -24
  428. package/components/input/epoch/esm2022/picker/picker.component.mjs +33 -28
  429. package/components/input/epoch/esm2022/public_api.mjs +1 -2
  430. package/components/input/epoch/esm2022/time/time.component.mjs +24 -21
  431. package/components/input/epoch/fesm2022/index.mjs +158 -204
  432. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  433. package/components/input/epoch/picker/picker.component.d.ts +2 -2
  434. package/components/input/epoch/public_api.d.ts +0 -1
  435. package/components/input/epoch/time/time.component.d.ts +1 -1
  436. package/components/input/file-upload/bundles/index.umd.js +135 -178
  437. package/components/input/file-upload/esm2022/file-upload.component.mjs +133 -150
  438. package/components/input/file-upload/esm2022/public_api.mjs +1 -2
  439. package/components/input/file-upload/fesm2022/index.mjs +133 -175
  440. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  441. package/components/input/file-upload/file-upload.component.d.ts +1 -2
  442. package/components/input/file-upload/public_api.d.ts +0 -1
  443. package/components/input/rating/bundles/index.umd.js +50 -77
  444. package/components/input/rating/esm2022/public_api.mjs +1 -2
  445. package/components/input/rating/esm2022/rating.component.mjs +23 -20
  446. package/components/input/rating/fesm2022/index.mjs +23 -49
  447. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  448. package/components/input/rating/public_api.d.ts +0 -1
  449. package/components/input/rating/rating.component.d.ts +1 -1
  450. package/components/input/slider/bundles/index.umd.js +35 -63
  451. package/components/input/slider/esm2022/public_api.mjs +1 -2
  452. package/components/input/slider/esm2022/slider.component.mjs +15 -13
  453. package/components/input/slider/fesm2022/index.mjs +15 -42
  454. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  455. package/components/input/slider/public_api.d.ts +0 -1
  456. package/components/input/slider/slider.component.d.ts +1 -1
  457. package/components/navigation/breadcrumb/breadcrumb.component.d.ts +1 -1
  458. package/components/navigation/breadcrumb/bundles/index.umd.js +40 -67
  459. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +23 -21
  460. package/components/navigation/breadcrumb/esm2022/public_api.mjs +1 -2
  461. package/components/navigation/breadcrumb/fesm2022/index.mjs +23 -50
  462. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  463. package/components/navigation/breadcrumb/public_api.d.ts +0 -1
  464. package/components/navigation/menu/bundles/index.umd.js +642 -696
  465. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
  466. package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +11 -9
  467. package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +24 -18
  468. package/components/navigation/menu/esm2022/menu.component.mjs +34 -31
  469. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +3 -2
  470. package/components/navigation/menu/esm2022/nav/nav.component.mjs +39 -29
  471. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +6 -3
  472. package/components/navigation/menu/esm2022/public_api.mjs +1 -2
  473. package/components/navigation/menu/fesm2022/index.mjs +534 -587
  474. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  475. package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +1 -1
  476. package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +1 -1
  477. package/components/navigation/menu/menu.component.d.ts +1 -1
  478. package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +1 -1
  479. package/components/navigation/menu/nav/nav.component.d.ts +1 -1
  480. package/components/navigation/menu/nav/navigation-control.directive.d.ts +1 -1
  481. package/components/navigation/menu/public_api.d.ts +0 -1
  482. package/components/navigation/navbar/bundles/index.umd.js +20 -44
  483. package/components/navigation/navbar/esm2022/navbar.component.mjs +18 -16
  484. package/components/navigation/navbar/esm2022/public_api.mjs +1 -2
  485. package/components/navigation/navbar/fesm2022/index.mjs +18 -41
  486. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  487. package/components/navigation/navbar/navbar.component.d.ts +1 -1
  488. package/components/navigation/navbar/public_api.d.ts +0 -1
  489. package/components/navigation/popover/bundles/index.umd.js +12 -43
  490. package/components/navigation/popover/esm2022/popover.component.mjs +11 -9
  491. package/components/navigation/popover/esm2022/public_api.mjs +1 -2
  492. package/components/navigation/popover/fesm2022/index.mjs +11 -41
  493. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  494. package/components/navigation/popover/popover.component.d.ts +1 -1
  495. package/components/navigation/popover/public_api.d.ts +0 -1
  496. package/components/page/default/bundles/index.umd.js +96 -138
  497. package/components/page/default/content/content.component.d.ts +1 -1
  498. package/components/page/default/esm2022/content/content.component.mjs +7 -6
  499. package/components/page/default/esm2022/layout.directive.mjs +3 -2
  500. package/components/page/default/esm2022/page-content/page-content.component.mjs +7 -6
  501. package/components/page/default/esm2022/page-content/page-content.props.mjs +2 -3
  502. package/components/page/default/esm2022/page.directive.mjs +3 -2
  503. package/components/page/default/esm2022/public_api.mjs +1 -2
  504. package/components/page/default/esm2022/router-outlet.directive.mjs +3 -2
  505. package/components/page/default/esm2022/spa-page.directive.mjs +3 -2
  506. package/components/page/default/fesm2022/index.mjs +96 -138
  507. package/components/page/default/fesm2022/index.mjs.map +1 -1
  508. package/components/page/default/layout.directive.d.ts +1 -1
  509. package/components/page/default/page-content/page-content.component.d.ts +1 -1
  510. package/components/page/default/page.directive.d.ts +1 -1
  511. package/components/page/default/public_api.d.ts +0 -1
  512. package/components/page/default/router-outlet.directive.d.ts +1 -1
  513. package/components/page/default/spa-page.directive.d.ts +1 -1
  514. package/components/page/footer/bundles/index.umd.js +6 -29
  515. package/components/page/footer/esm2022/footer.directive.mjs +3 -2
  516. package/components/page/footer/esm2022/public_api.mjs +1 -2
  517. package/components/page/footer/fesm2022/index.mjs +5 -28
  518. package/components/page/footer/fesm2022/index.mjs.map +1 -1
  519. package/components/page/footer/footer.directive.d.ts +1 -1
  520. package/components/page/footer/public_api.d.ts +0 -1
  521. package/components/page/header/bundles/index.umd.js +9 -33
  522. package/components/page/header/esm2022/header.component.mjs +7 -6
  523. package/components/page/header/esm2022/public_api.mjs +1 -2
  524. package/components/page/header/fesm2022/index.mjs +8 -32
  525. package/components/page/header/fesm2022/index.mjs.map +1 -1
  526. package/components/page/header/header.component.d.ts +1 -1
  527. package/components/page/header/public_api.d.ts +0 -1
  528. package/components/page/left-panel/bundles/index.umd.js +6 -29
  529. package/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -2
  530. package/components/page/left-panel/esm2022/public_api.mjs +1 -2
  531. package/components/page/left-panel/fesm2022/index.mjs +5 -28
  532. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  533. package/components/page/left-panel/left-panel.directive.d.ts +1 -1
  534. package/components/page/left-panel/public_api.d.ts +0 -1
  535. package/components/page/right-panel/bundles/index.umd.js +6 -29
  536. package/components/page/right-panel/esm2022/public_api.mjs +1 -2
  537. package/components/page/right-panel/esm2022/right-panel.directive.mjs +3 -2
  538. package/components/page/right-panel/fesm2022/index.mjs +5 -28
  539. package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  540. package/components/page/right-panel/public_api.d.ts +0 -1
  541. package/components/page/right-panel/right-panel.directive.d.ts +1 -1
  542. package/components/page/top-nav/bundles/index.umd.js +6 -29
  543. package/components/page/top-nav/esm2022/public_api.mjs +1 -2
  544. package/components/page/top-nav/esm2022/top-nav.directive.mjs +3 -2
  545. package/components/page/top-nav/fesm2022/index.mjs +5 -28
  546. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  547. package/components/page/top-nav/public_api.d.ts +0 -1
  548. package/components/page/top-nav/top-nav.directive.d.ts +1 -1
  549. package/components/prefab/bundles/index.umd.js +8 -33
  550. package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
  551. package/components/prefab/esm2022/prefab.directive.mjs +3 -2
  552. package/components/prefab/esm2022/public_api.mjs +1 -2
  553. package/components/prefab/fesm2022/index.mjs +7 -32
  554. package/components/prefab/fesm2022/index.mjs.map +1 -1
  555. package/components/prefab/prefab-container/prefab-container.directive.d.ts +1 -1
  556. package/components/prefab/prefab.directive.d.ts +1 -1
  557. package/components/prefab/public_api.d.ts +0 -1
  558. package/core/bundles/index.umd.js +30 -85
  559. package/core/esm2022/public_api.mjs +2 -3
  560. package/core/esm2022/utils/build-utils.mjs +9 -5
  561. package/core/esm2022/utils/utils.mjs +11 -40
  562. package/core/fesm2022/index.mjs +31 -81
  563. package/core/fesm2022/index.mjs.map +1 -1
  564. package/core/public_api.d.ts +1 -2
  565. package/core/utils/utils.d.ts +1 -3
  566. package/http/bundles/index.umd.js +9 -34
  567. package/http/esm2022/http.service.mjs +6 -3
  568. package/http/esm2022/public_api.mjs +4 -2
  569. package/http/fesm2022/index.mjs +9 -34
  570. package/http/fesm2022/index.mjs.map +1 -1
  571. package/http/public_api.d.ts +3 -1
  572. package/npm-shrinkwrap.json +2 -2
  573. package/oAuth/bundles/index.umd.js +7 -42
  574. package/oAuth/esm2022/oAuth.utils.mjs +6 -23
  575. package/oAuth/esm2022/public_api.mjs +1 -2
  576. package/oAuth/fesm2022/index.mjs +7 -40
  577. package/oAuth/fesm2022/index.mjs.map +1 -1
  578. package/oAuth/public_api.d.ts +0 -1
  579. package/package-lock.json +2 -2
  580. package/package.json +1 -1
  581. package/runtime/base/bundles/index.umd.js +681 -596
  582. package/runtime/base/components/app-component/app.component.d.ts +1 -1
  583. package/runtime/base/components/app-spinner.component.d.ts +1 -1
  584. package/runtime/base/components/custom-toaster.component.d.ts +1 -1
  585. package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -1
  586. package/runtime/base/components/prefab-preview.component.d.ts +1 -1
  587. package/runtime/base/directives/accessroles.directive.d.ts +1 -1
  588. package/runtime/base/directives/prefab.directive.d.ts +1 -1
  589. package/runtime/base/esm2022/components/app-component/app.component.mjs +42 -49
  590. package/runtime/base/esm2022/components/app-spinner.component.mjs +29 -21
  591. package/runtime/base/esm2022/components/base-page.component.mjs +3 -11
  592. package/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -11
  593. package/runtime/base/esm2022/components/custom-toaster.component.mjs +20 -14
  594. package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
  595. package/runtime/base/esm2022/components/prefab-preview.component.mjs +8 -6
  596. package/runtime/base/esm2022/directives/accessroles.directive.mjs +3 -2
  597. package/runtime/base/esm2022/directives/prefab.directive.mjs +3 -2
  598. package/runtime/base/esm2022/public_api.mjs +1 -1
  599. package/runtime/base/esm2022/resolves/security-config.resolve.mjs +4 -6
  600. package/runtime/base/esm2022/runtime-base.module.mjs +486 -337
  601. package/runtime/base/esm2022/services/app.manager.service.mjs +31 -48
  602. package/runtime/base/esm2022/services/i18n.service.mjs +37 -72
  603. package/runtime/base/fesm2022/index.mjs +689 -605
  604. package/runtime/base/fesm2022/index.mjs.map +1 -1
  605. package/runtime/base/runtime-base.module.d.ts +115 -84
  606. package/runtime/base/services/i18n.service.d.ts +1 -1
  607. package/runtime/dynamic/app/components/page-wrapper.component.d.ts +1 -1
  608. package/runtime/dynamic/bundles/index.umd.js +113 -69
  609. package/runtime/dynamic/esm2022/app/app.module.mjs +151 -105
  610. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +7 -4
  611. package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -2
  612. package/runtime/dynamic/esm2022/main.mjs +2 -7
  613. package/runtime/dynamic/fesm2022/index.mjs +159 -114
  614. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  615. package/security/bundles/index.umd.js +3 -34
  616. package/security/esm2022/public_api.mjs +1 -2
  617. package/security/esm2022/security.service.mjs +4 -15
  618. package/security/fesm2022/index.mjs +5 -32
  619. package/security/fesm2022/index.mjs.map +1 -1
  620. package/security/public_api.d.ts +0 -1
  621. package/transpiler/bundles/index.umd.js +271 -168
  622. package/transpiler/esm2022/build.mjs +1 -6
  623. package/transpiler/esm2022/imports.mjs +268 -161
  624. package/transpiler/fesm2022/index.mjs +267 -165
  625. package/transpiler/fesm2022/index.mjs.map +1 -1
  626. package/variables/bundles/index.umd.js +14 -198
  627. package/variables/constants/variables.constants.d.ts +0 -2
  628. package/variables/esm2022/constants/variables.constants.mjs +1 -3
  629. package/variables/esm2022/factory/variable-manager.factory.mjs +1 -3
  630. package/variables/esm2022/factory/variable.factory.mjs +1 -5
  631. package/variables/esm2022/manager/action/logout-action.manager.mjs +5 -7
  632. package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +3 -3
  633. package/variables/esm2022/public_api.mjs +1 -5
  634. package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -11
  635. package/variables/esm2022/util/variable/service-variable.utils.mjs +1 -4
  636. package/variables/esm2022/util/variable/variables.utils.mjs +4 -19
  637. package/variables/fesm2022/index.mjs +15 -198
  638. package/variables/fesm2022/index.mjs.map +1 -1
  639. package/variables/public_api.d.ts +0 -4
  640. package/components/advanced/carousel/carousel.module.d.ts +0 -11
  641. package/components/advanced/carousel/esm2022/carousel.module.mjs +0 -36
  642. package/components/advanced/custom/custom-widget.module.d.ts +0 -10
  643. package/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  644. package/components/advanced/login/esm2022/login.module.mjs +0 -28
  645. package/components/advanced/login/login.module.d.ts +0 -9
  646. package/components/advanced/marquee/esm2022/marquee.module.mjs +0 -28
  647. package/components/advanced/marquee/marquee.module.d.ts +0 -9
  648. package/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -221
  649. package/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -22
  650. package/components/basic/default/basic.module.d.ts +0 -17
  651. package/components/basic/default/esm2022/basic.module.mjs +0 -60
  652. package/components/basic/progress/esm2022/progress.module.mjs +0 -36
  653. package/components/basic/progress/progress.module.d.ts +0 -11
  654. package/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -28
  655. package/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -9
  656. package/components/basic/search/esm2022/search.module.mjs +0 -45
  657. package/components/basic/search/search.module.d.ts +0 -12
  658. package/components/basic/tree/esm2022/tree.module.mjs +0 -28
  659. package/components/basic/tree/tree.module.d.ts +0 -9
  660. package/components/chart/chart.module.d.ts +0 -10
  661. package/components/chart/esm2022/chart.module.mjs +0 -32
  662. package/components/containers/accordion/accordion.module.d.ts +0 -10
  663. package/components/containers/accordion/esm2022/accordion.module.mjs +0 -32
  664. package/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -36
  665. package/components/containers/layout-grid/layout-grid.module.d.ts +0 -11
  666. package/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -32
  667. package/components/containers/linear-layout/linear-layout.module.d.ts +0 -10
  668. package/components/containers/panel/esm2022/panel.module.mjs +0 -36
  669. package/components/containers/panel/panel.module.d.ts +0 -11
  670. package/components/containers/tabs/esm2022/tabs.module.mjs +0 -32
  671. package/components/containers/tabs/tabs.module.d.ts +0 -10
  672. package/components/containers/tile/esm2022/tile.module.mjs +0 -28
  673. package/components/containers/tile/tile.module.d.ts +0 -9
  674. package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -140
  675. package/components/containers/wizard/esm2022/wizard.module.mjs +0 -40
  676. package/components/containers/wizard/wizard.module.d.ts +0 -12
  677. package/components/data/card/card.module.d.ts +0 -15
  678. package/components/data/card/esm2022/card.module.mjs +0 -52
  679. package/components/data/form/esm2022/form.module.mjs +0 -68
  680. package/components/data/form/form.module.d.ts +0 -19
  681. package/components/data/list/esm2022/list.module.mjs +0 -40
  682. package/components/data/list/list.module.d.ts +0 -11
  683. package/components/data/live-table/esm2022/live-table.module.mjs +0 -28
  684. package/components/data/live-table/live-table.module.d.ts +0 -9
  685. package/components/data/pagination/esm2022/pagination.module.mjs +0 -36
  686. package/components/data/pagination/pagination.module.d.ts +0 -11
  687. package/components/data/table/esm2022/table.module.mjs +0 -91
  688. package/components/data/table/table.module.d.ts +0 -24
  689. package/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -11
  690. package/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -36
  691. package/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -11
  692. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -36
  693. package/components/dialogs/default/dialog.module.d.ts +0 -12
  694. package/components/dialogs/default/esm2022/dialog.module.mjs +0 -40
  695. package/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -11
  696. package/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -36
  697. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -40
  698. package/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -12
  699. package/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -40
  700. package/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -12
  701. package/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -36
  702. package/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -11
  703. package/components/input/calendar/calendar.module.d.ts +0 -12
  704. package/components/input/calendar/esm2022/calendar.module.mjs +0 -40
  705. package/components/input/chips/chips.module.d.ts +0 -10
  706. package/components/input/chips/esm2022/chips.module.mjs +0 -32
  707. package/components/input/color-picker/color-picker.module.d.ts +0 -11
  708. package/components/input/color-picker/esm2022/color-picker.module.mjs +0 -36
  709. package/components/input/currency/currency.module.d.ts +0 -11
  710. package/components/input/currency/esm2022/currency.module.mjs +0 -36
  711. package/components/input/default/esm2022/input.module.mjs +0 -96
  712. package/components/input/default/input.module.d.ts +0 -26
  713. package/components/input/epoch/epoch.module.d.ts +0 -18
  714. package/components/input/epoch/esm2022/epoch.module.mjs +0 -70
  715. package/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
  716. package/components/input/file-upload/file-upload.module.d.ts +0 -9
  717. package/components/input/rating/esm2022/rating.module.mjs +0 -32
  718. package/components/input/rating/rating.module.d.ts +0 -10
  719. package/components/input/slider/esm2022/slider.module.mjs +0 -32
  720. package/components/input/slider/slider.module.d.ts +0 -10
  721. package/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -10
  722. package/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -32
  723. package/components/navigation/menu/esm2022/menu.module.mjs +0 -71
  724. package/components/navigation/menu/menu.module.d.ts +0 -17
  725. package/components/navigation/navbar/esm2022/navbar.module.mjs +0 -28
  726. package/components/navigation/navbar/navbar.module.d.ts +0 -9
  727. package/components/navigation/popover/esm2022/popover.module.mjs +0 -36
  728. package/components/navigation/popover/popover.module.d.ts +0 -11
  729. package/components/page/default/esm2022/page.module.mjs +0 -55
  730. package/components/page/default/page.module.d.ts +0 -14
  731. package/components/page/footer/esm2022/footer.module.mjs +0 -28
  732. package/components/page/footer/footer.module.d.ts +0 -9
  733. package/components/page/header/esm2022/header.module.mjs +0 -28
  734. package/components/page/header/header.module.d.ts +0 -9
  735. package/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
  736. package/components/page/left-panel/left-panel.module.d.ts +0 -9
  737. package/components/page/right-panel/esm2022/right-panel.module.mjs +0 -28
  738. package/components/page/right-panel/right-panel.module.d.ts +0 -9
  739. package/components/page/top-nav/esm2022/top-nav.module.mjs +0 -28
  740. package/components/page/top-nav/top-nav.module.d.ts +0 -9
  741. package/components/prefab/esm2022/prefab.module.mjs +0 -32
  742. package/components/prefab/prefab.module.d.ts +0 -10
  743. package/core/core.module.d.ts +0 -9
  744. package/core/esm2022/core.module.mjs +0 -27
  745. package/http/esm2022/http-service.module.mjs +0 -36
  746. package/http/http-service.module.d.ts +0 -14
  747. package/locales/fullcalendar/af.js +0 -27
  748. package/locales/fullcalendar/ar-dz.js +0 -28
  749. package/locales/fullcalendar/ar-kw.js +0 -28
  750. package/locales/fullcalendar/ar-ly.js +0 -28
  751. package/locales/fullcalendar/ar-ma.js +0 -28
  752. package/locales/fullcalendar/ar-sa.js +0 -28
  753. package/locales/fullcalendar/ar-tn.js +0 -28
  754. package/locales/fullcalendar/ar.js +0 -28
  755. package/locales/fullcalendar/az.js +0 -29
  756. package/locales/fullcalendar/bg.js +0 -28
  757. package/locales/fullcalendar/bs.js +0 -29
  758. package/locales/fullcalendar/ca.js +0 -27
  759. package/locales/fullcalendar/cs.js +0 -29
  760. package/locales/fullcalendar/da.js +0 -27
  761. package/locales/fullcalendar/de.js +0 -30
  762. package/locales/fullcalendar/el.js +0 -27
  763. package/locales/fullcalendar/en-au.js +0 -14
  764. package/locales/fullcalendar/en-gb.js +0 -14
  765. package/locales/fullcalendar/en-nz.js +0 -14
  766. package/locales/fullcalendar/es-us.js +0 -27
  767. package/locales/fullcalendar/es.js +0 -27
  768. package/locales/fullcalendar/et.js +0 -29
  769. package/locales/fullcalendar/eu.js +0 -27
  770. package/locales/fullcalendar/fa.js +0 -30
  771. package/locales/fullcalendar/fi.js +0 -27
  772. package/locales/fullcalendar/fr-ca.js +0 -24
  773. package/locales/fullcalendar/fr-ch.js +0 -28
  774. package/locales/fullcalendar/fr.js +0 -28
  775. package/locales/fullcalendar/gl.js +0 -27
  776. package/locales/fullcalendar/he.js +0 -24
  777. package/locales/fullcalendar/hi.js +0 -29
  778. package/locales/fullcalendar/hr.js +0 -29
  779. package/locales/fullcalendar/hu.js +0 -27
  780. package/locales/fullcalendar/id.js +0 -27
  781. package/locales/fullcalendar/is.js +0 -27
  782. package/locales/fullcalendar/it.js +0 -29
  783. package/locales/fullcalendar/ja.js +0 -25
  784. package/locales/fullcalendar/ka.js +0 -29
  785. package/locales/fullcalendar/kk.js +0 -29
  786. package/locales/fullcalendar/ko.js +0 -23
  787. package/locales/fullcalendar/lb.js +0 -27
  788. package/locales/fullcalendar/lt.js +0 -27
  789. package/locales/fullcalendar/lv.js +0 -29
  790. package/locales/fullcalendar/mk.js +0 -25
  791. package/locales/fullcalendar/ms.js +0 -29
  792. package/locales/fullcalendar/nb.js +0 -27
  793. package/locales/fullcalendar/ne.js +0 -27
  794. package/locales/fullcalendar/nl.js +0 -27
  795. package/locales/fullcalendar/nn.js +0 -27
  796. package/locales/fullcalendar/pl.js +0 -27
  797. package/locales/fullcalendar/pt-br.js +0 -25
  798. package/locales/fullcalendar/pt.js +0 -27
  799. package/locales/fullcalendar/ro.js +0 -29
  800. package/locales/fullcalendar/ru.js +0 -29
  801. package/locales/fullcalendar/sk.js +0 -29
  802. package/locales/fullcalendar/sl.js +0 -27
  803. package/locales/fullcalendar/sq.js +0 -29
  804. package/locales/fullcalendar/sr-cyrl.js +0 -29
  805. package/locales/fullcalendar/sr.js +0 -29
  806. package/locales/fullcalendar/sv.js +0 -27
  807. package/locales/fullcalendar/th.js +0 -30
  808. package/locales/fullcalendar/tr.js +0 -27
  809. package/locales/fullcalendar/ug.js +0 -17
  810. package/locales/fullcalendar/uk.js +0 -29
  811. package/locales/fullcalendar/uz.js +0 -21
  812. package/locales/fullcalendar/vi.js +0 -29
  813. package/locales/fullcalendar/zh-cn.js +0 -30
  814. package/locales/fullcalendar/zh-tw.js +0 -23
  815. package/mobile/components/basic/default/.npmignore +0 -2
  816. package/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -8
  817. package/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -26
  818. package/mobile/components/basic/default/basic.module.d.ts +0 -15
  819. package/mobile/components/basic/default/bundles/index.umd.js +0 -980
  820. package/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -44
  821. package/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -116
  822. package/mobile/components/basic/default/esm2022/basic.module.mjs +0 -52
  823. package/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -236
  824. package/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -85
  825. package/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -61
  826. package/mobile/components/basic/default/esm2022/index.mjs +0 -5
  827. package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -183
  828. package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -5
  829. package/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -47
  830. package/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -175
  831. package/mobile/components/basic/default/esm2022/public_api.mjs +0 -10
  832. package/mobile/components/basic/default/fesm2022/index.mjs +0 -958
  833. package/mobile/components/basic/default/fesm2022/index.mjs.map +0 -1
  834. package/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -39
  835. package/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -27
  836. package/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -18
  837. package/mobile/components/basic/default/index.d.ts +0 -5
  838. package/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -28
  839. package/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -1
  840. package/mobile/components/basic/default/package.json +0 -23
  841. package/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -36
  842. package/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -33
  843. package/mobile/components/basic/default/public_api.d.ts +0 -9
  844. package/mobile/components/basic/search/.npmignore +0 -2
  845. package/mobile/components/basic/search/bundles/index.umd.js +0 -66
  846. package/mobile/components/basic/search/esm2022/index.mjs +0 -5
  847. package/mobile/components/basic/search/esm2022/public_api.mjs +0 -3
  848. package/mobile/components/basic/search/esm2022/search.directive.mjs +0 -17
  849. package/mobile/components/basic/search/esm2022/search.module.mjs +0 -28
  850. package/mobile/components/basic/search/fesm2022/index.mjs +0 -49
  851. package/mobile/components/basic/search/fesm2022/index.mjs.map +0 -1
  852. package/mobile/components/basic/search/index.d.ts +0 -5
  853. package/mobile/components/basic/search/package.json +0 -23
  854. package/mobile/components/basic/search/public_api.d.ts +0 -2
  855. package/mobile/components/basic/search/search.directive.d.ts +0 -7
  856. package/mobile/components/basic/search/search.module.d.ts +0 -9
  857. package/mobile/components/containers/segmented-control/.npmignore +0 -2
  858. package/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -281
  859. package/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -5
  860. package/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -4
  861. package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -70
  862. package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -14
  863. package/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -147
  864. package/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -32
  865. package/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -9
  866. package/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -264
  867. package/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -1
  868. package/mobile/components/containers/segmented-control/index.d.ts +0 -5
  869. package/mobile/components/containers/segmented-control/package.json +0 -23
  870. package/mobile/components/containers/segmented-control/public_api.d.ts +0 -3
  871. package/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -18
  872. package/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -1
  873. package/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -20
  874. package/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -10
  875. package/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -1
  876. package/mobile/components/data/media-list/.npmignore +0 -2
  877. package/mobile/components/data/media-list/bundles/index.umd.js +0 -310
  878. package/mobile/components/data/media-list/esm2022/index.mjs +0 -5
  879. package/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -24
  880. package/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -213
  881. package/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -48
  882. package/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -16
  883. package/mobile/components/data/media-list/esm2022/public_api.mjs +0 -4
  884. package/mobile/components/data/media-list/fesm2022/index.mjs +0 -297
  885. package/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -1
  886. package/mobile/components/data/media-list/index.d.ts +0 -5
  887. package/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -8
  888. package/mobile/components/data/media-list/media-list.component.d.ts +0 -33
  889. package/mobile/components/data/media-list/media-list.module.d.ts +0 -14
  890. package/mobile/components/data/media-list/media-list.props.d.ts +0 -1
  891. package/mobile/components/data/media-list/package.json +0 -23
  892. package/mobile/components/data/media-list/public_api.d.ts +0 -3
  893. package/mobile/components/device/barcode-scanner/.npmignore +0 -2
  894. package/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -18
  895. package/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -9
  896. package/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -1
  897. package/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -129
  898. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -69
  899. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -28
  900. package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -15
  901. package/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -5
  902. package/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -3
  903. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -112
  904. package/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -1
  905. package/mobile/components/device/barcode-scanner/index.d.ts +0 -5
  906. package/mobile/components/device/barcode-scanner/package.json +0 -23
  907. package/mobile/components/device/barcode-scanner/public_api.d.ts +0 -2
  908. package/mobile/components/device/camera/.npmignore +0 -2
  909. package/mobile/components/device/camera/bundles/index.umd.js +0 -170
  910. package/mobile/components/device/camera/camera.component.d.ts +0 -37
  911. package/mobile/components/device/camera/camera.module.d.ts +0 -9
  912. package/mobile/components/device/camera/camera.props.d.ts +0 -1
  913. package/mobile/components/device/camera/esm2022/camera.component.mjs +0 -101
  914. package/mobile/components/device/camera/esm2022/camera.module.mjs +0 -28
  915. package/mobile/components/device/camera/esm2022/camera.props.mjs +0 -25
  916. package/mobile/components/device/camera/esm2022/index.mjs +0 -5
  917. package/mobile/components/device/camera/esm2022/public_api.mjs +0 -3
  918. package/mobile/components/device/camera/fesm2022/index.mjs +0 -153
  919. package/mobile/components/device/camera/fesm2022/index.mjs.map +0 -1
  920. package/mobile/components/device/camera/index.d.ts +0 -5
  921. package/mobile/components/device/camera/package.json +0 -23
  922. package/mobile/components/device/camera/public_api.d.ts +0 -2
  923. package/mobile/components/input/file-upload/.npmignore +0 -2
  924. package/mobile/components/input/file-upload/bundles/index.umd.js +0 -88
  925. package/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -41
  926. package/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
  927. package/mobile/components/input/file-upload/esm2022/index.mjs +0 -5
  928. package/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -3
  929. package/mobile/components/input/file-upload/fesm2022/index.mjs +0 -71
  930. package/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -1
  931. package/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -11
  932. package/mobile/components/input/file-upload/file-upload.module.d.ts +0 -9
  933. package/mobile/components/input/file-upload/index.d.ts +0 -5
  934. package/mobile/components/input/file-upload/package.json +0 -23
  935. package/mobile/components/input/file-upload/public_api.d.ts +0 -2
  936. package/mobile/components/page/default/.npmignore +0 -2
  937. package/mobile/components/page/default/bundles/index.umd.js +0 -127
  938. package/mobile/components/page/default/esm2022/index.mjs +0 -5
  939. package/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -24
  940. package/mobile/components/page/default/esm2022/page.directive.mjs +0 -58
  941. package/mobile/components/page/default/esm2022/page.module.mjs +0 -32
  942. package/mobile/components/page/default/esm2022/public_api.mjs +0 -4
  943. package/mobile/components/page/default/fesm2022/index.mjs +0 -110
  944. package/mobile/components/page/default/fesm2022/index.mjs.map +0 -1
  945. package/mobile/components/page/default/index.d.ts +0 -5
  946. package/mobile/components/page/default/package.json +0 -23
  947. package/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -7
  948. package/mobile/components/page/default/page.directive.d.ts +0 -19
  949. package/mobile/components/page/default/page.module.d.ts +0 -10
  950. package/mobile/components/page/default/public_api.d.ts +0 -3
  951. package/mobile/components/page/left-panel/.npmignore +0 -2
  952. package/mobile/components/page/left-panel/bundles/index.umd.js +0 -91
  953. package/mobile/components/page/left-panel/esm2022/index.mjs +0 -5
  954. package/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -45
  955. package/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
  956. package/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -3
  957. package/mobile/components/page/left-panel/fesm2022/index.mjs +0 -74
  958. package/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -1
  959. package/mobile/components/page/left-panel/index.d.ts +0 -5
  960. package/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -16
  961. package/mobile/components/page/left-panel/left-panel.module.d.ts +0 -9
  962. package/mobile/components/page/left-panel/package.json +0 -23
  963. package/mobile/components/page/left-panel/public_api.d.ts +0 -2
  964. package/mobile/components/page/mobile-navbar/.npmignore +0 -2
  965. package/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -332
  966. package/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -5
  967. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -247
  968. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -32
  969. package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -41
  970. package/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -3
  971. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -317
  972. package/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -1
  973. package/mobile/components/page/mobile-navbar/index.d.ts +0 -5
  974. package/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -50
  975. package/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -10
  976. package/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -2
  977. package/mobile/components/page/mobile-navbar/package.json +0 -23
  978. package/mobile/components/page/mobile-navbar/public_api.d.ts +0 -2
  979. package/mobile/components/page/tab-bar/.npmignore +0 -2
  980. package/mobile/components/page/tab-bar/bundles/index.umd.js +0 -279
  981. package/mobile/components/page/tab-bar/esm2022/index.mjs +0 -5
  982. package/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -3
  983. package/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -28
  984. package/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -219
  985. package/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -15
  986. package/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -262
  987. package/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -1
  988. package/mobile/components/page/tab-bar/index.d.ts +0 -5
  989. package/mobile/components/page/tab-bar/package.json +0 -23
  990. package/mobile/components/page/tab-bar/public_api.d.ts +0 -2
  991. package/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -9
  992. package/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -40
  993. package/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -1
  994. package/mobile/core/.npmignore +0 -2
  995. package/mobile/core/bundles/index.umd.js +0 -1658
  996. package/mobile/core/core.module.d.ts +0 -15
  997. package/mobile/core/esm2022/core.module.mjs +0 -79
  998. package/mobile/core/esm2022/index.mjs +0 -5
  999. package/mobile/core/esm2022/native.xhr.mjs +0 -340
  1000. package/mobile/core/esm2022/public_api.mjs +0 -12
  1001. package/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -92
  1002. package/mobile/core/esm2022/services/device-file-download.service.mjs +0 -154
  1003. package/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -112
  1004. package/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -91
  1005. package/mobile/core/esm2022/services/device-file.service.mjs +0 -237
  1006. package/mobile/core/esm2022/services/device-start-up-service.mjs +0 -2
  1007. package/mobile/core/esm2022/services/device.service.mjs +0 -150
  1008. package/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -114
  1009. package/mobile/core/esm2022/services/network.service.mjs +0 -358
  1010. package/mobile/core/fesm2022/index.mjs +0 -1660
  1011. package/mobile/core/fesm2022/index.mjs.map +0 -1
  1012. package/mobile/core/index.d.ts +0 -5
  1013. package/mobile/core/native.xhr.d.ts +0 -36
  1014. package/mobile/core/package.json +0 -28
  1015. package/mobile/core/public_api.d.ts +0 -11
  1016. package/mobile/core/services/device-file-cache.service.d.ts +0 -24
  1017. package/mobile/core/services/device-file-download.service.d.ts +0 -36
  1018. package/mobile/core/services/device-file-opener.service.d.ts +0 -25
  1019. package/mobile/core/services/device-file-upload.service.d.ts +0 -27
  1020. package/mobile/core/services/device-file.service.d.ts +0 -45
  1021. package/mobile/core/services/device-start-up-service.d.ts +0 -4
  1022. package/mobile/core/services/device.service.d.ts +0 -52
  1023. package/mobile/core/services/ext-app-message.service.d.ts +0 -24
  1024. package/mobile/core/services/network.service.d.ts +0 -118
  1025. package/mobile/offline/.npmignore +0 -2
  1026. package/mobile/offline/bundles/index.umd.js +0 -3512
  1027. package/mobile/offline/esm2022/index.mjs +0 -5
  1028. package/mobile/offline/esm2022/models/config.mjs +0 -64
  1029. package/mobile/offline/esm2022/models/local-db-store.mjs +0 -412
  1030. package/mobile/offline/esm2022/offline.module.mjs +0 -100
  1031. package/mobile/offline/esm2022/public_api.mjs +0 -7
  1032. package/mobile/offline/esm2022/services/change-log.service.mjs +0 -332
  1033. package/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -525
  1034. package/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -855
  1035. package/mobile/offline/esm2022/services/local-db.service.mjs +0 -193
  1036. package/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -87
  1037. package/mobile/offline/esm2022/services/push.service.mjs +0 -49
  1038. package/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -115
  1039. package/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -162
  1040. package/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -154
  1041. package/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -63
  1042. package/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -59
  1043. package/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -232
  1044. package/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -82
  1045. package/mobile/offline/esm2022/utils/security.utils.mjs +0 -119
  1046. package/mobile/offline/esm2022/utils/utils.mjs +0 -8
  1047. package/mobile/offline/fesm2022/index.mjs +0 -3529
  1048. package/mobile/offline/fesm2022/index.mjs.map +0 -1
  1049. package/mobile/offline/index.d.ts +0 -5
  1050. package/mobile/offline/models/config.d.ts +0 -80
  1051. package/mobile/offline/models/local-db-store.d.ts +0 -119
  1052. package/mobile/offline/offline.module.d.ts +0 -17
  1053. package/mobile/offline/package.json +0 -28
  1054. package/mobile/offline/public_api.d.ts +0 -6
  1055. package/mobile/offline/services/change-log.service.d.ts +0 -112
  1056. package/mobile/offline/services/local-db-data-pull.service.d.ts +0 -139
  1057. package/mobile/offline/services/local-db-management.service.d.ts +0 -179
  1058. package/mobile/offline/services/local-db.service.d.ts +0 -83
  1059. package/mobile/offline/services/local-key-value.service.d.ts +0 -38
  1060. package/mobile/offline/services/push.service.d.ts +0 -11
  1061. package/mobile/offline/services/workers/error-blocker.d.ts +0 -26
  1062. package/mobile/offline/services/workers/file-handler.d.ts +0 -56
  1063. package/mobile/offline/services/workers/id-resolver.d.ts +0 -26
  1064. package/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -11
  1065. package/mobile/offline/utils/file-upload.utils.d.ts +0 -14
  1066. package/mobile/offline/utils/live-variable.utils.d.ts +0 -24
  1067. package/mobile/offline/utils/query-executor.utils.d.ts +0 -15
  1068. package/mobile/offline/utils/security.utils.d.ts +0 -19
  1069. package/mobile/offline/utils/utils.d.ts +0 -2
  1070. package/mobile/placeholder/runtime/.npmignore +0 -2
  1071. package/mobile/placeholder/runtime/bundles/index.umd.js +0 -70
  1072. package/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -5
  1073. package/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -19
  1074. package/mobile/placeholder/runtime/esm2022/index.mjs +0 -5
  1075. package/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -27
  1076. package/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -3
  1077. package/mobile/placeholder/runtime/fesm2022/index.mjs +0 -50
  1078. package/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -1
  1079. package/mobile/placeholder/runtime/index.d.ts +0 -5
  1080. package/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -9
  1081. package/mobile/placeholder/runtime/package.json +0 -27
  1082. package/mobile/placeholder/runtime/public_api.d.ts +0 -2
  1083. package/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
  1084. package/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -40
  1085. package/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -5
  1086. package/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -13
  1087. package/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -2
  1088. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -20
  1089. package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -1
  1090. package/mobile/placeholder/runtime-dynamic/index.d.ts +0 -5
  1091. package/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -7
  1092. package/mobile/placeholder/runtime-dynamic/package.json +0 -23
  1093. package/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -1
  1094. package/mobile/runtime/.npmignore +0 -2
  1095. package/mobile/runtime/bundles/index.umd.js +0 -732
  1096. package/mobile/runtime/components/app-ext.component.d.ts +0 -14
  1097. package/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -59
  1098. package/mobile/runtime/esm2022/index.mjs +0 -5
  1099. package/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -351
  1100. package/mobile/runtime/esm2022/public_api.mjs +0 -6
  1101. package/mobile/runtime/esm2022/services/cookie.service.mjs +0 -135
  1102. package/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -147
  1103. package/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -76
  1104. package/mobile/runtime/fesm2022/index.mjs +0 -742
  1105. package/mobile/runtime/fesm2022/index.mjs.map +0 -1
  1106. package/mobile/runtime/index.d.ts +0 -5
  1107. package/mobile/runtime/mobile-runtime.module.d.ts +0 -51
  1108. package/mobile/runtime/package.json +0 -28
  1109. package/mobile/runtime/public_api.d.ts +0 -5
  1110. package/mobile/runtime/services/cookie.service.d.ts +0 -31
  1111. package/mobile/runtime/services/http-interceptor.service.d.ts +0 -19
  1112. package/mobile/runtime/services/webprocess.service.d.ts +0 -15
  1113. package/mobile/runtime-dynamic/.npmignore +0 -2
  1114. package/mobile/runtime-dynamic/bundles/index.umd.js +0 -461
  1115. package/mobile/runtime-dynamic/esm2022/index.mjs +0 -5
  1116. package/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -48
  1117. package/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -2
  1118. package/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -404
  1119. package/mobile/runtime-dynamic/fesm2022/index.mjs +0 -454
  1120. package/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -1
  1121. package/mobile/runtime-dynamic/index.d.ts +0 -5
  1122. package/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -8
  1123. package/mobile/runtime-dynamic/package.json +0 -23
  1124. package/mobile/runtime-dynamic/public_api.d.ts +0 -1
  1125. package/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -38
  1126. package/mobile/variables/.npmignore +0 -2
  1127. package/mobile/variables/bundles/index.umd.js +0 -1166
  1128. package/mobile/variables/esm2022/index.mjs +0 -5
  1129. package/mobile/variables/esm2022/public_api.mjs +0 -10
  1130. package/mobile/variables/esm2022/services/calendar-service.mjs +0 -77
  1131. package/mobile/variables/esm2022/services/camera-service.mjs +0 -70
  1132. package/mobile/variables/esm2022/services/contacts-service.mjs +0 -74
  1133. package/mobile/variables/esm2022/services/datasync-service.mjs +0 -363
  1134. package/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -161
  1135. package/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -200
  1136. package/mobile/variables/esm2022/services/file-service.mjs +0 -87
  1137. package/mobile/variables/esm2022/services/scan-service.mjs +0 -60
  1138. package/mobile/variables/esm2022/variables.module.mjs +0 -78
  1139. package/mobile/variables/fesm2022/index.mjs +0 -1143
  1140. package/mobile/variables/fesm2022/index.mjs.map +0 -1
  1141. package/mobile/variables/index.d.ts +0 -5
  1142. package/mobile/variables/package.json +0 -28
  1143. package/mobile/variables/public_api.d.ts +0 -9
  1144. package/mobile/variables/services/calendar-service.d.ts +0 -10
  1145. package/mobile/variables/services/camera-service.d.ts +0 -8
  1146. package/mobile/variables/services/contacts-service.d.ts +0 -6
  1147. package/mobile/variables/services/datasync-service.d.ts +0 -11
  1148. package/mobile/variables/services/device-service/device-service.d.ts +0 -17
  1149. package/mobile/variables/services/device-service/location-service.d.ts +0 -63
  1150. package/mobile/variables/services/file-service.d.ts +0 -7
  1151. package/mobile/variables/services/scan-service.d.ts +0 -7
  1152. package/mobile/variables/variables.module.d.ts +0 -25
  1153. package/oAuth/esm2022/oAuth.module.mjs +0 -19
  1154. package/oAuth/oAuth.module.d.ts +0 -8
  1155. package/scripts/fullcalendar/main.min.js +0 -6
  1156. package/security/esm2022/security.module.mjs +0 -19
  1157. package/security/security.module.d.ts +0 -8
  1158. package/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -48
  1159. package/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -2
  1160. package/variables/esm2022/manager/variable/device-variable-service.mjs +0 -45
  1161. package/variables/esm2022/model/variable/device-variable.mjs +0 -19
  1162. package/variables/esm2022/variables.module.mjs +0 -52
  1163. package/variables/manager/variable/device-variable-manager.d.ts +0 -26
  1164. package/variables/manager/variable/device-variable-operation.d.ts +0 -37
  1165. package/variables/manager/variable/device-variable-service.d.ts +0 -6
  1166. package/variables/model/variable/device-variable.d.ts +0 -6
  1167. package/variables/variables.module.d.ts +0 -16
@@ -1,6 +1,5 @@
1
1
  import { HtmlParser, Element, Text, Comment, getHtmlTagDefinition } from '@angular/compiler';
2
2
  import { WIDGET_IMPORTS } from './imports';
3
- import { isMobileApp } from '@wm/core';
4
3
  import { find, isEqual, isFunction, remove, sortBy, uniqWith } from "lodash-es";
5
4
  const CSS_REGEX = {
6
5
  COMMENTS_FORMAT: /\/\*((?!\*\/).|\n)+\*\//g,
@@ -62,10 +61,6 @@ const ELE_PREFIX = '.wm-app';
62
61
  const processAttr = attr => {
63
62
  let overridden = OVERRIDES[attr.name];
64
63
  const value = attr.valueSpan ? attr.value : undefined;
65
- // do not append showInDevice attribute for mobile application.
66
- if (attr.name === 'showindevice' && isMobileApp()) {
67
- overridden = '';
68
- }
69
64
  if (overridden) {
70
65
  /**
71
66
  * wrap value for accessroles with ''.
@@ -487,4 +482,4 @@ export const scopeComponentStyles = (componentName, componentType, styles = '')
487
482
  }
488
483
  return styles;
489
484
  };
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90cmFuc3BpbGVyL3NyYy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLG9CQUFvQixFQUN2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFOUUsTUFBTSxTQUFTLEdBQUc7SUFDZCxlQUFlLEVBQUcsMEJBQTBCO0lBQzVDLGVBQWUsRUFBRyxjQUFjO0lBQ2hDLHVCQUF1QixFQUFHLGtFQUFrRTtDQUMvRixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7QUFPNUMsTUFBTSxTQUFTLEdBQUc7SUFDZCxhQUFhLEVBQUUsY0FBYztJQUM3QixPQUFPLEVBQUUsT0FBTztJQUNoQixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLGVBQWUsRUFBRSxXQUFXO0lBQzVCLGFBQWEsRUFBRSxLQUFLO0lBQ3BCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsY0FBYyxFQUFFLE1BQU07SUFDdEIsU0FBUyxFQUFFLE1BQU07SUFDakIsYUFBYSxFQUFFLFVBQVU7SUFDekIsa0JBQWtCLEVBQUUsVUFBVTtJQUM5QixVQUFVLEVBQUUsbURBQW1EO0NBQ2xFLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFF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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgSHRtbFBhcnNlcixcbiAgICBFbGVtZW50LFxuICAgIFRleHQsXG4gICAgQ29tbWVudCxcbiAgICBnZXRIdG1sVGFnRGVmaW5pdGlvbiwgUGFyc2VTb3VyY2VTcGFuXG59IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7IFdJREdFVF9JTVBPUlRTIH0gZnJvbSAnLi9pbXBvcnRzJztcbmltcG9ydCB7IGlzTW9iaWxlQXBwIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtmaW5kLCBpc0VxdWFsLCBpc0Z1bmN0aW9uLCByZW1vdmUsIHNvcnRCeSwgdW5pcVdpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgQ1NTX1JFR0VYID0ge1xuICAgIENPTU1FTlRTX0ZPUk1BVCA6IC9cXC9cXCooKD8hXFwqXFwvKS58XFxuKStcXCpcXC8vZyxcbiAgICBTRUxFQ1RPUl9GT1JNQVQgOiAvW15cXHtcXH1dKlxcey9naSxcbiAgICBTRUxFQ1RPUl9FWENMVURFX0ZPUk1BVCA6IC8oQGtleWZyYW1lc3xAbWVkaWF8QGZvbnQtZmFjZXxAY29tbWVudFswLTldK3xmcm9tfHRvfFswLTldKyUpXFxiL2lcbn07XG5cbmNvbnN0IGlzU3RyaW5nID0gdiA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZyc7XG5cbmludGVyZmFjZSBJUHJvdmlkZXJJbmZvIHtcbiAgICBub2RlTmFtZTogc3RyaW5nO1xuICAgIHByb3ZpZGU6IE1hcDxzdHJpbmcsIGFueT47XG59XG5cbmNvbnN0IE9WRVJSSURFUyA9IHtcbiAgICAnYWNjZXNzcm9sZXMnOiAnKmFjY2Vzc3JvbGVzJyxcbiAgICAnbmctaWYnOiAnKm5nSWYnLFxuICAgICdzaG93aW5kZXZpY2UnOiAnKndtU2hvd0luRGV2aWNlJyxcbiAgICAnbmctY2xhc3MnOiAnW25nQ2xhc3NdJyxcbiAgICAnZGF0YS1uZy1jbGFzcyc6ICdbbmdDbGFzc10nLFxuICAgICdkYXRhLW5nLXNyYyc6ICdzcmMnLFxuICAgICduZy1zcmMnOiAnc3JjJyxcbiAgICAnZGF0YS1uZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1kaXNhYmxlZCc6ICdkaXNhYmxlZCcsXG4gICAgJ2RhdGEtbmctZGlzYWJsZWQnOiAnZGlzYWJsZWQnLFxuICAgICduZy1tb2RlbCc6ICdbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgWyhuZ01vZGVsKV0nXG59O1xuXG5jb25zdCBzZWxmQ2xvc2luZ1RhZ3MgPSBuZXcgU2V0KFsnaW1nJ10pO1xuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRUb0V4cHIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ2JpbmQ6JykpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cig1KTtcbiAgICB9XG59O1xuXG5jb25zdCBxdW90ZUF0dHIgPSB2ID0+IHtcbiAgICByZXR1cm4gKCcnICsgdikgLyogRm9yY2VzIHRoZSBjb252ZXJzaW9uIHRvIHN0cmluZy4gKi9cbiAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykgLyogVGhpcyBNVVNUIGJlIHRoZSAxc3QgcmVwbGFjZW1lbnQuICovXG4gICAgICAgIC5yZXBsYWNlKC8nL2csICcmYXBvczsnKSAvKiBUaGUgNCBvdGhlciBwcmVkZWZpbmVkIGVudGl0aWVzLCByZXF1aXJlZC4gKi9cbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59O1xuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5jb25zdCBodG1sUGFyc2VyID0gbmV3IEh0bWxQYXJzZXIoKTtcbmNvbnN0IGlnbm9yZUNvbW1lbnRzID0gdHJ1ZTtcblxuY29uc3QgZW1wdHkgPSAoKSA9PiAnJztcblxuY29uc3QgaXNFdmVudCA9IG5hbWUgPT4gbmFtZVswXSA9PT0gJ28nICYmIG5hbWVbMV0gPT09ICduJyAmJiBuYW1lWzJdID09PSAnLSc7XG5cbmNvbnN0IGdldEV2ZW50TmFtZSA9IGtleSA9PiBrZXkuc3Vic3RyKDMpO1xuXG5jb25zdCBwcm9jZXNzQmluZGluZyA9IChhdHRyLCBleHByKSA9PiBbYCR7YXR0ci5uYW1lfS5iaW5kYCwgcXVvdGVBdHRyKGV4cHIpXTtcblxuY29uc3QgcHJvY2Vzc0V2ZW50ID0gYXR0ciA9PiB7XG4gICAgY29uc3QgZXZ0TmFtZSA9IGdldEV2ZW50TmFtZShhdHRyLm5hbWUpO1xuICAgIHJldHVybiBbYCR7ZXZ0TmFtZX0uZXZlbnRgLCBhdHRyLnZhbHVlXTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIHN0cmluZyB3aXRoIHNpbmdsZSBxdW90ZXMuXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmNvbnN0IHdyYXBXaXRoQXBvcyA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJmFwb3M7JHt2YWwucmVwbGFjZSgvJmFwb3MvZywgJyZxdW90JykucmVwbGFjZSgvJnF1b3QvZywgJ1xcXFwmcXVvdCcpfSZhcG9zO2A7XG59O1xuY29uc3QgRUxFX1BSRUZJWCA9ICcud20tYXBwJztcblxuY29uc3QgcHJvY2Vzc0F0dHIgPSBhdHRyID0+IHtcbiAgICBsZXQgb3ZlcnJpZGRlbiA9IE9WRVJSSURFU1thdHRyLm5hbWVdO1xuICAgIGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZVNwYW4gPyBhdHRyLnZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gZG8gbm90IGFwcGVuZCBzaG93SW5EZXZpY2UgYXR0cmlidXRlIGZvciBtb2JpbGUgYXBwbGljYXRpb24uXG4gICAgaWYgKGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScgJiYgaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICBvdmVycmlkZGVuID0gJyc7XG4gICAgfVxuICAgIGlmIChvdmVycmlkZGVuKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiB3cmFwIHZhbHVlIGZvciBhY2Nlc3Nyb2xlcyB3aXRoICcnLlxuICAgICAgICAgKiBzaW5jZSBhY2Nlc3Nyb2xlcyBpcyBhIHN0cnVjdHVyYWwgZGlyZWN0aXZlLCBpdCB3aWxsIGJlIHRyYW5zcGlsZWQgdG8gW2FjY2Vzc3JvbGVzXVxuICAgICAgICAgKiBoZW5jZSwgdGhlIHZhbHVlIGFnYWluc3QgaXQgc2hvdWxkIGJlIGEgY29tcHV0ZWQgc3RyaW5nXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoYXR0ci5uYW1lID09PSAnYWNjZXNzcm9sZXMnIHx8IGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScpIHtcbiAgICAgICAgICAgIHJldHVybiBbb3ZlcnJpZGRlbiwgYCcke3ZhbHVlfSdgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW292ZXJyaWRkZW4sIHF1b3RlQXR0cih2YWx1ZSldO1xuICAgIH1cblxuICAgIGlmIChpc0V2ZW50KGF0dHIubmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NFdmVudChhdHRyKTtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZEV4cHIgPSBnZXRCb3VuZFRvRXhwcihhdHRyLnZhbHVlKTtcbiAgICBpZiAoYm91bmRFeHByKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzQmluZGluZyhhdHRyLCBib3VuZEV4cHIpO1xuICAgIH1cblxuICAgIHJldHVybiBbYXR0ci5uYW1lLCBxdW90ZUF0dHIodmFsdWUpXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhU291cmNlID0gKGRhdGFTZXRFeHByOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHBhcnRzID0gZGF0YVNldEV4cHIuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydHNbMF0gPT09ICdWYXJpYWJsZXMnIHx8IHBhcnRzWzBdID09PSAnV2lkZ2V0cycpIHtcbiAgICAgICAgcmV0dXJuIGAke3BhcnRzWzBdfS4ke3BhcnRzWzFdfWA7XG4gICAgfVxufTtcblxuY29uc3Qgd2lkZ2V0Q2hpbGRBdHRycyA9ICgoKSA9PiB7XG4gICAgY29uc3QgY2hpbGRBdHRycyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCB2YWxpZENoaWxkQXR0cnMgPSBbXG4gICAgICAgIGByZXF1aXJlZGBcbiAgICBdO1xuICAgIHJldHVybiB7XG4gICAgICAgIHNldDogYXR0cnMgPT4ge1xuICAgICAgICAgICAgYXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICB2YWxpZENoaWxkQXR0cnMuaW5jbHVkZXMoa2V5KSAmJiAoY2hpbGRBdHRycy5zZXQoa2V5LCB2YWwpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBnZXQ6IGF0dHJzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZsdHJBdHRycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGNoaWxkQXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAhYXR0cnMuZ2V0KGtleSkgJiYgZmx0ckF0dHJzLnNldChrZXksIHZhbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmbHRyQXR0cnM7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICBjaGlsZEF0dHJzLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9O1xufSkoKTtcbmV4cG9ydCBjb25zdCBzZXRDaGlsZEF0dHJzID0gYXR0cnMgPT4ge1xuICAgIHdpZGdldENoaWxkQXR0cnMuc2V0KGF0dHJzKTtcbiAgICByZXR1cm4gJyc7XG59O1xuZXhwb3J0IGNvbnN0IGdldENoaWxkQXR0cnMgPSBhdHRycyA9PiB7XG4gICAgcmV0dXJuIGdldEF0dHJNYXJrdXAod2lkZ2V0Q2hpbGRBdHRycy5nZXQoYXR0cnMpKTtcbn07XG5leHBvcnQgY29uc3QgY2xlYXJDaGlsZEF0dHJzID0gKCkgPT4ge1xuICAgIHdpZGdldENoaWxkQXR0cnMuY2xlYXIoKTtcbiAgICByZXR1cm4gJyc7XG59O1xuZXhwb3J0IGNvbnN0IGdldEZvcm1NYXJrdXBBdHRyID0gYXR0cnMgPT4ge1xuICAgIGlmIChhdHRycy5nZXQoJ2RhdGF2YWx1ZS5iaW5kJykpIHtcbiAgICAgICAgY29uc3Qgb25EYXRhVmFsdWVCaW5kaW5nID0gZ2V0RGF0YVNvdXJjZShhdHRycy5nZXQoJ2RhdGF2YWx1ZS5iaW5kJykpO1xuICAgICAgICBhdHRycy5zZXQoJ2RhdGF2YWx1ZXNvdXJjZS5iaW5kJywgb25EYXRhVmFsdWVCaW5kaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGdldEF0dHJNYXJrdXAoYXR0cnMpO1xufTtcblxuY29uc3QgZ2V0QXR0ck1hcCA9IGF0dHJzID0+IHtcbiAgICBjb25zdCBhdHRyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBhdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xuICAgICAgICBsZXQgW2F0dHJOYW1lLCBhdHRyVmFsdWVdID0gcHJvY2Vzc0F0dHIoYXR0cik7XG4gICAgICAgIGF0dHJNYXAuc2V0KGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGF0dHJNYXAuZ2V0KCdkYXRhc2V0LmJpbmQnKSkge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gZ2V0RGF0YVNvdXJjZShhdHRyTWFwLmdldCgnZGF0YXNldC5iaW5kJykpO1xuICAgICAgICBpZiAoZGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgYXR0ck1hcC5zZXQoJ2RhdGFzb3VyY2UuYmluZCcsIGRhdGFTb3VyY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGF0dHJNYXA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0ck1hcmt1cCA9IChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPikgPT4ge1xuICAgIGxldCBhdHRyTWFya3VwID0gJyc7XG4gICAgYXR0cnMuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICBhdHRyTWFya3VwICs9IGAgJHtrfWA7XG4gICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICB2ID0gdi50cmltKCk7XG4gICAgICAgICAgICBpZiAoayA9PT0gJ1tuZ0NsYXNzXScgJiYgdi5zdGFydHNXaXRoKCd7JykpIHtcbiAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKC9cIi9nLCBgJ2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGsgPT09ICdzaG93LmJpbmQnICYmIGF0dHJzLmdldCgnZGVmZXJsb2FkJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgICAgIHYgPSB2ICsgYFwiICpsYXp5TG9hZD1cIiR7d3JhcFdpdGhBcG9zKHYpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhdHRyTWFya3VwICs9IGA9XCIke3Z9XCJgO1xuXG4gICAgICAgICAgICBpZiAoayA9PT0gJ3Nob3dpbmRldmljZScgJiYgdiAhPT0gJ2FsbCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb24gPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAodi5pbmNsdWRlcygneHMnKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24ucHVzaCgnVmlld3BvcnQuaXNNb2JpbGVUeXBlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2LmluY2x1ZGVzKCdzbScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5wdXNoKCcoVmlld3BvcnQuaXNUYWJsZXRUeXBlICYmIFZpZXdwb3J0Lm9yaWVudGF0aW9uLmlzUG9ydHJhaXQpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh2LmluY2x1ZGVzKCdtZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5wdXNoKCcoVmlld3BvcnQuaXNUYWJsZXRUeXBlICYmIFZpZXdwb3J0Lm9yaWVudGF0aW9uLmlzTGFuZHNjYXBlKScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhdHRyTWFya3VwICs9IGAgKm5nSWY9XCIke2NvbmRpdGlvbi5qb2luKCcgfHwgJyl9XCJgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXR0ck1hcmt1cDtcbn07XG5cbmNvbnN0IGdldFJlcXVpcmVkUHJvdmlkZXJzID0gKG5vZGVEZWY6IElCdWlsZFRhc2tEZWYsIHByb3ZpZGVyczogQXJyYXk8SVByb3ZpZGVySW5mbz4sIG5vZGVBdHRycykgPT4ge1xuICAgIGlmICghbm9kZURlZi5yZXF1aXJlcykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IHJlcXVpcmVzID0gbm9kZURlZi5yZXF1aXJlcyBhcyBhbnk7XG5cbiAgICBpZiAoaXNTdHJpbmcocmVxdWlyZXMpKSB7XG4gICAgICAgIHJlcXVpcmVzID0gW3JlcXVpcmVzXTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmVxdWlyZXMpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWlyZXMubWFwKHJlcXVpcmUgPT4ge1xuICAgICAgICAvLyBmb3IgZHluYW1pYyB0YWJsZSBhc3NpZ25pbmcgcGFyZW50IHByb3ZpZGUgbWFwIHRvIHRoZSBjaGlsZCxcbiAgICAgICAgZm9yIChsZXQgaSA9IG5vZGVBdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIGlmIChub2RlQXR0cnNbaV0ubmFtZSA9PT0gJ3RhYmxlTmFtZScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZURlZltub2RlQXR0cnNbaV0udmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHByb3ZpZGVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlcnNbaV0ubm9kZU5hbWUgPT09IHJlcXVpcmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzW2ldLnByb3ZpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IERJTUVOU0lPTl9QUk9QUyA9IFsncGFkZGluZycsICdib3JkZXJ3aWR0aCcsICdtYXJnaW4nXTtcblxuY29uc3QgU0VQQVJBVE9SID0gJyAnLCBVTlNFVCA9ICd1bnNldCc7XG5cbmNvbnN0IHNldERpbWVuc2lvblByb3AgPSAoY3NzT2JqLCBrZXksIG52KSA9PiB7XG4gICAgbGV0IGNzc0tleSA9IGtleSwgdmFsLCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN1ZmZpeCA9ICcnO1xuXG4gICAgZnVuY3Rpb24gc2V0VmFsKHByb3AsIHZhbHVlKSB7XG4gICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBVTlNFVCwgcmVzZXQgdGhlIGV4aXN0aW5nIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gVU5TRVQpIHtcbiAgICAgICAgICAgIHZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY3NzT2JqW2Nzc0tleSArIHByb3AgKyBzdWZmaXhdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ2JvcmRlcndpZHRoJykge1xuICAgICAgICBzdWZmaXggPSAgJ3dpZHRoJztcbiAgICAgICAgY3NzS2V5ID0gJ2JvcmRlcic7XG4gICAgfVxuXG4gICAgdmFsID0gbnY7XG5cbiAgICBpZiAodmFsLmluZGV4T2YoVU5TRVQpICE9PSAtMSkge1xuICAgICAgICB2YWwgPSB2YWwuc3BsaXQoU0VQQVJBVE9SKTtcblxuICAgICAgICB0b3AgICAgPSB2YWxbMF07XG4gICAgICAgIHJpZ2h0ICA9IHZhbFsxXSB8fCB2YWxbMF07XG4gICAgICAgIGJvdHRvbSA9IHZhbFsyXSB8fCB2YWxbMF07XG4gICAgICAgIGxlZnQgICA9IHZhbFszXSB8fCB2YWxbMV0gfHwgdmFsWzBdO1xuXG4gICAgICAgIHNldFZhbCgndG9wJywgICAgdG9wKTtcbiAgICAgICAgc2V0VmFsKCdyaWdodCcsICByaWdodCk7XG4gICAgICAgIHNldFZhbCgnYm90dG9tJywgYm90dG9tKTtcbiAgICAgICAgc2V0VmFsKCdsZWZ0JywgICBsZWZ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSAnYm9yZGVyd2lkdGgnKSB7XG4gICAgICAgICAgICBjc3NLZXkgPSAnYm9yZGVyd2lkdGgnO1xuICAgICAgICB9XG4gICAgICAgIGNzc09ialtjc3NLZXldID0gbnY7XG4gICAgfVxufTtcblxuY29uc3QgcHJvY2Vzc0RpbWVuc2lvbkF0dHJpYnV0ZXMgPSBhdHRyTWFwID0+IHtcbiAgICBjb25zdCBhdHRyS2V5cyA9IEFycmF5LmZyb20oYXR0ck1hcC5rZXlzKCkpO1xuICAgIGF0dHJLZXlzLmZvckVhY2goKGF0dHJLZXk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoRElNRU5TSU9OX1BST1BTLmluY2x1ZGVzKGF0dHJLZXkpKSB7XG4gICAgICAgICAgICBjb25zdCBjc3NPYmogPSB7fSxcbiAgICAgICAgICAgICAgICBhdHRyVmFsdWUgPSBhdHRyTWFwLmdldChhdHRyS2V5KTtcbiAgICAgICAgICAgIGF0dHJNYXAuZGVsZXRlKGF0dHJLZXkpO1xuICAgICAgICAgICAgc2V0RGltZW5zaW9uUHJvcChjc3NPYmosIGF0dHJLZXksIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhjc3NPYmopLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3NzT2JqW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0ck1hcC5zZXQoa2V5LCBjc3NPYmpba2V5XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vIHJlcGxhY2UgPDpzdmc6c3ZnPiAtPiA8c3ZnPiwgPDpzdmc6Kj4gLT4gPHN2ZzoqPlxuY29uc3QgZ2V0Tm9kZU5hbWUgPSBuYW1lID0+IG5hbWUucmVwbGFjZSgnOnN2ZzpzdmcnLCAnc3ZnJykucmVwbGFjZSgnOnN2ZzonLCAnc3ZnOicpO1xuXG5leHBvcnQgY29uc3QgcHJvY2Vzc05vZGUgPSAobm9kZSwgaW1wb3J0Q29sbGVjdG9yOiAoaTogSW1wb3J0RGVmW10pID0+IHZvaWQsIHByb3ZpZGVycz86IEFycmF5PElQcm92aWRlckluZm8+KSA9PiB7XG4gICAgY29uc3Qgbm9kZURlZiA9IHJlZ2lzdHJ5LmdldChub2RlLm5hbWUpO1xuXG4gICAgbGV0IHByZSwgcG9zdCwgdGVtcGxhdGU7XG5cbiAgICBpZiAobm9kZURlZikge1xuICAgICAgICBwcmUgPSBub2RlRGVmLnByZSB8fCBlbXB0eTtcbiAgICAgICAgcG9zdCA9IG5vZGVEZWYucG9zdCB8fCBlbXB0eTtcbiAgICAgICAgdGVtcGxhdGUgPSBub2RlRGVmLnRlbXBsYXRlIHx8IGVtcHR5O1xuICAgIH1cblxuICAgIGxldCBtYXJrdXAgPSAnJztcbiAgICBsZXQgYXR0ck1hcDtcbiAgICBsZXQgcmVxdWlyZWRQcm92aWRlcnM7XG4gICAgbGV0IHNoYXJlZDtcblxuICAgIGlmICghcHJvdmlkZXJzKSB7XG4gICAgICAgIHByb3ZpZGVycyA9IFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGlzRWxlbWVudFR5cGUgPSBub2RlIGluc3RhbmNlb2YgRWxlbWVudDtcblxuICAgIGlmIChpc0VsZW1lbnRUeXBlKSB7XG4gICAgICAgIGxldCBwcm92aWRlSW5mbzogSVByb3ZpZGVySW5mbztcblxuICAgICAgICBpZiAobm9kZURlZikge1xuICAgICAgICAgICAgcmVxdWlyZWRQcm92aWRlcnMgPSBnZXRSZXF1aXJlZFByb3ZpZGVycyhub2RlRGVmLCBwcm92aWRlcnMsIG5vZGUuYXR0cnMpO1xuICAgICAgICAgICAgc2hhcmVkID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgdGVtcGxhdGUobm9kZSwgc2hhcmVkLCAuLi5yZXF1aXJlZFByb3ZpZGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICBhdHRyTWFwID0gZ2V0QXR0ck1hcChub2RlLmF0dHJzKTtcbiAgICAgICAgcHJvY2Vzc0RpbWVuc2lvbkF0dHJpYnV0ZXMoYXR0ck1hcCk7XG5cbiAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShub2RlLm5hbWUpO1xuXG4gICAgICAgIGlmIChub2RlRGVmKSB7XG4gICAgICAgICAgICBtYXJrdXAgPSAoPGFueT5wcmUpKGF0dHJNYXAsIHNoYXJlZCwgLi4ucmVxdWlyZWRQcm92aWRlcnMpO1xuICAgICAgICAgICAgaWYgKG5vZGVEZWYucHJvdmlkZSkge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBub2RlTmFtZTogbm9kZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBpc0Z1bmN0aW9uKG5vZGVEZWYucHJvdmlkZSkgPyBub2RlRGVmLnByb3ZpZGUoYXR0ck1hcCwgc2hhcmVkLCAuLi5yZXF1aXJlZFByb3ZpZGVycykgOiBub2RlRGVmLnByb3ZpZGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC8vIEZvciB0YWJsZSBub2RlLCBhc3NpZ25pbmcgcGFyZW50IHByb3ZpZGUgbWFwIHRvIHRoZSBjaGlsZCwgYXMgY2hpbGQgcmVxdWlyZXMgc29tZSBwYXJlbnQgcHJvdmlkZSBhdHRycy5cbiAgICAgICAgICAgICAgICBpZiAobm9kZS5uYW1lID09PSAnd20tdGFibGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlQ29sTm9kZURlZm4gPSByZWdpc3RyeS5nZXQoJ3dtLXRhYmxlLWNvbHVtbicpO1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbE5vZGVEZWZuW2ZpbmQobm9kZS5hdHRycywgKGVsKSA9PiBlbC5uYW1lID09PSAnbmFtZScpLnZhbHVlICsgcHJvdmlkZUluZm8ucHJvdmlkZS5nZXQoJ3RhYmxlX3JlZmVyZW5jZScpXSA9IHByb3ZpZGVJbmZvLnByb3ZpZGU7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LnNldCgnd20tdGFibGUtY29sdW1uJywgdGFibGVDb2xOb2RlRGVmbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHByb3ZpZGVJbmZvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1hcmt1cCA9IGA8JHtub2RlTmFtZX0gJHtnZXRBdHRyTWFya3VwKGF0dHJNYXApfT5gO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogTm9kZSB8IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYoY2hpbGQuYXR0cnMpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2hvd0luRGV2aWNlQXR0ciwgYWNjZXNzUm9sZXNBdHRyLCBkZWZlckxvYWRBdHRyLCBzaG93QXR0cjtcbiAgICAgICAgICAgICAgICBjaGlsZC5hdHRycy5mb3JFYWNoKGZ1bmN0aW9uKGF0dHIpe1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci5uYW1lID09PSAnc2hvd2luZGV2aWNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0luRGV2aWNlQXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09PSAnYWNjZXNzcm9sZXMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NSb2xlc0F0dHIgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHIubmFtZSA9PT0gJ2RlZmVybG9hZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTG9hZEF0dHIgPSBhdHRyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHIubmFtZSA9PT0gJ3Nob3cnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZigoc2hvd0luRGV2aWNlQXR0ciAmJiBhY2Nlc3NSb2xlc0F0dHIpIHx8IChzaG93SW5EZXZpY2VBdHRyICYmIGRlZmVyTG9hZEF0dHIpIHx8IChhY2Nlc3NSb2xlc0F0dHIgJiYgZGVmZXJMb2FkQXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogSWYgbW9yZSB0aGFuIG9uZSBvdXQgb2Ygc2hvd2luZGV2aWNlLCBhY2Nlc3Nyb2xlcyBhbmQgZGVmZXJsb2FkIGV4aXN0IGZvciBhIHdpZGdldCwgYWRkIG5nLWNvbnRhaW5lciB3cmFwcGVycyB0byBmaXggYW5ndWxhciBsaW1pdGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgIG9mIGFwcGx5aW5nIG9ubHkgb25lIHN0cnVjdHVyYWwgZGlyZWN0aXZlIHRvIGFuIGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgICAgICogICovXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vU3BhbiA9ICh7fSBhcyBQYXJzZVNvdXJjZVNwYW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93SW5EZXZpY2VDb250YWluZXI6YW55ID0gc2hvd0luRGV2aWNlQXR0ciA/IG5ldyBFbGVtZW50KCduZy1jb250YWluZXInLCBbXSwgW10sIG5vU3Bhbiwgbm9TcGFuLCBub1NwYW4pIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1JvbGVzQ29udGFpbmVyOmFueSA9IGFjY2Vzc1JvbGVzQXR0ciA/IG5ldyBFbGVtZW50KCduZy1jb250YWluZXInLCBbXSwgW10sIG5vU3Bhbiwgbm9TcGFuLCBub1NwYW4pIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmVyTG9hZENvbnRhaW5lcjphbnkgPSBkZWZlckxvYWRBdHRyID8gbmV3IEVsZW1lbnQoJ25nLWNvbnRhaW5lcicsIFtdLCBbXSwgbm9TcGFuLCBub1NwYW4sIG5vU3BhbikgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dJbkRldmljZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0luRGV2aWNlQ29udGFpbmVyLmF0dHJzLnB1c2goc2hvd0luRGV2aWNlQXR0cik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjY2Vzc1JvbGVzQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NSb2xlc0NvbnRhaW5lci5hdHRycy5wdXNoKGFjY2Vzc1JvbGVzQXR0cik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmVyTG9hZENvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJMb2FkQ29udGFpbmVyLmF0dHJzLnB1c2goZGVmZXJMb2FkQXR0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0F0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlckxvYWRDb250YWluZXIuYXR0cnMucHVzaChzaG93QXR0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNoaWxkLmF0dHJzLCBmdW5jdGlvbiAoYXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIubmFtZSA9PT0gJ3Nob3dpbmRldmljZScgfHwgYXR0ci5uYW1lID09PSAnYWNjZXNzcm9sZXMnIHx8IGF0dHIubmFtZSA9PT0gJ2RlZmVybG9hZCdcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZENvbnRhaW5lciwgcGFyZW50Q29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0luRGV2aWNlQXR0ciAmJiBhY2Nlc3NSb2xlc0F0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyID0gc2hvd0luRGV2aWNlQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gYWNjZXNzUm9sZXNDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvd0luRGV2aWNlQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lciA9IHNob3dJbkRldmljZUNvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY2Nlc3NSb2xlc0F0dHIgJiYgZGVmZXJMb2FkQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250YWluZXIgPSBkZWZlckxvYWRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSBhY2Nlc3NSb2xlc0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyB3cmFwIGN1cnJlbnQgbm9kZSBlbGVtZW50cyBpbnNpZGUgZmlyc3QgbmctY29udGFpbmVyKGNoaWxkQ29udGFpbmVyKSBhbmQgdGhhdCBjb250YWluZXIncyBlbGVtZW50cyBpbnNpZGUgYW5vdGhlciBuZy1jb250YWluZXIocGFyZW50Q29udGFpbmVyKVxuICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lci5jaGlsZHJlbiA9IFtjaGlsZF07XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5jaGlsZHJlbiA9IFtjaGlsZENvbnRhaW5lcl07XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFsbCB0aHJlZSBkaXJlY3RpdmVzIGV4aXN0LCBjcmVhdGUgYW5vdGhlciB3cmFwcGVyIGZvciB0aGlyZCBuZy1jb250YWluZXIoZ3JhbmRQYXJlbnRDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncmFuZFBhcmVudENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYW5kUGFyZW50Q29udGFpbmVyLmNoaWxkcmVuID0gW3BhcmVudENvbnRhaW5lcl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGdyYW5kUGFyZW50Q29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtYXJrdXAgKz0gcHJvY2Vzc05vZGUoY2hpbGQsIGltcG9ydENvbGxlY3RvciwgcHJvdmlkZXJzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG5vZGVEZWYpIHtcbiAgICAgICAgICAgIGlmIChwcm92aWRlSW5mbykge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVycy5zcGxpY2UocHJvdmlkZXJzLmluZGV4T2YocHJvdmlkZUluZm8pLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hcmt1cCArPSAoPGFueT5wb3N0KShhdHRyTWFwLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChub2RlLmVuZFNvdXJjZVNwYW4gJiYgIWdldEh0bWxUYWdEZWZpbml0aW9uKG5vZGUubmFtZSkuaXNWb2lkKSB7XG4gICAgICAgICAgICAgICAgbWFya3VwICs9IGA8LyR7bm9kZU5hbWV9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgIG1hcmt1cCArPSBub2RlLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENvbW1lbnQpIHtcbiAgICAgICAgaWYgKCFpZ25vcmVDb21tZW50cykge1xuICAgICAgICAgICAgbWFya3VwICs9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW1wb3J0Q29sbGVjdG9yKFdJREdFVF9JTVBPUlRTLmdldChub2RlLm5hbWUpKTtcbiAgICBpZiAobm9kZURlZiAmJiBub2RlRGVmLmltcG9ydHMpIHtcbiAgICAgICAgbGV0IGltcG9ydHMgPSBbXTtcbiAgICAgICAgaWYgKHR5cGVvZiBub2RlRGVmLmltcG9ydHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGltcG9ydHMgPSBub2RlRGVmLmltcG9ydHMoYXR0ck1hcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbXBvcnRzID0gbm9kZURlZi5pbXBvcnRzO1xuICAgICAgICB9XG4gICAgICAgIGltcG9ydHMuZm9yRWFjaCggaSA9PiB7XG4gICAgICAgICAgICBpbXBvcnRDb2xsZWN0b3IoV0lER0VUX0lNUE9SVFMuZ2V0KGkpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBtYXJrdXA7XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNwaWxlID0gKG1hcmt1cDogc3RyaW5nID0gJycpID0+IHtcbiAgICBpZiAoIW1hcmt1cC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcmVxdWlyZWRXTUNvbXBvbmVudHMgPSBbXTtcbiAgICBjb25zdCBub2RlcyA9IGh0bWxQYXJzZXIucGFyc2UobWFya3VwLCAnJyk7XG5cbiAgICBpZiAobm9kZXMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG91dHB1dCA9ICcnO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcy5yb290Tm9kZXMpIHtcbiAgICAgICAgb3V0cHV0ICs9IHByb2Nlc3NOb2RlKG5vZGUsIChpbXBvcnRzOiBJbXBvcnREZWZbXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGltcG9ydHMpIHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZFdNQ29tcG9uZW50cyA9IHJlcXVpcmVkV01Db21wb25lbnRzLmNvbmNhdChpbXBvcnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gdW5pcVdpdGgocmVxdWlyZWRXTUNvbXBvbmVudHMsIGlzRXF1YWwpO1xuICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gc29ydEJ5KHJlcXVpcmVkV01Db21wb25lbnRzLCBbJ2Zyb20nLCAnbmFtZSddKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBtYXJrdXA6IG91dHB1dCxcbiAgICAgICAgcmVxdWlyZWRXTUNvbXBvbmVudHM6IHJlcXVpcmVkV01Db21wb25lbnRzXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlciA9IChub2RlTmFtZTogc3RyaW5nLCBub2RlRGVmRm46ICgpID0+IElCdWlsZFRhc2tEZWYpID0+IHJlZ2lzdHJ5LnNldChub2RlTmFtZSwgbm9kZURlZkZuKCkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydERlZiB7XG4gICAgZnJvbTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhcz86IHN0cmluZztcbiAgICBmb3JSb290PzogYm9vbGVhbjtcbiAgICBwbGF0Zm9ybVR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJ1aWxkVGFza0RlZiB7XG4gICAgcmVxdWlyZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xuICAgIHRlbXBsYXRlPzogKG5vZGU6IEVsZW1lbnQgfCBUZXh0IHwgQ29tbWVudCwgc2hhcmVkPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiB2b2lkO1xuICAgIHByZTogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBzdHJpbmc7XG4gICAgcHJvdmlkZT86IChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPiwgc2hhcmVkID86IE1hcDxhbnksIGFueT4sIC4uLnJlcXVpcmVzOiBBcnJheTxNYXA8YW55LCBhbnk+PikgPT4gTWFwPGFueSwgYW55PjtcbiAgICBwb3N0PzogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBzdHJpbmc7XG4gICAgaW1wb3J0cz86ICBzdHJpbmdbXSB8ICgoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4pID0+IHN0cmluZ1tdKTtcbn1cblxuZXhwb3J0IGNvbnN0IHNjb3BlQ29tcG9uZW50U3R5bGVzID0gKGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudFR5cGUsIHN0eWxlcyA9ICcnKSA9PiB7XG4gICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjb21tZW50cyA9IHt9O1xuICAgIGxldCBjb21tZW50Q291bnQgPSAwO1xuICAgIGlmIChzdHlsZXMuc3RhcnRzV2l0aCgnLypESVNBQkxFX1NDT1BJTkcqLycpKSB7XG4gICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKENTU19SRUdFWC5DT01NRU5UU19GT1JNQVQsIGNvbW1lbnQgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBgQGNvbW1lbnQke2NvbW1lbnRDb3VudCsrfXtgO1xuICAgICAgICBjb21tZW50c1trZXldID0gY29tbWVudDtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9KTtcbiAgICBzdHlsZXMgPSBzdHlsZXMucmVwbGFjZShDU1NfUkVHRVguU0VMRUNUT1JfRk9STUFULCAoc2VsZWN0b3IpID0+IHtcbiAgICAgICAgaWYgKCFDU1NfUkVHRVguU0VMRUNUT1JfRVhDTFVERV9GT1JNQVQudGVzdChzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Tm9uU3BhY2VDaGFySW5kZXggPSBzZWxlY3Rvci5tYXRjaCgvXFxTLykuaW5kZXg7XG4gICAgICAgICAgICBsZXQgcHJlZml4U3BhY2VDaGFyU2VxID0gJyc7XG4gICAgICAgICAgICBpZiAoZmlyc3ROb25TcGFjZUNoYXJJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBwcmVmaXhTcGFjZUNoYXJTZXEgPSBzZWxlY3Rvci5zdWJzdHJpbmcoMCwgZmlyc3ROb25TcGFjZUNoYXJJbmRleCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zdWJzdHJpbmcoZmlyc3ROb25TcGFjZUNoYXJJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXNlbGVjdG9yLnN0YXJ0c1dpdGgoJy8qJykgJiYgc2VsZWN0b3IudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBzcGxpdHMgdGhlIHNlbGVjdG9yIGJ5IGNvbW1hcyBhbmQgd2UgaXRlcmF0ZSBvdmVyIHRoZSBhcnJheSBhbmQgYWRkIHBhZ2UgbGV2ZWwgc2NvcGluZyBhbmQgam9pbiBpdC5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKHMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcHJlZml4ID0gRUxFX1BSRUZJWDtcbiAgICAgICAgICAgICAgICAgICAgcyA9IHMudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUluZGV4ID0gcy5pbmRleE9mKCcgJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzLnN0YXJ0c1dpdGgoRUxFX1BSRUZJWCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9IHMuc3Vic3RyaW5nKDAsIHNwYWNlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZyhzcGFjZUluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudFR5cGUgPT09IDAgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BBR0UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gYCR7cHJlZml4fSBhcHAtcGFnZS0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudFR5cGUgPT09IDEgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BSRUZBQicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBgJHtwcmVmaXh9IGFwcC1wcmVmYWItJHtjb21wb25lbnROYW1lfSAke3N9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wb25lbnRUeXBlID09PSAyIHx8IGNvbXBvbmVudFR5cGUgPT09ICdQQVJUSUFMJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGAke3ByZWZpeH0gYXBwLXBhcnRpYWwtJHtjb21wb25lbnROYW1lfSAke3N9YDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKGNvbXBvbmVudFR5cGUgPT09IDMgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1dJREdFVCcpe1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGAke3ByZWZpeH0gYXBwLWN1c3RvbS0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oJywnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdG9yID0gcHJlZml4U3BhY2VDaGFyU2VxICsgc2VsZWN0b3I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNlbGVjdG9yO1xuICAgIH0pO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNvbW1lbnRzKSB7XG4gICAgICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKGtleSwgY29tbWVudHNba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG59O1xuXG4iXX0=
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy90cmFuc3BpbGVyL3NyYy9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLG9CQUFvQixFQUN2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTlFLE1BQU0sU0FBUyxHQUFHO0lBQ2QsZUFBZSxFQUFHLDBCQUEwQjtJQUM1QyxlQUFlLEVBQUcsY0FBYztJQUNoQyx1QkFBdUIsRUFBRyxrRUFBa0U7Q0FDL0YsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0FBTzVDLE1BQU0sU0FBUyxHQUFHO0lBQ2QsYUFBYSxFQUFFLGNBQWM7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxVQUFVLEVBQUUsV0FBVztJQUN2QixlQUFlLEVBQUUsV0FBVztJQUM1QixhQUFhLEVBQUUsS0FBSztJQUNwQixRQUFRLEVBQUUsS0FBSztJQUNmLGNBQWMsRUFBRSxNQUFNO0lBQ3RCLFNBQVMsRUFBRSxNQUFNO0lBQ2pCLGFBQWEsRUFBRSxVQUFVO0lBQ3pCLGtCQUFrQixFQUFFLFVBQVU7SUFDOUIsVUFBVSxFQUFFLG1EQUFtRDtDQUNsRSxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWEsRUFB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TUFBTSxhQUFhLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDbkQsQ0FBQzt5QkFBTSxJQUFJLGFBQWEsS0FBSyxDQUFDLElBQUksYUFBYSxLQUFLLFFBQVEsRUFBRSxDQUFDO3dCQUMzRCxDQUFDLEdBQUcsR0FBRyxNQUFNLGVBQWUsYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNyRCxDQUFDO3lCQUFNLElBQUksYUFBYSxLQUFLLENBQUMsSUFBSSxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQzVELENBQUMsR0FBRyxHQUFHLE1BQU0sZ0JBQWdCLGFBQWEsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsQ0FBQzt5QkFBTSxJQUFHLGFBQWEsS0FBSyxDQUFDLElBQUksYUFBYSxLQUFLLFFBQVEsRUFBQyxDQUFDO3dCQUN6RCxDQUFDLEdBQUcsR0FBRyxNQUFNLGVBQWUsYUFBYSxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNyRCxDQUFDO29CQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNiLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDO1lBQ0QsUUFBUSxHQUFHLGtCQUFrQixHQUFHLFFBQVEsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBIdG1sUGFyc2VyLFxuICAgIEVsZW1lbnQsXG4gICAgVGV4dCxcbiAgICBDb21tZW50LFxuICAgIGdldEh0bWxUYWdEZWZpbml0aW9uLCBQYXJzZVNvdXJjZVNwYW5cbn0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHsgV0lER0VUX0lNUE9SVFMgfSBmcm9tICcuL2ltcG9ydHMnO1xuaW1wb3J0IHtmaW5kLCBpc0VxdWFsLCBpc0Z1bmN0aW9uLCByZW1vdmUsIHNvcnRCeSwgdW5pcVdpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgQ1NTX1JFR0VYID0ge1xuICAgIENPTU1FTlRTX0ZPUk1BVCA6IC9cXC9cXCooKD8hXFwqXFwvKS58XFxuKStcXCpcXC8vZyxcbiAgICBTRUxFQ1RPUl9GT1JNQVQgOiAvW15cXHtcXH1dKlxcey9naSxcbiAgICBTRUxFQ1RPUl9FWENMVURFX0ZPUk1BVCA6IC8oQGtleWZyYW1lc3xAbWVkaWF8QGZvbnQtZmFjZXxAY29tbWVudFswLTldK3xmcm9tfHRvfFswLTldKyUpXFxiL2lcbn07XG5cbmNvbnN0IGlzU3RyaW5nID0gdiA9PiB0eXBlb2YgdiA9PT0gJ3N0cmluZyc7XG5cbmludGVyZmFjZSBJUHJvdmlkZXJJbmZvIHtcbiAgICBub2RlTmFtZTogc3RyaW5nO1xuICAgIHByb3ZpZGU6IE1hcDxzdHJpbmcsIGFueT47XG59XG5cbmNvbnN0IE9WRVJSSURFUyA9IHtcbiAgICAnYWNjZXNzcm9sZXMnOiAnKmFjY2Vzc3JvbGVzJyxcbiAgICAnbmctaWYnOiAnKm5nSWYnLFxuICAgICdzaG93aW5kZXZpY2UnOiAnKndtU2hvd0luRGV2aWNlJyxcbiAgICAnbmctY2xhc3MnOiAnW25nQ2xhc3NdJyxcbiAgICAnZGF0YS1uZy1jbGFzcyc6ICdbbmdDbGFzc10nLFxuICAgICdkYXRhLW5nLXNyYyc6ICdzcmMnLFxuICAgICduZy1zcmMnOiAnc3JjJyxcbiAgICAnZGF0YS1uZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1ocmVmJzogJ2hyZWYnLFxuICAgICduZy1kaXNhYmxlZCc6ICdkaXNhYmxlZCcsXG4gICAgJ2RhdGEtbmctZGlzYWJsZWQnOiAnZGlzYWJsZWQnLFxuICAgICduZy1tb2RlbCc6ICdbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgWyhuZ01vZGVsKV0nXG59O1xuXG5jb25zdCBzZWxmQ2xvc2luZ1RhZ3MgPSBuZXcgU2V0KFsnaW1nJ10pO1xuXG5leHBvcnQgY29uc3QgZ2V0Qm91bmRUb0V4cHIgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ2JpbmQ6JykpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnN1YnN0cig1KTtcbiAgICB9XG59O1xuXG5jb25zdCBxdW90ZUF0dHIgPSB2ID0+IHtcbiAgICByZXR1cm4gKCcnICsgdikgLyogRm9yY2VzIHRoZSBjb252ZXJzaW9uIHRvIHN0cmluZy4gKi9cbiAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykgLyogVGhpcyBNVVNUIGJlIHRoZSAxc3QgcmVwbGFjZW1lbnQuICovXG4gICAgICAgIC5yZXBsYWNlKC8nL2csICcmYXBvczsnKSAvKiBUaGUgNCBvdGhlciBwcmVkZWZpbmVkIGVudGl0aWVzLCByZXF1aXJlZC4gKi9cbiAgICAgICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG59O1xuXG5jb25zdCByZWdpc3RyeSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5jb25zdCBodG1sUGFyc2VyID0gbmV3IEh0bWxQYXJzZXIoKTtcbmNvbnN0IGlnbm9yZUNvbW1lbnRzID0gdHJ1ZTtcblxuY29uc3QgZW1wdHkgPSAoKSA9PiAnJztcblxuY29uc3QgaXNFdmVudCA9IG5hbWUgPT4gbmFtZVswXSA9PT0gJ28nICYmIG5hbWVbMV0gPT09ICduJyAmJiBuYW1lWzJdID09PSAnLSc7XG5cbmNvbnN0IGdldEV2ZW50TmFtZSA9IGtleSA9PiBrZXkuc3Vic3RyKDMpO1xuXG5jb25zdCBwcm9jZXNzQmluZGluZyA9IChhdHRyLCBleHByKSA9PiBbYCR7YXR0ci5uYW1lfS5iaW5kYCwgcXVvdGVBdHRyKGV4cHIpXTtcblxuY29uc3QgcHJvY2Vzc0V2ZW50ID0gYXR0ciA9PiB7XG4gICAgY29uc3QgZXZ0TmFtZSA9IGdldEV2ZW50TmFtZShhdHRyLm5hbWUpO1xuICAgIHJldHVybiBbYCR7ZXZ0TmFtZX0uZXZlbnRgLCBhdHRyLnZhbHVlXTtcbn07XG5cbi8qKlxuICogV3JhcHMgdGhlIHN0cmluZyB3aXRoIHNpbmdsZSBxdW90ZXMuXG4gKiBAcGFyYW0gdmFsXG4gKi9cbmNvbnN0IHdyYXBXaXRoQXBvcyA9ICh2YWw6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBgJmFwb3M7JHt2YWwucmVwbGFjZSgvJmFwb3MvZywgJyZxdW90JykucmVwbGFjZSgvJnF1b3QvZywgJ1xcXFwmcXVvdCcpfSZhcG9zO2A7XG59O1xuY29uc3QgRUxFX1BSRUZJWCA9ICcud20tYXBwJztcblxuY29uc3QgcHJvY2Vzc0F0dHIgPSBhdHRyID0+IHtcbiAgICBsZXQgb3ZlcnJpZGRlbiA9IE9WRVJSSURFU1thdHRyLm5hbWVdO1xuICAgIGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZVNwYW4gPyBhdHRyLnZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG92ZXJyaWRkZW4pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHdyYXAgdmFsdWUgZm9yIGFjY2Vzc3JvbGVzIHdpdGggJycuXG4gICAgICAgICAqIHNpbmNlIGFjY2Vzc3JvbGVzIGlzIGEgc3RydWN0dXJhbCBkaXJlY3RpdmUsIGl0IHdpbGwgYmUgdHJhbnNwaWxlZCB0byBbYWNjZXNzcm9sZXNdXG4gICAgICAgICAqIGhlbmNlLCB0aGUgdmFsdWUgYWdhaW5zdCBpdCBzaG91bGQgYmUgYSBjb21wdXRlZCBzdHJpbmdcbiAgICAgICAgICovXG4gICAgICAgIGlmIChhdHRyLm5hbWUgPT09ICdhY2Nlc3Nyb2xlcycgfHwgYXR0ci5uYW1lID09PSAnc2hvd2luZGV2aWNlJykge1xuICAgICAgICAgICAgcmV0dXJuIFtvdmVycmlkZGVuLCBgJyR7dmFsdWV9J2BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbb3ZlcnJpZGRlbiwgcXVvdGVBdHRyKHZhbHVlKV07XG4gICAgfVxuXG4gICAgaWYgKGlzRXZlbnQoYXR0ci5uYW1lKSkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc0V2ZW50KGF0dHIpO1xuICAgIH1cblxuICAgIGNvbnN0IGJvdW5kRXhwciA9IGdldEJvdW5kVG9FeHByKGF0dHIudmFsdWUpO1xuICAgIGlmIChib3VuZEV4cHIpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NCaW5kaW5nKGF0dHIsIGJvdW5kRXhwcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFthdHRyLm5hbWUsIHF1b3RlQXR0cih2YWx1ZSldO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERhdGFTb3VyY2UgPSAoZGF0YVNldEV4cHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgcGFydHMgPSBkYXRhU2V0RXhwci5zcGxpdCgnLicpO1xuICAgIGlmIChwYXJ0c1swXSA9PT0gJ1ZhcmlhYmxlcycgfHwgcGFydHNbMF0gPT09ICdXaWRnZXRzJykge1xuICAgICAgICByZXR1cm4gYCR7cGFydHNbMF19LiR7cGFydHNbMV19YDtcbiAgICB9XG59O1xuXG5jb25zdCB3aWRnZXRDaGlsZEF0dHJzID0gKCgpID0+IHtcbiAgICBjb25zdCBjaGlsZEF0dHJzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHZhbGlkQ2hpbGRBdHRycyA9IFtcbiAgICAgICAgYHJlcXVpcmVkYFxuICAgIF07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc2V0OiBhdHRycyA9PiB7XG4gICAgICAgICAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhbGlkQ2hpbGRBdHRycy5pbmNsdWRlcyhrZXkpICYmIChjaGlsZEF0dHJzLnNldChrZXksIHZhbCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogYXR0cnMgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmx0ckF0dHJzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgY2hpbGRBdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICFhdHRycy5nZXQoa2V5KSAmJiBmbHRyQXR0cnMuc2V0KGtleSwgdmFsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZsdHJBdHRycztcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNoaWxkQXR0cnMuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH07XG59KSgpO1xuZXhwb3J0IGNvbnN0IHNldENoaWxkQXR0cnMgPSBhdHRycyA9PiB7XG4gICAgd2lkZ2V0Q2hpbGRBdHRycy5zZXQoYXR0cnMpO1xuICAgIHJldHVybiAnJztcbn07XG5leHBvcnQgY29uc3QgZ2V0Q2hpbGRBdHRycyA9IGF0dHJzID0+IHtcbiAgICByZXR1cm4gZ2V0QXR0ck1hcmt1cCh3aWRnZXRDaGlsZEF0dHJzLmdldChhdHRycykpO1xufTtcbmV4cG9ydCBjb25zdCBjbGVhckNoaWxkQXR0cnMgPSAoKSA9PiB7XG4gICAgd2lkZ2V0Q2hpbGRBdHRycy5jbGVhcigpO1xuICAgIHJldHVybiAnJztcbn07XG5leHBvcnQgY29uc3QgZ2V0Rm9ybU1hcmt1cEF0dHIgPSBhdHRycyA9PiB7XG4gICAgaWYgKGF0dHJzLmdldCgnZGF0YXZhbHVlLmJpbmQnKSkge1xuICAgICAgICBjb25zdCBvbkRhdGFWYWx1ZUJpbmRpbmcgPSBnZXREYXRhU291cmNlKGF0dHJzLmdldCgnZGF0YXZhbHVlLmJpbmQnKSk7XG4gICAgICAgIGF0dHJzLnNldCgnZGF0YXZhbHVlc291cmNlLmJpbmQnLCBvbkRhdGFWYWx1ZUJpbmRpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0QXR0ck1hcmt1cChhdHRycyk7XG59O1xuXG5jb25zdCBnZXRBdHRyTWFwID0gYXR0cnMgPT4ge1xuICAgIGNvbnN0IGF0dHJNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGF0dHJzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgIGxldCBbYXR0ck5hbWUsIGF0dHJWYWx1ZV0gPSBwcm9jZXNzQXR0cihhdHRyKTtcbiAgICAgICAgYXR0ck1hcC5zZXQoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgfSk7XG5cbiAgICBpZiAoYXR0ck1hcC5nZXQoJ2RhdGFzZXQuYmluZCcpKSB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSBnZXREYXRhU291cmNlKGF0dHJNYXAuZ2V0KCdkYXRhc2V0LmJpbmQnKSk7XG4gICAgICAgIGlmIChkYXRhU291cmNlKSB7XG4gICAgICAgICAgICBhdHRyTWFwLnNldCgnZGF0YXNvdXJjZS5iaW5kJywgZGF0YVNvdXJjZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXR0ck1hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyTWFya3VwID0gKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+KSA9PiB7XG4gICAgbGV0IGF0dHJNYXJrdXAgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgIGF0dHJNYXJrdXAgKz0gYCAke2t9YDtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHYgPSB2LnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChrID09PSAnW25nQ2xhc3NdJyAmJiB2LnN0YXJ0c1dpdGgoJ3snKSkge1xuICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoL1wiL2csIGAnYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoayA9PT0gJ3Nob3cuYmluZCcgJiYgYXR0cnMuZ2V0KCdkZWZlcmxvYWQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgdiA9IHYgKyBgXCIgKmxhenlMb2FkPVwiJHt3cmFwV2l0aEFwb3Modil9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF0dHJNYXJrdXAgKz0gYD1cIiR7dn1cImA7XG5cbiAgICAgICAgICAgIGlmIChrID09PSAnc2hvd2luZGV2aWNlJyAmJiB2ICE9PSAnYWxsJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IFtdO1xuICAgICAgICAgICAgICAgIGlmICh2LmluY2x1ZGVzKCd4cycpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbi5wdXNoKCdWaWV3cG9ydC5pc01vYmlsZVR5cGUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHYuaW5jbHVkZXMoJ3NtJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLnB1c2goJyhWaWV3cG9ydC5pc1RhYmxldFR5cGUgJiYgVmlld3BvcnQub3JpZW50YXRpb24uaXNQb3J0cmFpdCknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHYuaW5jbHVkZXMoJ21kJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLnB1c2goJyhWaWV3cG9ydC5pc1RhYmxldFR5cGUgJiYgVmlld3BvcnQub3JpZW50YXRpb24uaXNMYW5kc2NhcGUpJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF0dHJNYXJrdXAgKz0gYCAqbmdJZj1cIiR7Y29uZGl0aW9uLmpvaW4oJyB8fCAnKX1cImA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhdHRyTWFya3VwO1xufTtcblxuY29uc3QgZ2V0UmVxdWlyZWRQcm92aWRlcnMgPSAobm9kZURlZjogSUJ1aWxkVGFza0RlZiwgcHJvdmlkZXJzOiBBcnJheTxJUHJvdmlkZXJJbmZvPiwgbm9kZUF0dHJzKSA9PiB7XG4gICAgaWYgKCFub2RlRGVmLnJlcXVpcmVzKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBsZXQgcmVxdWlyZXMgPSBub2RlRGVmLnJlcXVpcmVzIGFzIGFueTtcblxuICAgIGlmIChpc1N0cmluZyhyZXF1aXJlcykpIHtcbiAgICAgICAgcmVxdWlyZXMgPSBbcmVxdWlyZXNdO1xuICAgIH1cblxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXF1aXJlcykpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1aXJlcy5tYXAocmVxdWlyZSA9PiB7XG4gICAgICAgIC8vIGZvciBkeW5hbWljIHRhYmxlIGFzc2lnbmluZyBwYXJlbnQgcHJvdmlkZSBtYXAgdG8gdGhlIGNoaWxkLFxuICAgICAgICBmb3IgKGxldCBpID0gbm9kZUF0dHJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICAgICAgaWYgKG5vZGVBdHRyc1tpXS5uYW1lID09PSAndGFibGVOYW1lJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGVmW25vZGVBdHRyc1tpXS52YWx1ZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gcHJvdmlkZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tICkge1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyc1tpXS5ub2RlTmFtZSA9PT0gcmVxdWlyZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnNbaV0ucHJvdmlkZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuY29uc3QgRElNRU5TSU9OX1BST1BTID0gWydwYWRkaW5nJywgJ2JvcmRlcndpZHRoJywgJ21hcmdpbiddO1xuXG5jb25zdCBTRVBBUkFUT1IgPSAnICcsIFVOU0VUID0gJ3Vuc2V0JztcblxuY29uc3Qgc2V0RGltZW5zaW9uUHJvcCA9IChjc3NPYmosIGtleSwgbnYpID0+IHtcbiAgICBsZXQgY3NzS2V5ID0ga2V5LCB2YWwsIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgc3VmZml4ID0gJyc7XG5cbiAgICBmdW5jdGlvbiBzZXRWYWwocHJvcCwgdmFsdWUpIHtcbiAgICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIFVOU0VULCByZXNldCB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgICAgICAgaWYgKHZhbHVlID09PSBVTlNFVCkge1xuICAgICAgICAgICAgdmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBjc3NPYmpbY3NzS2V5ICsgcHJvcCArIHN1ZmZpeF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnYm9yZGVyd2lkdGgnKSB7XG4gICAgICAgIHN1ZmZpeCA9ICAnd2lkdGgnO1xuICAgICAgICBjc3NLZXkgPSAnYm9yZGVyJztcbiAgICB9XG5cbiAgICB2YWwgPSBudjtcblxuICAgIGlmICh2YWwuaW5kZXhPZihVTlNFVCkgIT09IC0xKSB7XG4gICAgICAgIHZhbCA9IHZhbC5zcGxpdChTRVBBUkFUT1IpO1xuXG4gICAgICAgIHRvcCAgICA9IHZhbFswXTtcbiAgICAgICAgcmlnaHQgID0gdmFsWzFdIHx8IHZhbFswXTtcbiAgICAgICAgYm90dG9tID0gdmFsWzJdIHx8IHZhbFswXTtcbiAgICAgICAgbGVmdCAgID0gdmFsWzNdIHx8IHZhbFsxXSB8fCB2YWxbMF07XG5cbiAgICAgICAgc2V0VmFsKCd0b3AnLCAgICB0b3ApO1xuICAgICAgICBzZXRWYWwoJ3JpZ2h0JywgIHJpZ2h0KTtcbiAgICAgICAgc2V0VmFsKCdib3R0b20nLCBib3R0b20pO1xuICAgICAgICBzZXRWYWwoJ2xlZnQnLCAgIGxlZnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdib3JkZXJ3aWR0aCcpIHtcbiAgICAgICAgICAgIGNzc0tleSA9ICdib3JkZXJ3aWR0aCc7XG4gICAgICAgIH1cbiAgICAgICAgY3NzT2JqW2Nzc0tleV0gPSBudjtcbiAgICB9XG59O1xuXG5jb25zdCBwcm9jZXNzRGltZW5zaW9uQXR0cmlidXRlcyA9IGF0dHJNYXAgPT4ge1xuICAgIGNvbnN0IGF0dHJLZXlzID0gQXJyYXkuZnJvbShhdHRyTWFwLmtleXMoKSk7XG4gICAgYXR0cktleXMuZm9yRWFjaCgoYXR0cktleTogYW55KSA9PiB7XG4gICAgICAgIGlmIChESU1FTlNJT05fUFJPUFMuaW5jbHVkZXMoYXR0cktleSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzc09iaiA9IHt9LFxuICAgICAgICAgICAgICAgIGF0dHJWYWx1ZSA9IGF0dHJNYXAuZ2V0KGF0dHJLZXkpO1xuICAgICAgICAgICAgYXR0ck1hcC5kZWxldGUoYXR0cktleSk7XG4gICAgICAgICAgICBzZXREaW1lbnNpb25Qcm9wKGNzc09iaiwgYXR0cktleSwgYXR0clZhbHVlKTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNzc09iaikuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjc3NPYmpba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICBhdHRyTWFwLnNldChrZXksIGNzc09ialtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuLy8gcmVwbGFjZSA8OnN2Zzpzdmc+IC0+IDxzdmc+LCA8OnN2ZzoqPiAtPiA8c3ZnOio+XG5jb25zdCBnZXROb2RlTmFtZSA9IG5hbWUgPT4gbmFtZS5yZXBsYWNlKCc6c3ZnOnN2ZycsICdzdmcnKS5yZXBsYWNlKCc6c3ZnOicsICdzdmc6Jyk7XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzTm9kZSA9IChub2RlLCBpbXBvcnRDb2xsZWN0b3I6IChpOiBJbXBvcnREZWZbXSkgPT4gdm9pZCwgcHJvdmlkZXJzPzogQXJyYXk8SVByb3ZpZGVySW5mbz4pID0+IHtcbiAgICBjb25zdCBub2RlRGVmID0gcmVnaXN0cnkuZ2V0KG5vZGUubmFtZSk7XG5cbiAgICBsZXQgcHJlLCBwb3N0LCB0ZW1wbGF0ZTtcblxuICAgIGlmIChub2RlRGVmKSB7XG4gICAgICAgIHByZSA9IG5vZGVEZWYucHJlIHx8IGVtcHR5O1xuICAgICAgICBwb3N0ID0gbm9kZURlZi5wb3N0IHx8IGVtcHR5O1xuICAgICAgICB0ZW1wbGF0ZSA9IG5vZGVEZWYudGVtcGxhdGUgfHwgZW1wdHk7XG4gICAgfVxuXG4gICAgbGV0IG1hcmt1cCA9ICcnO1xuICAgIGxldCBhdHRyTWFwO1xuICAgIGxldCByZXF1aXJlZFByb3ZpZGVycztcbiAgICBsZXQgc2hhcmVkO1xuXG4gICAgaWYgKCFwcm92aWRlcnMpIHtcbiAgICAgICAgcHJvdmlkZXJzID0gW107XG4gICAgfVxuXG4gICAgY29uc3QgaXNFbGVtZW50VHlwZSA9IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xuXG4gICAgaWYgKGlzRWxlbWVudFR5cGUpIHtcbiAgICAgICAgbGV0IHByb3ZpZGVJbmZvOiBJUHJvdmlkZXJJbmZvO1xuXG4gICAgICAgIGlmIChub2RlRGVmKSB7XG4gICAgICAgICAgICByZXF1aXJlZFByb3ZpZGVycyA9IGdldFJlcXVpcmVkUHJvdmlkZXJzKG5vZGVEZWYsIHByb3ZpZGVycywgbm9kZS5hdHRycyk7XG4gICAgICAgICAgICBzaGFyZWQgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICB0ZW1wbGF0ZShub2RlLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJNYXAgPSBnZXRBdHRyTWFwKG5vZGUuYXR0cnMpO1xuICAgICAgICBwcm9jZXNzRGltZW5zaW9uQXR0cmlidXRlcyhhdHRyTWFwKTtcblxuICAgICAgICBjb25zdCBub2RlTmFtZSA9IGdldE5vZGVOYW1lKG5vZGUubmFtZSk7XG5cbiAgICAgICAgaWYgKG5vZGVEZWYpIHtcbiAgICAgICAgICAgIG1hcmt1cCA9ICg8YW55PnByZSkoYXR0ck1hcCwgc2hhcmVkLCAuLi5yZXF1aXJlZFByb3ZpZGVycyk7XG4gICAgICAgICAgICBpZiAobm9kZURlZi5wcm92aWRlKSB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZUluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGVOYW1lOiBub2RlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IGlzRnVuY3Rpb24obm9kZURlZi5wcm92aWRlKSA/IG5vZGVEZWYucHJvdmlkZShhdHRyTWFwLCBzaGFyZWQsIC4uLnJlcXVpcmVkUHJvdmlkZXJzKSA6IG5vZGVEZWYucHJvdmlkZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgLy8gRm9yIHRhYmxlIG5vZGUsIGFzc2lnbmluZyBwYXJlbnQgcHJvdmlkZSBtYXAgdG8gdGhlIGNoaWxkLCBhcyBjaGlsZCByZXF1aXJlcyBzb21lIHBhcmVudCBwcm92aWRlIGF0dHJzLlxuICAgICAgICAgICAgICAgIGlmIChub2RlLm5hbWUgPT09ICd3bS10YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFibGVDb2xOb2RlRGVmbiA9IHJlZ2lzdHJ5LmdldCgnd20tdGFibGUtY29sdW1uJyk7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sTm9kZURlZm5bZmluZChub2RlLmF0dHJzLCAoZWwpID0+IGVsLm5hbWUgPT09ICduYW1lJykudmFsdWUgKyBwcm92aWRlSW5mby5wcm92aWRlLmdldCgndGFibGVfcmVmZXJlbmNlJyldID0gcHJvdmlkZUluZm8ucHJvdmlkZTtcbiAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnkuc2V0KCd3bS10YWJsZS1jb2x1bW4nLCB0YWJsZUNvbE5vZGVEZWZuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLnB1c2gocHJvdmlkZUluZm8pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWFya3VwID0gYDwke25vZGVOYW1lfSAke2dldEF0dHJNYXJrdXAoYXR0ck1hcCl9PmA7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkOiBOb2RlIHwgYW55KSA9PiB7XG4gICAgICAgICAgICBpZihjaGlsZC5hdHRycykge1xuICAgICAgICAgICAgICAgIGxldCBzaG93SW5EZXZpY2VBdHRyLCBhY2Nlc3NSb2xlc0F0dHIsIGRlZmVyTG9hZEF0dHIsIHNob3dBdHRyO1xuICAgICAgICAgICAgICAgIGNoaWxkLmF0dHJzLmZvckVhY2goZnVuY3Rpb24oYXR0cil7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLm5hbWUgPT09ICdzaG93aW5kZXZpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SW5EZXZpY2VBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyLm5hbWUgPT09ICdhY2Nlc3Nyb2xlcycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc1JvbGVzQXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09PSAnZGVmZXJsb2FkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJMb2FkQXR0ciA9IGF0dHI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0ci5uYW1lID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBdHRyID0gYXR0cjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmKChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0cikgfHwgKHNob3dJbkRldmljZUF0dHIgJiYgZGVmZXJMb2FkQXR0cikgfHwgKGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSkge1xuICAgICAgICAgICAgICAgICAgICAvKiBJZiBtb3JlIHRoYW4gb25lIG91dCBvZiBzaG93aW5kZXZpY2UsIGFjY2Vzc3JvbGVzIGFuZCBkZWZlcmxvYWQgZXhpc3QgZm9yIGEgd2lkZ2V0LCBhZGQgbmctY29udGFpbmVyIHdyYXBwZXJzIHRvIGZpeCBhbmd1bGFyIGxpbWl0YXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgb2YgYXBwbHlpbmcgb25seSBvbmUgc3RydWN0dXJhbCBkaXJlY3RpdmUgdG8gYW4gZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgKiAgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9TcGFuID0gKHt9IGFzIFBhcnNlU291cmNlU3Bhbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dJbkRldmljZUNvbnRhaW5lcjphbnkgPSBzaG93SW5EZXZpY2VBdHRyID8gbmV3IEVsZW1lbnQoJ25nLWNvbnRhaW5lcicsIFtdLCBbXSwgbm9TcGFuLCBub1NwYW4sIG5vU3BhbikgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWNjZXNzUm9sZXNDb250YWluZXI6YW55ID0gYWNjZXNzUm9sZXNBdHRyID8gbmV3IEVsZW1lbnQoJ25nLWNvbnRhaW5lcicsIFtdLCBbXSwgbm9TcGFuLCBub1NwYW4sIG5vU3BhbikgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmZXJMb2FkQ29udGFpbmVyOmFueSA9IGRlZmVyTG9hZEF0dHIgPyBuZXcgRWxlbWVudCgnbmctY29udGFpbmVyJywgW10sIFtdLCBub1NwYW4sIG5vU3Bhbiwgbm9TcGFuKSA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd0luRGV2aWNlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93SW5EZXZpY2VDb250YWluZXIuYXR0cnMucHVzaChzaG93SW5EZXZpY2VBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzUm9sZXNDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc1JvbGVzQ29udGFpbmVyLmF0dHJzLnB1c2goYWNjZXNzUm9sZXNBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVmZXJMb2FkQ29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZlckxvYWRDb250YWluZXIuYXR0cnMucHVzaChkZWZlckxvYWRBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaG93QXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTG9hZENvbnRhaW5lci5hdHRycy5wdXNoKHNob3dBdHRyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoY2hpbGQuYXR0cnMsIGZ1bmN0aW9uIChhdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXR0ci5uYW1lID09PSAnc2hvd2luZGV2aWNlJyB8fCBhdHRyLm5hbWUgPT09ICdhY2Nlc3Nyb2xlcycgfHwgYXR0ci5uYW1lID09PSAnZGVmZXJsb2FkJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkQ29udGFpbmVyLCBwYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGFjY2Vzc1JvbGVzQXR0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRDb250YWluZXIgPSBzaG93SW5EZXZpY2VDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSBhY2Nlc3NSb2xlc0NvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzaG93SW5EZXZpY2VBdHRyICYmIGRlZmVyTG9hZEF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyID0gc2hvd0luRGV2aWNlQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gZGVmZXJMb2FkQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY2Vzc1JvbGVzQXR0ciAmJiBkZWZlckxvYWRBdHRyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZENvbnRhaW5lciA9IGRlZmVyTG9hZENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGFjY2Vzc1JvbGVzQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdyYXAgY3VycmVudCBub2RlIGVsZW1lbnRzIGluc2lkZSBmaXJzdCBuZy1jb250YWluZXIoY2hpbGRDb250YWluZXIpIGFuZCB0aGF0IGNvbnRhaW5lcidzIGVsZW1lbnRzIGluc2lkZSBhbm90aGVyIG5nLWNvbnRhaW5lcihwYXJlbnRDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkQ29udGFpbmVyLmNoaWxkcmVuID0gW2NoaWxkXTtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyLmNoaWxkcmVuID0gW2NoaWxkQ29udGFpbmVyXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYWxsIHRocmVlIGRpcmVjdGl2ZXMgZXhpc3QsIGNyZWF0ZSBhbm90aGVyIHdyYXBwZXIgZm9yIHRoaXJkIG5nLWNvbnRhaW5lcihncmFuZFBhcmVudENvbnRhaW5lcilcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dJbkRldmljZUF0dHIgJiYgYWNjZXNzUm9sZXNBdHRyICYmIGRlZmVyTG9hZEF0dHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyYW5kUGFyZW50Q29udGFpbmVyID0gZGVmZXJMb2FkQ29udGFpbmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbmRQYXJlbnRDb250YWluZXIuY2hpbGRyZW4gPSBbcGFyZW50Q29udGFpbmVyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gZ3JhbmRQYXJlbnRDb250YWluZXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IHBhcmVudENvbnRhaW5lcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hcmt1cCArPSBwcm9jZXNzTm9kZShjaGlsZCwgaW1wb3J0Q29sbGVjdG9yLCBwcm92aWRlcnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAobm9kZURlZikge1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVJbmZvKSB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZXJzLnNwbGljZShwcm92aWRlcnMuaW5kZXhPZihwcm92aWRlSW5mbyksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFya3VwICs9ICg8YW55PnBvc3QpKGF0dHJNYXAsIHNoYXJlZCwgLi4ucmVxdWlyZWRQcm92aWRlcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5vZGUuZW5kU291cmNlU3BhbiAmJiAhZ2V0SHRtbFRhZ0RlZmluaXRpb24obm9kZS5uYW1lKS5pc1ZvaWQpIHtcbiAgICAgICAgICAgICAgICBtYXJrdXAgKz0gYDwvJHtub2RlTmFtZX0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIFRleHQpIHtcbiAgICAgICAgbWFya3VwICs9IG5vZGUudmFsdWU7XG4gICAgfSBlbHNlIGlmIChub2RlIGluc3RhbmNlb2YgQ29tbWVudCkge1xuICAgICAgICBpZiAoIWlnbm9yZUNvbW1lbnRzKSB7XG4gICAgICAgICAgICBtYXJrdXAgKz0gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbXBvcnRDb2xsZWN0b3IoV0lER0VUX0lNUE9SVFMuZ2V0KG5vZGUubmFtZSkpO1xuICAgIGlmIChub2RlRGVmICYmIG5vZGVEZWYuaW1wb3J0cykge1xuICAgICAgICBsZXQgaW1wb3J0cyA9IFtdO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGVEZWYuaW1wb3J0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaW1wb3J0cyA9IG5vZGVEZWYuaW1wb3J0cyhhdHRyTWFwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGltcG9ydHMgPSBub2RlRGVmLmltcG9ydHM7XG4gICAgICAgIH1cbiAgICAgICAgaW1wb3J0cy5mb3JFYWNoKCBpID0+IHtcbiAgICAgICAgICAgIGltcG9ydENvbGxlY3RvcihXSURHRVRfSU1QT1JUUy5nZXQoaSkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc3BpbGUgPSAobWFya3VwOiBzdHJpbmcgPSAnJykgPT4ge1xuICAgIGlmICghbWFya3VwLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCByZXF1aXJlZFdNQ29tcG9uZW50cyA9IFtdO1xuICAgIGNvbnN0IG5vZGVzID0gaHRtbFBhcnNlci5wYXJzZShtYXJrdXAsICcnKTtcblxuICAgIGlmIChub2Rlcy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgb3V0cHV0ID0gJyc7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzLnJvb3ROb2Rlcykge1xuICAgICAgICBvdXRwdXQgKz0gcHJvY2Vzc05vZGUobm9kZSwgKGltcG9ydHM6IEltcG9ydERlZltdKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW1wb3J0cykge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkV01Db21wb25lbnRzID0gcmVxdWlyZWRXTUNvbXBvbmVudHMuY29uY2F0KGltcG9ydHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVxdWlyZWRXTUNvbXBvbmVudHMgPSB1bmlxV2l0aChyZXF1aXJlZFdNQ29tcG9uZW50cywgaXNFcXVhbCk7XG4gICAgcmVxdWlyZWRXTUNvbXBvbmVudHMgPSBzb3J0QnkocmVxdWlyZWRXTUNvbXBvbmVudHMsIFsnZnJvbScsICduYW1lJ10pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG1hcmt1cDogb3V0cHV0LFxuICAgICAgICByZXF1aXJlZFdNQ29tcG9uZW50czogcmVxdWlyZWRXTUNvbXBvbmVudHNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyID0gKG5vZGVOYW1lOiBzdHJpbmcsIG5vZGVEZWZGbjogKCkgPT4gSUJ1aWxkVGFza0RlZikgPT4gcmVnaXN0cnkuc2V0KG5vZGVOYW1lLCBub2RlRGVmRm4oKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0RGVmIHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFzPzogc3RyaW5nO1xuICAgIGZvclJvb3Q/OiBib29sZWFuO1xuICAgIHBsYXRmb3JtVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQnVpbGRUYXNrRGVmIHtcbiAgICByZXF1aXJlcz86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgdGVtcGxhdGU/OiAobm9kZTogRWxlbWVudCB8IFRleHQgfCBDb21tZW50LCBzaGFyZWQ/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHZvaWQ7XG4gICAgcHJlOiAoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4sIHNoYXJlZCA/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHN0cmluZztcbiAgICBwcm92aWRlPzogKGF0dHJzOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBzaGFyZWQgPzogTWFwPGFueSwgYW55PiwgLi4ucmVxdWlyZXM6IEFycmF5PE1hcDxhbnksIGFueT4+KSA9PiBNYXA8YW55LCBhbnk+O1xuICAgIHBvc3Q/OiAoYXR0cnM6IE1hcDxzdHJpbmcsIHN0cmluZz4sIHNoYXJlZCA/OiBNYXA8YW55LCBhbnk+LCAuLi5yZXF1aXJlczogQXJyYXk8TWFwPGFueSwgYW55Pj4pID0+IHN0cmluZztcbiAgICBpbXBvcnRzPzogIHN0cmluZ1tdIHwgKChhdHRyczogTWFwPHN0cmluZywgc3RyaW5nPikgPT4gc3RyaW5nW10pO1xufVxuXG5leHBvcnQgY29uc3Qgc2NvcGVDb21wb25lbnRTdHlsZXMgPSAoY29tcG9uZW50TmFtZSwgY29tcG9uZW50VHlwZSwgc3R5bGVzID0gJycpID0+IHtcbiAgICBjb21wb25lbnROYW1lID0gY29tcG9uZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGNvbW1lbnRzID0ge307XG4gICAgbGV0IGNvbW1lbnRDb3VudCA9IDA7XG4gICAgaWYgKHN0eWxlcy5zdGFydHNXaXRoKCcvKkRJU0FCTEVfU0NPUElORyovJykpIHtcbiAgICAgICAgcmV0dXJuIHN0eWxlcztcbiAgICB9XG4gICAgc3R5bGVzID0gc3R5bGVzLnJlcGxhY2UoQ1NTX1JFR0VYLkNPTU1FTlRTX0ZPUk1BVCwgY29tbWVudCA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGBAY29tbWVudCR7Y29tbWVudENvdW50Kyt9e2A7XG4gICAgICAgIGNvbW1lbnRzW2tleV0gPSBjb21tZW50O1xuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKENTU19SRUdFWC5TRUxFQ1RPUl9GT1JNQVQsIChzZWxlY3RvcikgPT4ge1xuICAgICAgICBpZiAoIUNTU19SRUdFWC5TRUxFQ1RPUl9FWENMVURFX0ZPUk1BVC50ZXN0KHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3ROb25TcGFjZUNoYXJJbmRleCA9IHNlbGVjdG9yLm1hdGNoKC9cXFMvKS5pbmRleDtcbiAgICAgICAgICAgIGxldCBwcmVmaXhTcGFjZUNoYXJTZXEgPSAnJztcbiAgICAgICAgICAgIGlmIChmaXJzdE5vblNwYWNlQ2hhckluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIHByZWZpeFNwYWNlQ2hhclNlcSA9IHNlbGVjdG9yLnN1YnN0cmluZygwLCBmaXJzdE5vblNwYWNlQ2hhckluZGV4KTtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnN1YnN0cmluZyhmaXJzdE5vblNwYWNlQ2hhckluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZWN0b3Iuc3RhcnRzV2l0aCgnLyonKSAmJiBzZWxlY3Rvci50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIHNwbGl0cyB0aGUgc2VsZWN0b3IgYnkgY29tbWFzIGFuZCB3ZSBpdGVyYXRlIG92ZXIgdGhlIGFycmF5IGFuZCBhZGQgcGFnZSBsZXZlbCBzY29waW5nIGFuZCBqb2luIGl0LlxuICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3Iuc3BsaXQoJywnKS5tYXAocyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVmaXggPSBFTEVfUFJFRklYO1xuICAgICAgICAgICAgICAgICAgICBzID0gcy50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwYWNlSW5kZXggPSBzLmluZGV4T2YoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMuc3RhcnRzV2l0aChFTEVfUFJFRklYKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNwYWNlSW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcy5zdWJzdHJpbmcoMCwgc3BhY2VJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHNwYWNlSW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50VHlwZSA9PT0gMCB8fCBjb21wb25lbnRUeXBlID09PSAnUEFHRScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBgJHtwcmVmaXh9IGFwcC1wYWdlLSR7Y29tcG9uZW50TmFtZX0gJHtzfWA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tcG9uZW50VHlwZSA9PT0gMSB8fCBjb21wb25lbnRUeXBlID09PSAnUFJFRkFCJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGAke3ByZWZpeH0gYXBwLXByZWZhYi0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBvbmVudFR5cGUgPT09IDIgfHwgY29tcG9uZW50VHlwZSA9PT0gJ1BBUlRJQUwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gYCR7cHJlZml4fSBhcHAtcGFydGlhbC0ke2NvbXBvbmVudE5hbWV9ICR7c31gO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoY29tcG9uZW50VHlwZSA9PT0gMyB8fCBjb21wb25lbnRUeXBlID09PSAnV0lER0VUJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gYCR7cHJlZml4fSBhcHAtY3VzdG9tLSR7Y29tcG9uZW50TmFtZX0gJHtzfWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgICAgICAgICAgfSkuam9pbignLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0b3IgPSBwcmVmaXhTcGFjZUNoYXJTZXEgKyBzZWxlY3RvcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfSk7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY29tbWVudHMpIHtcbiAgICAgICAgc3R5bGVzID0gc3R5bGVzLnJlcGxhY2Uoa2V5LCBjb21tZW50c1trZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlcztcbn07XG5cbiJdfQ==