@wavemaker/app-ng-runtime 11.13.0-rc.6255 → 11.14.0-rc.232

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 (1026) hide show
  1. package/build-task/bundles/index.umd.js +34 -5
  2. package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
  3. package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
  4. package/build-task/esm2022/basic/html/html.build.mjs +15 -0
  5. package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
  6. package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
  7. package/build-task/esm2022/basic/label/label.build.mjs +25 -0
  8. package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
  9. package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
  10. package/build-task/esm2022/basic/video/video.build.mjs +10 -0
  11. package/build-task/esm2022/data/form/form-field/form-field.build.mjs +8 -3
  12. package/build-task/esm2022/data/form/form.build.mjs +8 -1
  13. package/build-task/esm2022/data/table/table-column/table-column.build.mjs +14 -3
  14. package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +2 -2
  15. package/build-task/esm2022/page/page-content/page-content.build.mjs +8 -2
  16. package/build-task/esm2022/public_api.mjs +10 -10
  17. package/build-task/fesm2022/index.mjs +36 -7
  18. package/build-task/fesm2022/index.mjs.map +1 -1
  19. package/build-task/package.json +3 -6
  20. package/build-task/public_api.d.ts +9 -9
  21. package/components/advanced/carousel/bundles/index.umd.js +33 -38
  22. package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +16 -16
  23. package/components/advanced/carousel/esm2022/carousel.directive.mjs +19 -24
  24. package/components/advanced/carousel/fesm2022/index.mjs +34 -39
  25. package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  26. package/components/advanced/carousel/package.json +0 -3
  27. package/components/advanced/custom/bundles/index.umd.js +48 -48
  28. package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
  29. package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +31 -31
  30. package/components/advanced/custom/esm2022/custom-widget.directive.mjs +15 -15
  31. package/components/advanced/custom/fesm2022/index.mjs +45 -45
  32. package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  33. package/components/advanced/custom/package.json +0 -3
  34. package/components/advanced/login/bundles/index.umd.js +33 -53
  35. package/components/advanced/login/esm2022/login.component.mjs +26 -47
  36. package/components/advanced/login/fesm2022/index.mjs +27 -47
  37. package/components/advanced/login/fesm2022/index.mjs.map +1 -1
  38. package/components/advanced/login/login.component.d.ts +1 -1
  39. package/components/advanced/login/package.json +0 -3
  40. package/components/advanced/marquee/bundles/index.umd.js +19 -19
  41. package/components/advanced/marquee/esm2022/marquee.directive.mjs +20 -20
  42. package/components/advanced/marquee/fesm2022/index.mjs +20 -20
  43. package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
  44. package/components/advanced/marquee/package.json +0 -3
  45. package/components/base/bundles/index.umd.js +4275 -4244
  46. package/components/base/esm2022/pipes/custom-pipes.mjs +14 -12
  47. package/components/base/esm2022/pipes/wm-pipe.mjs +3 -3
  48. package/components/base/esm2022/public_api.mjs +1 -2
  49. package/components/base/esm2022/utils/widget-utils.mjs +4 -2
  50. package/components/base/esm2022/widgets/common/container/container.directive.mjs +154 -1
  51. package/components/base/esm2022/widgets/common/container/container.props.mjs +7 -2
  52. package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +1 -1
  53. package/components/base/fesm2022/index.mjs +4279 -4248
  54. package/components/base/fesm2022/index.mjs.map +1 -1
  55. package/components/base/package.json +2 -2
  56. package/components/base/pipes/custom-pipes.d.ts +4 -2
  57. package/components/base/pipes/wm-pipe.d.ts +1 -1
  58. package/components/base/public_api.d.ts +0 -1
  59. package/components/base/widgets/common/container/container.directive.d.ts +9 -0
  60. package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -2
  61. package/components/basic/anchor/bundles/index.umd.js +192 -0
  62. package/components/basic/anchor/esm2022/anchor.component.mjs +143 -0
  63. package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
  64. package/components/basic/anchor/esm2022/index.mjs +5 -0
  65. package/components/basic/anchor/esm2022/public_api.mjs +2 -0
  66. package/components/basic/anchor/fesm2022/index.mjs +175 -0
  67. package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
  68. package/components/basic/{progress → anchor}/index.d.ts +1 -1
  69. package/components/basic/{default → anchor}/package.json +1 -4
  70. package/components/basic/anchor/public_api.d.ts +1 -0
  71. package/components/basic/audio/bundles/index.umd.js +83 -0
  72. package/components/basic/audio/esm2022/audio.component.mjs +41 -0
  73. package/components/basic/audio/esm2022/audio.props.mjs +19 -0
  74. package/components/{input/epoch → basic/audio}/esm2022/index.mjs +1 -1
  75. package/components/basic/audio/esm2022/public_api.mjs +2 -0
  76. package/components/basic/audio/fesm2022/index.mjs +65 -0
  77. package/components/basic/audio/fesm2022/index.mjs.map +1 -0
  78. package/components/{input/epoch → basic/audio}/index.d.ts +1 -1
  79. package/components/{input/default → basic/audio}/package.json +2 -5
  80. package/components/basic/audio/public_api.d.ts +1 -0
  81. package/components/basic/html/bundles/index.umd.js +110 -0
  82. package/components/basic/html/esm2022/html.directive.mjs +76 -0
  83. package/components/basic/html/esm2022/html.props.mjs +12 -0
  84. package/components/basic/html/esm2022/index.mjs +5 -0
  85. package/components/basic/html/esm2022/public_api.mjs +2 -0
  86. package/components/basic/html/fesm2022/index.mjs +93 -0
  87. package/components/basic/html/fesm2022/index.mjs.map +1 -0
  88. package/components/basic/{default → html}/index.d.ts +1 -1
  89. package/components/{input/epoch → basic/html}/package.json +1 -4
  90. package/components/basic/html/public_api.d.ts +1 -0
  91. package/components/basic/icon/bundles/index.umd.js +80 -0
  92. package/components/basic/icon/esm2022/icon.component.mjs +38 -0
  93. package/components/basic/icon/esm2022/icon.props.mjs +19 -0
  94. package/components/basic/icon/esm2022/index.mjs +5 -0
  95. package/components/basic/icon/esm2022/public_api.mjs +2 -0
  96. package/components/basic/icon/fesm2022/index.mjs +62 -0
  97. package/components/basic/icon/fesm2022/index.mjs.map +1 -0
  98. package/components/{input/default → basic/icon}/index.d.ts +1 -1
  99. package/components/basic/{progress → icon}/package.json +1 -4
  100. package/components/basic/icon/public_api.d.ts +1 -0
  101. package/components/basic/iframe/.npmignore +2 -0
  102. package/components/basic/iframe/bundles/index.umd.js +101 -0
  103. package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
  104. package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
  105. package/components/basic/iframe/esm2022/index.mjs +5 -0
  106. package/components/basic/iframe/esm2022/public_api.mjs +2 -0
  107. package/components/basic/iframe/fesm2022/index.mjs +84 -0
  108. package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
  109. package/components/basic/iframe/index.d.ts +5 -0
  110. package/components/basic/iframe/package.json +20 -0
  111. package/components/basic/iframe/public_api.d.ts +1 -0
  112. package/components/basic/label/.npmignore +2 -0
  113. package/components/basic/label/bundles/index.umd.js +109 -0
  114. package/components/basic/label/esm2022/index.mjs +5 -0
  115. package/components/basic/label/esm2022/label.directive.mjs +71 -0
  116. package/components/basic/label/esm2022/label.props.mjs +17 -0
  117. package/components/basic/label/esm2022/public_api.mjs +2 -0
  118. package/components/basic/label/fesm2022/index.mjs +93 -0
  119. package/components/basic/label/fesm2022/index.mjs.map +1 -0
  120. package/components/basic/label/index.d.ts +5 -0
  121. package/components/basic/{default/label → label}/label.directive.d.ts +1 -1
  122. package/components/basic/label/package.json +20 -0
  123. package/components/basic/label/public_api.d.ts +1 -0
  124. package/components/basic/picture/.npmignore +2 -0
  125. package/components/basic/picture/bundles/index.umd.js +138 -0
  126. package/components/basic/{default → picture}/esm2022/index.mjs +1 -1
  127. package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
  128. package/components/basic/picture/esm2022/picture.props.mjs +23 -0
  129. package/components/basic/picture/esm2022/public_api.mjs +2 -0
  130. package/components/basic/picture/fesm2022/index.mjs +121 -0
  131. package/components/basic/picture/fesm2022/index.mjs.map +1 -0
  132. package/components/basic/picture/index.d.ts +5 -0
  133. package/components/basic/picture/package.json +20 -0
  134. package/components/basic/picture/public_api.d.ts +1 -0
  135. package/components/basic/progress/progress-bar/.npmignore +2 -0
  136. package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
  137. package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
  138. package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
  139. package/components/basic/progress/{esm2022/progress-bar → progress-bar/esm2022}/progress-bar.props.mjs +1 -1
  140. package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
  141. package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
  142. package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
  143. package/components/basic/progress/progress-bar/index.d.ts +5 -0
  144. package/components/basic/progress/progress-bar/package.json +20 -0
  145. package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
  146. package/components/basic/progress/progress-circle/.npmignore +2 -0
  147. package/components/basic/progress/progress-circle/bundles/index.umd.js +161 -0
  148. package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
  149. package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +120 -0
  150. package/components/basic/progress/{esm2022/progress-circle → progress-circle/esm2022}/progress-circle.props.mjs +1 -1
  151. package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
  152. package/components/basic/progress/progress-circle/fesm2022/index.mjs +145 -0
  153. package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
  154. package/components/basic/progress/progress-circle/index.d.ts +5 -0
  155. package/components/basic/progress/progress-circle/package.json +20 -0
  156. package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
  157. package/components/basic/progress/progress-utils/.npmignore +2 -0
  158. package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
  159. package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
  160. package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
  161. package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
  162. package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
  163. package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
  164. package/components/basic/progress/progress-utils/index.d.ts +5 -0
  165. package/components/basic/progress/progress-utils/package.json +20 -0
  166. package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
  167. package/components/basic/rich-text-editor/bundles/index.umd.js +23 -40
  168. package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +19 -38
  169. package/components/basic/rich-text-editor/fesm2022/index.mjs +21 -39
  170. package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  171. package/components/basic/rich-text-editor/package.json +0 -3
  172. package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
  173. package/components/basic/search/bundles/index.umd.js +109 -313
  174. package/components/basic/search/esm2022/scrollable.directive.mjs +13 -14
  175. package/components/basic/search/esm2022/search.component.mjs +40 -246
  176. package/components/basic/search/fesm2022/index.mjs +52 -256
  177. package/components/basic/search/fesm2022/index.mjs.map +1 -1
  178. package/components/basic/search/package.json +0 -3
  179. package/components/basic/search/scrollable.directive.d.ts +2 -3
  180. package/components/basic/search/search.component.d.ts +1 -1
  181. package/components/basic/spinner/.npmignore +2 -0
  182. package/components/basic/spinner/bundles/index.umd.js +118 -0
  183. package/components/{input/default → basic/spinner}/esm2022/index.mjs +1 -1
  184. package/components/basic/spinner/esm2022/public_api.mjs +2 -0
  185. package/components/basic/spinner/esm2022/spinner.component.mjs +79 -0
  186. package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
  187. package/components/basic/spinner/fesm2022/index.mjs +103 -0
  188. package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
  189. package/components/basic/spinner/index.d.ts +5 -0
  190. package/components/basic/spinner/package.json +20 -0
  191. package/components/basic/spinner/public_api.d.ts +1 -0
  192. package/components/basic/tree/bundles/index.umd.js +34 -38
  193. package/components/basic/tree/esm2022/tree.component.mjs +31 -36
  194. package/components/basic/tree/fesm2022/index.mjs +32 -36
  195. package/components/basic/tree/fesm2022/index.mjs.map +1 -1
  196. package/components/basic/tree/package.json +0 -3
  197. package/components/basic/video/.npmignore +2 -0
  198. package/components/basic/video/bundles/index.umd.js +116 -0
  199. package/components/basic/video/esm2022/index.mjs +5 -0
  200. package/components/basic/video/esm2022/public_api.mjs +2 -0
  201. package/components/basic/video/esm2022/video.component.mjs +70 -0
  202. package/components/basic/video/esm2022/video.props.mjs +24 -0
  203. package/components/basic/video/fesm2022/index.mjs +99 -0
  204. package/components/basic/video/fesm2022/index.mjs.map +1 -0
  205. package/components/basic/video/index.d.ts +5 -0
  206. package/components/basic/video/package.json +20 -0
  207. package/components/basic/video/public_api.d.ts +1 -0
  208. package/components/chart/bundles/index.umd.js +22 -75
  209. package/components/chart/esm2022/chart.component.mjs +20 -74
  210. package/components/chart/fesm2022/index.mjs +21 -74
  211. package/components/chart/fesm2022/index.mjs.map +1 -1
  212. package/components/chart/package.json +0 -3
  213. package/components/containers/accordion/bundles/index.umd.js +45 -100
  214. package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +19 -70
  215. package/components/containers/accordion/esm2022/accordion.directive.mjs +24 -29
  216. package/components/containers/accordion/fesm2022/index.mjs +43 -98
  217. package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  218. package/components/containers/accordion/package.json +0 -3
  219. package/components/containers/layout-grid/bundles/index.umd.js +60 -60
  220. package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +23 -23
  221. package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +20 -20
  222. package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +20 -20
  223. package/components/containers/layout-grid/fesm2022/index.mjs +61 -61
  224. package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
  225. package/components/containers/layout-grid/package.json +0 -3
  226. package/components/containers/linear-layout/bundles/index.umd.js +38 -38
  227. package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +20 -20
  228. package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +20 -20
  229. package/components/containers/linear-layout/fesm2022/index.mjs +39 -39
  230. package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
  231. package/components/containers/linear-layout/package.json +0 -3
  232. package/components/containers/panel/bundles/index.umd.js +62 -223
  233. package/components/containers/panel/esm2022/panel.component.mjs +29 -190
  234. package/components/containers/panel/fesm2022/index.mjs +29 -190
  235. package/components/containers/panel/fesm2022/index.mjs.map +1 -1
  236. package/components/containers/panel/package.json +0 -3
  237. package/components/containers/tabs/bundles/index.umd.js +95 -204
  238. package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +34 -51
  239. package/components/containers/tabs/esm2022/tabs.component.mjs +29 -123
  240. package/components/containers/tabs/fesm2022/index.mjs +61 -170
  241. package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  242. package/components/containers/tabs/package.json +0 -3
  243. package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -4
  244. package/components/containers/tile/bundles/index.umd.js +19 -19
  245. package/components/containers/tile/esm2022/tile.directive.mjs +20 -20
  246. package/components/containers/tile/fesm2022/index.mjs +20 -20
  247. package/components/containers/tile/fesm2022/index.mjs.map +1 -1
  248. package/components/containers/tile/package.json +0 -3
  249. package/components/containers/wizard/bundles/index.umd.js +119 -302
  250. package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +21 -21
  251. package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +32 -45
  252. package/components/containers/wizard/esm2022/wizard.component.mjs +30 -201
  253. package/components/containers/wizard/fesm2022/index.mjs +81 -264
  254. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  255. package/components/containers/wizard/package.json +0 -3
  256. package/components/containers/wizard/wizard.component.d.ts +1 -1
  257. package/components/data/card/bundles/index.umd.js +108 -208
  258. package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +15 -15
  259. package/components/data/card/esm2022/card-content/card-content.component.mjs +19 -34
  260. package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +15 -15
  261. package/components/data/card/esm2022/card.component.mjs +21 -107
  262. package/components/data/card/fesm2022/index.mjs +67 -167
  263. package/components/data/card/fesm2022/index.mjs.map +1 -1
  264. package/components/data/card/package.json +0 -3
  265. package/components/data/form/bundles/index.umd.js +287 -467
  266. package/components/data/form/esm2022/form-action/form-action.directive.mjs +22 -22
  267. package/components/data/form/esm2022/form-field/form-field.directive.mjs +80 -91
  268. package/components/data/form/esm2022/form-widget.directive.mjs +31 -31
  269. package/components/data/form/esm2022/form.component.mjs +88 -251
  270. package/components/data/form/esm2022/form.props.mjs +1 -1
  271. package/components/data/form/esm2022/live-actions/dependson.directive.mjs +19 -24
  272. package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +15 -15
  273. package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +15 -15
  274. package/components/data/form/esm2022/live-form/live-form.directive.mjs +23 -25
  275. package/components/data/form/fesm2022/index.mjs +288 -468
  276. package/components/data/form/fesm2022/index.mjs.map +1 -1
  277. package/components/data/form/package.json +0 -3
  278. package/components/data/list/bundles/index.umd.js +80 -360
  279. package/components/data/list/esm2022/list-item.directive.mjs +27 -34
  280. package/components/data/list/esm2022/list.animator.mjs +1 -1
  281. package/components/data/list/esm2022/list.component.mjs +55 -330
  282. package/components/data/list/esm2022/list.props.mjs +1 -1
  283. package/components/data/list/fesm2022/index.mjs +79 -358
  284. package/components/data/list/fesm2022/index.mjs.map +1 -1
  285. package/components/data/list/list-item.directive.d.ts +3 -3
  286. package/components/data/list/list.component.d.ts +2 -4
  287. package/components/data/list/package.json +0 -3
  288. package/components/data/live-table/bundles/index.umd.js +28 -39
  289. package/components/data/live-table/esm2022/live-table.component.mjs +25 -37
  290. package/components/data/live-table/fesm2022/index.mjs +26 -37
  291. package/components/data/live-table/fesm2022/index.mjs.map +1 -1
  292. package/components/data/live-table/package.json +0 -3
  293. package/components/data/pagination/bundles/index.umd.js +33 -505
  294. package/components/data/pagination/esm2022/pagination.component.mjs +33 -507
  295. package/components/data/pagination/esm2022/pagination.props.mjs +1 -1
  296. package/components/data/pagination/fesm2022/index.mjs +32 -505
  297. package/components/data/pagination/fesm2022/index.mjs.map +1 -1
  298. package/components/data/pagination/package.json +0 -3
  299. package/components/data/pagination/pagination.component.d.ts +1 -1
  300. package/components/data/table/bundles/index.umd.js +310 -457
  301. package/components/data/table/esm2022/table-action/table-action.directive.mjs +22 -22
  302. package/components/data/table/esm2022/table-column/table-column.directive.mjs +50 -71
  303. package/components/data/table/esm2022/table-column/table-column.props.mjs +1 -1
  304. package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +26 -26
  305. package/components/data/table/esm2022/table-cud.directive.mjs +15 -15
  306. package/components/data/table/esm2022/table-filter.directive.mjs +16 -16
  307. package/components/data/table/esm2022/table-row/table-row.directive.mjs +24 -24
  308. package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +29 -29
  309. package/components/data/table/esm2022/table.component.mjs +135 -263
  310. package/components/data/table/esm2022/table.props.mjs +2 -1
  311. package/components/data/table/fesm2022/index.mjs +312 -459
  312. package/components/data/table/fesm2022/index.mjs.map +1 -1
  313. package/components/data/table/package.json +0 -3
  314. package/components/data/table/table-column/table-column.directive.d.ts +1 -1
  315. package/components/data/table/table.component.d.ts +3 -0
  316. package/components/dialogs/alert-dialog/bundles/index.umd.js +50 -79
  317. package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +32 -62
  318. package/components/dialogs/alert-dialog/fesm2022/index.mjs +32 -61
  319. package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  320. package/components/dialogs/alert-dialog/package.json +0 -3
  321. package/components/dialogs/confirm-dialog/bundles/index.umd.js +36 -72
  322. package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +34 -71
  323. package/components/dialogs/confirm-dialog/fesm2022/index.mjs +35 -71
  324. package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  325. package/components/dialogs/confirm-dialog/package.json +0 -3
  326. package/components/dialogs/default/bundles/index.umd.js +101 -245
  327. package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +4 -1
  328. package/components/dialogs/default/esm2022/base-dialog.mjs +14 -14
  329. package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -18
  330. package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +20 -20
  331. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +39 -181
  332. package/components/dialogs/default/fesm2022/index.mjs +85 -229
  333. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  334. package/components/dialogs/default/package.json +0 -3
  335. package/components/dialogs/design-dialog/bundles/index.umd.js +52 -108
  336. package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +50 -107
  337. package/components/dialogs/design-dialog/fesm2022/index.mjs +51 -107
  338. package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  339. package/components/dialogs/design-dialog/package.json +0 -3
  340. package/components/dialogs/iframe-dialog/bundles/index.umd.js +33 -81
  341. package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +32 -82
  342. package/components/dialogs/iframe-dialog/fesm2022/index.mjs +33 -82
  343. package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  344. package/components/dialogs/iframe-dialog/package.json +0 -3
  345. package/components/dialogs/login-dialog/bundles/index.umd.js +22 -29
  346. package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +23 -30
  347. package/components/dialogs/login-dialog/fesm2022/index.mjs +23 -30
  348. package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
  349. package/components/dialogs/login-dialog/package.json +0 -3
  350. package/components/dialogs/partial-dialog/bundles/index.umd.js +39 -85
  351. package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +38 -85
  352. package/components/dialogs/partial-dialog/fesm2022/index.mjs +39 -85
  353. package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  354. package/components/dialogs/partial-dialog/package.json +0 -3
  355. package/components/input/base-form/.npmignore +2 -0
  356. package/components/input/base-form/bundles/index.umd.js +133 -0
  357. package/components/input/base-form/esm2022/base-form.component.mjs +110 -0
  358. package/components/input/base-form/esm2022/index.mjs +5 -0
  359. package/components/input/base-form/esm2022/public_api.mjs +2 -0
  360. package/components/input/base-form/fesm2022/index.mjs +117 -0
  361. package/components/input/base-form/fesm2022/index.mjs.map +1 -0
  362. package/components/input/base-form/index.d.ts +5 -0
  363. package/components/input/base-form/package.json +20 -0
  364. package/components/input/base-form/public_api.d.ts +1 -0
  365. package/components/input/base-form-custom/.npmignore +2 -0
  366. package/components/input/{default → base-form-custom}/base-form-custom.component.d.ts +1 -1
  367. package/components/input/base-form-custom/bundles/index.umd.js +118 -0
  368. package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +94 -0
  369. package/components/input/base-form-custom/esm2022/index.mjs +5 -0
  370. package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
  371. package/components/input/base-form-custom/fesm2022/index.mjs +101 -0
  372. package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
  373. package/components/input/base-form-custom/index.d.ts +5 -0
  374. package/components/input/base-form-custom/package.json +20 -0
  375. package/components/input/base-form-custom/public_api.d.ts +1 -0
  376. package/components/input/button/.npmignore +2 -0
  377. package/components/input/button/bundles/index.umd.js +98 -0
  378. package/components/input/button/esm2022/button.component.mjs +50 -0
  379. package/components/input/button/esm2022/button.props.mjs +26 -0
  380. package/components/input/button/esm2022/index.mjs +5 -0
  381. package/components/input/button/esm2022/public_api.mjs +2 -0
  382. package/components/input/button/fesm2022/index.mjs +81 -0
  383. package/components/input/button/fesm2022/index.mjs.map +1 -0
  384. package/components/input/button/index.d.ts +5 -0
  385. package/components/input/button/package.json +20 -0
  386. package/components/input/button/public_api.d.ts +1 -0
  387. package/components/input/button-group/.npmignore +2 -0
  388. package/components/input/button-group/bundles/index.umd.js +80 -0
  389. package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
  390. package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
  391. package/components/input/button-group/esm2022/index.mjs +5 -0
  392. package/components/input/button-group/esm2022/public_api.mjs +2 -0
  393. package/components/input/button-group/fesm2022/index.mjs +62 -0
  394. package/components/input/button-group/fesm2022/index.mjs.map +1 -0
  395. package/components/input/button-group/index.d.ts +5 -0
  396. package/components/input/button-group/package.json +20 -0
  397. package/components/input/button-group/public_api.d.ts +1 -0
  398. package/components/input/calendar/bundles/index.umd.js +25 -38
  399. package/components/input/calendar/esm2022/calendar.component.mjs +22 -36
  400. package/components/input/calendar/fesm2022/index.mjs +23 -36
  401. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  402. package/components/input/calendar/package.json +0 -3
  403. package/components/input/caption-position/.npmignore +2 -0
  404. package/components/input/caption-position/bundles/index.umd.js +196 -0
  405. package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
  406. package/components/input/caption-position/esm2022/index.mjs +5 -0
  407. package/components/input/caption-position/esm2022/public_api.mjs +2 -0
  408. package/components/input/caption-position/fesm2022/index.mjs +178 -0
  409. package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
  410. package/components/input/caption-position/index.d.ts +5 -0
  411. package/components/input/caption-position/package.json +20 -0
  412. package/components/input/caption-position/public_api.d.ts +1 -0
  413. package/components/input/checkbox/.npmignore +2 -0
  414. package/components/input/checkbox/bundles/index.umd.js +190 -0
  415. package/components/input/{default/checkbox → checkbox}/checkbox.component.d.ts +1 -1
  416. package/components/input/checkbox/esm2022/checkbox.component.mjs +145 -0
  417. package/components/input/checkbox/esm2022/checkbox.props.mjs +27 -0
  418. package/components/{basic/progress → input/checkbox}/esm2022/index.mjs +1 -1
  419. package/components/input/checkbox/esm2022/public_api.mjs +2 -0
  420. package/components/input/checkbox/fesm2022/index.mjs +175 -0
  421. package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
  422. package/components/input/checkbox/index.d.ts +5 -0
  423. package/components/input/checkbox/package.json +20 -0
  424. package/components/input/checkbox/public_api.d.ts +1 -0
  425. package/components/input/checkboxset/.npmignore +2 -0
  426. package/components/input/checkboxset/bundles/index.umd.js +151 -0
  427. package/components/input/{default/checkboxset → checkboxset}/checkboxset.component.d.ts +1 -1
  428. package/components/input/checkboxset/esm2022/checkboxset.component.mjs +99 -0
  429. package/components/input/checkboxset/esm2022/checkboxset.props.mjs +35 -0
  430. package/components/input/checkboxset/esm2022/index.mjs +5 -0
  431. package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
  432. package/components/input/checkboxset/fesm2022/index.mjs +138 -0
  433. package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
  434. package/components/input/checkboxset/index.d.ts +5 -0
  435. package/components/input/checkboxset/package.json +20 -0
  436. package/components/input/checkboxset/public_api.d.ts +1 -0
  437. package/components/input/chips/bundles/index.umd.js +94 -153
  438. package/components/input/chips/chips.component.d.ts +1 -1
  439. package/components/input/chips/esm2022/chips.component.mjs +41 -101
  440. package/components/input/chips/fesm2022/index.mjs +42 -101
  441. package/components/input/chips/fesm2022/index.mjs.map +1 -1
  442. package/components/input/chips/package.json +0 -3
  443. package/components/input/color-picker/bundles/index.umd.js +35 -74
  444. package/components/input/color-picker/color-picker.component.d.ts +2 -2
  445. package/components/input/color-picker/esm2022/color-picker.component.mjs +34 -75
  446. package/components/input/color-picker/fesm2022/index.mjs +36 -75
  447. package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  448. package/components/input/color-picker/package.json +0 -3
  449. package/components/input/composite/.npmignore +2 -0
  450. package/components/input/composite/bundles/index.umd.js +111 -0
  451. package/components/input/composite/esm2022/composite.directive.mjs +79 -0
  452. package/components/input/composite/esm2022/composite.props.mjs +10 -0
  453. package/components/input/composite/esm2022/index.mjs +5 -0
  454. package/components/input/composite/esm2022/public_api.mjs +2 -0
  455. package/components/input/composite/fesm2022/index.mjs +94 -0
  456. package/components/input/composite/fesm2022/index.mjs.map +1 -0
  457. package/components/input/composite/index.d.ts +5 -0
  458. package/components/input/composite/package.json +20 -0
  459. package/components/input/composite/public_api.d.ts +1 -0
  460. package/components/input/currency/bundles/index.umd.js +31 -52
  461. package/components/input/currency/currency.component.d.ts +1 -1
  462. package/components/input/currency/esm2022/currency.component.mjs +28 -50
  463. package/components/input/currency/fesm2022/index.mjs +30 -51
  464. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  465. package/components/input/currency/package.json +0 -3
  466. package/components/input/dataset-aware-form/.npmignore +2 -0
  467. package/components/input/dataset-aware-form/bundles/index.umd.js +328 -0
  468. package/components/input/{default → dataset-aware-form}/dataset-aware-form.component.d.ts +1 -1
  469. package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +307 -0
  470. package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
  471. package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
  472. package/components/input/dataset-aware-form/fesm2022/index.mjs +314 -0
  473. package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
  474. package/components/input/dataset-aware-form/index.d.ts +5 -0
  475. package/components/input/dataset-aware-form/package.json +20 -0
  476. package/components/input/dataset-aware-form/public_api.d.ts +1 -0
  477. package/components/input/epoch/base-date-time/.npmignore +2 -0
  478. package/components/input/epoch/{base-date-time.component.d.ts → base-date-time/base-date-time.component.d.ts} +1 -1
  479. package/components/input/epoch/base-date-time/bundles/index.umd.js +1086 -0
  480. package/components/input/epoch/{esm2022 → base-date-time/esm2022}/base-date-time.component.mjs +22 -31
  481. package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
  482. package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
  483. package/components/input/epoch/base-date-time/fesm2022/index.mjs +1077 -0
  484. package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
  485. package/components/input/epoch/base-date-time/index.d.ts +5 -0
  486. package/components/input/epoch/base-date-time/package.json +20 -0
  487. package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
  488. package/components/input/epoch/date/.npmignore +2 -0
  489. package/components/input/epoch/date/bundles/index.umd.js +492 -0
  490. package/components/input/epoch/date/date.component.d.ts +2 -2
  491. package/components/input/epoch/date/esm2022/date.component.mjs +322 -0
  492. package/components/input/epoch/{esm2022/date → date/esm2022}/date.props.mjs +1 -1
  493. package/components/input/epoch/{esm2022/date → date/esm2022}/imaskUtil.mjs +1 -1
  494. package/components/input/epoch/date/esm2022/index.mjs +5 -0
  495. package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
  496. package/components/input/epoch/date/fesm2022/index.mjs +482 -0
  497. package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
  498. package/components/input/epoch/date/index.d.ts +5 -0
  499. package/components/input/epoch/date/package.json +20 -0
  500. package/components/input/epoch/date/public_api.d.ts +1 -0
  501. package/components/input/epoch/date-time/.npmignore +2 -0
  502. package/components/input/epoch/date-time/bundles/index.umd.js +518 -0
  503. package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
  504. package/components/input/epoch/date-time/esm2022/date-time.component.mjs +458 -0
  505. package/components/input/epoch/{esm2022/date-time → date-time/esm2022}/date-time.props.mjs +1 -1
  506. package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
  507. package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
  508. package/components/input/epoch/date-time/fesm2022/index.mjs +509 -0
  509. package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
  510. package/components/input/epoch/date-time/index.d.ts +5 -0
  511. package/components/input/epoch/date-time/package.json +20 -0
  512. package/components/input/epoch/date-time/public_api.d.ts +1 -0
  513. package/components/input/epoch/date-time-picker/.npmignore +2 -0
  514. package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
  515. package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
  516. package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
  517. package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
  518. package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
  519. package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
  520. package/components/input/epoch/date-time-picker/index.d.ts +5 -0
  521. package/components/input/epoch/date-time-picker/package.json +20 -0
  522. package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
  523. package/components/input/epoch/picker/.npmignore +2 -0
  524. package/components/input/epoch/picker/bundles/index.umd.js +192 -0
  525. package/components/input/epoch/picker/esm2022/index.mjs +5 -0
  526. package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
  527. package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
  528. package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
  529. package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
  530. package/components/input/epoch/picker/index.d.ts +5 -0
  531. package/components/input/epoch/picker/package.json +20 -0
  532. package/components/input/epoch/picker/public_api.d.ts +2 -0
  533. package/components/input/epoch/time/.npmignore +2 -0
  534. package/components/input/epoch/time/bundles/index.umd.js +397 -0
  535. package/components/input/epoch/time/esm2022/index.mjs +5 -0
  536. package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
  537. package/components/input/epoch/time/esm2022/time.component.mjs +348 -0
  538. package/components/input/epoch/{esm2022/time → time/esm2022}/time.props.mjs +1 -1
  539. package/components/input/epoch/time/fesm2022/index.mjs +387 -0
  540. package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
  541. package/components/input/epoch/time/index.d.ts +5 -0
  542. package/components/input/epoch/time/package.json +20 -0
  543. package/components/input/epoch/time/public_api.d.ts +1 -0
  544. package/components/input/epoch/time/time.component.d.ts +1 -1
  545. package/components/input/file-upload/bundles/index.umd.js +56 -348
  546. package/components/input/file-upload/esm2022/file-upload.component.mjs +20 -313
  547. package/components/input/file-upload/fesm2022/index.mjs +20 -312
  548. package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  549. package/components/input/file-upload/package.json +0 -3
  550. package/components/input/number/.npmignore +2 -0
  551. package/components/input/number/bundles/index.umd.js +101 -0
  552. package/components/input/number/esm2022/index.mjs +5 -0
  553. package/components/input/number/esm2022/number.component.mjs +49 -0
  554. package/components/input/number/esm2022/number.props.mjs +35 -0
  555. package/components/input/number/esm2022/public_api.mjs +2 -0
  556. package/components/input/number/fesm2022/index.mjs +87 -0
  557. package/components/input/number/fesm2022/index.mjs.map +1 -0
  558. package/components/input/number/index.d.ts +5 -0
  559. package/components/input/{default/number → number}/number.component.d.ts +1 -1
  560. package/components/input/number/package.json +20 -0
  561. package/components/input/number/public_api.d.ts +1 -0
  562. package/components/input/radioset/.npmignore +2 -0
  563. package/components/input/radioset/bundles/index.umd.js +136 -0
  564. package/components/input/radioset/esm2022/index.mjs +5 -0
  565. package/components/input/radioset/esm2022/public_api.mjs +2 -0
  566. package/components/input/radioset/esm2022/radioset.component.mjs +84 -0
  567. package/components/input/radioset/esm2022/radioset.props.mjs +35 -0
  568. package/components/input/radioset/fesm2022/index.mjs +123 -0
  569. package/components/input/radioset/fesm2022/index.mjs.map +1 -0
  570. package/components/input/radioset/index.d.ts +5 -0
  571. package/components/input/radioset/package.json +20 -0
  572. package/components/input/radioset/public_api.d.ts +1 -0
  573. package/components/input/{default/radioset → radioset}/radioset.component.d.ts +1 -1
  574. package/components/input/rating/bundles/index.umd.js +49 -103
  575. package/components/input/rating/esm2022/rating.component.mjs +24 -79
  576. package/components/input/rating/fesm2022/index.mjs +25 -79
  577. package/components/input/rating/fesm2022/index.mjs.map +1 -1
  578. package/components/input/rating/package.json +0 -3
  579. package/components/input/rating/rating.component.d.ts +1 -1
  580. package/components/input/select/.npmignore +2 -0
  581. package/components/input/select/bundles/index.umd.js +219 -0
  582. package/components/input/select/esm2022/index.mjs +5 -0
  583. package/components/input/select/esm2022/public_api.mjs +2 -0
  584. package/components/input/select/esm2022/select.component.mjs +166 -0
  585. package/components/input/select/esm2022/select.props.mjs +36 -0
  586. package/components/input/select/fesm2022/index.mjs +205 -0
  587. package/components/input/select/fesm2022/index.mjs.map +1 -0
  588. package/components/input/select/index.d.ts +5 -0
  589. package/components/input/select/package.json +20 -0
  590. package/components/input/select/public_api.d.ts +1 -0
  591. package/components/input/{default/select → select}/select.component.d.ts +1 -1
  592. package/components/input/slider/bundles/index.umd.js +44 -111
  593. package/components/input/slider/esm2022/slider.component.mjs +25 -95
  594. package/components/input/slider/esm2022/slider.props.mjs +1 -1
  595. package/components/input/slider/fesm2022/index.mjs +25 -93
  596. package/components/input/slider/fesm2022/index.mjs.map +1 -1
  597. package/components/input/slider/package.json +0 -3
  598. package/components/input/slider/slider.component.d.ts +2 -2
  599. package/components/input/switch/.npmignore +2 -0
  600. package/components/input/switch/bundles/index.umd.js +204 -0
  601. package/components/input/switch/esm2022/index.mjs +5 -0
  602. package/components/input/switch/esm2022/public_api.mjs +2 -0
  603. package/components/input/switch/esm2022/switch.component.mjs +159 -0
  604. package/components/input/switch/esm2022/switch.props.mjs +28 -0
  605. package/components/input/switch/fesm2022/index.mjs +191 -0
  606. package/components/input/switch/fesm2022/index.mjs.map +1 -0
  607. package/components/input/switch/index.d.ts +5 -0
  608. package/components/input/switch/package.json +20 -0
  609. package/components/input/switch/public_api.d.ts +1 -0
  610. package/components/input/{default/switch → switch}/switch.component.d.ts +1 -1
  611. package/components/input/text/.npmignore +2 -0
  612. package/components/input/{default/text/base → text/base-input}/base-input.d.ts +1 -1
  613. package/components/input/text/bundles/index.umd.js +1070 -0
  614. package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
  615. package/components/input/text/esm2022/index.mjs +5 -0
  616. package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +46 -0
  617. package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
  618. package/components/input/text/esm2022/input-color/input-color.component.mjs +46 -0
  619. package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
  620. package/components/input/text/esm2022/input-email/input-email.component.mjs +46 -0
  621. package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
  622. package/components/input/text/esm2022/input-number/input-number.component.mjs +56 -0
  623. package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
  624. package/components/input/text/esm2022/input-text/input-text.component.mjs +121 -0
  625. package/components/input/text/esm2022/input-text/input-text.props.mjs +46 -0
  626. package/components/input/text/esm2022/number-locale/number-locale.mjs +539 -0
  627. package/components/input/text/esm2022/public_api.mjs +8 -0
  628. package/components/input/text/fesm2022/index.mjs +1054 -0
  629. package/components/input/text/fesm2022/index.mjs.map +1 -0
  630. package/components/input/text/index.d.ts +5 -0
  631. package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.component.d.ts +1 -1
  632. package/components/input/{default/text/color → text/input-color}/input-color.component.d.ts +1 -1
  633. package/components/input/{default/text/email → text/input-email}/input-email.component.d.ts +1 -1
  634. package/components/input/{default/text/number → text/input-number}/input-number.component.d.ts +1 -1
  635. package/components/input/{default/text/text → text/input-text}/input-text.component.d.ts +1 -1
  636. package/components/input/{default/text/locale → text/number-locale}/number-locale.d.ts +1 -1
  637. package/components/input/text/package.json +20 -0
  638. package/components/input/text/public_api.d.ts +7 -0
  639. package/components/input/textarea/.npmignore +2 -0
  640. package/components/input/textarea/bundles/index.umd.js +101 -0
  641. package/components/input/textarea/esm2022/index.mjs +5 -0
  642. package/components/input/textarea/esm2022/public_api.mjs +2 -0
  643. package/components/input/textarea/esm2022/textarea.component.mjs +53 -0
  644. package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
  645. package/components/input/textarea/fesm2022/index.mjs +87 -0
  646. package/components/input/textarea/fesm2022/index.mjs.map +1 -0
  647. package/components/input/textarea/index.d.ts +5 -0
  648. package/components/input/textarea/package.json +20 -0
  649. package/components/input/textarea/public_api.d.ts +1 -0
  650. package/components/input/{default/textarea → textarea}/textarea.component.d.ts +1 -1
  651. package/components/navigation/breadcrumb/bundles/index.umd.js +37 -79
  652. package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +20 -64
  653. package/components/navigation/breadcrumb/fesm2022/index.mjs +21 -64
  654. package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  655. package/components/navigation/breadcrumb/package.json +0 -3
  656. package/components/navigation/menu/bundles/index.umd.js +247 -442
  657. package/components/navigation/menu/esm2022/menu-adapator.component.mjs +14 -19
  658. package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +13 -29
  659. package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +43 -100
  660. package/components/navigation/menu/esm2022/menu.component.mjs +53 -104
  661. package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +30 -37
  662. package/components/navigation/menu/esm2022/nav/nav.component.mjs +20 -88
  663. package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +14 -14
  664. package/components/navigation/menu/fesm2022/index.mjs +174 -369
  665. package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  666. package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +2 -3
  667. package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +3 -3
  668. package/components/navigation/menu/package.json +0 -3
  669. package/components/navigation/navbar/bundles/index.umd.js +32 -83
  670. package/components/navigation/navbar/esm2022/navbar.component.mjs +20 -72
  671. package/components/navigation/navbar/fesm2022/index.mjs +20 -71
  672. package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
  673. package/components/navigation/navbar/package.json +0 -3
  674. package/components/navigation/popover/bundles/index.umd.js +31 -59
  675. package/components/navigation/popover/esm2022/popover.component.mjs +29 -58
  676. package/components/navigation/popover/fesm2022/index.mjs +31 -59
  677. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  678. package/components/navigation/popover/package.json +0 -3
  679. package/components/page/default/bundles/index.umd.js +109 -123
  680. package/components/page/default/esm2022/content/content.component.mjs +16 -25
  681. package/components/page/default/esm2022/layout.directive.mjs +21 -21
  682. package/components/page/default/esm2022/page-content/page-content.component.mjs +16 -23
  683. package/components/page/default/esm2022/page.directive.mjs +21 -21
  684. package/components/page/default/esm2022/router-outlet.directive.mjs +20 -20
  685. package/components/page/default/esm2022/spa-page.directive.mjs +21 -21
  686. package/components/page/default/fesm2022/index.mjs +111 -125
  687. package/components/page/default/fesm2022/index.mjs.map +1 -1
  688. package/components/page/default/package.json +0 -3
  689. package/components/page/footer/bundles/index.umd.js +20 -20
  690. package/components/page/footer/esm2022/footer.directive.mjs +21 -21
  691. package/components/page/footer/fesm2022/index.mjs +21 -21
  692. package/components/page/footer/fesm2022/index.mjs.map +1 -1
  693. package/components/page/footer/package.json +0 -3
  694. package/components/page/header/bundles/index.umd.js +19 -26
  695. package/components/page/header/esm2022/header.component.mjs +16 -24
  696. package/components/page/header/fesm2022/index.mjs +17 -24
  697. package/components/page/header/fesm2022/index.mjs.map +1 -1
  698. package/components/page/header/package.json +0 -3
  699. package/components/page/left-panel/bundles/index.umd.js +30 -30
  700. package/components/page/left-panel/esm2022/left-panel.directive.mjs +31 -31
  701. package/components/page/left-panel/fesm2022/index.mjs +31 -31
  702. package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  703. package/components/page/left-panel/package.json +0 -3
  704. package/components/page/right-panel/bundles/index.umd.js +23 -23
  705. package/components/page/right-panel/esm2022/right-panel.directive.mjs +24 -24
  706. package/components/page/right-panel/fesm2022/index.mjs +24 -24
  707. package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  708. package/components/page/right-panel/package.json +0 -3
  709. package/components/page/top-nav/bundles/index.umd.js +20 -20
  710. package/components/page/top-nav/esm2022/top-nav.directive.mjs +21 -21
  711. package/components/page/top-nav/fesm2022/index.mjs +21 -21
  712. package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  713. package/components/page/top-nav/package.json +0 -3
  714. package/components/prefab/bundles/index.umd.js +41 -41
  715. package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +20 -20
  716. package/components/prefab/esm2022/prefab.directive.mjs +23 -23
  717. package/components/prefab/fesm2022/index.mjs +42 -42
  718. package/components/prefab/fesm2022/index.mjs.map +1 -1
  719. package/components/prefab/package.json +0 -3
  720. package/core/bundles/index.umd.js +80 -61
  721. package/core/esm2022/services/constant.service.mjs +7 -7
  722. package/core/esm2022/services/custom-icons-loader.service.mjs +7 -7
  723. package/core/esm2022/services/field-type.service.mjs +7 -7
  724. package/core/esm2022/services/field-widget.service.mjs +7 -7
  725. package/core/esm2022/services/pagination.service.mjs +7 -7
  726. package/core/esm2022/services/script-loader.service.mjs +7 -7
  727. package/core/esm2022/services/state-persistence.service.mjs +7 -7
  728. package/core/esm2022/services/user-custom-pipe-manager.service.mjs +7 -7
  729. package/core/esm2022/services/utils.service.mjs +7 -7
  730. package/core/esm2022/services/viewport.service.mjs +7 -7
  731. package/core/esm2022/types/types.mjs +1 -1
  732. package/core/esm2022/utils/build-utils.mjs +21 -2
  733. package/core/fesm2022/index.mjs +80 -61
  734. package/core/fesm2022/index.mjs.map +1 -1
  735. package/core/package.json +3 -6
  736. package/core/types/types.d.ts +3 -1
  737. package/http/bundles/index.umd.js +8 -8
  738. package/http/esm2022/http.service.mjs +9 -9
  739. package/http/fesm2022/index.mjs +8 -8
  740. package/http/fesm2022/index.mjs.map +1 -1
  741. package/http/package.json +2 -5
  742. package/locales/moment/ar-dz.js +8 -8
  743. package/locales/moment/ar-ly.js +8 -8
  744. package/locales/moment/ar-ps.js +123 -0
  745. package/locales/moment/ar.js +8 -8
  746. package/locales/moment/be.js +2 -2
  747. package/locales/moment/bs.js +14 -4
  748. package/locales/moment/ca.js +6 -6
  749. package/locales/moment/cs.js +5 -4
  750. package/locales/moment/cv.js +2 -2
  751. package/locales/moment/en-au.js +6 -6
  752. package/locales/moment/en-ca.js +6 -6
  753. package/locales/moment/en-gb.js +6 -6
  754. package/locales/moment/en-ie.js +6 -6
  755. package/locales/moment/en-il.js +6 -6
  756. package/locales/moment/en-in.js +6 -6
  757. package/locales/moment/en-nz.js +6 -6
  758. package/locales/moment/en-sg.js +6 -6
  759. package/locales/moment/it.js +4 -4
  760. package/locales/moment/ku-kmr.js +125 -0
  761. package/locales/moment/lt.js +2 -2
  762. package/locales/moment/me.js +2 -2
  763. package/locales/moment/nb.js +4 -4
  764. package/locales/moment/nl-be.js +1 -1
  765. package/locales/moment/nl.js +1 -1
  766. package/locales/moment/oc-lnc.js +6 -6
  767. package/locales/moment/ru.js +2 -2
  768. package/locales/moment/sv.js +6 -6
  769. package/locales/moment/tet.js +6 -6
  770. package/locales/moment/tlh.js +8 -8
  771. package/locales/moment/tzl.js +2 -2
  772. package/locales/moment/uk.js +4 -4
  773. package/locales/moment/x-pseudo.js +6 -6
  774. package/locales/moment-timezone/moment-timezone-with-data.js +2 -2
  775. package/npm-shrinkwrap.json +2 -2
  776. package/oAuth/bundles/index.umd.js +5 -5
  777. package/oAuth/esm2022/oAuth.service.mjs +6 -6
  778. package/oAuth/fesm2022/index.mjs +5 -5
  779. package/oAuth/fesm2022/index.mjs.map +1 -1
  780. package/oAuth/package.json +2 -5
  781. package/package-lock.json +2 -2
  782. package/package.json +1 -1
  783. package/runtime/base/bundles/index.umd.js +3163 -3100
  784. package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -0
  785. package/runtime/base/esm2022/components/app-component/app.component.mjs +14 -95
  786. package/runtime/base/esm2022/components/app-spinner.component.mjs +34 -45
  787. package/runtime/base/esm2022/components/base-custom-widget.component.mjs +8 -7
  788. package/runtime/base/esm2022/components/base-layout.component.mjs +14 -21
  789. package/runtime/base/esm2022/components/base-page.component.mjs +12 -19
  790. package/runtime/base/esm2022/components/base-partial.component.mjs +9 -14
  791. package/runtime/base/esm2022/components/base-prefab.component.mjs +9 -14
  792. package/runtime/base/esm2022/components/base-spa-page.component.mjs +12 -19
  793. package/runtime/base/esm2022/components/custom-toaster.component.mjs +30 -52
  794. package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +33 -15
  795. package/runtime/base/esm2022/components/prefab-preview.component.mjs +19 -26
  796. package/runtime/base/esm2022/directives/accessroles.directive.mjs +17 -17
  797. package/runtime/base/esm2022/directives/prefab.directive.mjs +15 -15
  798. package/runtime/base/esm2022/guards/auth.guard.mjs +6 -6
  799. package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +11 -11
  800. package/runtime/base/esm2022/guards/page-not-found.guard.mjs +6 -6
  801. package/runtime/base/esm2022/guards/role.guard.mjs +6 -6
  802. package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +12 -12
  803. package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +14 -14
  804. package/runtime/base/esm2022/public_api.mjs +5 -2
  805. package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
  806. package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +6 -6
  807. package/runtime/base/esm2022/resolves/app-js.resolve.mjs +6 -6
  808. package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +9 -9
  809. package/runtime/base/esm2022/resolves/i18n.resolve.mjs +6 -6
  810. package/runtime/base/esm2022/resolves/metadata.resolve.mjs +9 -9
  811. package/runtime/base/esm2022/resolves/security-config.resolve.mjs +9 -9
  812. package/runtime/base/esm2022/runtime-base.module.mjs +457 -316
  813. package/runtime/base/esm2022/services/app-defaults.service.mjs +6 -6
  814. package/runtime/base/esm2022/services/app.manager.service.mjs +25 -9
  815. package/runtime/base/esm2022/services/app.service.mjs +40 -18
  816. package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +6 -6
  817. package/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -6
  818. package/runtime/base/esm2022/services/i18n.service.mjs +37 -34
  819. package/runtime/base/esm2022/services/navigation.service.mjs +6 -6
  820. package/runtime/base/esm2022/services/pipe-provider.service.mjs +13 -13
  821. package/runtime/base/esm2022/services/pipe.service.mjs +10 -8
  822. package/runtime/base/esm2022/services/prefab-manager.service.mjs +6 -6
  823. package/runtime/base/esm2022/services/spinner.service.mjs +6 -6
  824. package/runtime/base/esm2022/services/toaster.service.mjs +6 -6
  825. package/runtime/base/esm2022/util/fragment-monitor.mjs +6 -6
  826. package/runtime/base/esm2022/util/utils.mjs +15 -1
  827. package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +1 -1
  828. package/runtime/base/fesm2022/index.mjs +3146 -3071
  829. package/runtime/base/fesm2022/index.mjs.map +1 -1
  830. package/runtime/base/package.json +2 -5
  831. package/runtime/base/public_api.d.ts +4 -1
  832. package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
  833. package/runtime/base/runtime-base.module.d.ts +96 -59
  834. package/runtime/base/services/app.manager.service.d.ts +2 -1
  835. package/runtime/base/services/app.service.d.ts +4 -2
  836. package/runtime/base/services/i18n.service.d.ts +2 -1
  837. package/runtime/base/util/utils.d.ts +2 -1
  838. package/runtime/dynamic/app/app.config.d.ts +1 -1
  839. package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +3 -1
  840. package/runtime/dynamic/bundles/index.umd.js +145 -114
  841. package/runtime/dynamic/esm2022/app/app.config.mjs +11 -10
  842. package/runtime/dynamic/esm2022/app/app.module.mjs +35 -5
  843. package/runtime/dynamic/esm2022/app/app.routes.mjs +2 -11
  844. package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +11 -16
  845. package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +9 -9
  846. package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +9 -9
  847. package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +6 -6
  848. package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +15 -11
  849. package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +57 -8
  850. package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +6 -6
  851. package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +6 -6
  852. package/runtime/dynamic/fesm2022/index.mjs +143 -88
  853. package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  854. package/runtime/dynamic/package.json +2 -5
  855. package/scripts/datatable/datatable.js +26 -5
  856. package/scripts/jquery-ui/ui/widgets/droppable.js +3 -3
  857. package/scripts/jquery-ui/ui/widgets/resizable.js +72 -19
  858. package/scripts/jquery-ui/ui/widgets/sortable.js +9 -16
  859. package/security/bundles/index.umd.js +5 -5
  860. package/security/esm2022/security.service.mjs +6 -6
  861. package/security/fesm2022/index.mjs +5 -5
  862. package/security/fesm2022/index.mjs.map +1 -1
  863. package/security/package.json +2 -5
  864. package/swipey/fesm2022/index.mjs.map +1 -1
  865. package/swipey/package.json +2 -5
  866. package/transpiler/build.d.ts +1 -1
  867. package/transpiler/bundles/index.umd.js +94 -56
  868. package/transpiler/esm2022/build.mjs +5 -2
  869. package/transpiler/esm2022/imports.mjs +92 -57
  870. package/transpiler/fesm2022/index.mjs +94 -56
  871. package/transpiler/fesm2022/index.mjs.map +1 -1
  872. package/transpiler/package.json +3 -6
  873. package/variables/bundles/index.umd.js +20 -10
  874. package/variables/constants/variables.constants.d.ts +9 -0
  875. package/variables/esm2022/constants/variables.constants.mjs +10 -1
  876. package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -6
  877. package/variables/esm2022/service/variables.service.mjs +6 -6
  878. package/variables/fesm2022/index.mjs +20 -11
  879. package/variables/fesm2022/index.mjs.map +1 -1
  880. package/variables/package.json +2 -5
  881. package/variables/service/variables.service.d.ts +1 -1
  882. package/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -15
  883. package/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -10
  884. package/build-task/esm2022/basic/default/html/html.build.mjs +0 -15
  885. package/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -10
  886. package/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -10
  887. package/build-task/esm2022/basic/default/label/label.build.mjs +0 -25
  888. package/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -14
  889. package/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -15
  890. package/build-task/esm2022/basic/default/video/video.build.mjs +0 -10
  891. package/components/base/components.module.d.ts +0 -25
  892. package/components/base/esm2022/components.module.mjs +0 -152
  893. package/components/basic/default/bundles/index.umd.js +0 -1036
  894. package/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -198
  895. package/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -27
  896. package/components/basic/default/esm2022/audio/audio.component.mjs +0 -59
  897. package/components/basic/default/esm2022/audio/audio.props.mjs +0 -19
  898. package/components/basic/default/esm2022/html/html.directive.mjs +0 -76
  899. package/components/basic/default/esm2022/html/html.props.mjs +0 -12
  900. package/components/basic/default/esm2022/icon/icon.component.mjs +0 -70
  901. package/components/basic/default/esm2022/icon/icon.props.mjs +0 -19
  902. package/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -85
  903. package/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -15
  904. package/components/basic/default/esm2022/label/label.directive.mjs +0 -71
  905. package/components/basic/default/esm2022/label/label.props.mjs +0 -17
  906. package/components/basic/default/esm2022/picture/picture.directive.mjs +0 -95
  907. package/components/basic/default/esm2022/picture/picture.props.mjs +0 -23
  908. package/components/basic/default/esm2022/public_api.mjs +0 -10
  909. package/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -130
  910. package/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -20
  911. package/components/basic/default/esm2022/video/video.component.mjs +0 -113
  912. package/components/basic/default/esm2022/video/video.props.mjs +0 -24
  913. package/components/basic/default/fesm2022/index.mjs +0 -1012
  914. package/components/basic/default/fesm2022/index.mjs.map +0 -1
  915. package/components/basic/default/public_api.d.ts +0 -9
  916. package/components/basic/progress/bundles/index.umd.js +0 -361
  917. package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -154
  918. package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -132
  919. package/components/basic/progress/esm2022/public_api.mjs +0 -3
  920. package/components/basic/progress/esm2022/utils.mjs +0 -25
  921. package/components/basic/progress/fesm2022/index.mjs +0 -344
  922. package/components/basic/progress/fesm2022/index.mjs.map +0 -1
  923. package/components/basic/progress/public_api.d.ts +0 -2
  924. package/components/input/default/bundles/index.umd.js +0 -3559
  925. package/components/input/default/esm2022/base-form-custom.component.mjs +0 -94
  926. package/components/input/default/esm2022/base-form.component.mjs +0 -110
  927. package/components/input/default/esm2022/button/button.component.mjs +0 -106
  928. package/components/input/default/esm2022/button/button.props.mjs +0 -26
  929. package/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -51
  930. package/components/input/default/esm2022/button-group/button-group.props.mjs +0 -10
  931. package/components/input/default/esm2022/caption-position.directive.mjs +0 -172
  932. package/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -179
  933. package/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -27
  934. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -268
  935. package/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -35
  936. package/components/input/default/esm2022/composite/composite.directive.mjs +0 -84
  937. package/components/input/default/esm2022/composite/composite.props.mjs +0 -10
  938. package/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -307
  939. package/components/input/default/esm2022/number/number.component.mjs +0 -68
  940. package/components/input/default/esm2022/number/number.props.mjs +0 -35
  941. package/components/input/default/esm2022/public_api.mjs +0 -21
  942. package/components/input/default/esm2022/radioset/radioset.component.mjs +0 -251
  943. package/components/input/default/esm2022/radioset/radioset.props.mjs +0 -35
  944. package/components/input/default/esm2022/select/select.component.mjs +0 -230
  945. package/components/input/default/esm2022/select/select.props.mjs +0 -36
  946. package/components/input/default/esm2022/switch/switch.component.mjs +0 -227
  947. package/components/input/default/esm2022/switch/switch.props.mjs +0 -28
  948. package/components/input/default/esm2022/text/base/base-input.mjs +0 -93
  949. package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -69
  950. package/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -30
  951. package/components/input/default/esm2022/text/color/input-color.component.mjs +0 -69
  952. package/components/input/default/esm2022/text/color/input-color.props.mjs +0 -27
  953. package/components/input/default/esm2022/text/email/input-email.component.mjs +0 -68
  954. package/components/input/default/esm2022/text/email/input-email.props.mjs +0 -29
  955. package/components/input/default/esm2022/text/locale/number-locale.mjs +0 -539
  956. package/components/input/default/esm2022/text/number/input-number.component.mjs +0 -79
  957. package/components/input/default/esm2022/text/number/input-number.props.mjs +0 -32
  958. package/components/input/default/esm2022/text/text/input-text.component.mjs +0 -145
  959. package/components/input/default/esm2022/text/text/input-text.props.mjs +0 -46
  960. package/components/input/default/esm2022/textarea/textarea.component.mjs +0 -85
  961. package/components/input/default/esm2022/textarea/textarea.props.mjs +0 -30
  962. package/components/input/default/fesm2022/index.mjs +0 -3529
  963. package/components/input/default/fesm2022/index.mjs.map +0 -1
  964. package/components/input/default/public_api.d.ts +0 -20
  965. package/components/input/epoch/bundles/index.umd.js +0 -3292
  966. package/components/input/epoch/esm2022/date/date.component.mjs +0 -376
  967. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -473
  968. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -563
  969. package/components/input/epoch/esm2022/picker/picker.component.mjs +0 -184
  970. package/components/input/epoch/esm2022/public_api.mjs +0 -6
  971. package/components/input/epoch/esm2022/time/time.component.mjs +0 -432
  972. package/components/input/epoch/fesm2022/index.mjs +0 -3280
  973. package/components/input/epoch/fesm2022/index.mjs.map +0 -1
  974. package/components/input/epoch/public_api.d.ts +0 -5
  975. /package/build-task/basic/{default/anchor → anchor}/anchor.build.d.ts +0 -0
  976. /package/build-task/basic/{default/audio → audio}/audio.build.d.ts +0 -0
  977. /package/build-task/basic/{default/html → html}/html.build.d.ts +0 -0
  978. /package/build-task/basic/{default/icon → icon}/icon.build.d.ts +0 -0
  979. /package/build-task/basic/{default/iframe → iframe}/iframe.build.d.ts +0 -0
  980. /package/build-task/basic/{default/label → label}/label.build.d.ts +0 -0
  981. /package/build-task/basic/{default/picture → picture}/picture.build.d.ts +0 -0
  982. /package/build-task/basic/{default/spinner → spinner}/spinner.build.d.ts +0 -0
  983. /package/build-task/basic/{default/video → video}/video.build.d.ts +0 -0
  984. /package/components/basic/{default → anchor}/.npmignore +0 -0
  985. /package/components/basic/{default/anchor → anchor}/anchor.component.d.ts +0 -0
  986. /package/components/basic/{default/anchor → anchor}/anchor.props.d.ts +0 -0
  987. /package/components/basic/{progress → audio}/.npmignore +0 -0
  988. /package/components/basic/{default/audio → audio}/audio.component.d.ts +0 -0
  989. /package/components/basic/{default/audio → audio}/audio.props.d.ts +0 -0
  990. /package/components/{input/default → basic/html}/.npmignore +0 -0
  991. /package/components/basic/{default/html → html}/html.directive.d.ts +0 -0
  992. /package/components/basic/{default/html → html}/html.props.d.ts +0 -0
  993. /package/components/{input/epoch → basic/icon}/.npmignore +0 -0
  994. /package/components/basic/{default/icon → icon}/icon.component.d.ts +0 -0
  995. /package/components/basic/{default/icon → icon}/icon.props.d.ts +0 -0
  996. /package/components/basic/{default/iframe → iframe}/iframe.component.d.ts +0 -0
  997. /package/components/basic/{default/iframe → iframe}/iframe.props.d.ts +0 -0
  998. /package/components/basic/{default/label → label}/label.props.d.ts +0 -0
  999. /package/components/basic/{default/picture → picture}/picture.directive.d.ts +0 -0
  1000. /package/components/basic/{default/picture → picture}/picture.props.d.ts +0 -0
  1001. /package/components/basic/progress/{utils.d.ts → progress-utils/progress-utils.d.ts} +0 -0
  1002. /package/components/basic/{default/spinner → spinner}/spinner.component.d.ts +0 -0
  1003. /package/components/basic/{default/spinner → spinner}/spinner.props.d.ts +0 -0
  1004. /package/components/basic/{default/video → video}/video.component.d.ts +0 -0
  1005. /package/components/basic/{default/video → video}/video.props.d.ts +0 -0
  1006. /package/components/input/{default → base-form}/base-form.component.d.ts +0 -0
  1007. /package/components/input/{default/button → button}/button.component.d.ts +0 -0
  1008. /package/components/input/{default/button → button}/button.props.d.ts +0 -0
  1009. /package/components/input/{default/button-group → button-group}/button-group.directive.d.ts +0 -0
  1010. /package/components/input/{default/button-group → button-group}/button-group.props.d.ts +0 -0
  1011. /package/components/input/{default → caption-position}/caption-position.directive.d.ts +0 -0
  1012. /package/components/input/{default/checkbox → checkbox}/checkbox.props.d.ts +0 -0
  1013. /package/components/input/{default/checkboxset → checkboxset}/checkboxset.props.d.ts +0 -0
  1014. /package/components/input/{default/composite → composite}/composite.directive.d.ts +0 -0
  1015. /package/components/input/{default/composite → composite}/composite.props.d.ts +0 -0
  1016. /package/components/input/epoch/{date-time → date-time-picker}/date-time-picker.component.d.ts +0 -0
  1017. /package/components/input/{default/number → number}/number.props.d.ts +0 -0
  1018. /package/components/input/{default/radioset → radioset}/radioset.props.d.ts +0 -0
  1019. /package/components/input/{default/select → select}/select.props.d.ts +0 -0
  1020. /package/components/input/{default/switch → switch}/switch.props.d.ts +0 -0
  1021. /package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.props.d.ts +0 -0
  1022. /package/components/input/{default/text/color → text/input-color}/input-color.props.d.ts +0 -0
  1023. /package/components/input/{default/text/email → text/input-email}/input-email.props.d.ts +0 -0
  1024. /package/components/input/{default/text/number → text/input-number}/input-number.props.d.ts +0 -0
  1025. /package/components/input/{default/text/text → text/input-text}/input-text.props.d.ts +0 -0
  1026. /package/components/input/{default/textarea → textarea}/textarea.props.d.ts +0 -0
@@ -1,6 +1,6 @@
1
- import { Inject, Pipe } from '@angular/core';
1
+ import { inject, Inject, Pipe } from '@angular/core';
2
2
  import { DatePipe, DecimalPipe } from '@angular/common';
3
- import { AbstractI18nService, CURRENCY_INFO, CustomPipeManager, hasOffsetStr, isDefined, replace } from '@wm/core';
3
+ import { AbstractI18nService, App, CURRENCY_INFO, CustomPipeManager, hasOffsetStr, isDefined, replace } from '@wm/core';
4
4
  import { WmPipe } from "./wm-pipe";
5
5
  import { filter, includes, isDate, isFunction, isObject, isUndefined, startsWith } from "lodash-es";
6
6
  import * as momentLib from 'moment-timezone/moment-timezone';
@@ -39,12 +39,12 @@ export class TrailingZeroDecimalPipe {
39
39
  }], () => [{ type: i1.DecimalPipe }], null); })();
40
40
  export class ToDatePipe extends WmPipe {
41
41
  // This method calls the custom formatter fn after applying the exisitng date pattern
42
- returnFn(data, args) {
42
+ returnFn(data, args, variables) {
43
43
  if (this.isCustomPipe) {
44
44
  if (args) {
45
45
  args[0] = data;
46
46
  }
47
- return this.customFormatter(data, args);
47
+ return this.customFormatter(data, args, variables);
48
48
  }
49
49
  return data;
50
50
  }
@@ -52,18 +52,18 @@ export class ToDatePipe extends WmPipe {
52
52
  let timestamp;
53
53
  // 'null' is to be treated as a special case, If user wants to enter null value, empty string will be passed to the backend
54
54
  if (data === 'null' || data === '') {
55
- return this.returnFn('', arguments);
55
+ return this.returnFn('', arguments, this.app.Variables);
56
56
  }
57
57
  if (!isDefined(data)) {
58
- return this.returnFn('', arguments);
58
+ return this.returnFn('', arguments, this.app.Variables);
59
59
  }
60
60
  timestamp = getEpochValue(data);
61
61
  if (timestamp) {
62
62
  if (format === 'timestamp') {
63
- return this.returnFn(timestamp, arguments);
63
+ return this.returnFn(timestamp, arguments, this.app.Variables);
64
64
  }
65
65
  if (format === 'UTC') {
66
- return this.returnFn(new Date(timestamp).toISOString(), arguments);
66
+ return this.returnFn(new Date(timestamp).toISOString(), arguments, this.app.Variables);
67
67
  }
68
68
  let formattedVal;
69
69
  const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
@@ -73,15 +73,16 @@ export class ToDatePipe extends WmPipe {
73
73
  else {
74
74
  formattedVal = this.datePipe.transform(timestamp, format);
75
75
  }
76
- return this.returnFn(formattedVal, arguments);
76
+ return this.returnFn(formattedVal, arguments, this.app.Variables);
77
77
  }
78
- return this.returnFn('', arguments);
78
+ return this.returnFn('', arguments, this.app.Variables);
79
79
  }
80
80
  constructor(datePipe, i18nService, customPipeManager) {
81
81
  super('toDate', customPipeManager);
82
82
  this.datePipe = datePipe;
83
83
  this.i18nService = i18nService;
84
84
  this.customPipeManager = customPipeManager;
85
+ this.app = inject(App);
85
86
  }
86
87
  static { this.ɵfac = function ToDatePipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ToDatePipe)(i0.ɵɵdirectiveInject(i1.DatePipe, 16), i0.ɵɵdirectiveInject(i2.AbstractI18nService, 16), i0.ɵɵdirectiveInject(i2.CustomPipeManager, 16)); }; }
87
88
  static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "toDate", type: ToDatePipe, pure: true, standalone: true }); }
@@ -182,6 +183,7 @@ export class SuffixPipe {
182
183
  export class CustomPipe {
183
184
  constructor(custmeUserPipe) {
184
185
  this.custmeUserPipe = custmeUserPipe;
186
+ this.app = inject(App);
185
187
  }
186
188
  transform(data, pipename) {
187
189
  let argumentArr = [];
@@ -194,7 +196,7 @@ export class CustomPipe {
194
196
  return data;
195
197
  }
196
198
  try {
197
- return pipeRef.formatter(data, ...argumentArr);
199
+ return pipeRef.formatter(data, ...argumentArr, this.app.Variables);
198
200
  }
199
201
  catch (error) {
200
202
  console.error('Pipe name: ' + pipename, error);
@@ -468,4 +470,4 @@ export class FileExtensionFromMimePipe {
468
470
  name: 'fileExtensionFromMime'
469
471
  }]
470
472
  }], null, null); })();
471
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFbEcsT0FBTyxLQUFLLFNBQVMsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUM3RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVyRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsRUFBRTtJQUN6QixJQUFJLEtBQUssQ0FBQztJQUNWLG9HQUFvRztJQUNwRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELHdGQUF3RjtJQUN4RixLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUks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LE1BQU07WUFDL0IsV0FBVyxFQUFFLE1BQU07WUFDbkIsWUFBWSxFQUFFLE9BQU87WUFDckIsWUFBWSxFQUFFLE9BQU87WUFDckIsWUFBWSxFQUFFLE9BQU87WUFDckIsV0FBVyxFQUFFLE9BQU87WUFDcEIsWUFBWSxFQUFFLFFBQVE7WUFDdEIsdUJBQXVCLEVBQUUsUUFBUTtZQUNqQywwQkFBMEIsRUFBRSxNQUFNO1lBQ2xDLG1FQUFtRSxFQUFFLE9BQU87WUFDNUUsaUJBQWlCLEVBQUUsTUFBTTtZQUN6QixpQ0FBaUMsRUFBRSxNQUFNO1lBQ3pDLGlCQUFpQixFQUFFLE1BQU07WUFDekIsWUFBWSxFQUFFLE1BQU07WUFDcEIsWUFBWSxFQUFFLE1BQU07WUFDcEIsYUFBYSxFQUFFLE1BQU07WUFDckIsYUFBYSxFQUFFLE1BQU07WUFDckIsNkJBQTZCLEVBQUUsS0FBSztTQUN2QyxDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzswSEExRVEseUJBQXlCOytGQUF6Qix5QkFBeUI7O2lGQUF6Qix5QkFBeUI7Y0FKckMsSUFBSTtlQUFDO2dCQUNGLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixJQUFJLEVBQUUsdUJBQXVCO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlUGlwZSwgRGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Fic3RyYWN0STE4blNlcnZpY2UsIENVUlJFTkNZX0lORk8sIEN1c3RvbVBpcGVNYW5hZ2VyLCBoYXNPZmZzZXRTdHIsIGlzRGVmaW5lZCwgcmVwbGFjZX0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtXbVBpcGV9IGZyb20gXCIuL3dtLXBpcGVcIjtcbmltcG9ydCB7ZmlsdGVyLCBpbmNsdWRlcywgaXNEYXRlLCBpc0Z1bmN0aW9uLCBpc09iamVjdCwgaXNVbmRlZmluZWQsIHN0YXJ0c1dpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuaW1wb3J0ICogYXMgbW9tZW50TGliIGZyb20gJ21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50TGliLmRlZmF1bHQgfHwgd2luZG93Wydtb21lbnQnXTtcblxuY29uc3QgZ2V0RXBvY2hWYWx1ZSA9IGRhdGEgPT4ge1xuICAgIGxldCBlcG9jaDtcbiAgICAvLyBGb3IgZGF0YSBpbiBmb3JtIG9mIHN0cmluZyBudW1iZXIgKCcxMjMnKSwgY29udmVydCB0byBudW1iZXIgKDEyMykuIEFuZCBkb24ndCBwYXJzZSBkYXRlIG9iamVjdHMuXG4gICAgaWYgKCFpc0RhdGUoZGF0YSkgJiYgIWlzTmFOKGRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBwYXJzZUludChkYXRhLCAxMCk7XG4gICAgfVxuICAgIC8vIGdldCB0aGUgdGltZXN0YW1wIHZhbHVlLiBJZiBkYXRhIGlzIHRpbWUgc3RyaW5nLCBhcHBlbmQgZGF0ZSBzdHJpbmcgdG8gdGhlIHRpbWUgdmFsdWVcbiAgICBlcG9jaCA9IG1vbWVudChkYXRhKS52YWx1ZU9mKCkgfHwgbW9tZW50KG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkgKyAnICcgKyBkYXRhKS52YWx1ZU9mKCk7XG4gICAgcmV0dXJuIGVwb2NoO1xufTtcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RyYWlsaW5nWmVyb0RlY2ltYWxQaXBlJ1xufSlcbmV4cG9ydCBjbGFzcyBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBzZWxlY3RlZExvY2FsZTogc3RyaW5nLCBudW1iZXJmaWx0ZXI6IHN0cmluZywgbG9jYWxlZmlsdGVyOiBhbnksIHRyYWlsaW5nemVybzogYm9vbGVhbiwgZGVjaW1hbFZhbHVlOiBzdHJpbmcsIHNraXBUcmFpbGluZ1plcm9DaGVjaz86IGJvb2xlYW4sIGZvcm1hdHRlZExvY2FsZT8pOiBhbnkge1xuICAgICAgICBudW1iZXJmaWx0ZXIgPSB0cmFpbGluZ3plcm8gJiYgIXNraXBUcmFpbGluZ1plcm9DaGVjayA/IGAxLiR7ZGVjaW1hbFZhbHVlLmxlbmd0aH0tMTZgOiBudW1iZXJmaWx0ZXI7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IGZvcm1hdHRlZExvY2FsZSA/IGZvcm1hdHRlZExvY2FsZVsnbnVtYmVyJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgbnVtYmVyZmlsdGVyLCBsb2NhbGVmaWx0ZXIgfHwgbG9jYWxlIHx8IHNlbGVjdGVkTG9jYWxlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSkgeyB9XG5cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RvRGF0ZSdcbn0pXG5leHBvcnQgY2xhc3MgVG9EYXRlUGlwZSBleHRlbmRzIFdtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8vIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBjdXN0b20gZm9ybWF0dGVyIGZuIGFmdGVyIGFwcGx5aW5nIHRoZSBleGlzaXRuZyBkYXRlIHBhdHRlcm5cbiAgICByZXR1cm5GbihkYXRhLCBhcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tUGlwZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBhcmdzWzBdID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUZvcm1hdHRlcihkYXRhLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKGRhdGE6IGFueSwgZm9ybWF0OiBhbnksIHRpbWV6b25lPywgY29tcEluc3RhbmNlPykge1xuICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICAvLyAnbnVsbCcgaXMgdG8gYmUgdHJlYXRlZCBhcyBhIHNwZWNpYWwgY2FzZSwgSWYgdXNlciB3YW50cyB0byBlbnRlciBudWxsIHZhbHVlLCBlbXB0eSBzdHJpbmcgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGJhY2tlbmRcbiAgICAgICAgaWYgKGRhdGEgPT09ICdudWxsJyB8fCBkYXRhID09PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4oJycsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0RlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKCcnLGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXN0YW1wID0gZ2V0RXBvY2hWYWx1ZShkYXRhKTtcbiAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Gbih0aW1lc3RhbXAsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAnVVRDJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKG5ldyBEYXRlKHRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBmb3JtYXR0ZWRWYWw7XG4gICAgICAgICAgICBjb25zdCB0aW1lWm9uZSA9IHRoaXMuaTE4blNlcnZpY2UgPyB0aGlzLmkxOG5TZXJ2aWNlLmdldFRpbWV6b25lKGNvbXBJbnN0YW5jZSkgOiB0aW1lem9uZTtcbiAgICAgICAgICAgIGlmICh0aW1lWm9uZSAmJiAoZGF0YSA9PT0gdGltZXN0YW1wIHx8IGhhc09mZnNldFN0cihkYXRhKSkpIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSAobW9tZW50KHRpbWVzdGFtcCkgYXMgYW55KS50eih0aW1lWm9uZSkuZm9ybWF0KGZvcm1hdC5yZXBsYWNlQWxsKCd5JywgJ1knKS5yZXBsYWNlQWxsKCdkJywgJ0QnKS5yZXBsYWNlKCdhJywgJ0EnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbCA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRpbWVzdGFtcCwgZm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKGZvcm1hdHRlZFZhbCwgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSwgcHJvdGVjdGVkIGN1c3RvbVBpcGVNYW5hZ2VyOiBDdXN0b21QaXBlTWFuYWdlcikge1xuICAgICAgICBzdXBlcigndG9EYXRlJywgY3VzdG9tUGlwZU1hbmFnZXIpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RvTnVtYmVyJ1xufSlcbmV4cG9ydCBjbGFzcyBUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUpIHtcbiAgICAgICAgaWYgKGZyYWNTaXplICYmICFTdHJpbmcoZnJhY1NpemUpLm1hdGNoKC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KT8kLykpIHtcbiAgICAgICAgICAgIGZyYWNTaXplID0gJzEuJyArIGZyYWNTaXplICsgJy0nICsgZnJhY1NpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05hTigrZGF0YSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuaTE4blNlcnZpY2UgJiYgdGhpcy5pMThuU2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA/IHRoaXMuaTE4blNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRMb2NhbGUgPSBsb2NhbGUgPyBsb2NhbGVbJ251bWJlciddIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShkYXRhLCBmcmFjU2l6ZSwgZm9ybWF0dGVkTG9jYWxlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgIEBJbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSkgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RvQ3VycmVuY3knXG59KVxuZXhwb3J0IGNsYXNzIFRvQ3VycmVuY3lQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIGN1cnJlbmN5U3ltYm9sLCBmcmFjU2l6ZSkge1xuICAgICAgICBjb25zdCBfY3VycmVuY3lTeW1ib2wgPSAoQ1VSUkVOQ1lfSU5GT1tjdXJyZW5jeVN5bWJvbF0gfHwge30pLnN5bWJvbCB8fCBjdXJyZW5jeVN5bWJvbCB8fCAnJztcbiAgICAgICAgbGV0IF92YWwgPSBuZXcgVG9OdW1iZXJQaXBlKHRoaXMuZGVjaW1hbFBpcGUsIHRoaXMuaTE4blNlcnZpY2UpLnRyYW5zZm9ybShkYXRhLCBmcmFjU2l6ZSk7XG4gICAgICAgIGNvbnN0IGlzTmVnYXRpdmVOdW1iZXIgPSBzdGFydHNXaXRoKF92YWwsICctJyk7XG4gICAgICAgIGlmIChpc05lZ2F0aXZlTnVtYmVyKSB7XG4gICAgICAgICAgICBfdmFsID0gX3ZhbC5yZXBsYWNlKCctJywnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF92YWwgPyBpc05lZ2F0aXZlTnVtYmVyID8gJy0nKyBfY3VycmVuY3lTeW1ib2wgK192YWwgOl9jdXJyZW5jeVN5bWJvbCArIF92YWwgOiAnJztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRlY2ltYWxQaXBlOiBEZWNpbWFsUGlwZSwgQEluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKSBwcml2YXRlIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAncHJlZml4J1xufSlcbmV4cG9ydCBjbGFzcyBQcmVmaXhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBhZGRpbmcpIHtcbiAgICAgICAgcmV0dXJuIChpc1VuZGVmaW5lZChkYXRhKSB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09ICcnKSA/IGRhdGEgOiAoKHBhZGRpbmcgfHwgJycpICsgZGF0YSk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnc3VmZml4J1xufSlcbmV4cG9ydCBjbGFzcyBTdWZmaXhQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBhZGRpbmcpIHtcbiAgICAgICAgcmV0dXJuIChpc1VuZGVmaW5lZChkYXRhKSB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09ICcnKSA/IGRhdGEgOiAoZGF0YSArIChwYWRkaW5nIHx8ICcnKSk7XG4gICAgfVxufVxuXG5cbi8qKlxuICogQ3VzdG9tIHBpcGU6IEl0IGlzIHdvcmsgYXMgaW50ZXJjZXB0b3IgYmV0d2VlbiB0aGUgdXNlciBjdXN0b20gcGlwZSBmdW5jdGlvbiBhbmQgYW5ndWxhciBwaXBlXG4gKi9cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdjdXN0b20nXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGN1c3RtZVVzZXJQaXBlOiBDdXN0b21QaXBlTWFuYWdlcikge1xuXG4gICAgfVxuICAgIHRyYW5zZm9ybShkYXRhLCBwaXBlbmFtZSkge1xuICAgICAgIGxldCBhcmd1bWVudEFyciA9IFtdO1xuICAgICAgIGZvcihsZXQgaSA9MiA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrICl7XG4gICAgICAgIGFyZ3VtZW50QXJyLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICAgICB9XG5cbiAgICAgICAgbGV0IHBpcGVSZWYgPSB0aGlzLmN1c3RtZVVzZXJQaXBlLmdldEN1c3RvbVBpcGUocGlwZW5hbWUpO1xuICAgICAgICBpZiAoIXBpcGVSZWYgfHwgIWlzRnVuY3Rpb24ocGlwZVJlZi5mb3JtYXR0ZXIpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ2Zvcm1hdHRlciBpcyBub3QgZGVmaW5lZCwgcGxlYXNlIGNoZWNrIHRoZSBjdXN0b20gcGlwZXMgZG9jdW1lbnRhdGlvbicpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0cnl7XG4gICAgICAgICAgICByZXR1cm4gcGlwZVJlZi5mb3JtYXR0ZXIoZGF0YSwgLi4uYXJndW1lbnRBcnIpO1xuICAgICAgICB9IGNhdGNoKGVycm9yKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BpcGUgbmFtZTogJytwaXBlbmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgICB9XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndGltZUZyb21Ob3cnXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVGcm9tTm93UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhKSB7XG4gICAgICAgIGxldCB0aW1lc3RhbXA7XG4gICAgICAgIGlmICghaXNEZWZpbmVkKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHRpbWVzdGFtcCA9IGdldEVwb2NoVmFsdWUoZGF0YSk7XG4gICAgICAgIHJldHVybiB0aW1lc3RhbXAgPyBtb21lbnQodGltZXN0YW1wKS5mcm9tTm93KCkgOiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnbnVtYmVyVG9TdHJpbmcnXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlclRvU3RyaW5nUGlwZSBleHRlbmRzIFRvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0geyB9XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdzdHJpbmdUb051bWJlcidcbn0pXG5leHBvcnQgY2xhc3MgU3RyaW5nVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcihkYXRhKSB8fCB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsdGVyJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGE6IGFueVtdLCBmaWVsZDogYW55LCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG9iamVjdCBpcyBwYXNzZWQgYXMgZmlyc3QgcGFyYW10ZXJcbiAgICAgICAgaWYgKGlzT2JqZWN0KGZpZWxkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcihkYXRhLCBmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYga2V5IHZhbHVlIHBhaXIgaXMgcHJvdmlkZWRcbiAgICAgICAgcmV0dXJuIGZpbHRlcihkYXRhLCBpdGVtID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyhpdGVtW2ZpZWxkXSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdmaWxlc2l6ZSdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVNpemVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGJ5dGVzOiBudW1iZXIsIHByZWNpc2lvbjogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gW1xuICAgICAgICAgICAgJ2J5dGVzJyxcbiAgICAgICAgICAgICdLQicsXG4gICAgICAgICAgICAnTUInLFxuICAgICAgICAgICAgJ0dCJyxcbiAgICAgICAgICAgICdUQicsXG4gICAgICAgICAgICAnUEInXG4gICAgICAgIF07XG5cbiAgICAgICAgLypUb2RvW3NodWJoYW1dXG4gICAgICAgIGlmIChpc05hTihwYXJzZUZsb2F0KGJ5dGVzKSkgfHwgIWlzRmluaXRlKGJ5dGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTW9iaWxlKCkgPyAnJyA6ICc/JztcbiAgICAgICAgfSovXG4gICAgICAgIGxldCB1bml0ID0gMDtcbiAgICAgICAgd2hpbGUgKGJ5dGVzID49IDEwMjQpIHtcbiAgICAgICAgICAgIGJ5dGVzIC89IDEwMjQ7XG4gICAgICAgICAgICB1bml0Kys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJ5dGVzLnRvRml4ZWQoK3ByZWNpc2lvbikgKyAnICcgKyB1bml0c1t1bml0XTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdmaWxlSWNvbkNsYXNzJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlSWNvbkNsYXNzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShmaWxlRXh0ZW5zaW9uOiBhbnkpIHtcbiAgICAgICAgY29uc3QgZmlsZUNsYXNzTWFwcGluZyA9IHtcbiAgICAgICAgICAgICd6aXAnICAgICAgIDogICAnZmEtZmlsZS16aXAtbycsXG4gICAgICAgICAgICAncGRmJyAgICAgICA6ICAgJ2ZhLWZpbGUtcGRmLW8nLFxuICAgICAgICAgICAgJ3JhcicgICAgICAgOiAgICdmYS1maWxlLWFyY2hpdmUtbycsXG4gICAgICAgICAgICAndHh0JyAgICAgICA6ICAgJ2ZhLWZpbGUtdGV4dC1vJyxcbiAgICAgICAgICAgICdwcHQnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BvdCcgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHBzJyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHR4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BvdHgnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHBzeCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdtcGcnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtcDQnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtb3YnICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdhdmknICAgICAgIDogICAnZmEtZmlsZS1tb3ZpZS1vJyxcbiAgICAgICAgICAgICdtcDMnICAgICAgIDogICAnZmEtZmlsZS1hdWRpby1vJyxcbiAgICAgICAgICAgICdkb2N4JyAgICAgIDogICAnZmEtZmlsZS13b3JkLW8nLFxuICAgICAgICAgICAgJ2pzJyAgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnbWQnICAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdodG1sJyAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ2NzcycgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAneGxzeCcgICAgICA6ICAgJ2ZhLWZpbGUtZXhjZWwtbycsXG4gICAgICAgICAgICAncG5nJyAgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnanBnJyAgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnanBlZycgICAgICA6ICAgJ2ZhLWZpbGUtaW1hZ2UtbycsXG4gICAgICAgICAgICAnZmlsZScgICAgICA6ICAgJ2ZhLWZpbGUtbycsXG4gICAgICAgICAgICAnZGVmYXVsdCcgICA6ICAgJ2ZhLWZpbGUtbydcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gJ2ZhICcgKyAoZmlsZUNsYXNzTWFwcGluZ1tmaWxlRXh0ZW5zaW9uXSB8fCAnZmEtZmlsZS1vJyk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnc3RhdGVDbGFzcydcbn0pXG5leHBvcnQgY2xhc3MgU3RhdGVDbGFzc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oc3RhdGUpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVDbGFzc01hcCA9IHtcbiAgICAgICAgICAgICdzdWNjZXNzJzogJ3dpIHdpLWNoZWNrLWNpcmNsZSB0ZXh0LXN1Y2Nlc3MnLFxuICAgICAgICAgICAgJ2Vycm9yJyAgICAgOiAnd2kgd2ktZXJyb3IgdGV4dC1kYW5nZXInXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBzdGF0ZUNsYXNzTWFwW3N0YXRlLnRvTG93ZXJDYXNlKCldO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RlbXBsYXRlUmVwbGFjZSdcbn0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVSZXBsYWNlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhOmFueSwgcmVwbGFjZU9iajphbnkpIHtcbiAgICAgICAgcmV0dXJuIHJlcGxhY2UoZGF0YSwgcmVwbGFjZU9iaik7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKG1pbWVUeXBlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdHlwZU1hcHBpbmcgPSB7XG4gICAgICAgICAgICAnYXVkaW8vYWFjJzogJy5hYWMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtYWJpd29yZCc6ICcuYWJ3JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUnOiAnLmFwaycsXG4gICAgICAgICAgICAndmlkZW8veC1tc3ZpZGVvJzogJy5hdmknLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2snOiAnLmF6dycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzogJy5iaW4nLFxuICAgICAgICAgICAgJ2ltYWdlL2JtcCc6ICcuYm1wJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAnOiAnLmJ6JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAyJzogJy5iejInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtY3NoJzogJy5jc2gnLFxuICAgICAgICAgICAgJ3RleHQvY3NzJzogJy5jc3MnLFxuICAgICAgICAgICAgJ3RleHQvY3N2JzogJy5jc3YnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCc6ICcuZG9jJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6ICcuZG9jeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnOiAnLmVvdCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vZXB1Yit6aXAnOiAnLmVwdWInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnOiAnLmVzJyxcbiAgICAgICAgICAgICdpbWFnZS9naWYnOiAnLmdpZicsXG4gICAgICAgICAgICAndGV4dC9odG1sJzogJy5odG1sJyxcbiAgICAgICAgICAgICdpbWFnZS94LWljb24nOiAnLmljbycsXG4gICAgICAgICAgICAndGV4dC9jYWxlbmRhcic6ICcuaWNzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnOiAnLmphcicsXG4gICAgICAgICAgICAnaW1hZ2UvanBlZyc6IFsnLmpwZWcnLCAnLmpwZyddLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnOiAnLmpzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJy5qc29uJyxcbiAgICAgICAgICAgICdhdWRpby9taWRpJzogJy5taWQnLFxuICAgICAgICAgICAgJ2F1ZGlvL3gtbWlkaSc6ICcubWlkaScsXG4gICAgICAgICAgICAndmlkZW8vbXBlZyc6ICcubXBlZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWwnOiAnbXBrZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nOiAnLm9kcCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCc6ICcub2RzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnOiAnLm9kdCcsXG4gICAgICAgICAgICAnYXVkaW8vb2dnJzogJy5vZ2EnLFxuICAgICAgICAgICAgJ3ZpZGVvL29nZyc6ICcub2d2JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9vZ2cnOiAnLm9neCcsXG4gICAgICAgICAgICAnZm9udC9vdGYnOiAnLm90ZicsXG4gICAgICAgICAgICAnaW1hZ2UvcG5nJzogJy5wbmcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3BkZic6ICcucGRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc6ICcucHB0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJzogJy5wcHR4JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkJzogJy5yYXInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3J0Zic6ICcucnRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNoJzogJy5zaCcsXG4gICAgICAgICAgICAnaW1hZ2Uvc3ZnK3htbCc6ICcuc3ZnJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCc6ICcuc3dmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXRhcic6ICcudGFyJyxcbiAgICAgICAgICAgICdpbWFnZS90aWZmJzogJy50aWZmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi90eXBlc2NyaXB0JzogJy50cycsXG4gICAgICAgICAgICAnZm9udC90dGYnOiAnLnR0ZicsXG4gICAgICAgICAgICAndGV4dC9wbGFpbic6ICcudHh0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQudmlzaW8nOiAnLnZzZCcsXG4gICAgICAgICAgICAnYXVkaW8vd2F2JzogJy53YXYnLFxuICAgICAgICAgICAgJ2F1ZGlvL3dlYm0nOiAnLndlYmEnLFxuICAgICAgICAgICAgJ3ZpZGVvL3dlYm0nOiAnLndlYm0nLFxuICAgICAgICAgICAgJ2ltYWdlL3dlYnAnOiAnLndlYnAnLFxuICAgICAgICAgICAgJ2ZvbnQvd29mZic6ICcud29mZicsXG4gICAgICAgICAgICAnZm9udC93b2ZmMic6ICcud29mZjInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc6ICcueGh0bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6ICcueGxzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6ICcueGxzeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veG1sJzogJy54bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWwnOiAnLnh1bCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vemlwJzogJy56aXAnLFxuICAgICAgICAgICAgJ3ZpZGVvLzNncHAnOiAnLjNncCcsXG4gICAgICAgICAgICAnYXVkaW8vM2dwcCc6ICcuM2dwJyxcbiAgICAgICAgICAgICd2aWRlby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhdWRpby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnOiAnLjd6J1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0eXBlTWFwcGluZ1ttaW1lVHlwZV07XG4gICAgfVxufVxuXG5cbiJdfQ==
473
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUNsRSxPQUFPLEVBQUMsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RILE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVsRyxPQUFPLEtBQUssU0FBUyxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBRTdELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFO0lBQ3pCLElBQUksS0FBSyxDQUFDO0lBQ1Ysb0dBQW9HO0lBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0Qsd0ZBQXdGO0lBQ3hGLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUks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bXBvcnQge2luamVjdCwgSW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVBpcGUsIERlY2ltYWxQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHAsIENVUlJFTkNZX0lORk8sIEN1c3RvbVBpcGVNYW5hZ2VyLCBoYXNPZmZzZXRTdHIsIGlzRGVmaW5lZCwgcmVwbGFjZX0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtXbVBpcGV9IGZyb20gXCIuL3dtLXBpcGVcIjtcbmltcG9ydCB7ZmlsdGVyLCBpbmNsdWRlcywgaXNEYXRlLCBpc0Z1bmN0aW9uLCBpc09iamVjdCwgaXNVbmRlZmluZWQsIHN0YXJ0c1dpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuaW1wb3J0ICogYXMgbW9tZW50TGliIGZyb20gJ21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRMaWIuZGVmYXVsdCB8fCB3aW5kb3dbJ21vbWVudCddO1xuXG5jb25zdCBnZXRFcG9jaFZhbHVlID0gZGF0YSA9PiB7XG4gICAgbGV0IGVwb2NoO1xuICAgIC8vIEZvciBkYXRhIGluIGZvcm0gb2Ygc3RyaW5nIG51bWJlciAoJzEyMycpLCBjb252ZXJ0IHRvIG51bWJlciAoMTIzKS4gQW5kIGRvbid0IHBhcnNlIGRhdGUgb2JqZWN0cy5cbiAgICBpZiAoIWlzRGF0ZShkYXRhKSAmJiAhaXNOYU4oZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IHBhcnNlSW50KGRhdGEsIDEwKTtcbiAgICB9XG4gICAgLy8gZ2V0IHRoZSB0aW1lc3RhbXAgdmFsdWUuIElmIGRhdGEgaXMgdGltZSBzdHJpbmcsIGFwcGVuZCBkYXRlIHN0cmluZyB0byB0aGUgdGltZSB2YWx1ZVxuICAgIGVwb2NoID0gbW9tZW50KGRhdGEpLnZhbHVlT2YoKSB8fCBtb21lbnQobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSArICcgJyArIGRhdGEpLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gZXBvY2g7XG59O1xuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUnXG59KVxuZXhwb3J0IGNsYXNzIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmcsIG51bWJlcmZpbHRlcjogc3RyaW5nLCBsb2NhbGVmaWx0ZXI6IGFueSwgdHJhaWxpbmd6ZXJvOiBib29sZWFuLCBkZWNpbWFsVmFsdWU6IHN0cmluZywgc2tpcFRyYWlsaW5nWmVyb0NoZWNrPzogYm9vbGVhbiwgZm9ybWF0dGVkTG9jYWxlPyk6IGFueSB7XG4gICAgICAgIG51bWJlcmZpbHRlciA9IHRyYWlsaW5nemVybyAmJiAhc2tpcFRyYWlsaW5nWmVyb0NoZWNrID8gYDEuJHtkZWNpbWFsVmFsdWUubGVuZ3RofS0xNmA6IG51bWJlcmZpbHRlcjtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gZm9ybWF0dGVkTG9jYWxlID8gZm9ybWF0dGVkTG9jYWxlWydudW1iZXInXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBudW1iZXJmaWx0ZXIsIGxvY2FsZWZpbHRlciB8fCBsb2NhbGUgfHwgc2VsZWN0ZWRMb2NhbGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7IH1cblxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndG9EYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBUb0RhdGVQaXBlIGV4dGVuZHMgV21QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBhcHAgPSBpbmplY3QoQXBwKTtcbiAgICAvLyBUaGlzIG1ldGhvZCBjYWxscyB0aGUgY3VzdG9tIGZvcm1hdHRlciBmbiBhZnRlciBhcHBseWluZyB0aGUgZXhpc2l0bmcgZGF0ZSBwYXR0ZXJuXG4gICAgcmV0dXJuRm4oZGF0YSwgYXJncywgdmFyaWFibGVzKSB7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VzdG9tUGlwZSkge1xuICAgICAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBhcmdzWzBdID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUZvcm1hdHRlcihkYXRhLCBhcmdzLCB2YXJpYWJsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB0cmFuc2Zvcm0oZGF0YTogYW55LCBmb3JtYXQ6IGFueSwgdGltZXpvbmU/LCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGxldCB0aW1lc3RhbXA7XG4gICAgICAgIC8vICdudWxsJyBpcyB0byBiZSB0cmVhdGVkIGFzIGEgc3BlY2lhbCBjYXNlLCBJZiB1c2VyIHdhbnRzIHRvIGVudGVyIG51bGwgdmFsdWUsIGVtcHR5IHN0cmluZyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYmFja2VuZFxuICAgICAgICBpZiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJywgYXJndW1lbnRzLCB0aGlzLmFwcC5WYXJpYWJsZXMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNEZWZpbmVkKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJyxhcmd1bWVudHMsIHRoaXMuYXBwLlZhcmlhYmxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXN0YW1wID0gZ2V0RXBvY2hWYWx1ZShkYXRhKTtcbiAgICAgICAgaWYgKHRpbWVzdGFtcCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Gbih0aW1lc3RhbXAsIGFyZ3VtZW50cywgdGhpcy5hcHAuVmFyaWFibGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdVVEMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4obmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpLCBhcmd1bWVudHMsIHRoaXMuYXBwLlZhcmlhYmxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsO1xuICAgICAgICAgICAgY29uc3QgdGltZVpvbmUgPSB0aGlzLmkxOG5TZXJ2aWNlID8gdGhpcy5pMThuU2VydmljZS5nZXRUaW1lem9uZShjb21wSW5zdGFuY2UpIDogdGltZXpvbmU7XG4gICAgICAgICAgICBpZiAodGltZVpvbmUgJiYgKGRhdGEgPT09IHRpbWVzdGFtcCB8fCBoYXNPZmZzZXRTdHIoZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gKG1vbWVudCh0aW1lc3RhbXApIGFzIGFueSkudHoodGltZVpvbmUpLmZvcm1hdChmb3JtYXQucmVwbGFjZUFsbCgneScsICdZJykucmVwbGFjZUFsbCgnZCcsICdEJykucmVwbGFjZSgnYScsICdBJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aW1lc3RhbXAsIGZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Gbihmb3JtYXR0ZWRWYWwsIGFyZ3VtZW50cywgdGhpcy5hcHAuVmFyaWFibGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJywgYXJndW1lbnRzLHRoaXMuYXBwLlZhcmlhYmxlcyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UsIHByb3RlY3RlZCBjdXN0b21QaXBlTWFuYWdlcjogQ3VzdG9tUGlwZU1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoJ3RvRGF0ZScsIGN1c3RvbVBpcGVNYW5hZ2VyKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0b051bWJlcidcbn0pXG5leHBvcnQgY2xhc3MgVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplKSB7XG4gICAgICAgIGlmIChmcmFjU2l6ZSAmJiAhU3RyaW5nKGZyYWNTaXplKS5tYXRjaCgvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC8pKSB7XG4gICAgICAgICAgICBmcmFjU2l6ZSA9ICcxLicgKyBmcmFjU2l6ZSArICctJyArIGZyYWNTaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oK2RhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlICYmIHRoaXMuaTE4blNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgPyB0aGlzLmkxOG5TZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTG9jYWxlID0gbG9jYWxlID8gbG9jYWxlWydudW1iZXInXSA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUsIGZvcm1hdHRlZExvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsICBASW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0b0N1cnJlbmN5J1xufSlcbmV4cG9ydCBjbGFzcyBUb0N1cnJlbmN5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBjdXJyZW5jeVN5bWJvbCwgZnJhY1NpemUpIHtcbiAgICAgICAgY29uc3QgX2N1cnJlbmN5U3ltYm9sID0gKENVUlJFTkNZX0lORk9bY3VycmVuY3lTeW1ib2xdIHx8IHt9KS5zeW1ib2wgfHwgY3VycmVuY3lTeW1ib2wgfHwgJyc7XG4gICAgICAgIGxldCBfdmFsID0gbmV3IFRvTnVtYmVyUGlwZSh0aGlzLmRlY2ltYWxQaXBlLCB0aGlzLmkxOG5TZXJ2aWNlKS50cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUpO1xuICAgICAgICBjb25zdCBpc05lZ2F0aXZlTnVtYmVyID0gc3RhcnRzV2l0aChfdmFsLCAnLScpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZU51bWJlcikge1xuICAgICAgICAgICAgX3ZhbCA9IF92YWwucmVwbGFjZSgnLScsJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdmFsID8gaXNOZWdhdGl2ZU51bWJlciA/ICctJysgX2N1cnJlbmN5U3ltYm9sICtfdmFsIDpfY3VycmVuY3lTeW1ib2wgKyBfdmFsIDogJyc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsIEBJbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSkgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3ByZWZpeCdcbn0pXG5leHBvcnQgY2xhc3MgUHJlZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSAnJykgPyBkYXRhIDogKChwYWRkaW5nIHx8ICcnKSArIGRhdGEpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3N1ZmZpeCdcbn0pXG5leHBvcnQgY2xhc3MgU3VmZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSAnJykgPyBkYXRhIDogKGRhdGEgKyAocGFkZGluZyB8fCAnJykpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEN1c3RvbSBwaXBlOiBJdCBpcyB3b3JrIGFzIGludGVyY2VwdG9yIGJldHdlZW4gdGhlIHVzZXIgY3VzdG9tIHBpcGUgZnVuY3Rpb24gYW5kIGFuZ3VsYXIgcGlwZVxuICovXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnY3VzdG9tJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBhcHAgPSBpbmplY3QoQXBwKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY3VzdG1lVXNlclBpcGU6IEN1c3RvbVBpcGVNYW5hZ2VyKSB7XG5cbiAgICB9XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBpcGVuYW1lKSB7XG4gICAgICAgbGV0IGFyZ3VtZW50QXJyID0gW107XG4gICAgICAgZm9yKGxldCBpID0yIDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgYXJndW1lbnRBcnIucHVzaChhcmd1bWVudHNbaV0pO1xuICAgICAgIH1cblxuICAgICAgICBsZXQgcGlwZVJlZiA9IHRoaXMuY3VzdG1lVXNlclBpcGUuZ2V0Q3VzdG9tUGlwZShwaXBlbmFtZSk7XG4gICAgICAgIGlmICghcGlwZVJlZiB8fCAhaXNGdW5jdGlvbihwaXBlUmVmLmZvcm1hdHRlcikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignZm9ybWF0dGVyIGlzIG5vdCBkZWZpbmVkLCBwbGVhc2UgY2hlY2sgdGhlIGN1c3RvbSBwaXBlcyBkb2N1bWVudGF0aW9uJyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIHJldHVybiBwaXBlUmVmLmZvcm1hdHRlcihkYXRhLCAuLi5hcmd1bWVudEFyciwgdGhpcy5hcHAuVmFyaWFibGVzKTtcbiAgICAgICAgfSBjYXRjaChlcnJvcil7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQaXBlIG5hbWU6ICcrcGlwZW5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RpbWVGcm9tTm93J1xufSlcbmV4cG9ydCBjbGFzcyBUaW1lRnJvbU5vd1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSkge1xuICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICBpZiAoIWlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aW1lc3RhbXAgPSBnZXRFcG9jaFZhbHVlKGRhdGEpO1xuICAgICAgICByZXR1cm4gdGltZXN0YW1wID8gbW9tZW50KHRpbWVzdGFtcCkuZnJvbU5vdygpIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ251bWJlclRvU3RyaW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJUb1N0cmluZ1BpcGUgZXh0ZW5kcyBUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHsgfVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnc3RyaW5nVG9OdW1iZXInXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ1RvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIoZGF0YSkgfHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2ZpbHRlcidcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhOiBhbnlbXSwgZmllbGQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvYmplY3QgaXMgcGFzc2VkIGFzIGZpcnN0IHBhcmFtdGVyXG4gICAgICAgIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIoZGF0YSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGtleSB2YWx1ZSBwYWlyIGlzIHByb3ZpZGVkXG4gICAgICAgIHJldHVybiBmaWx0ZXIoZGF0YSwgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaW5jbHVkZXMoaXRlbVtmaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZXNpemUnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShieXRlczogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcikge1xuICAgICAgICBjb25zdCB1bml0cyA9IFtcbiAgICAgICAgICAgICdieXRlcycsXG4gICAgICAgICAgICAnS0InLFxuICAgICAgICAgICAgJ01CJyxcbiAgICAgICAgICAgICdHQicsXG4gICAgICAgICAgICAnVEInLFxuICAgICAgICAgICAgJ1BCJ1xuICAgICAgICBdO1xuXG4gICAgICAgIC8qVG9kb1tzaHViaGFtXVxuICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdChieXRlcykpIHx8ICFpc0Zpbml0ZShieXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBpc01vYmlsZSgpID8gJycgOiAnPyc7XG4gICAgICAgIH0qL1xuICAgICAgICBsZXQgdW5pdCA9IDA7XG4gICAgICAgIHdoaWxlIChieXRlcyA+PSAxMDI0KSB7XG4gICAgICAgICAgICBieXRlcyAvPSAxMDI0O1xuICAgICAgICAgICAgdW5pdCsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlcy50b0ZpeGVkKCtwcmVjaXNpb24pICsgJyAnICsgdW5pdHNbdW5pdF07XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZUljb25DbGFzcydcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUljb25DbGFzc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZmlsZUV4dGVuc2lvbjogYW55KSB7XG4gICAgICAgIGNvbnN0IGZpbGVDbGFzc01hcHBpbmcgPSB7XG4gICAgICAgICAgICAnemlwJyAgICAgICA6ICAgJ2ZhLWZpbGUtemlwLW8nLFxuICAgICAgICAgICAgJ3BkZicgICAgICAgOiAgICdmYS1maWxlLXBkZi1vJyxcbiAgICAgICAgICAgICdyYXInICAgICAgIDogICAnZmEtZmlsZS1hcmNoaXZlLW8nLFxuICAgICAgICAgICAgJ3R4dCcgICAgICAgOiAgICdmYS1maWxlLXRleHQtbycsXG4gICAgICAgICAgICAncHB0JyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwb3QnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BwcycgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHB0eCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwb3R4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3Bwc3gnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAnbXBnJyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbXA0JyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbW92JyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnYXZpJyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbXAzJyAgICAgICA6ICAgJ2ZhLWZpbGUtYXVkaW8tbycsXG4gICAgICAgICAgICAnZG9jeCcgICAgICA6ICAgJ2ZhLWZpbGUtd29yZC1vJyxcbiAgICAgICAgICAgICdqcycgICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ21kJyAgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnaHRtbCcgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdjc3MnICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ3hsc3gnICAgICAgOiAgICdmYS1maWxlLWV4Y2VsLW8nLFxuICAgICAgICAgICAgJ3BuZycgICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2pwZycgICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2pwZWcnICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2ZpbGUnICAgICAgOiAgICdmYS1maWxlLW8nLFxuICAgICAgICAgICAgJ2RlZmF1bHQnICAgOiAgICdmYS1maWxlLW8nXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuICdmYSAnICsgKGZpbGVDbGFzc01hcHBpbmdbZmlsZUV4dGVuc2lvbl0gfHwgJ2ZhLWZpbGUtbycpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3N0YXRlQ2xhc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlQ2xhc3NNYXAgPSB7XG4gICAgICAgICAgICAnc3VjY2Vzcyc6ICd3aSB3aS1jaGVjay1jaXJjbGUgdGV4dC1zdWNjZXNzJyxcbiAgICAgICAgICAgICdlcnJvcicgICAgIDogJ3dpIHdpLWVycm9yIHRleHQtZGFuZ2VyJ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc3RhdGVDbGFzc01hcFtzdGF0ZS50b0xvd2VyQ2FzZSgpXTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0ZW1wbGF0ZVJlcGxhY2UnXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlUmVwbGFjZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YTphbnksIHJlcGxhY2VPYmo6YW55KSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlKGRhdGEsIHJlcGxhY2VPYmopO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2ZpbGVFeHRlbnNpb25Gcm9tTWltZSdcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShtaW1lVHlwZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHR5cGVNYXBwaW5nID0ge1xuICAgICAgICAgICAgJ2F1ZGlvL2FhYyc6ICcuYWFjJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWFiaXdvcmQnOiAnLmFidycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlJzogJy5hcGsnLFxuICAgICAgICAgICAgJ3ZpZGVvL3gtbXN2aWRlbyc6ICcuYXZpJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rJzogJy5hencnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc6ICcuYmluJyxcbiAgICAgICAgICAgICdpbWFnZS9ibXAnOiAnLmJtcCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1iemlwJzogJy5ieicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1iemlwMic6ICcuYnoyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWNzaCc6ICcuY3NoJyxcbiAgICAgICAgICAgICd0ZXh0L2Nzcyc6ICcuY3NzJyxcbiAgICAgICAgICAgICd0ZXh0L2Nzdic6ICcuY3N2JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9tc3dvcmQnOiAnLmRvYycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnOiAnLmRvY3gnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1mb250b2JqZWN0JzogJy5lb3QnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2VwdWIremlwJzogJy5lcHViJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9lY21hc2NyaXB0JzogJy5lcycsXG4gICAgICAgICAgICAnaW1hZ2UvZ2lmJzogJy5naWYnLFxuICAgICAgICAgICAgJ3RleHQvaHRtbCc6ICcuaHRtbCcsXG4gICAgICAgICAgICAnaW1hZ2UveC1pY29uJzogJy5pY28nLFxuICAgICAgICAgICAgJ3RleHQvY2FsZW5kYXInOiAnLmljcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJzogJy5qYXInLFxuICAgICAgICAgICAgJ2ltYWdlL2pwZWcnOiBbJy5qcGVnJywgJy5qcGcnXSxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JzogJy5qcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6ICcuanNvbicsXG4gICAgICAgICAgICAnYXVkaW8vbWlkaSc6ICcubWlkJyxcbiAgICAgICAgICAgICdhdWRpby94LW1pZGknOiAnLm1pZGknLFxuICAgICAgICAgICAgJ3ZpZGVvL21wZWcnOiAnLm1wZWcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5pbnN0YWxsZXIreG1sJzogJ21wa2cnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uJzogJy5vZHAnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQnOiAnLm9kcycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JzogJy5vZHQnLFxuICAgICAgICAgICAgJ2F1ZGlvL29nZyc6ICcub2dhJyxcbiAgICAgICAgICAgICd2aWRlby9vZ2cnOiAnLm9ndicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vb2dnJzogJy5vZ3gnLFxuICAgICAgICAgICAgJ2ZvbnQvb3RmJzogJy5vdGYnLFxuICAgICAgICAgICAgJ2ltYWdlL3BuZyc6ICcucG5nJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9wZGYnOiAnLnBkZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnOiAnLnBwdCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbic6ICcucHB0eCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCc6ICcucmFyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9ydGYnOiAnLnJ0ZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1zaCc6ICcuc2gnLFxuICAgICAgICAgICAgJ2ltYWdlL3N2Zyt4bWwnOiAnLnN2ZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnOiAnLnN3ZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC10YXInOiAnLnRhcicsXG4gICAgICAgICAgICAnaW1hZ2UvdGlmZic6ICcudGlmZicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdHlwZXNjcmlwdCc6ICcudHMnLFxuICAgICAgICAgICAgJ2ZvbnQvdHRmJzogJy50dGYnLFxuICAgICAgICAgICAgJ3RleHQvcGxhaW4nOiAnLnR4dCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLnZpc2lvJzogJy52c2QnLFxuICAgICAgICAgICAgJ2F1ZGlvL3dhdic6ICcud2F2JyxcbiAgICAgICAgICAgICdhdWRpby93ZWJtJzogJy53ZWJhJyxcbiAgICAgICAgICAgICd2aWRlby93ZWJtJzogJy53ZWJtJyxcbiAgICAgICAgICAgICdpbWFnZS93ZWJwJzogJy53ZWJwJyxcbiAgICAgICAgICAgICdmb250L3dvZmYnOiAnLndvZmYnLFxuICAgICAgICAgICAgJ2ZvbnQvd29mZjInOiAnLndvZmYyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94aHRtbCt4bWwnOiAnLnhodG1sJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnOiAnLnhscycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnOiAnLnhsc3gnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3htbCc6ICcueG1sJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubW96aWxsYS54dWwreG1sJzogJy54dWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ppcCc6ICcuemlwJyxcbiAgICAgICAgICAgICd2aWRlby8zZ3BwJzogJy4zZ3AnLFxuICAgICAgICAgICAgJ2F1ZGlvLzNncHAnOiAnLjNncCcsXG4gICAgICAgICAgICAndmlkZW8vM2dwcDInOiAnLjNnMicsXG4gICAgICAgICAgICAnYXVkaW8vM2dwcDInOiAnLjNnMicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJzogJy43eidcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdHlwZU1hcHBpbmdbbWltZVR5cGVdO1xuICAgIH1cbn1cblxuXG4iXX0=
@@ -6,13 +6,13 @@ export class WmPipe {
6
6
  this.pipeRef = this.customPipeManager ? this.customPipeManager.getCustomPipe(pipeName) : null;
7
7
  this.isCustomPipe = this.pipeRef && isFunction(this.pipeRef.formatter);
8
8
  }
9
- customFormatter(data, args) {
9
+ customFormatter(data, args, variables) {
10
10
  try {
11
- return this.pipeRef.formatter(...args);
11
+ return this.pipeRef.formatter(...args, variables);
12
12
  }
13
13
  catch (error) {
14
14
  return data;
15
15
  }
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvd20tcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxNQUFNO0lBR2YsWUFBb0IsUUFBUSxFQUFZLGlCQUFvQztRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFBO1FBQVksc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJO1FBQ3RCLElBQUksQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEN1c3RvbVBpcGVNYW5hZ2VyIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBXbVBpcGUge1xuICAgIHByb3RlY3RlZCBwaXBlUmVmO1xuICAgIHByb3RlY3RlZCBpc0N1c3RvbVBpcGU7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwaXBlTmFtZSwgcHJvdGVjdGVkIGN1c3RvbVBpcGVNYW5hZ2VyOiBDdXN0b21QaXBlTWFuYWdlcikge1xuICAgICAgICB0aGlzLnBpcGVSZWYgPSB0aGlzLmN1c3RvbVBpcGVNYW5hZ2VyID8gdGhpcy5jdXN0b21QaXBlTWFuYWdlci5nZXRDdXN0b21QaXBlKHBpcGVOYW1lKSA6IG51bGw7XG4gICAgICAgIHRoaXMuaXNDdXN0b21QaXBlID0gdGhpcy5waXBlUmVmICYmIGlzRnVuY3Rpb24odGhpcy5waXBlUmVmLmZvcm1hdHRlcik7XG4gICAgfVxuXG4gICAgY3VzdG9tRm9ybWF0dGVyKGRhdGEsIGFyZ3MpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBpcGVSZWYuZm9ybWF0dGVyKC4uLmFyZ3MpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcGlwZXMvd20tcGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE1BQU0sT0FBTyxNQUFNO0lBR2YsWUFBb0IsUUFBUSxFQUFZLGlCQUFvQztRQUF4RCxhQUFRLEdBQVIsUUFBUSxDQUFBO1FBQVksc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUztRQUNqQyxJQUFJLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ3VzdG9tUGlwZU1hbmFnZXIgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge2lzRnVuY3Rpb259IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNsYXNzIFdtUGlwZSB7XG4gICAgcHJvdGVjdGVkIHBpcGVSZWY7XG4gICAgcHJvdGVjdGVkIGlzQ3VzdG9tUGlwZTtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBpcGVOYW1lLCBwcm90ZWN0ZWQgY3VzdG9tUGlwZU1hbmFnZXI6IEN1c3RvbVBpcGVNYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMucGlwZVJlZiA9IHRoaXMuY3VzdG9tUGlwZU1hbmFnZXIgPyB0aGlzLmN1c3RvbVBpcGVNYW5hZ2VyLmdldEN1c3RvbVBpcGUocGlwZU5hbWUpIDogbnVsbDtcbiAgICAgICAgdGhpcy5pc0N1c3RvbVBpcGUgPSB0aGlzLnBpcGVSZWYgJiYgaXNGdW5jdGlvbih0aGlzLnBpcGVSZWYuZm9ybWF0dGVyKTtcbiAgICB9XG5cbiAgICBjdXN0b21Gb3JtYXR0ZXIoZGF0YSwgYXJncywgdmFyaWFibGVzKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5waXBlUmVmLmZvcm1hdHRlciguLi5hcmdzLCB2YXJpYWJsZXMpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
- export * from './components.module';
2
1
  export { Live_Operations, ALLFIELDS, LIVE_CONSTANTS, performDataOperation, refreshDataSource, fetchRelatedFieldData, interpolateBindExpressions, getDistinctFieldProperties, getDistinctValues, fetchDistinctValues, getDistinctValuesForField, getRangeFieldValue, getRangeMatchMode, getEnableEmptyFilter, getEmptyMatchMode, createArrayFrom, applyFilterOnField, transformData } from './utils/data-utils';
3
2
  export { getOrderedDataset, transformDataWithKeys, extractDataAsArray, convertDataToObject, transformFormData, getUniqObjsByDataField, setItemByCompare, groupData, filterDate, toggleAllHeaders, handleHeaderClick, configureDnD, DataSetItem } from './utils/form-utils';
4
3
  export { EDIT_MODE, setHeaderConfig, setHeaderConfigForTable, getRowOperationsColumn, getFieldLayoutConfig, getDefaultViewModeWidget, parseValueByType, getFieldTypeWidgetTypesMap, getDataTableFilterWidget, getEditModeWidget, getDefaultValue } from './utils/live-utils';
@@ -32,4 +31,4 @@ export * from './widgets/common/lazy-load/lazy-load.directive';
32
31
  export * from './widgets/common/partial-param/partial-param.directive';
33
32
  export * from './widgets/common/base/text-content.directive';
34
33
  export * from './directives/show-in-device.directive';
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osNEJBQTRCLEVBQy9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNILGFBQWEsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELE9BQU8sRUFDSCx3QkFBd0IsRUFFM0IsTUFBTSxtREFBbUQsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsT0FBTyxFQUNILGdCQUFnQixFQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELE9BQU8sRUFDSCxvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osUUFBUSxFQUNYLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxPQUFPLEVBQ0gsVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFlBQVksRUFDWixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ3RCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl2ZV9PcGVyYXRpb25zIH0gZnJvbSAnLi91dGlscy9kYXRhLXV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy5tb2R1bGUnO1xuZXhwb3J0IHtcbiAgICBMaXZlX09wZXJhdGlvbnMsXG4gICAgQUxMRklFTERTLFxuICAgIExJVkVfQ09OU1RBTlRTLFxuICAgIHBlcmZvcm1EYXRhT3BlcmF0aW9uLFxuICAgIHJlZnJlc2hEYXRhU291cmNlLFxuICAgIGZldGNoUmVsYXRlZEZpZWxkRGF0YSxcbiAgICBpbnRlcnBvbGF0ZUJpbmRFeHByZXNzaW9ucyxcbiAgICBnZXREaXN0aW5jdEZpZWxkUHJvcGVydGllcyxcbiAgICBnZXREaXN0aW5jdFZhbHVlcyxcbiAgICBmZXRjaERpc3RpbmN0VmFsdWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzRm9yRmllbGQsXG4gICAgZ2V0UmFuZ2VGaWVsZFZhbHVlLFxuICAgIGdldFJhbmdlTWF0Y2hNb2RlLFxuICAgIGdldEVuYWJsZUVtcHR5RmlsdGVyLFxuICAgIGdldEVtcHR5TWF0Y2hNb2RlLFxuICAgIGNyZWF0ZUFycmF5RnJvbSxcbiAgICBhcHBseUZpbHRlck9uRmllbGQsXG4gICAgdHJhbnNmb3JtRGF0YVxufSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBnZXRPcmRlcmVkRGF0YXNldCxcbiAgICB0cmFuc2Zvcm1EYXRhV2l0aEtleXMsXG4gICAgZXh0cmFjdERhdGFBc0FycmF5LFxuICAgIGNvbnZlcnREYXRhVG9PYmplY3QsXG4gICAgdHJhbnNmb3JtRm9ybURhdGEsXG4gICAgZ2V0VW5pcU9ianNCeURhdGFGaWVsZCxcbiAgICBzZXRJdGVtQnlDb21wYXJlLFxuICAgIGdyb3VwRGF0YSxcbiAgICBmaWx0ZXJEYXRlLFxuICAgIHRvZ2dsZUFsbEhlYWRlcnMsXG4gICAgaGFuZGxlSGVhZGVyQ2xpY2ssXG4gICAgY29uZmlndXJlRG5ELFxuICAgIERhdGFTZXRJdGVtXG59IGZyb20gJy4vdXRpbHMvZm9ybS11dGlscyc7XG5leHBvcnQge1xuICAgIEVESVRfTU9ERSxcbiAgICBzZXRIZWFkZXJDb25maWcsXG4gICAgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUsXG4gICAgZ2V0Um93T3BlcmF0aW9uc0NvbHVtbixcbiAgICBnZXRGaWVsZExheW91dENvbmZpZyxcbiAgICBnZXREZWZhdWx0Vmlld01vZGVXaWRnZXQsXG4gICAgcGFyc2VWYWx1ZUJ5VHlwZSxcbiAgICBnZXRGaWVsZFR5cGVXaWRnZXRUeXBlc01hcCxcbiAgICBnZXREYXRhVGFibGVGaWx0ZXJXaWRnZXQsXG4gICAgZ2V0RWRpdE1vZGVXaWRnZXQsXG4gICAgZ2V0RGVmYXVsdFZhbHVlXG59IGZyb20gJy4vdXRpbHMvbGl2ZS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9ialZhbHVlQnlLZXksXG4gICAgZ2V0RXZhbHVhdGVkRGF0YSxcbiAgICBpc0FjdGl2ZU5hdkl0ZW0sXG4gICAgaGFzTGlua1RvQ3VycmVudFBhZ2UsXG4gICAgZ2V0T3JkZXJCeUV4cHIsXG4gICAgaXNEYXRhU2V0V2lkZ2V0LFxuICAgIGdldEltYWdlVXJsLFxuICAgIGdldEJhY2tHcm91bmRJbWFnZVVybCxcbiAgICBwcm92aWRlQXMsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHByb3ZpZGVBc0RpYWxvZ1JlZixcbiAgICB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcyxcbiAgICBOQVZJR0FUSU9OX1RZUEUsXG4gICAgSU5QVVRNT0RFLFxuICAgIEFVVE9DTE9TRV9UWVBFLFxuICAgIGdldFdhdGNoSWRlbnRpZmllcixcbiAgICBnZXRNYXRjaE1vZGVUeXBlc01hcCxcbiAgICBnZXRNYXRjaE1vZGVNc2dzLFxuICAgIGdldENvbmRpdGlvbmFsQ2xhc3NlcyxcbiAgICBwcmVwYXJlRmllbGREZWZzICxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBleHRyYWN0RGF0YVNvdXJjZU5hbWUsXG4gICAgc2V0Rm9jdXNUcmFwLFxuICAgIGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHNcbn0gZnJvbSAnLi91dGlscy93aWRnZXQtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50XG59IGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1jb250YWluZXIuY29tcG9uZW50JztcbmV4cG9ydCB7XG4gICAgRGF0YXNldEF3YXJlTmF2Q29tcG9uZW50LFxuICAgIE5hdk5vZGVcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2RhdGFzZXQtYXdhcmUtbmF2LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvcGFydGlhbC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9jdXN0b20td2lkZ2V0LWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtZmllbGQtdmFsaWRhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9pdGVtLXRlbXBsYXRlL2l0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVwZWF0LXRlbXBsYXRlL3JlcGVhdC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3N0eWxhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wdWxsLXRvLXJlZnJlc2gvcHVsbC10by1yZWZyZXNoJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC9wYXJ0aWFsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3JlZHJhdy9yZWRyYXdhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIHVwZGF0ZURldmljZVZpZXdcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9kZXZpY2V2aWV3JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvc3R5bGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtaWQtZ2VuZXJhdG9yJztcbmV4cG9ydCB7XG4gICAgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUsXG4gICAgcmVnaXN0ZXIsXG4gICAgcmVnaXN0ZXJGb3JtV2lkZ2V0LFxuICAgIFBST1BfVFlQRSxcbiAgICBQUk9QX1NUUklORyxcbiAgICBQUk9QX05VTUJFUixcbiAgICBQUk9QX0JPT0xFQU4sXG4gICAgUFJPUF9BTllcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuZXhwb3J0IHtcbiAgICBUb0RhdGVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFN1ZmZpeFBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUaW1lRnJvbU5vd1BpcGUsXG4gICAgTnVtYmVyVG9TdHJpbmdQaXBlLFxuICAgIFN0cmluZ1RvTnVtYmVyUGlwZSxcbiAgICBGaWx0ZXJQaXBlLFxuICAgIEZpbGVTaXplUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLFxuICAgIFRlbXBsYXRlUmVwbGFjZVBpcGVcbn0gZnJvbSAnLi9waXBlcy9jdXN0b20tcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90cnVzdC1hcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FuaXRpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2ltYWdlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9jb250YWluZXIvY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2xhenktbG9hZC9sYXp5LWxvYWQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC1wYXJhbS9wYXJ0aWFsLXBhcmFtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvdGV4dC1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvc2hvdy1pbi1kZXZpY2UuZGlyZWN0aXZlJztcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixhQUFhLEVBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLFdBQVcsRUFDZCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsZUFBZSxFQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGVBQWUsRUFDZixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLGdDQUFnQyxFQUNoQyxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLDRCQUE0QixFQUMvQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDSCxhQUFhLEVBQ2hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxPQUFPLEVBQ0gsd0JBQXdCLEVBRTNCLE1BQU0sbURBQW1ELENBQUM7QUFDM0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDbkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGl2ZV9PcGVyYXRpb25zfSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuXG5leHBvcnQge1xuICAgIExpdmVfT3BlcmF0aW9ucyxcbiAgICBBTExGSUVMRFMsXG4gICAgTElWRV9DT05TVEFOVFMsXG4gICAgcGVyZm9ybURhdGFPcGVyYXRpb24sXG4gICAgcmVmcmVzaERhdGFTb3VyY2UsXG4gICAgZmV0Y2hSZWxhdGVkRmllbGREYXRhLFxuICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zLFxuICAgIGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzLFxuICAgIGZldGNoRGlzdGluY3RWYWx1ZXMsXG4gICAgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZCxcbiAgICBnZXRSYW5nZUZpZWxkVmFsdWUsXG4gICAgZ2V0UmFuZ2VNYXRjaE1vZGUsXG4gICAgZ2V0RW5hYmxlRW1wdHlGaWx0ZXIsXG4gICAgZ2V0RW1wdHlNYXRjaE1vZGUsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIGFwcGx5RmlsdGVyT25GaWVsZCxcbiAgICB0cmFuc2Zvcm1EYXRhXG59IGZyb20gJy4vdXRpbHMvZGF0YS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9yZGVyZWREYXRhc2V0LFxuICAgIHRyYW5zZm9ybURhdGFXaXRoS2V5cyxcbiAgICBleHRyYWN0RGF0YUFzQXJyYXksXG4gICAgY29udmVydERhdGFUb09iamVjdCxcbiAgICB0cmFuc2Zvcm1Gb3JtRGF0YSxcbiAgICBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLFxuICAgIHNldEl0ZW1CeUNvbXBhcmUsXG4gICAgZ3JvdXBEYXRhLFxuICAgIGZpbHRlckRhdGUsXG4gICAgdG9nZ2xlQWxsSGVhZGVycyxcbiAgICBoYW5kbGVIZWFkZXJDbGljayxcbiAgICBjb25maWd1cmVEbkQsXG4gICAgRGF0YVNldEl0ZW1cbn0gZnJvbSAnLi91dGlscy9mb3JtLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgRURJVF9NT0RFLFxuICAgIHNldEhlYWRlckNvbmZpZyxcbiAgICBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSxcbiAgICBnZXRSb3dPcGVyYXRpb25zQ29sdW1uLFxuICAgIGdldEZpZWxkTGF5b3V0Q29uZmlnLFxuICAgIGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCxcbiAgICBwYXJzZVZhbHVlQnlUeXBlLFxuICAgIGdldEZpZWxkVHlwZVdpZGdldFR5cGVzTWFwLFxuICAgIGdldERhdGFUYWJsZUZpbHRlcldpZGdldCxcbiAgICBnZXRFZGl0TW9kZVdpZGdldCxcbiAgICBnZXREZWZhdWx0VmFsdWVcbn0gZnJvbSAnLi91dGlscy9saXZlLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgZ2V0T2JqVmFsdWVCeUtleSxcbiAgICBnZXRFdmFsdWF0ZWREYXRhLFxuICAgIGlzQWN0aXZlTmF2SXRlbSxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBnZXRPcmRlckJ5RXhwcixcbiAgICBpc0RhdGFTZXRXaWRnZXQsXG4gICAgZ2V0SW1hZ2VVcmwsXG4gICAgZ2V0QmFja0dyb3VuZEltYWdlVXJsLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgcHJvdmlkZUFzRGlhbG9nUmVmLFxuICAgIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLFxuICAgIE5BVklHQVRJT05fVFlQRSxcbiAgICBJTlBVVE1PREUsXG4gICAgQVVUT0NMT1NFX1RZUEUsXG4gICAgZ2V0V2F0Y2hJZGVudGlmaWVyLFxuICAgIGdldE1hdGNoTW9kZVR5cGVzTWFwLFxuICAgIGdldE1hdGNoTW9kZU1zZ3MsXG4gICAgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzLFxuICAgIHByZXBhcmVGaWVsZERlZnMgLFxuICAgIGdldENvbnRhaW5lclRhcmdldENsYXNzLFxuICAgIGV4dHJhY3REYXRhU291cmNlTmFtZSxcbiAgICBzZXRGb2N1c1RyYXAsXG4gICAgZ2V0S2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50c1xufSBmcm9tICcuL3V0aWxzL3dpZGdldC11dGlscyc7XG5leHBvcnQge1xuICAgIEJhc2VDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgICBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQsXG4gICAgTmF2Tm9kZVxufSBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvZGF0YXNldC1hd2FyZS1uYXYuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9wYXJ0aWFsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2N1c3RvbS13aWRnZXQtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1maWVsZC12YWxpZGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2l0ZW0tdGVtcGxhdGUvaXRlbS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9yZXBlYXQtdGVtcGxhdGUvcmVwZWF0LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2Uvc3R5bGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3B1bGwtdG8tcmVmcmVzaC9wdWxsLXRvLXJlZnJlc2gnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsL3BhcnRpYWwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVkcmF3L3JlZHJhd2FibGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgdXBkYXRlRGV2aWNlVmlld1xufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2RldmljZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9zdHlsZXInO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3dpZGdldC1pZC1nZW5lcmF0b3InO1xuZXhwb3J0IHtcbiAgICBnZXRXaWRnZXRQcm9wc0J5VHlwZSxcbiAgICByZWdpc3RlcixcbiAgICByZWdpc3RlckZvcm1XaWRnZXQsXG4gICAgUFJPUF9UWVBFLFxuICAgIFBST1BfU1RSSU5HLFxuICAgIFBST1BfTlVNQkVSLFxuICAgIFBST1BfQk9PTEVBTixcbiAgICBQUk9QX0FOWVxufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3dpZGdldC1wcm9wcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5leHBvcnQge1xuICAgIFRvRGF0ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgU3VmZml4UGlwZSxcbiAgICBDdXN0b21QaXBlLFxuICAgIFRpbWVGcm9tTm93UGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIEZpbGVJY29uQ2xhc3NQaXBlLFxuICAgIFN0YXRlQ2xhc3NQaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUsXG4gICAgVGVtcGxhdGVSZXBsYWNlUGlwZVxufSBmcm9tICcuL3BpcGVzL2N1c3RvbS1waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RydXN0LWFzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zYW5pdGl6ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvaW1hZ2UucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2NvbnRhaW5lci9jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbGF6eS1sb2FkL2xhenktbG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsLXBhcmFtL3BhcnRpYWwtcGFyYW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS90ZXh0LWNvbnRlbnQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9zaG93LWluLWRldmljZS5kaXJlY3RpdmUnO1xuIl19
@@ -169,7 +169,9 @@ export const getImageUrl = (urlString, shouldEncode, defaultUrl) => {
169
169
  else {
170
170
  urlString = (defaultUrl || 'resources/images/imagelists/default-image.png');
171
171
  }
172
- urlString = _WM_APP_PROJECT.isPreview ? urlString : (isValidWebURL(urlString) || urlString.startsWith(_WM_APP_PROJECT.cdnUrl) ? urlString : _WM_APP_PROJECT.cdnUrl + urlString);
172
+ }
173
+ if (urlString && !_WM_APP_PROJECT.isPreview && !isValidWebURL(urlString) && !urlString.startsWith(_WM_APP_PROJECT.cdnUrl)) {
174
+ urlString = (_WM_APP_PROJECT.cdnUrl || '') + urlString;
173
175
  }
174
176
  urlString = shouldEncode ? encodeUrl(urlString) : urlString;
175
177
  // if the resource to be loaded is inside a prefab
@@ -483,4 +485,4 @@ export const getKeyboardFocusableElements = (element) => {
483
485
  && (!el.hasAttribute('tabindex') || (el.hasAttribute('tabindex') && !el.getAttribute("tabindex").startsWith('-'))));
484
486
  });
485
487
  };
486
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy91dGlscy93aWRnZXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0gsVUFBVSxFQUNWLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLFNBQVMsRUFDVCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFFBQVEsRUFDUixhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV0SCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUTtJQUN2RyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hJOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENB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YW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgICAkcGFyc2VFeHByLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24sXG4gICAgZGVIeXBoZW5hdGUsXG4gICAgZW5jb2RlVXJsLFxuICAgIEZvcm1XaWRnZXRUeXBlLFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBpbml0Q2FwcyxcbiAgICBpc1ZhbGlkV2ViVVJMLFxuICAgIHByZXR0aWZ5TGFiZWwsXG4gICAgc3RyaW5nU3RhcnRzV2l0aFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge0RpYWxvZ1JlZiwgV2lkZ2V0UmVmfSBmcm9tICcuLi93aWRnZXRzL2ZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQge2NyZWF0ZUZvY3VzVHJhcH0gZnJvbSAnQHdhdmVtYWtlci9mb2N1cy10cmFwJztcbmltcG9ydCB7TmF2Tm9kZX0gZnJvbSBcIi4uL3dpZGdldHMvY29tbW9uL2Jhc2UvZGF0YXNldC1hd2FyZS1uYXYuY29tcG9uZW50XCI7XG5pbXBvcnQge2Fzc2lnbldpdGgsIGZvckVhY2gsIGdldCwgaW5jbHVkZXMsIGlzQXJyYXksIGlzTnVsbCwgaXNPYmplY3QsIGlzU3RyaW5nLCBqb2luLCBzcGxpdCwgdW5pb259IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgREFUQVNFVF9XSURHRVRTID0gbmV3IFNldChbRm9ybVdpZGdldFR5cGUuU0VMRUNULCBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVCwgRm9ybVdpZGdldFR5cGUuUkFESU9TRVQsXG4gICAgRm9ybVdpZGdldFR5cGUuU1dJVENILCBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUsIEZvcm1XaWRnZXRUeXBlLkNISVBTLCBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQsIEZvcm1XaWRnZXRUeXBlLlJBVElOR10pO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJzZWQsIHVwZGF0ZWQgYm91bmQgZXhwcmVzc2lvblxuICogaWYgdGhlIGV4cHJlc3Npb24gaXMgJFtkYXRhWyRpXVtmaXJzdE5hbWVdXSArICctLScgKyAkW2xhc3ROYW1lXSArICctLScgKyAkWydASURAJ11cbiAqIHJldHVybnMgX18xLmZpcnN0TmFtZSArICctLScgKyBsYXN0TmFtZSArICctLScgKyBfXzFbJ0BJREAnXVxuICovXG5jb25zdCBnZXRVcGRhdGVkRXhwciA9IChleHByOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgdXBkYXRlZCA9ICcnLCBjaCwgbmV4dCwgaSwgaiwgbWF0Y2hDaCwgbWF0Y2hDb3VudCwgaXNRdW90ZWRTdHIsIHN1YlN0ciwgaXNRdW90ZWRTdHJFdmFsdWF0ZWQ7XG5cbiAgICBleHByID0gZXhwci5yZXBsYWNlKC9cXCRcXFtkYXRhXFxbXFwkaVxcXS9nLCAnJFtfXzEnKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBleHByLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoID0gZXhwcltpXTtcbiAgICAgICAgbmV4dCA9IGV4cHJbaSArIDFdO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB0aGUgZXhwcmVzc2lvbiBzdGFydHMgd2l0aCAkWywgY2hlY2sgdGhlIG5leHQoY2gpIGNoYXJhY3RlcixcbiAgICAgICAgICogICAgaWYgY2ggaXMgYSBxdW90ZSgnLCBcIikgY2hhbmdlIHRoZSBleHByIHRvIF9fW1xuICAgICAgICAgKiAgICBpZiBjaCBpcyBhIHdoaXRlU3BhY2UsIHJlbW92ZSBpdFxuICAgICAgICAgKiAgICBlbHNlIHJlbW92ZSAkW1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNoID09PSAnJCcgJiYgbmV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICBtYXRjaENvdW50ID0gMTtcbiAgICAgICAgICAgIGlzUXVvdGVkU3RyRXZhbHVhdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpc1F1b3RlZFN0ciA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGogPSBpICsgMjsgaiA8IGV4cHIubGVuZ3RoOyBqKyspIHtcblxuICAgICAgICAgICAgICAgIG1hdGNoQ2ggPSBleHByW2pdO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoQ2ggPT09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVvdGVkU3RyRXZhbHVhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzUXVvdGVkU3RyID0gZXhwcltqXSA9PT0gJ1wiJyB8fCBleHByW2pdID09PSAnXFwnJztcbiAgICAgICAgICAgICAgICAgICAgaXNRdW90ZWRTdHJFdmFsdWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaENoID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hDb3VudCsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hDaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoQ291bnQtLTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViU3RyID0gZXhwci5zdWJzdHJpbmcoaSArIDIsIGopO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNRdW90ZWRTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgKz0gJ19fMVsnICsgc3ViU3RyICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCArPSBzdWJTdHI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVwZGF0ZWQgKz0gY2g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlZDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBrZXkgaW4gdGhlIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZ2V0T2JqVmFsdWVCeUtleSA9IChvYmo6IGFueSwgc3RyS2V5OiBzdHJpbmcpID0+IHtcbiAgICAvKiBjaGVjayBmb3IgdGhlIGtleS1zdHJpbmcgKi9cbiAgICBpZiAoc3RyS2V5KSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIC8qIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzLCBzbyBhcyB0byB3b3JrIGZvciBldmVuICdrZXkxWzBdLmNoaWxkMScqL1xuICAgICAgICBzdHJLZXkucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csICcuJDEnKS5zcGxpdCgnLicpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIC8vIElmIG9iaiBpcyBudWxsLCB0aGVuIGFzc2lnbiB2YWwgdG8gbnVsbC5cbiAgICAgICAgICAgIHZhbCA9ICh2YWwgJiYgdmFsW2tleV0pIHx8IChpc051bGwob2JqKSA/IG9iaiA6IG9ialtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59O1xuXG4vKipcbiAqIHJldHVybnMgdGhlIGRpc3BsYXkgZmllbGQgZGF0YSBmb3IgYW55IGRhdGFzZXQgd2lkZ2V0c1xuICogQmFzZWQgb24gdGhlIGJpbmQgZGlzcGxheSBleHByZXNzaW9uIG9yIGRpc3BsYXkgZXhwcmVzc2lvbiBvciBkaXNwbGF5IG5hbWUsXG4gKiBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgZm9ybWF0dGVkIGZyb20gdGhlIHBhc3NlZCBvcHRpb24gb2JqZWN0XG4gKiBJZiB0aGVyZSBpcyBmaWVsZCBpcyBzcGVjaWZpZWQsIGZpZWxkIHZhbHVlIGlzIG9idGFpbmVkIGZyb20gdGhlIGRhdGFPYmouXG4gKiBJZiBleHByZXNzaW9uIGlzIGdpdmVuLCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gdmFsdWUuXG4gKiBlbHNlIGNoZWNrIGZvciBiaW5kRXhwcmVzc2lvbiwgZXh0cmFjdCB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YU9ialxuICovXG5leHBvcnQgY29uc3QgZ2V0RXZhbHVhdGVkRGF0YSA9IChkYXRhT2JqOiBhbnksIG9wdGlvbnM6IGFueSwgY29udGV4dD86IGFueSkgPT4ge1xuICAgIGxldCBleHByZXNzaW9uVmFsdWU7XG4gICAgY29uc3QgZmllbGQgPSBvcHRpb25zLmZpZWxkLFxuICAgICAgICBleHByID0gb3B0aW9ucy5leHByZXNzaW9uLFxuICAgICAgICBiaW5kRXhwciA9IG9wdGlvbnMuYmluZEV4cHJlc3Npb247XG5cbiAgICAvLyBpZiBrZXkgaXMgYm91bmQgZXhwcmVzc2lvblxuICAgIGlmIChiaW5kRXhwcikge1xuICAgICAgICAvLyByZW1vdmUgJ2JpbmQ6JyBwcmVmaXggZnJvbSB0aGUgYm91bmRFeHByZXNzaW9uTmFtZVxuICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBiaW5kRXhwci5yZXBsYWNlKCdiaW5kOicsICcnKTtcblxuICAgICAgICAvLyBGb3IgYmluZCBleHByZXNzaW9uIHBhc3NpbmcgdGhlIGxhc3QgYXJndW1lbnQgdGhhdCB0aGUgb2JqZWN0IG9mIGRhdGFzZXQgaXRlbS5cbiAgICAgICAgLy8gTm90ZTogRm9yIHBhcnNlIGV4cHJlc3Npb24gd2UgYXJlIHNlbmRpbmcgZGF0YU9iaiB3aXRoIHRoZSBwcm9wZXJ5IG5hbWUgXCJfXzFcIiwgd2UgdXNlZCB0aGUgc2FtZSBwcm9wZXJ5IHRvIHNlbmQgdGhlIGxhc3QgYXJndW1lbnQgYXMgZGF0YXNldCBpdGVtXG4gICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbihleHByZXNzaW9uVmFsdWUpKXtcbiAgICAgICAgICAgIGV4cHJlc3Npb25WYWx1ZSA9IGV4cHJlc3Npb25WYWx1ZSsnOiBfXzEnO1xuICAgICAgICB9XG4gICAgICAgIC8vIHBhcnNlIHRoZSBleHByZXNzaW9uVmFsdWUgZm9yIHJlcGxhY2luZyBhbGwgdGhlIGV4cHJlc3Npb25zIHdpdGggdmFsdWVzIGluIHRoZSBvYmplY3RcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gZ2V0VXBkYXRlZEV4cHIoZXhwcmVzc2lvblZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBleHByID8gZXhwciA6IGZpZWxkO1xuICAgIH1cblxuICAgIC8vIEhhbmRsaW5nIGZpZWxkIG5hbWUgd2l0aCBzcGVjaWFsIGNoYXJlY3RlcnNcbiAgICAvLyBFeDogZmllbGQgPSBcImYgbmFtZVwiXG4gICAgaWYgKCFiaW5kRXhwciAmJiAhZXhwcikge1xuICAgICAgICByZXR1cm4gZ2V0KGRhdGFPYmosIGZpZWxkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJHBhcnNlRXhwcihleHByZXNzaW9uVmFsdWUpKGNvbnRleHQsIE9iamVjdC5hc3NpZ24oe30sIGRhdGFPYmosIHtfXzE6IGRhdGFPYmp9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNBY3RpdmVOYXZJdGVtID0gKGxpbmssIHJvdXRlTmFtZSkgPT4ge1xuICAgIGlmICghbGluayB8fCAhcm91dGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcm91dGVOYW1lID0gcm91dGVOYW1lLmluZGV4T2YoJz8nKSA9PT0gLTEgPyByb3V0ZU5hbWUgOiByb3V0ZU5hbWUuc3Vic3RyaW5nKDAsIHJvdXRlTmFtZS5pbmRleE9mKCc/JykpO1xuICAgIGxpbmsgPSBsaW5rLmluZGV4T2YoJz8nKSA9PT0gLTEgPyBsaW5rIDogbGluay5zdWJzdHJpbmcoMCwgbGluay5pbmRleE9mKCc/JykpO1xuICAgIGNvbnN0IHJvdXRlUmVnZXggPSBuZXcgUmVnRXhwKCdeKCNcXC98IyknICsgcm91dGVOYW1lICsgJyQnKTtcbiAgICByZXR1cm4gcm91dGVSZWdleC50ZXN0KGxpbmspO1xufTtcblxuLyoqXG4qIHJldHVybnMgdHJ1ZSBpZiB0aGUgbWVudSBoYXMgbGluayB0byB0aGUgY3VycmVudCBwYWdlLlxuKiBAcGFyYW0gbm9kZXNcbiogQHBhcmFtIHJvdXRlVXJsXG4qL1xuZXhwb3J0IGNvbnN0IGhhc0xpbmtUb0N1cnJlbnRQYWdlID0gKG5vZGVzOiBBcnJheTxOYXZOb2RlPiwgcm91dGVVcmwpID0+IHtcbiAgICByZXR1cm4gbm9kZXMuc29tZShub2RlID0+IHtcbiAgICAgICAgaWYgKGlzQWN0aXZlTmF2SXRlbShub2RlLmxpbmssIHJvdXRlVXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBoYXNMaW5rVG9DdXJyZW50UGFnZShub2RlLmNoaWxkcmVuLCByb3V0ZVVybCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmRlckJ5IEV4cHJlc3Npb24gYmFzZWQgb24gdGhlICdzb3J0ICdvcHRpb24gaW4gcGFnZWFibGUgb2JqZWN0XG4gKiByZXR1cm5lZCBieSBiYWNrZW5kXG4gKiBAcGFyYW0gcGFnZWFibGVPYmpcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRPcmRlckJ5RXhwciA9IHBhZ2VhYmxlT2JqID0+IHtcbiAgICBwYWdlYWJsZU9iaiA9IHBhZ2VhYmxlT2JqIHx8IFtdO1xuICAgIGNvbnN0IGV4cHJlc3Npb25zICAgICAgID0gW10sXG4gICAgICAgIEtFWV9WQUxfU0VQQVJBVE9SID0gJyAnLFxuICAgICAgICBGSUVMRF9TRVBBUkFUT1IgICA9ICcsJztcbiAgICBmb3JFYWNoKHBhZ2VhYmxlT2JqLCBvYmogPT4ge1xuICAgICAgICBpZiAob2JqLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaChvYmoucHJvcGVydHkgKyBLRVlfVkFMX1NFUEFSQVRPUiArIG9iai5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBqb2luKGV4cHJlc3Npb25zLCBGSUVMRF9TRVBBUkFUT1IpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0YVNldFdpZGdldCA9IHdpZGdldCA9PiB7XG4gICAgcmV0dXJuIERBVEFTRVRfV0lER0VUUy5oYXMod2lkZ2V0KTtcbn07XG5cbi8qVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB1cmwgdG8gdGhlIGltYWdlIGFmdGVyIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB1cmwqL1xuZXhwb3J0IGNvbnN0IGdldEltYWdlVXJsID0gKHVybFN0cmluZywgc2hvdWxkRW5jb2RlPywgZGVmYXVsdFVybD8pID0+IHtcbiAgICAvKkluIHN0dWRpbyBtb2RlIGJlZm9yZSBzZXR0aW5nIHBpY3R1cmVzb3VyY2UsIGNoZWNrIGlmIHRoZSBzdHVkaW9Db250cm9sbGVyIGlzIGxvYWRlZCBhbmQgbmV3IHBpY3R1cmVzb3VyY2UgaXMgaW4gJ3N0eWxlcy9pbWFnZXMvJyBwYXRoIG9yIG5vdC5cbiAgICAgKiBXaGVuIHBhZ2UgaXMgcmVmcmVzaGVkLCBsb2FkZXIuZ2lmIHdpbGwgYmUgbG9hZGVkIGZpcnN0IGFuZCBpdCB3aWxsIGJlIGluICdzdHlsZS9pbWFnZXMvJy5cbiAgICAgKiBQcmVwZW5kICdzZXJ2aWNlcy9wcm9qZWN0cy8nICsgJHJvb3RTY29wZS5wcm9qZWN0LmlkICsgJy93ZWIvcmVzb3VyY2VzL2ltYWdlcy9pbWFnZWxpc3RzLycgIGlmIHRoZSBpbWFnZSB1cmwgaXMganVzdCBpbWFnZSBuYW1lIGluIHRoZSBwcm9qZWN0IHJvb3QsXG4gICAgICogYW5kIGlmIHRoZSB1cmwgcG9pbnRpbmcgdG8gcmVzb3VyY2VzL2ltYWdlcy8gdGhlbiAnc2VydmljZXMvcHJvamVjdHMvJyArICRyb290U2NvcGUucHJvamVjdC5pZCArICcvd2ViLycqL1xuICAgIGlmIChpc1ZhbGlkV2ViVVJMKHVybFN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIHVybFN0cmluZztcbiAgICB9XG5cbiAgICAvLyBJZiBubyB2YWx1ZSBpcyBwcm92aWRlZCBmb3IgcGljdHVyZXNvdXJjZSBhc3NpZ24gcGljdHVyZXBsYWNlaG9sZGVyIG9yIGRlZmF1bHQtaW1hZ2VcbiAgICBpZiAoIXVybFN0cmluZykge1xuICAgICAgICBpZiAoaXNWYWxpZFdlYlVSTChkZWZhdWx0VXJsKSkge1xuICAgICAgICAgICAgdXJsU3RyaW5nID0gZGVmYXVsdFVybDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybFN0cmluZyA9ICAgKCBkZWZhdWx0VXJsIHx8ICdyZXNvdXJjZXMvaW1hZ2VzL2ltYWdlbGlzdHMvZGVmYXVsdC1pbWFnZS5wbmcnICk7XG4gICAgICAgIH1cbiAgICAgICAgdXJsU3RyaW5nID0gX1dNX0FQUF9QUk9KRUNULmlzUHJldmlldyA/IHVybFN0cmluZyA6IChpc1ZhbGlkV2ViVVJMKHVybFN0cmluZykgfHwgdXJsU3RyaW5nLnN0YXJ0c1dpdGgoX1dNX0FQUF9QUk9KRUNULmNkblVybCkgPyB1cmxTdHJpbmcgOiBfV01fQVBQX1BST0pFQ1QuY2RuVXJsICsgdXJsU3RyaW5nICk7XG4gICAgfVxuXG4gICAgdXJsU3RyaW5nID0gc2hvdWxkRW5jb2RlID8gZW5jb2RlVXJsKHVybFN0cmluZykgOiB1cmxTdHJpbmc7XG5cbiAgICAvLyBpZiB0aGUgcmVzb3VyY2UgdG8gYmUgbG9hZGVkIGlzIGluc2lkZSBhIHByZWZhYlxuICAgIGlmIChzdHJpbmdTdGFydHNXaXRoKHVybFN0cmluZywgJ3NlcnZpY2VzL3ByZWZhYnMnKSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiB1cmxTdHJpbmc7XG59O1xuXG4vKlRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHVybCB0byB0aGUgYmFja2dyb3VuZEltYWdlKi9cbmV4cG9ydCBjb25zdCBnZXRCYWNrR3JvdW5kSW1hZ2VVcmwgPSAodXJsU3RyaW5nKSA9PiB7XG4gICAgaWYgKHVybFN0cmluZyA9PT0gJycgfHwgdXJsU3RyaW5nID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHVybFN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuICd1cmwoJyArIGdldEltYWdlVXJsKHVybFN0cmluZykgKyAnKSc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzKHJlZmVyZW5jZTogYW55LCBrZXk6IGFueSwgbXVsdGk/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZToga2V5LFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiByZWZlcmVuY2UpLFxuICAgICAgICBtdWx0aTogbXVsdGlcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzV2lkZ2V0UmVmKHJlZmVyZW5jZTogYW55KSB7XG4gICAgcmV0dXJuIHByb3ZpZGVBcyhyZWZlcmVuY2UsIFdpZGdldFJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXNEaWFsb2dSZWYocmVmZXJlbmNlOiBhbnkpIHtcbiAgICByZXR1cm4gcHJvdmlkZUFzKHJlZmVyZW5jZSwgRGlhbG9nUmVmKTtcbn1cblxuZXhwb3J0IGNvbnN0IE5BVklHQVRJT05fVFlQRSA9IHtcbiAgICBBRFZBTkNFRDogJ0FkdmFuY2VkJyxcbiAgICBCQVNJQzogJ0Jhc2ljJyxcbiAgICBDTEFTU0lDOiAnQ2xhc3NpYycsXG4gICAgSU5MSU5FOiAnSW5saW5lJyxcbiAgICBOT05FOiAnTm9uZScsXG4gICAgT05ERU1BTkQ6ICdPbi1EZW1hbmQnLFxuICAgIFBBR0VSOiAnUGFnZXInLFxuICAgIFNDUk9MTDogJ1Njcm9sbCdcbn07XG5cbmV4cG9ydCBjb25zdCBJTlBVVE1PREUgPSB7XG4gICAgRklOQU5DSUFMOiAnZmluYW5jaWFsJyxcbiAgICBOQVRVUkFMOiAnbmF0dXJhbCdcbn07XG5cbmV4cG9ydCBjb25zdCBBVVRPQ0xPU0VfVFlQRSA9IHtcbiAgICBPVVRTSURFQ0xJQ0s6ICdvdXRzaWRlQ2xpY2snLFxuICAgIEFMV0FZUzogJ2Fsd2F5cycsXG4gICAgRElTQUJMRUQ6ICdkaXNhYmxlZCdcbn1cblxuZXhwb3J0IGNvbnN0IHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzID0gWydPbi1EZW1hbmQnLCAnU2Nyb2xsJ107XG5cbmV4cG9ydCBjb25zdCBnZXRXYXRjaElkZW50aWZpZXIgPSAoLi4uYXJncykgPT4gYXJncy5qb2luKCdfJyk7XG5cbmNvbnN0IHR5cGVzTWFwID0ge1xuICAgIG51bWJlcjogWydudW1iZXInLCAnaW50ZWdlcicsICdiaWdfaW50ZWdlcicsICdzaG9ydCcsICdmbG9hdCcsICdiaWdfZGVjaW1hbCcsICdkb3VibGUnLCAnbG9uZycsICdieXRlJ10sXG4gICAgc3RyaW5nOiBbJ3N0cmluZycsICd0ZXh0J10sXG4gICAgY2hhcmFjdGVyOiBbJ2NoYXJhY3RlciddLFxuICAgIGRhdGU6IFsnZGF0ZScsICd0aW1lJywgICd0aW1lc3RhbXAnLCAnZGF0ZXRpbWUnXVxufTtcbmNvbnN0IG1vZGVzID0ge1xuICAgIG51bWJlcjogWydleGFjdCcsICdub3RlcXVhbHMnLCAnbGVzc3RoYW4nLCAnbGVzc3RoYW5lcXVhbCcsICdncmVhdGVydGhhbicsICdncmVhdGVydGhhbmVxdWFsJywgJ251bGwnLCAnaXNub3RudWxsJ10sXG4gICAgc3RyaW5nOiBbJ2FueXdoZXJlaWdub3JlY2FzZScsICdhbnl3aGVyZScsICdzdGFydGlnbm9yZWNhc2UnLCAnc3RhcnQnLCAnZW5kaWdub3JlY2FzZScsICdlbmQnLCAnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBjaGFyYWN0ZXI6IFsnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBkYXRlOiBbJ2V4YWN0JywgJ2xlc3N0aGFuJywgJ2xlc3N0aGFuZXF1YWwnLCAnZ3JlYXRlcnRoYW4nLCAnZ3JlYXRlcnRoYW5lcXVhbCcsICdudWxsJywgJ25vdGVxdWFscycsICdpc25vdG51bGwnXVxufTtcbmNvbnN0IG1hdGNoTW9kZVR5cGVzTWFwID0ge1xuICAgIGJvb2xlYW46IFsnZXhhY3QnLCAnbnVsbCcsICdpc25vdG51bGwnXSxcbiAgICBjbG9iOiBbXSxcbiAgICBibG9iOiBbXVxufTtcbmV4cG9ydCBjb25zdCBnZXRNYXRjaE1vZGVUeXBlc01hcCA9IChtdWx0aU1vZGU/KSA9PiB7XG4gICAgaWYgKG11bHRpTW9kZSkge1xuICAgICAgICBtb2Rlcy5udW1iZXIucHVzaCgnaW4nLCAnbm90aW4nLCAnYmV0d2VlbicpO1xuICAgICAgICBtb2Rlcy5kYXRlLnB1c2goJ2JldHdlZW4nKTtcbiAgICAgICAgbW9kZXMuc3RyaW5nLnB1c2goJ2luJywgJ25vdGluJyk7XG4gICAgICAgIG1vZGVzLmNoYXJhY3Rlci5wdXNoKCdpbicsICdub3RpbicpO1xuICAgIH1cblxuICAgIGZvckVhY2godHlwZXNNYXAsICh0eXBlcywgcHJpbVR5cGUpID0+IHtcbiAgICAgICAgZm9yRWFjaCh0eXBlcywgdHlwZSA9PiB7XG4gICAgICAgICAgICBtYXRjaE1vZGVUeXBlc01hcFt0eXBlXSA9IG1vZGVzW3ByaW1UeXBlXTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy8gdGhpcyBpcyB1c2VkIGluIGZpbHRlciBjcml0ZXJpYSB3aGVuIHRoZSB1c2VyIHR5cGVzIHRoZSBjb2x1bW4gbmFtZSBtYW51YWxseSBhbmQgd2hlcmUgd2UgZG9udCBrbm93IHRoZSB0eXBlIG9mIHRoZSBjb2x1bW5cbiAgICBtYXRjaE1vZGVUeXBlc01hcFsnZGVmYXVsdCddID0gdW5pb24obW9kZXNbJ251bWJlciddLCBtb2Rlc1snc3RyaW5nJ10sIG1vZGVzWydjaGFyYWN0ZXInXSwgbW9kZXNbJ2RhdGUnXSwgbW9kZXNbJ2RhdGUnXSk7XG4gICAgcmV0dXJuIG1hdGNoTW9kZVR5cGVzTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1hdGNoTW9kZU1zZ3MgPSAoYXBwTG9jYWxlKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSCxcbiAgICAgICAgc3RhcnRpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSF9JR05PUkVDQVNFLFxuICAgICAgICBlbmQgICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0VORFNfV0lUSCxcbiAgICAgICAgZW5kaWdub3JlY2FzZSAgICA6IGFwcExvY2FsZS5MQUJFTF9FTkRTX1dJVEhfSUdOT1JFQ0FTRSxcbiAgICAgICAgYW55d2hlcmUgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9DT05UQUlOUyxcbiAgICAgICAgYW55d2hlcmVpZ25vcmVjYXNlOiBhcHBMb2NhbGUuTEFCRUxfQ09OVEFJTlNfSUdOT1JFQ0FTRSxcbiAgICAgICAgZXhhY3QgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UTyxcbiAgICAgICAgZXhhY3RpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBub3RlcXVhbHMgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UTyxcbiAgICAgICAgbm90ZXF1YWxzaWdub3JlY2FzZTogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBsZXNzdGhhbiAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0xFU1NfVEhBTixcbiAgICAgICAgbGVzc3RoYW5lcXVhbCAgICA6IGFwcExvY2FsZS5MQUJFTF9MRVNTX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBncmVhdGVydGhhbiAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0dSRUFURVJfVEhBTixcbiAgICAgICAgZ3JlYXRlcnRoYW5lcXVhbCA6IGFwcExvY2FsZS5MQUJFTF9HUkVBVEVSX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBudWxsICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTEwsXG4gICAgICAgIGlzbm90bnVsbCAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX05VTEwsXG4gICAgICAgIGVtcHR5ICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfRU1QVFksXG4gICAgICAgIGlzbm90ZW1wdHkgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX0VNUFRZLFxuICAgICAgICBudWxsb3JlbXB0eSAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTExfT1JfRU1QVFksXG4gICAgICAgIGluICAgICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSU4sXG4gICAgICAgIG5vdGluICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfTk9UX0lOLFxuICAgICAgICBiZXR3ZWVuICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0JFVFdFRU5cbiAgICB9O1xufTtcblxuLy8gUmV0dXJucyBhcnJheSBvZiBjbGFzc2VzIHRoYXQgYXJlIGV2YWx1YXRlZCB0cnVlIGZvciBnaXZlbiBvYmplY3Qgb3IgYXJyYXlcbmNvbnN0IGdldENsYXNzZXNBcnJheSA9IGNsYXNzVmFsID0+IHtcbiAgICBsZXQgY2xhc3NlcyA9IFtdO1xuXG4gICAgaWYgKGlzQXJyYXkoY2xhc3NWYWwpKSB7XG4gICAgICAgIGNsYXNzVmFsLmZvckVhY2godiA9PiB7XG4gICAgICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5jb25jYXQoZ2V0Q2xhc3Nlc0FycmF5KHYpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbGFzc2VzO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3QoY2xhc3NWYWwpKSB7XG4gICAgICAgIGZvckVhY2goY2xhc3NWYWwsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmNvbmNhdChrZXkuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzID0gKG52LCBvdj8pID0+IHtcbiAgICBsZXQgdG9BZGQ7XG4gICAgbGV0IHRvUmVtb3ZlO1xuICAgIC8vIGlmIHRoZSBjb25kaXRpb25hbCBjbGFzcyBwcm9wZXJ0eSBoYXMgYWxyZWFkeSB0b0FkZCBhbmQgdG9SZW1vdmUgYXJyYXlzIHRoZW4gdGFrZSB0aGF0IG90aGVyd2lzZSBidWlsZCB0aG9zZSBhcnJheXNcbiAgICBjb25zdCBjbGFzc1RvQWRkID0gbnYudG9BZGQgfHwgbnY7XG4gICAgY29uc3QgY2xhc3NUb1JlbW92ZSA9IG52LnRvUmVtb3ZlIHx8IG92O1xuICAgIGlmIChpc09iamVjdChudikpIHtcbiAgICAgICAgdG9BZGQgPSBpc0FycmF5KGNsYXNzVG9BZGQpID8gY2xhc3NUb0FkZCA6IGdldENsYXNzZXNBcnJheShjbGFzc1RvQWRkIHx8IFtdKTtcbiAgICAgICAgdG9SZW1vdmUgPSBjbGFzc1RvUmVtb3ZlID8gKGlzQXJyYXkoY2xhc3NUb1JlbW92ZSkgPyBjbGFzc1RvUmVtb3ZlIDogZ2V0Q2xhc3Nlc0FycmF5KGNsYXNzVG9SZW1vdmUpKSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvQWRkID0gY2xhc3NUb0FkZCA/IFtjbGFzc1RvQWRkXSA6IFtdO1xuICAgICAgICB0b1JlbW92ZSA9IGNsYXNzVG9SZW1vdmUgPyBbY2xhc3NUb1JlbW92ZV0gOiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHt0b0FkZCwgdG9SZW1vdmV9O1xufTtcblxuLypoZWxwZXIgZnVuY3Rpb24gZm9yIHByZXBhcmVGaWVsZERlZnMqL1xuY29uc3QgcHVzaEZpZWxkRGVmID0gKGRhdGFPYmplY3QsIGNvbHVtbkRlZk9iaiwgbmFtZVByZWZpeCwgb3B0aW9ucykgPT4ge1xuICAgIC8qbG9vcCBvdmVyIHRoZSBmaWVsZHMgaW4gdGhlIGRhdGFPYmplY3QgdG8gcHJvY2VzcyB0aGVtKi9cbiAgICBsZXQgbW9kaWZpZWRUaXRsZSxcbiAgICAgICAgcmVsYXRlZFRhYmxlLFxuICAgICAgICByZWxhdGVkRmllbGQsXG4gICAgICAgIHJlbGF0ZWRJbmZvLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGlzUmVsYXRlZDtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBmb3JFYWNoKGRhdGFPYmplY3QsICh2YWx1ZSwgdGl0bGUpID0+IHtcbiAgICAgICAgaWYgKGluY2x1ZGVzKHRpdGxlLCAnLicpKSB7XG4gICAgICAgICAgICByZWxhdGVkSW5mbyA9IHNwbGl0KHRpdGxlLCAnLicpO1xuICAgICAgICAgICAgcmVsYXRlZFRhYmxlID0gcmVsYXRlZEluZm9bMF07XG4gICAgICAgICAgICByZWxhdGVkRmllbGQgPSByZWxhdGVkSW5mb1sxXTtcbiAgICAgICAgICAgIGlzUmVsYXRlZCAgICA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMubm9Nb2RpZnlUaXRsZSkge1xuICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IHRpdGxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHRpdGxlKSkge1xuICAgICAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSBwcmV0dGlmeUxhYmVsKHRpdGxlKTtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gZGVIeXBoZW5hdGUobW9kaWZpZWRUaXRsZSk7XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IG5hbWVQcmVmaXggPyBpbml0Q2FwcyhuYW1lUHJlZml4KSArICcgJyArIG1vZGlmaWVkVGl0bGUgOiBtb2RpZmllZFRpdGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGl0bGUgPSBuYW1lUHJlZml4ID8gbmFtZVByZWZpeCArICcuJyArIHRpdGxlIDogdGl0bGU7XG4gICAgICAgIGlmIChpc1JlbGF0ZWQpIHtcbiAgICAgICAgICAgIC8vIEZvciByZWxhdGVkIGNvbHVtbnMsIHNob3J0ZW4gdGhlIHRpdGxlIHRvIGxhc3QgdHdvIHdvcmRzXG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBzcGxpdChtb2RpZmllZFRpdGxlLCAnICcpO1xuICAgICAgICAgICAgZmllbGROYW1lID0gZmllbGROYW1lLmxlbmd0aCA+IDEgPyBmaWVsZE5hbWVbZmllbGROYW1lLmxlbmd0aCAtIDJdICsgJyAnICsgZmllbGROYW1lW2ZpZWxkTmFtZS5sZW5ndGggLSAxXSA6IGZpZWxkTmFtZVswXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpZWxkTmFtZSA9IG1vZGlmaWVkVGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmT2JqID0gb3B0aW9ucy5zZXRCaW5kaW5nRmllbGQgPyB7J2Rpc3BsYXlOYW1lJzogZmllbGROYW1lLCAnZmllbGQnOiB0aXRsZSwgJ3JlbGF0ZWRUYWJsZSc6IHJlbGF0ZWRUYWJsZSwgJ3JlbGF0ZWRGaWVsZCc6IHJlbGF0ZWRGaWVsZCB8fCBtb2RpZmllZFRpdGxlfVxuICAgICAgICA6IHsnZGlzcGxheU5hbWUnOiBmaWVsZE5hbWUsICdyZWxhdGVkVGFibGUnOiByZWxhdGVkVGFibGUsICdyZWxhdGVkRmllbGQnOiByZWxhdGVkRmllbGQgfHwgbW9kaWZpZWRUaXRsZX07XG4gICAgICAgIC8qaWYgZmllbGQgaXMgYSBsZWFmIG5vZGUsIHB1c2ggaXQgaW4gdGhlIGNvbHVtbkRlZnMqL1xuICAgICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCAoaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlWzBdKSkge1xuICAgICAgICAgICAgLyppZiB0aGUgY29sdW1uIGNvdW50ZXIgaGFzIHJlYWNoZWQgdXBwZXJCb3VuZCByZXR1cm4qL1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXBwZXJCb3VuZCAmJiBvcHRpb25zLmNvbHVtbkNvdW50ID09PSBvcHRpb25zLnVwcGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5EZWZPYmoudGVybWluYWxzLnB1c2goZGVmT2JqKTtcbiAgICAgICAgICAgIC8qaW5jcmVtZW50IHRoZSBjb2x1bW4gY291bnRlciovXG4gICAgICAgICAgICBvcHRpb25zLmNvbHVtbkNvdW50ICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKmVsc2UgZmllbGQgaXMgYW4gb2JqZWN0LCBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5Ki9cbiAgICAgICAgICAgIC8qIGlmIHBhcmVudCBub2RlIHRvIGJlIGluY2x1ZGVkLCBpbmNsdWRlIGl0ICovXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jb2x1bW5Db3VudCAhPT0gb3B0aW9ucy51cHBlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uRGVmT2JqLm9iamVjdHMucHVzaChkZWZPYmopO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBpZiBmaWVsZCBpcyBhbiBhcnJheSBub2RlLCBwcm9jZXNzIGl0cyBmaXJzdCBjaGlsZCAqL1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlWzBdKSB7XG4gICAgICAgICAgICAgICAgcHVzaEZpZWxkRGVmKHZhbHVlWzBdLCBjb2x1bW5EZWZPYmosIHRpdGxlICsgJ1swXScsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwdXNoRmllbGREZWYodmFsdWUsIGNvbHVtbkRlZk9iaiwgdGl0bGUsIG9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5jb25zdCBnZXRNZXRhRGF0YUZyb21EYXRhID0gKGRhdGEpID0+IHtcbiAgICBsZXQgZGF0YU9iamVjdDtcbiAgICBpZiAoaXNBcnJheShkYXRhKSkge1xuICAgICAgICBpZiAoaXNPYmplY3QoZGF0YVswXSkpIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBnZXRDbG9uZWRPYmplY3QoZGF0YVswXSk7XG4gICAgICAgICAgICAvKkxvb3Agb3ZlciB0aGUgb2JqZWN0IHRvIGZpbmQgb3V0IGFueSBudWxsIHZhbHVlcy4gSWYgYW55IG51bGwgdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoZSBmaXJzdCByb3csIGNoZWNrIGFuZCBhc3NpZ24gdGhlIHZhbHVlcyBmcm9tIG90aGVyIHJvdy5cbiAgICAgICAgICAgICAqIEFzIGNvbHVtbiBnZW5lcmF0aW9uIGlzIGRlcGVuZGVudCBvbiBkYXRhLCBmb3IgcmVsYXRlZCBmaWVsZHMgaWYgZmlyc3Qgcm93IHZhbHVlIGlzIG51bGwsIGNvbHVtbnMgYXJlIG5vdCBnZW5lcmF0ZWQuXG4gICAgICAgICAgICAgKiBUbyBwcmV2ZW50IHRoaXMsIGNoZWNrIHRoZSBkYXRhIGluIG90aGVyIHJvd3MgYW5kIGdlbmVyYXRlIHRoZSBjb2x1bW5zLiBOZXcga2V5cyBmcm9tIG90aGVycyByb3dzIGFyZSBhbHNvIGFkZGVkKi9cbiAgICAgICAgICAgIGZvckVhY2goZGF0YSwgKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKGluZGV4ICsgMSkgPj0gMTApIHsgLy8gTGltaXQgdGhlIGRhdGEgc2VhcmNoIHRvIGZpcnN0IDEwIHJlY29yZHNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhc3NpZ25XaXRoKGRhdGFPYmplY3QsIHJvdywgKG9ialZhbHVlLCBzcmNWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG9ialZhbHVlID09PSBudWxsIHx8IG9ialZhbHVlID09PSB1bmRlZmluZWQpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YU9iamVjdCA9IGRhdGFbMF07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhT2JqZWN0ID0gZGF0YTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFPYmplY3Q7XG59O1xuXG5leHBvcnQgY29uc3QgcHJlcGFyZUZpZWxkRGVmcyA9IChkYXRhLCBvcHRpb25zPykgPT4ge1xuICAgIGxldCBkYXRhT2JqZWN0O1xuICAgIGNvbnN0IGNvbHVtbkRlZiA9IHtcbiAgICAgICAgICAgICdvYmplY3RzJyA6IFtdLFxuICAgICAgICAgICAgJ3Rlcm1pbmFscycgOiBbXVxuICAgICAgICB9O1xuICAgIC8qaWYgbm8gZGF0YSBwcm92aWRlZCwgaW5pdGlhbGl6ZSBkZWZhdWx0IGNvbHVtbiBkZWZpbml0aW9ucyovXG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICAgIGRhdGEgPSBbXTtcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgb3B0aW9ucy5zZXRCaW5kaW5nRmllbGQgPSB0cnVlO1xuICAgIG9wdGlvbnMuY29sdW1uQ291bnQgPSAwO1xuICAgIGRhdGFPYmplY3QgPSBnZXRNZXRhRGF0YUZyb21EYXRhKGRhdGEpO1xuICAgIC8qZmlyc3Qgb2YgdGhlIG1hbnkgZGF0YSBvYmplY3RzIGZyb20gZ3JpZCBkYXRhKi9cbiAgICBwdXNoRmllbGREZWYoZGF0YU9iamVjdCwgY29sdW1uRGVmLCAnJywgb3B0aW9ucyk7XG4gICAgaWYgKCFvcHRpb25zIHx8IChvcHRpb25zICYmICFvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbkRlZi50ZXJtaW5hbHM7XG4gICAgfVxuICAgIHN3aXRjaCAob3B0aW9ucy5maWx0ZXIpIHtcbiAgICAgICAgY2FzZSAnYWxsJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWY7XG4gICAgICAgIGNhc2UgJ29iamVjdHMnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbkRlZi5vYmplY3RzO1xuICAgICAgICBjYXNlICd0ZXJtaW5hbHMnOlxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbkRlZi50ZXJtaW5hbHM7XG4gICAgfVxuICAgIHJldHVybiBjb2x1bW5EZWY7XG59O1xuXG5cbi8qKlxuICogVG8gZ2V0IGNvbnRhaW5lciB0YXJnZXQgZWxlbWVudCB0byBhcHBlbmQgdGhlIGxpc3QgZm9yIHNlYXJjaCBhbmQgZGF0ZXBpY2tlciBwYW5lbCB3aGVuIGZpZWxkIHByZXNlbnQgaW4gZGlhbG9nXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDb250YWluZXJUYXJnZXRDbGFzcyA9IChlbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuICcud20tYXBwJztcblxuICAgIC8vIEJlbG93IGNvZGUgaXMgbm90IHdvcmtpbmcgd2hlbiB3ZSBoYXZlIG5lc3RlZCBkaWFsb2dzLlxuICAgIC8vIE5lc3RlZCBkaWFsb2dzIGNhc2Ugd2Ugd2lsbCBoYXZlICBtdWx0aXBsZSAnLm1vZGFsLWNvbnRlbnQnIGNsYXNzZXMgb24gRE9NIGR1ZSB0byB0aGF0IGNvbnRhaW5lciBwb3NpdGlvbnMgaXMgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQuXG4gICAgLy8gQmVsb3cgY29kZSB0byBmaXggdGhlIGlzc3VlID09PiBXTVMtMTg3NTFcbiAgICAvLyBBcyByZWdyZXNzaW9uIHdlIGdvdCA9PT4gV01TLTE5ODM1XG5cbiAgICAvLyBpZiAoZWxlbWVudC5jbG9zZXN0KCcubW9kYWwtZGlhbG9nJykpIHtcbiAgICAvLyAgICAgcmV0dXJuICcubW9kYWwtY29udGVudCc7XG4gICAgLy8gfSBlbHNlIHtcbiAgICAvLyAgICAgcmV0dXJuICdib2R5JztcbiAgICAvLyB9XG5cbn1cblxuLyoqXG4gKiBUbyBleHRyYWN0IHRoZSBWYXJpYWJsZSBOYW1lIGZyb20gYSBXaWRnZXQncyBiaW5kZGF0YXNvdXJjZSBhdHRyaWJ1dGVcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dHJhY3REYXRhU291cmNlTmFtZSA9IChiaW5kRGF0YVNvdXJjZSkgPT4ge1xuICAgIGlmICghYmluZERhdGFTb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgZGF0YVNvdXJjZU5hbWU7XG4gICAgY29uc3QgcGFydHMgPSBiaW5kRGF0YVNvdXJjZS5zcGxpdCgnLicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxICYmIHBhcnRzWzBdID09PSAnVmFyaWFibGVzJykge1xuICAgICAgICBkYXRhU291cmNlTmFtZSA9IHBhcnRzWzFdO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YVNvdXJjZU5hbWU7XG59XG5cbmV4cG9ydCBjb25zdCBzZXRGb2N1c1RyYXAgPSAoY29udGFpbmVyLCBhbGxvd091dHNpZGVDbGljaywgc2V0UmV0dXJuRm9jdXNFbGVtZW50PykgPT4ge1xuICAgIHJldHVybiBjcmVhdGVGb2N1c1RyYXAoY29udGFpbmVyLCB7XG4gICAgICAgIG9uQWN0aXZhdGU6ICgpID0+IGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdpcy1hY3RpdmUnKSxcbiAgICAgICAgb25EZWFjdGl2YXRlOiAoKSA9PiBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJyksXG4gICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBhbGxvd091dHNpZGVDbGljayxcbiAgICAgICAgc2V0UmV0dXJuRm9jdXM6IHNldFJldHVybkZvY3VzRWxlbWVudCxcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBHZXRzIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyB3aXRoaW4gYSBzcGVjaWZpZWQgZWxlbWVudFxuICogQHBhcmFtIGVsZW1lbnQge0hUTUxFbGVtZW50fVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5leHBvcnQgY29uc3QgZ2V0S2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50cyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnROb2RlTGlzdCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYSwgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgZGV0YWlscywgaWZyYW1lLCBlbWJlZCwgb2JqZWN0LCBzdW1tYXJ5IGRpYWxvZywgYXVkaW9bY29udHJvbHNdLCB2aWRlb1tjb250cm9sc10sIFtjb250ZW50ZWRpdGFibGVdJyk7XG4gICAgY29uc3QgZWxlbWVudHMgPSBBcnJheS5mcm9tKGVsZW1lbnROb2RlTGlzdCk7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIHJldHVybiAoIWVsLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiAhZWwuaGFzQXR0cmlidXRlKCdoaWRkZW4nKVxuICAgICAgICAgICAgJiYgKCFlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHwgKGVsLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSAmJiAhZWwuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIikuc3RhcnRzV2l0aCgnLScpKSkpO1xuICAgIH0pO1xufVxuIl19
488
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy91dGlscy93aWRnZXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQ0gsVUFBVSxFQUNWLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLFNBQVMsRUFDVCxjQUFjLEVBQ2QsZUFBZSxFQUNmLFFBQVEsRUFDUixhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUMsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV0SCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUTtJQUN2RyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hJOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENB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QGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgJHBhcnNlRXhwcixcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uLFxuICAgIGRlSHlwaGVuYXRlLFxuICAgIGVuY29kZVVybCxcbiAgICBGb3JtV2lkZ2V0VHlwZSxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgaW5pdENhcHMsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBwcmV0dGlmeUxhYmVsLFxuICAgIHN0cmluZ1N0YXJ0c1dpdGhcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtEaWFsb2dSZWYsIFdpZGdldFJlZn0gZnJvbSAnLi4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHtjcmVhdGVGb2N1c1RyYXB9IGZyb20gJ0B3YXZlbWFrZXIvZm9jdXMtdHJhcCc7XG5pbXBvcnQge05hdk5vZGV9IGZyb20gXCIuLi93aWRnZXRzL2NvbW1vbi9iYXNlL2RhdGFzZXQtYXdhcmUtbmF2LmNvbXBvbmVudFwiO1xuaW1wb3J0IHthc3NpZ25XaXRoLCBmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBpc0FycmF5LCBpc051bGwsIGlzT2JqZWN0LCBpc1N0cmluZywgam9pbiwgc3BsaXQsIHVuaW9ufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmNvbnN0IERBVEFTRVRfV0lER0VUUyA9IG5ldyBTZXQoW0Zvcm1XaWRnZXRUeXBlLlNFTEVDVCwgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1hTRVQsIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VULFxuICAgIEZvcm1XaWRnZXRUeXBlLlNXSVRDSCwgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFLCBGb3JtV2lkZ2V0VHlwZS5DSElQUywgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFELCBGb3JtV2lkZ2V0VHlwZS5SQVRJTkddKTtcbi8qKlxuICogUmV0dXJucyB0aGUgcGFyc2VkLCB1cGRhdGVkIGJvdW5kIGV4cHJlc3Npb25cbiAqIGlmIHRoZSBleHByZXNzaW9uIGlzICRbZGF0YVskaV1bZmlyc3ROYW1lXV0gKyAnLS0nICsgJFtsYXN0TmFtZV0gKyAnLS0nICsgJFsnQElEQCddXG4gKiByZXR1cm5zIF9fMS5maXJzdE5hbWUgKyAnLS0nICsgbGFzdE5hbWUgKyAnLS0nICsgX18xWydASURAJ11cbiAqL1xuY29uc3QgZ2V0VXBkYXRlZEV4cHIgPSAoZXhwcjogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHVwZGF0ZWQgPSAnJywgY2gsIG5leHQsIGksIGosIG1hdGNoQ2gsIG1hdGNoQ291bnQsIGlzUXVvdGVkU3RyLCBzdWJTdHIsIGlzUXVvdGVkU3RyRXZhbHVhdGVkO1xuXG4gICAgZXhwciA9IGV4cHIucmVwbGFjZSgvXFwkXFxbZGF0YVxcW1xcJGlcXF0vZywgJyRbX18xJyk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgZXhwci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaCA9IGV4cHJbaV07XG4gICAgICAgIG5leHQgPSBleHByW2kgKyAxXTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogaWYgdGhlIGV4cHJlc3Npb24gc3RhcnRzIHdpdGggJFssIGNoZWNrIHRoZSBuZXh0KGNoKSBjaGFyYWN0ZXIsXG4gICAgICAgICAqICAgIGlmIGNoIGlzIGEgcXVvdGUoJywgXCIpIGNoYW5nZSB0aGUgZXhwciB0byBfX1tcbiAgICAgICAgICogICAgaWYgY2ggaXMgYSB3aGl0ZVNwYWNlLCByZW1vdmUgaXRcbiAgICAgICAgICogICAgZWxzZSByZW1vdmUgJFtcbiAgICAgICAgICovXG4gICAgICAgIGlmIChjaCA9PT0gJyQnICYmIG5leHQgPT09ICdbJykge1xuICAgICAgICAgICAgbWF0Y2hDb3VudCA9IDE7XG4gICAgICAgICAgICBpc1F1b3RlZFN0ckV2YWx1YXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaXNRdW90ZWRTdHIgPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yIChqID0gaSArIDI7IGogPCBleHByLmxlbmd0aDsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICBtYXRjaENoID0gZXhwcltqXTtcblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaENoID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1F1b3RlZFN0ckV2YWx1YXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBpc1F1b3RlZFN0ciA9IGV4cHJbal0gPT09ICdcIicgfHwgZXhwcltqXSA9PT0gJ1xcJyc7XG4gICAgICAgICAgICAgICAgICAgIGlzUXVvdGVkU3RyRXZhbHVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hDaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoQ291bnQrKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoQ2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaENvdW50LS07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaENvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YlN0ciA9IGV4cHIuc3Vic3RyaW5nKGkgKyAyLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUXVvdGVkU3RyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkICs9ICdfXzFbJyArIHN1YlN0ciArICddJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgKz0gc3ViU3RyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVkICs9IGNoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9ialZhbHVlQnlLZXkgPSAob2JqOiBhbnksIHN0cktleTogc3RyaW5nKSA9PiB7XG4gICAgLyogY2hlY2sgZm9yIHRoZSBrZXktc3RyaW5nICovXG4gICAgaWYgKHN0cktleSkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICAvKiBjb252ZXJ0IGluZGV4ZXMgdG8gcHJvcGVydGllcywgc28gYXMgdG8gd29yayBmb3IgZXZlbiAna2V5MVswXS5jaGlsZDEnKi9cbiAgICAgICAgc3RyS2V5LnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJykuc3BsaXQoJy4nKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBJZiBvYmogaXMgbnVsbCwgdGhlbiBhc3NpZ24gdmFsIHRvIG51bGwuXG4gICAgICAgICAgICB2YWwgPSAodmFsICYmIHZhbFtrZXldKSB8fCAoaXNOdWxsKG9iaikgPyBvYmogOiBvYmpba2V5XSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xufTtcblxuLyoqXG4gKiByZXR1cm5zIHRoZSBkaXNwbGF5IGZpZWxkIGRhdGEgZm9yIGFueSBkYXRhc2V0IHdpZGdldHNcbiAqIEJhc2VkIG9uIHRoZSBiaW5kIGRpc3BsYXkgZXhwcmVzc2lvbiBvciBkaXNwbGF5IGV4cHJlc3Npb24gb3IgZGlzcGxheSBuYW1lLFxuICogZGF0YSBpcyBleHRyYWN0ZWQgYW5kIGZvcm1hdHRlZCBmcm9tIHRoZSBwYXNzZWQgb3B0aW9uIG9iamVjdFxuICogSWYgdGhlcmUgaXMgZmllbGQgaXMgc3BlY2lmaWVkLCBmaWVsZCB2YWx1ZSBpcyBvYnRhaW5lZCBmcm9tIHRoZSBkYXRhT2JqLlxuICogSWYgZXhwcmVzc2lvbiBpcyBnaXZlbiwgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIHZhbHVlLlxuICogZWxzZSBjaGVjayBmb3IgYmluZEV4cHJlc3Npb24sIGV4dHJhY3QgdGhlIHZhbHVlIGZyb20gdGhlIGRhdGFPYmpcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV2YWx1YXRlZERhdGEgPSAoZGF0YU9iajogYW55LCBvcHRpb25zOiBhbnksIGNvbnRleHQ/OiBhbnkpID0+IHtcbiAgICBsZXQgZXhwcmVzc2lvblZhbHVlO1xuICAgIGNvbnN0IGZpZWxkID0gb3B0aW9ucy5maWVsZCxcbiAgICAgICAgZXhwciA9IG9wdGlvbnMuZXhwcmVzc2lvbixcbiAgICAgICAgYmluZEV4cHIgPSBvcHRpb25zLmJpbmRFeHByZXNzaW9uO1xuXG4gICAgLy8gaWYga2V5IGlzIGJvdW5kIGV4cHJlc3Npb25cbiAgICBpZiAoYmluZEV4cHIpIHtcbiAgICAgICAgLy8gcmVtb3ZlICdiaW5kOicgcHJlZml4IGZyb20gdGhlIGJvdW5kRXhwcmVzc2lvbk5hbWVcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gYmluZEV4cHIucmVwbGFjZSgnYmluZDonLCAnJyk7XG5cbiAgICAgICAgLy8gRm9yIGJpbmQgZXhwcmVzc2lvbiBwYXNzaW5nIHRoZSBsYXN0IGFyZ3VtZW50IHRoYXQgdGhlIG9iamVjdCBvZiBkYXRhc2V0IGl0ZW0uXG4gICAgICAgIC8vIE5vdGU6IEZvciBwYXJzZSBleHByZXNzaW9uIHdlIGFyZSBzZW5kaW5nIGRhdGFPYmogd2l0aCB0aGUgcHJvcGVyeSBuYW1lIFwiX18xXCIsIHdlIHVzZWQgdGhlIHNhbWUgcHJvcGVyeSB0byBzZW5kIHRoZSBsYXN0IGFyZ3VtZW50IGFzIGRhdGFzZXQgaXRlbVxuICAgICAgICBpZihjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24oZXhwcmVzc2lvblZhbHVlKSl7XG4gICAgICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBleHByZXNzaW9uVmFsdWUrJzogX18xJztcbiAgICAgICAgfVxuICAgICAgICAvLyBwYXJzZSB0aGUgZXhwcmVzc2lvblZhbHVlIGZvciByZXBsYWNpbmcgYWxsIHRoZSBleHByZXNzaW9ucyB3aXRoIHZhbHVlcyBpbiB0aGUgb2JqZWN0XG4gICAgICAgIGV4cHJlc3Npb25WYWx1ZSA9IGdldFVwZGF0ZWRFeHByKGV4cHJlc3Npb25WYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gZXhwciA/IGV4cHIgOiBmaWVsZDtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGluZyBmaWVsZCBuYW1lIHdpdGggc3BlY2lhbCBjaGFyZWN0ZXJzXG4gICAgLy8gRXg6IGZpZWxkID0gXCJmIG5hbWVcIlxuICAgIGlmICghYmluZEV4cHIgJiYgIWV4cHIpIHtcbiAgICAgICAgcmV0dXJuIGdldChkYXRhT2JqLCBmaWVsZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRwYXJzZUV4cHIoZXhwcmVzc2lvblZhbHVlKShjb250ZXh0LCBPYmplY3QuYXNzaWduKHt9LCBkYXRhT2JqLCB7X18xOiBkYXRhT2JqfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQWN0aXZlTmF2SXRlbSA9IChsaW5rLCByb3V0ZU5hbWUpID0+IHtcbiAgICBpZiAoIWxpbmsgfHwgIXJvdXRlTmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJvdXRlTmFtZSA9IHJvdXRlTmFtZS5pbmRleE9mKCc/JykgPT09IC0xID8gcm91dGVOYW1lIDogcm91dGVOYW1lLnN1YnN0cmluZygwLCByb3V0ZU5hbWUuaW5kZXhPZignPycpKTtcbiAgICBsaW5rID0gbGluay5pbmRleE9mKCc/JykgPT09IC0xID8gbGluayA6IGxpbmsuc3Vic3RyaW5nKDAsIGxpbmsuaW5kZXhPZignPycpKTtcbiAgICBjb25zdCByb3V0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXigjXFwvfCMpJyArIHJvdXRlTmFtZSArICckJyk7XG4gICAgcmV0dXJuIHJvdXRlUmVnZXgudGVzdChsaW5rKTtcbn07XG5cbi8qKlxuKiByZXR1cm5zIHRydWUgaWYgdGhlIG1lbnUgaGFzIGxpbmsgdG8gdGhlIGN1cnJlbnQgcGFnZS5cbiogQHBhcmFtIG5vZGVzXG4qIEBwYXJhbSByb3V0ZVVybFxuKi9cbmV4cG9ydCBjb25zdCBoYXNMaW5rVG9DdXJyZW50UGFnZSA9IChub2RlczogQXJyYXk8TmF2Tm9kZT4sIHJvdXRlVXJsKSA9PiB7XG4gICAgcmV0dXJuIG5vZGVzLnNvbWUobm9kZSA9PiB7XG4gICAgICAgIGlmIChpc0FjdGl2ZU5hdkl0ZW0obm9kZS5saW5rLCByb3V0ZVVybCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzTGlua1RvQ3VycmVudFBhZ2Uobm9kZS5jaGlsZHJlbiwgcm91dGVVcmwpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JkZXJCeSBFeHByZXNzaW9uIGJhc2VkIG9uIHRoZSAnc29ydCAnb3B0aW9uIGluIHBhZ2VhYmxlIG9iamVjdFxuICogcmV0dXJuZWQgYnkgYmFja2VuZFxuICogQHBhcmFtIHBhZ2VhYmxlT2JqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJCeUV4cHIgPSBwYWdlYWJsZU9iaiA9PiB7XG4gICAgcGFnZWFibGVPYmogPSBwYWdlYWJsZU9iaiB8fCBbXTtcbiAgICBjb25zdCBleHByZXNzaW9ucyAgICAgICA9IFtdLFxuICAgICAgICBLRVlfVkFMX1NFUEFSQVRPUiA9ICcgJyxcbiAgICAgICAgRklFTERfU0VQQVJBVE9SICAgPSAnLCc7XG4gICAgZm9yRWFjaChwYWdlYWJsZU9iaiwgb2JqID0+IHtcbiAgICAgICAgaWYgKG9iai5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2gob2JqLnByb3BlcnR5ICsgS0VZX1ZBTF9TRVBBUkFUT1IgKyBvYmouZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gam9pbihleHByZXNzaW9ucywgRklFTERfU0VQQVJBVE9SKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGFTZXRXaWRnZXQgPSB3aWRnZXQgPT4ge1xuICAgIHJldHVybiBEQVRBU0VUX1dJREdFVFMuaGFzKHdpZGdldCk7XG59O1xuXG4vKlRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdXJsIHRvIHRoZSBpbWFnZSBhZnRlciBjaGVja2luZyB0aGUgdmFsaWRpdHkgb2YgdXJsKi9cbmV4cG9ydCBjb25zdCBnZXRJbWFnZVVybCA9ICh1cmxTdHJpbmcsIHNob3VsZEVuY29kZT8sIGRlZmF1bHRVcmw/KSA9PiB7XG4gICAgLypJbiBzdHVkaW8gbW9kZSBiZWZvcmUgc2V0dGluZyBwaWN0dXJlc291cmNlLCBjaGVjayBpZiB0aGUgc3R1ZGlvQ29udHJvbGxlciBpcyBsb2FkZWQgYW5kIG5ldyBwaWN0dXJlc291cmNlIGlzIGluICdzdHlsZXMvaW1hZ2VzLycgcGF0aCBvciBub3QuXG4gICAgICogV2hlbiBwYWdlIGlzIHJlZnJlc2hlZCwgbG9hZGVyLmdpZiB3aWxsIGJlIGxvYWRlZCBmaXJzdCBhbmQgaXQgd2lsbCBiZSBpbiAnc3R5bGUvaW1hZ2VzLycuXG4gICAgICogUHJlcGVuZCAnc2VydmljZXMvcHJvamVjdHMvJyArICRyb290U2NvcGUucHJvamVjdC5pZCArICcvd2ViL3Jlc291cmNlcy9pbWFnZXMvaW1hZ2VsaXN0cy8nICBpZiB0aGUgaW1hZ2UgdXJsIGlzIGp1c3QgaW1hZ2UgbmFtZSBpbiB0aGUgcHJvamVjdCByb290LFxuICAgICAqIGFuZCBpZiB0aGUgdXJsIHBvaW50aW5nIHRvIHJlc291cmNlcy9pbWFnZXMvIHRoZW4gJ3NlcnZpY2VzL3Byb2plY3RzLycgKyAkcm9vdFNjb3BlLnByb2plY3QuaWQgKyAnL3dlYi8nKi9cbiAgICBpZiAoaXNWYWxpZFdlYlVSTCh1cmxTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiB1cmxTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gdmFsdWUgaXMgcHJvdmlkZWQgZm9yIHBpY3R1cmVzb3VyY2UgYXNzaWduIHBpY3R1cmVwbGFjZWhvbGRlciBvciBkZWZhdWx0LWltYWdlXG4gICAgaWYgKCF1cmxTdHJpbmcpIHtcbiAgICAgICAgaWYgKGlzVmFsaWRXZWJVUkwoZGVmYXVsdFVybCkpIHtcbiAgICAgICAgICAgIHVybFN0cmluZyA9IGRlZmF1bHRVcmw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmxTdHJpbmcgPSAgICggZGVmYXVsdFVybCB8fCAncmVzb3VyY2VzL2ltYWdlcy9pbWFnZWxpc3RzL2RlZmF1bHQtaW1hZ2UucG5nJyApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh1cmxTdHJpbmcgJiYgIV9XTV9BUFBfUFJPSkVDVC5pc1ByZXZpZXcgJiYgIWlzVmFsaWRXZWJVUkwodXJsU3RyaW5nKSAmJiAhdXJsU3RyaW5nLnN0YXJ0c1dpdGgoX1dNX0FQUF9QUk9KRUNULmNkblVybCkpIHtcbiAgICAgICAgdXJsU3RyaW5nID0gKF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgJycpICsgdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIHVybFN0cmluZyA9IHNob3VsZEVuY29kZSA/IGVuY29kZVVybCh1cmxTdHJpbmcpIDogdXJsU3RyaW5nO1xuXG4gICAgLy8gaWYgdGhlIHJlc291cmNlIHRvIGJlIGxvYWRlZCBpcyBpbnNpZGUgYSBwcmVmYWJcbiAgICBpZiAoc3RyaW5nU3RhcnRzV2l0aCh1cmxTdHJpbmcsICdzZXJ2aWNlcy9wcmVmYWJzJykpIHtcbiAgICAgICAgcmV0dXJuIHVybFN0cmluZztcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsU3RyaW5nO1xufTtcblxuLypUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSB1cmwgdG8gdGhlIGJhY2tncm91bmRJbWFnZSovXG5leHBvcnQgY29uc3QgZ2V0QmFja0dyb3VuZEltYWdlVXJsID0gKHVybFN0cmluZykgPT4ge1xuICAgIGlmICh1cmxTdHJpbmcgPT09ICcnIHx8IHVybFN0cmluZyA9PT0gJ25vbmUnKSB7XG4gICAgICAgIHJldHVybiB1cmxTdHJpbmc7XG4gICAgfVxuICAgIHJldHVybiAndXJsKCcgKyBnZXRJbWFnZVVybCh1cmxTdHJpbmcpICsgJyknO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBcyhyZWZlcmVuY2U6IGFueSwga2V5OiBhbnksIG11bHRpPzogYm9vbGVhbikge1xuICAgIHJldHVybiB7XG4gICAgICAgIHByb3ZpZGU6IGtleSxcbiAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gcmVmZXJlbmNlKSxcbiAgICAgICAgbXVsdGk6IG11bHRpXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVBc1dpZGdldFJlZihyZWZlcmVuY2U6IGFueSkge1xuICAgIHJldHVybiBwcm92aWRlQXMocmVmZXJlbmNlLCBXaWRnZXRSZWYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzRGlhbG9nUmVmKHJlZmVyZW5jZTogYW55KSB7XG4gICAgcmV0dXJuIHByb3ZpZGVBcyhyZWZlcmVuY2UsIERpYWxvZ1JlZik7XG59XG5cbmV4cG9ydCBjb25zdCBOQVZJR0FUSU9OX1RZUEUgPSB7XG4gICAgQURWQU5DRUQ6ICdBZHZhbmNlZCcsXG4gICAgQkFTSUM6ICdCYXNpYycsXG4gICAgQ0xBU1NJQzogJ0NsYXNzaWMnLFxuICAgIElOTElORTogJ0lubGluZScsXG4gICAgTk9ORTogJ05vbmUnLFxuICAgIE9OREVNQU5EOiAnT24tRGVtYW5kJyxcbiAgICBQQUdFUjogJ1BhZ2VyJyxcbiAgICBTQ1JPTEw6ICdTY3JvbGwnXG59O1xuXG5leHBvcnQgY29uc3QgSU5QVVRNT0RFID0ge1xuICAgIEZJTkFOQ0lBTDogJ2ZpbmFuY2lhbCcsXG4gICAgTkFUVVJBTDogJ25hdHVyYWwnXG59O1xuXG5leHBvcnQgY29uc3QgQVVUT0NMT1NFX1RZUEUgPSB7XG4gICAgT1VUU0lERUNMSUNLOiAnb3V0c2lkZUNsaWNrJyxcbiAgICBBTFdBWVM6ICdhbHdheXMnLFxuICAgIERJU0FCTEVEOiAnZGlzYWJsZWQnXG59XG5cbmV4cG9ydCBjb25zdCB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcyA9IFsnT24tRGVtYW5kJywgJ1Njcm9sbCddO1xuXG5leHBvcnQgY29uc3QgZ2V0V2F0Y2hJZGVudGlmaWVyID0gKC4uLmFyZ3MpID0+IGFyZ3Muam9pbignXycpO1xuXG5jb25zdCB0eXBlc01hcCA9IHtcbiAgICBudW1iZXI6IFsnbnVtYmVyJywgJ2ludGVnZXInLCAnYmlnX2ludGVnZXInLCAnc2hvcnQnLCAnZmxvYXQnLCAnYmlnX2RlY2ltYWwnLCAnZG91YmxlJywgJ2xvbmcnLCAnYnl0ZSddLFxuICAgIHN0cmluZzogWydzdHJpbmcnLCAndGV4dCddLFxuICAgIGNoYXJhY3RlcjogWydjaGFyYWN0ZXInXSxcbiAgICBkYXRlOiBbJ2RhdGUnLCAndGltZScsICAndGltZXN0YW1wJywgJ2RhdGV0aW1lJ11cbn07XG5jb25zdCBtb2RlcyA9IHtcbiAgICBudW1iZXI6IFsnZXhhY3QnLCAnbm90ZXF1YWxzJywgJ2xlc3N0aGFuJywgJ2xlc3N0aGFuZXF1YWwnLCAnZ3JlYXRlcnRoYW4nLCAnZ3JlYXRlcnRoYW5lcXVhbCcsICdudWxsJywgJ2lzbm90bnVsbCddLFxuICAgIHN0cmluZzogWydhbnl3aGVyZWlnbm9yZWNhc2UnLCAnYW55d2hlcmUnLCAnc3RhcnRpZ25vcmVjYXNlJywgJ3N0YXJ0JywgJ2VuZGlnbm9yZWNhc2UnLCAnZW5kJywgJ2V4YWN0aWdub3JlY2FzZScsICdleGFjdCcsICdub3RlcXVhbHNpZ25vcmVjYXNlJywgJ25vdGVxdWFscycsICdudWxsJywgJ2lzbm90bnVsbCcsICdlbXB0eScsICdpc25vdGVtcHR5JywgJ251bGxvcmVtcHR5J10sXG4gICAgY2hhcmFjdGVyOiBbJ2V4YWN0aWdub3JlY2FzZScsICdleGFjdCcsICdub3RlcXVhbHNpZ25vcmVjYXNlJywgJ25vdGVxdWFscycsICdudWxsJywgJ2lzbm90bnVsbCcsICdlbXB0eScsICdpc25vdGVtcHR5JywgJ251bGxvcmVtcHR5J10sXG4gICAgZGF0ZTogWydleGFjdCcsICdsZXNzdGhhbicsICdsZXNzdGhhbmVxdWFsJywgJ2dyZWF0ZXJ0aGFuJywgJ2dyZWF0ZXJ0aGFuZXF1YWwnLCAnbnVsbCcsICdub3RlcXVhbHMnLCAnaXNub3RudWxsJ11cbn07XG5jb25zdCBtYXRjaE1vZGVUeXBlc01hcCA9IHtcbiAgICBib29sZWFuOiBbJ2V4YWN0JywgJ251bGwnLCAnaXNub3RudWxsJ10sXG4gICAgY2xvYjogW10sXG4gICAgYmxvYjogW11cbn07XG5leHBvcnQgY29uc3QgZ2V0TWF0Y2hNb2RlVHlwZXNNYXAgPSAobXVsdGlNb2RlPykgPT4ge1xuICAgIGlmIChtdWx0aU1vZGUpIHtcbiAgICAgICAgbW9kZXMubnVtYmVyLnB1c2goJ2luJywgJ25vdGluJywgJ2JldHdlZW4nKTtcbiAgICAgICAgbW9kZXMuZGF0ZS5wdXNoKCdiZXR3ZWVuJyk7XG4gICAgICAgIG1vZGVzLnN0cmluZy5wdXNoKCdpbicsICdub3RpbicpO1xuICAgICAgICBtb2Rlcy5jaGFyYWN0ZXIucHVzaCgnaW4nLCAnbm90aW4nKTtcbiAgICB9XG5cbiAgICBmb3JFYWNoKHR5cGVzTWFwLCAodHlwZXMsIHByaW1UeXBlKSA9PiB7XG4gICAgICAgIGZvckVhY2godHlwZXMsIHR5cGUgPT4ge1xuICAgICAgICAgICAgbWF0Y2hNb2RlVHlwZXNNYXBbdHlwZV0gPSBtb2Rlc1twcmltVHlwZV07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHRoaXMgaXMgdXNlZCBpbiBmaWx0ZXIgY3JpdGVyaWEgd2hlbiB0aGUgdXNlciB0eXBlcyB0aGUgY29sdW1uIG5hbWUgbWFudWFsbHkgYW5kIHdoZXJlIHdlIGRvbnQga25vdyB0aGUgdHlwZSBvZiB0aGUgY29sdW1uXG4gICAgbWF0Y2hNb2RlVHlwZXNNYXBbJ2RlZmF1bHQnXSA9IHVuaW9uKG1vZGVzWydudW1iZXInXSwgbW9kZXNbJ3N0cmluZyddLCBtb2Rlc1snY2hhcmFjdGVyJ10sIG1vZGVzWydkYXRlJ10sIG1vZGVzWydkYXRlJ10pO1xuICAgIHJldHVybiBtYXRjaE1vZGVUeXBlc01hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXRjaE1vZGVNc2dzID0gKGFwcExvY2FsZSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0ICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfU1RBUlRTX1dJVEgsXG4gICAgICAgIHN0YXJ0aWdub3JlY2FzZSAgOiBhcHBMb2NhbGUuTEFCRUxfU1RBUlRTX1dJVEhfSUdOT1JFQ0FTRSxcbiAgICAgICAgZW5kICAgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9FTkRTX1dJVEgsXG4gICAgICAgIGVuZGlnbm9yZWNhc2UgICAgOiBhcHBMb2NhbGUuTEFCRUxfRU5EU19XSVRIX0lHTk9SRUNBU0UsXG4gICAgICAgIGFueXdoZXJlICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfQ09OVEFJTlMsXG4gICAgICAgIGFueXdoZXJlaWdub3JlY2FzZTogYXBwTG9jYWxlLkxBQkVMX0NPTlRBSU5TX0lHTk9SRUNBU0UsXG4gICAgICAgIGV4YWN0ICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfRVFVQUxfVE8sXG4gICAgICAgIGV4YWN0aWdub3JlY2FzZSAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfRVFVQUxfVE9fSUdOT1JFQ0FTRSxcbiAgICAgICAgbm90ZXF1YWxzICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19OT1RfRVFVQUxfVE8sXG4gICAgICAgIG5vdGVxdWFsc2lnbm9yZWNhc2U6IGFwcExvY2FsZS5MQUJFTF9JU19OT1RfRVFVQUxfVE9fSUdOT1JFQ0FTRSxcbiAgICAgICAgbGVzc3RoYW4gICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9MRVNTX1RIQU4sXG4gICAgICAgIGxlc3N0aGFuZXF1YWwgICAgOiBhcHBMb2NhbGUuTEFCRUxfTEVTU19USEFOX09SX0VRVUFMU19UTyxcbiAgICAgICAgZ3JlYXRlcnRoYW4gICAgICA6IGFwcExvY2FsZS5MQUJFTF9HUkVBVEVSX1RIQU4sXG4gICAgICAgIGdyZWF0ZXJ0aGFuZXF1YWwgOiBhcHBMb2NhbGUuTEFCRUxfR1JFQVRFUl9USEFOX09SX0VRVUFMU19UTyxcbiAgICAgICAgbnVsbCAgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19OVUxMLFxuICAgICAgICBpc25vdG51bGwgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9OVUxMLFxuICAgICAgICBlbXB0eSAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX0VNUFRZLFxuICAgICAgICBpc25vdGVtcHR5ICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FTVBUWSxcbiAgICAgICAgbnVsbG9yZW1wdHkgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19OVUxMX09SX0VNUFRZLFxuICAgICAgICBpbiAgICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lOLFxuICAgICAgICBub3RpbiAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX05PVF9JTixcbiAgICAgICAgYmV0d2VlbiAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9CRVRXRUVOXG4gICAgfTtcbn07XG5cbi8vIFJldHVybnMgYXJyYXkgb2YgY2xhc3NlcyB0aGF0IGFyZSBldmFsdWF0ZWQgdHJ1ZSBmb3IgZ2l2ZW4gb2JqZWN0IG9yIGFycmF5XG5jb25zdCBnZXRDbGFzc2VzQXJyYXkgPSBjbGFzc1ZhbCA9PiB7XG4gICAgbGV0IGNsYXNzZXMgPSBbXTtcblxuICAgIGlmIChpc0FycmF5KGNsYXNzVmFsKSkge1xuICAgICAgICBjbGFzc1ZhbC5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMuY29uY2F0KGdldENsYXNzZXNBcnJheSh2KSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG4gICAgaWYgKGlzT2JqZWN0KGNsYXNzVmFsKSkge1xuICAgICAgICBmb3JFYWNoKGNsYXNzVmFsLCAodmFsLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgICBjbGFzc2VzID0gY2xhc3Nlcy5jb25jYXQoa2V5LnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbmRpdGlvbmFsQ2xhc3NlcyA9IChudiwgb3Y/KSA9PiB7XG4gICAgbGV0IHRvQWRkO1xuICAgIGxldCB0b1JlbW92ZTtcbiAgICAvLyBpZiB0aGUgY29uZGl0aW9uYWwgY2xhc3MgcHJvcGVydHkgaGFzIGFscmVhZHkgdG9BZGQgYW5kIHRvUmVtb3ZlIGFycmF5cyB0aGVuIHRha2UgdGhhdCBvdGhlcndpc2UgYnVpbGQgdGhvc2UgYXJyYXlzXG4gICAgY29uc3QgY2xhc3NUb0FkZCA9IG52LnRvQWRkIHx8IG52O1xuICAgIGNvbnN0IGNsYXNzVG9SZW1vdmUgPSBudi50b1JlbW92ZSB8fCBvdjtcbiAgICBpZiAoaXNPYmplY3QobnYpKSB7XG4gICAgICAgIHRvQWRkID0gaXNBcnJheShjbGFzc1RvQWRkKSA/IGNsYXNzVG9BZGQgOiBnZXRDbGFzc2VzQXJyYXkoY2xhc3NUb0FkZCB8fCBbXSk7XG4gICAgICAgIHRvUmVtb3ZlID0gY2xhc3NUb1JlbW92ZSA/IChpc0FycmF5KGNsYXNzVG9SZW1vdmUpID8gY2xhc3NUb1JlbW92ZSA6IGdldENsYXNzZXNBcnJheShjbGFzc1RvUmVtb3ZlKSkgOiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0b0FkZCA9IGNsYXNzVG9BZGQgPyBbY2xhc3NUb0FkZF0gOiBbXTtcbiAgICAgICAgdG9SZW1vdmUgPSBjbGFzc1RvUmVtb3ZlID8gW2NsYXNzVG9SZW1vdmVdIDogW107XG4gICAgfVxuICAgIHJldHVybiB7dG9BZGQsIHRvUmVtb3ZlfTtcbn07XG5cbi8qaGVscGVyIGZ1bmN0aW9uIGZvciBwcmVwYXJlRmllbGREZWZzKi9cbmNvbnN0IHB1c2hGaWVsZERlZiA9IChkYXRhT2JqZWN0LCBjb2x1bW5EZWZPYmosIG5hbWVQcmVmaXgsIG9wdGlvbnMpID0+IHtcbiAgICAvKmxvb3Agb3ZlciB0aGUgZmllbGRzIGluIHRoZSBkYXRhT2JqZWN0IHRvIHByb2Nlc3MgdGhlbSovXG4gICAgbGV0IG1vZGlmaWVkVGl0bGUsXG4gICAgICAgIHJlbGF0ZWRUYWJsZSxcbiAgICAgICAgcmVsYXRlZEZpZWxkLFxuICAgICAgICByZWxhdGVkSW5mbyxcbiAgICAgICAgZmllbGROYW1lLFxuICAgICAgICBpc1JlbGF0ZWQ7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgZm9yRWFjaChkYXRhT2JqZWN0LCAodmFsdWUsIHRpdGxlKSA9PiB7XG4gICAgICAgIGlmIChpbmNsdWRlcyh0aXRsZSwgJy4nKSkge1xuICAgICAgICAgICAgcmVsYXRlZEluZm8gPSBzcGxpdCh0aXRsZSwgJy4nKTtcbiAgICAgICAgICAgIHJlbGF0ZWRUYWJsZSA9IHJlbGF0ZWRJbmZvWzBdO1xuICAgICAgICAgICAgcmVsYXRlZEZpZWxkID0gcmVsYXRlZEluZm9bMV07XG4gICAgICAgICAgICBpc1JlbGF0ZWQgICAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm5vTW9kaWZ5VGl0bGUpIHtcbiAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc1N0cmluZyh0aXRsZSkpIHtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gcHJldHRpZnlMYWJlbCh0aXRsZSk7XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IGRlSHlwaGVuYXRlKG1vZGlmaWVkVGl0bGUpO1xuICAgICAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSBuYW1lUHJlZml4ID8gaW5pdENhcHMobmFtZVByZWZpeCkgKyAnICcgKyBtb2RpZmllZFRpdGxlIDogbW9kaWZpZWRUaXRsZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRpdGxlID0gbmFtZVByZWZpeCA/IG5hbWVQcmVmaXggKyAnLicgKyB0aXRsZSA6IHRpdGxlO1xuICAgICAgICBpZiAoaXNSZWxhdGVkKSB7XG4gICAgICAgICAgICAvLyBGb3IgcmVsYXRlZCBjb2x1bW5zLCBzaG9ydGVuIHRoZSB0aXRsZSB0byBsYXN0IHR3byB3b3Jkc1xuICAgICAgICAgICAgZmllbGROYW1lID0gc3BsaXQobW9kaWZpZWRUaXRsZSwgJyAnKTtcbiAgICAgICAgICAgIGZpZWxkTmFtZSA9IGZpZWxkTmFtZS5sZW5ndGggPiAxID8gZmllbGROYW1lW2ZpZWxkTmFtZS5sZW5ndGggLSAyXSArICcgJyArIGZpZWxkTmFtZVtmaWVsZE5hbWUubGVuZ3RoIC0gMV0gOiBmaWVsZE5hbWVbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBtb2RpZmllZFRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlZk9iaiA9IG9wdGlvbnMuc2V0QmluZGluZ0ZpZWxkID8geydkaXNwbGF5TmFtZSc6IGZpZWxkTmFtZSwgJ2ZpZWxkJzogdGl0bGUsICdyZWxhdGVkVGFibGUnOiByZWxhdGVkVGFibGUsICdyZWxhdGVkRmllbGQnOiByZWxhdGVkRmllbGQgfHwgbW9kaWZpZWRUaXRsZX1cbiAgICAgICAgOiB7J2Rpc3BsYXlOYW1lJzogZmllbGROYW1lLCAncmVsYXRlZFRhYmxlJzogcmVsYXRlZFRhYmxlLCAncmVsYXRlZEZpZWxkJzogcmVsYXRlZEZpZWxkIHx8IG1vZGlmaWVkVGl0bGV9O1xuICAgICAgICAvKmlmIGZpZWxkIGlzIGEgbGVhZiBub2RlLCBwdXNoIGl0IGluIHRoZSBjb2x1bW5EZWZzKi9cbiAgICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgKGlzQXJyYXkodmFsdWUpICYmICF2YWx1ZVswXSkpIHtcbiAgICAgICAgICAgIC8qaWYgdGhlIGNvbHVtbiBjb3VudGVyIGhhcyByZWFjaGVkIHVwcGVyQm91bmQgcmV0dXJuKi9cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVwcGVyQm91bmQgJiYgb3B0aW9ucy5jb2x1bW5Db3VudCA9PT0gb3B0aW9ucy51cHBlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29sdW1uRGVmT2JqLnRlcm1pbmFscy5wdXNoKGRlZk9iaik7XG4gICAgICAgICAgICAvKmluY3JlbWVudCB0aGUgY29sdW1uIGNvdW50ZXIqL1xuICAgICAgICAgICAgb3B0aW9ucy5jb2x1bW5Db3VudCArPSAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyplbHNlIGZpZWxkIGlzIGFuIG9iamVjdCwgcHJvY2VzcyBpdCByZWN1cnNpdmVseSovXG4gICAgICAgICAgICAvKiBpZiBwYXJlbnQgbm9kZSB0byBiZSBpbmNsdWRlZCwgaW5jbHVkZSBpdCAqL1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29sdW1uQ291bnQgIT09IG9wdGlvbnMudXBwZXJCb3VuZCkge1xuICAgICAgICAgICAgICAgIGNvbHVtbkRlZk9iai5vYmplY3RzLnB1c2goZGVmT2JqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyogaWYgZmllbGQgaXMgYW4gYXJyYXkgbm9kZSwgcHJvY2VzcyBpdHMgZmlyc3QgY2hpbGQgKi9cbiAgICAgICAgICAgIGlmIChpc0FycmF5KHZhbHVlKSAmJiB2YWx1ZVswXSkge1xuICAgICAgICAgICAgICAgIHB1c2hGaWVsZERlZih2YWx1ZVswXSwgY29sdW1uRGVmT2JqLCB0aXRsZSArICdbMF0nLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHVzaEZpZWxkRGVmKHZhbHVlLCBjb2x1bW5EZWZPYmosIHRpdGxlLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuY29uc3QgZ2V0TWV0YURhdGFGcm9tRGF0YSA9IChkYXRhKSA9PiB7XG4gICAgbGV0IGRhdGFPYmplY3Q7XG4gICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgaWYgKGlzT2JqZWN0KGRhdGFbMF0pKSB7XG4gICAgICAgICAgICBkYXRhT2JqZWN0ID0gZ2V0Q2xvbmVkT2JqZWN0KGRhdGFbMF0pO1xuICAgICAgICAgICAgLypMb29wIG92ZXIgdGhlIG9iamVjdCB0byBmaW5kIG91dCBhbnkgbnVsbCB2YWx1ZXMuIElmIGFueSBudWxsIHZhbHVlcyBhcmUgcHJlc2VudCBpbiB0aGUgZmlyc3Qgcm93LCBjaGVjayBhbmQgYXNzaWduIHRoZSB2YWx1ZXMgZnJvbSBvdGhlciByb3cuXG4gICAgICAgICAgICAgKiBBcyBjb2x1bW4gZ2VuZXJhdGlvbiBpcyBkZXBlbmRlbnQgb24gZGF0YSwgZm9yIHJlbGF0ZWQgZmllbGRzIGlmIGZpcnN0IHJvdyB2YWx1ZSBpcyBudWxsLCBjb2x1bW5zIGFyZSBub3QgZ2VuZXJhdGVkLlxuICAgICAgICAgICAgICogVG8gcHJldmVudCB0aGlzLCBjaGVjayB0aGUgZGF0YSBpbiBvdGhlciByb3dzIGFuZCBnZW5lcmF0ZSB0aGUgY29sdW1ucy4gTmV3IGtleXMgZnJvbSBvdGhlcnMgcm93cyBhcmUgYWxzbyBhZGRlZCovXG4gICAgICAgICAgICBmb3JFYWNoKGRhdGEsIChyb3csIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKChpbmRleCArIDEpID49IDEwKSB7IC8vIExpbWl0IHRoZSBkYXRhIHNlYXJjaCB0byBmaXJzdCAxMCByZWNvcmRzXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXNzaWduV2l0aChkYXRhT2JqZWN0LCByb3csIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gbnVsbCB8fCBvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBkYXRhWzBdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YU9iamVjdCA9IGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBkYXRhT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVGaWVsZERlZnMgPSAoZGF0YSwgb3B0aW9ucz8pID0+IHtcbiAgICBsZXQgZGF0YU9iamVjdDtcbiAgICBjb25zdCBjb2x1bW5EZWYgPSB7XG4gICAgICAgICAgICAnb2JqZWN0cycgOiBbXSxcbiAgICAgICAgICAgICd0ZXJtaW5hbHMnIDogW11cbiAgICAgICAgfTtcbiAgICAvKmlmIG5vIGRhdGEgcHJvdmlkZWQsIGluaXRpYWxpemUgZGVmYXVsdCBjb2x1bW4gZGVmaW5pdGlvbnMqL1xuICAgIGlmICghZGF0YSkge1xuICAgICAgICBkYXRhID0gW107XG4gICAgfVxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIG9wdGlvbnMuc2V0QmluZGluZ0ZpZWxkID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNvbHVtbkNvdW50ID0gMDtcbiAgICBkYXRhT2JqZWN0ID0gZ2V0TWV0YURhdGFGcm9tRGF0YShkYXRhKTtcbiAgICAvKmZpcnN0IG9mIHRoZSBtYW55IGRhdGEgb2JqZWN0cyBmcm9tIGdyaWQgZGF0YSovXG4gICAgcHVzaEZpZWxkRGVmKGRhdGFPYmplY3QsIGNvbHVtbkRlZiwgJycsIG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucyB8fCAob3B0aW9ucyAmJiAhb3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICBzd2l0Y2ggKG9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uRGVmO1xuICAgICAgICBjYXNlICdvYmplY3RzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYub2JqZWN0cztcbiAgICAgICAgY2FzZSAndGVybWluYWxzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uRGVmO1xufTtcblxuXG4vKipcbiAqIFRvIGdldCBjb250YWluZXIgdGFyZ2V0IGVsZW1lbnQgdG8gYXBwZW5kIHRoZSBsaXN0IGZvciBzZWFyY2ggYW5kIGRhdGVwaWNrZXIgcGFuZWwgd2hlbiBmaWVsZCBwcmVzZW50IGluIGRpYWxvZ1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q29udGFpbmVyVGFyZ2V0Q2xhc3MgPSAoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAnLndtLWFwcCc7XG5cbiAgICAvLyBCZWxvdyBjb2RlIGlzIG5vdCB3b3JraW5nIHdoZW4gd2UgaGF2ZSBuZXN0ZWQgZGlhbG9ncy5cbiAgICAvLyBOZXN0ZWQgZGlhbG9ncyBjYXNlIHdlIHdpbGwgaGF2ZSAgbXVsdGlwbGUgJy5tb2RhbC1jb250ZW50JyBjbGFzc2VzIG9uIERPTSBkdWUgdG8gdGhhdCBjb250YWluZXIgcG9zaXRpb25zIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkLlxuICAgIC8vIEJlbG93IGNvZGUgdG8gZml4IHRoZSBpc3N1ZSA9PT4gV01TLTE4NzUxXG4gICAgLy8gQXMgcmVncmVzc2lvbiB3ZSBnb3QgPT0+IFdNUy0xOTgzNVxuXG4gICAgLy8gaWYgKGVsZW1lbnQuY2xvc2VzdCgnLm1vZGFsLWRpYWxvZycpKSB7XG4gICAgLy8gICAgIHJldHVybiAnLm1vZGFsLWNvbnRlbnQnO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICAgIHJldHVybiAnYm9keSc7XG4gICAgLy8gfVxuXG59XG5cbi8qKlxuICogVG8gZXh0cmFjdCB0aGUgVmFyaWFibGUgTmFtZSBmcm9tIGEgV2lkZ2V0J3MgYmluZGRhdGFzb3VyY2UgYXR0cmlidXRlXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0RGF0YVNvdXJjZU5hbWUgPSAoYmluZERhdGFTb3VyY2UpID0+IHtcbiAgICBpZiAoIWJpbmREYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGRhdGFTb3VyY2VOYW1lO1xuICAgIGNvbnN0IHBhcnRzID0gYmluZERhdGFTb3VyY2Uuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSAmJiBwYXJ0c1swXSA9PT0gJ1ZhcmlhYmxlcycpIHtcbiAgICAgICAgZGF0YVNvdXJjZU5hbWUgPSBwYXJ0c1sxXTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFTb3VyY2VOYW1lO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNUcmFwID0gKGNvbnRhaW5lciwgYWxsb3dPdXRzaWRlQ2xpY2ssIHNldFJldHVybkZvY3VzRWxlbWVudD8pID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRm9jdXNUcmFwKGNvbnRhaW5lciwge1xuICAgICAgICBvbkFjdGl2YXRlOiAoKSA9PiBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyksXG4gICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICBhbGxvd091dHNpZGVDbGljazogYWxsb3dPdXRzaWRlQ2xpY2ssXG4gICAgICAgIHNldFJldHVybkZvY3VzOiBzZXRSZXR1cm5Gb2N1c0VsZW1lbnQsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2V0cyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgd2l0aGluIGEgc3BlY2lmaWVkIGVsZW1lbnRcbiAqIEBwYXJhbSBlbGVtZW50IHtIVE1MRWxlbWVudH1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBlbGVtZW50Tm9kZUxpc3QgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EsIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsIGlmcmFtZSwgZW1iZWQsIG9iamVjdCwgc3VtbWFyeSBkaWFsb2csIGF1ZGlvW2NvbnRyb2xzXSwgdmlkZW9bY29udHJvbHNdLCBbY29udGVudGVkaXRhYmxlXScpO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50Tm9kZUxpc3QpO1xuICAgIHJldHVybiBlbGVtZW50cy5maWx0ZXIoZWwgPT4ge1xuICAgICAgICByZXR1cm4gKCFlbC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgIWVsLmhhc0F0dHJpYnV0ZSgnaGlkZGVuJylcbiAgICAgICAgICAgICYmICghZWwuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8IChlbC5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgJiYgIWVsLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLnN0YXJ0c1dpdGgoJy0nKSkpKTtcbiAgICB9KTtcbn1cbiJdfQ==