@delon/abc 15.2.1 → 16.0.0-beta.0

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 (461) hide show
  1. package/auto-focus/auto-focus.directive.d.ts +1 -1
  2. package/avatar-list/avatar-list-item.component.d.ts +1 -1
  3. package/avatar-list/avatar-list.component.d.ts +1 -1
  4. package/count-down/count-down.component.d.ts +1 -1
  5. package/date-picker/range.directive.d.ts +1 -1
  6. package/down-file/down-file.directive.d.ts +1 -1
  7. package/ellipsis/ellipsis.component.d.ts +1 -1
  8. package/error-collect/error-collect.component.d.ts +1 -1
  9. package/esm2022/auto-focus/auto-focus.directive.mjs +51 -0
  10. package/esm2022/auto-focus/auto-focus.module.mjs +18 -0
  11. package/esm2022/avatar-list/avatar-list-item.component.mjs +27 -0
  12. package/esm2022/avatar-list/avatar-list.component.mjs +89 -0
  13. package/esm2022/avatar-list/avatar-list.module.mjs +23 -0
  14. package/esm2022/count-down/count-down.component.mjs +46 -0
  15. package/esm2022/count-down/count-down.module.mjs +21 -0
  16. package/esm2022/date-picker/date-picker.module.mjs +23 -0
  17. package/esm2022/date-picker/range-shortcut.component.mjs +41 -0
  18. package/esm2022/date-picker/range.directive.mjs +174 -0
  19. package/esm2022/down-file/down-file.directive.mjs +115 -0
  20. package/esm2022/down-file/down-file.module.mjs +21 -0
  21. package/esm2022/ellipsis/ellipsis.component.mjs +233 -0
  22. package/esm2022/ellipsis/ellipsis.module.mjs +22 -0
  23. package/esm2022/error-collect/error-collect.component.mjs +122 -0
  24. package/esm2022/error-collect/error-collect.module.mjs +21 -0
  25. package/esm2022/exception/exception.component.mjs +109 -0
  26. package/esm2022/exception/exception.module.mjs +24 -0
  27. package/esm2022/footer-toolbar/footer-toolbar.component.mjs +45 -0
  28. package/esm2022/footer-toolbar/footer-toolbar.module.mjs +22 -0
  29. package/esm2022/full-content/full-content-toggle.directive.mjs +25 -0
  30. package/esm2022/full-content/full-content.component.mjs +140 -0
  31. package/esm2022/full-content/full-content.module.mjs +21 -0
  32. package/esm2022/full-content/full-content.service.mjs +23 -0
  33. package/esm2022/global-footer/global-footer-item.component.mjs +31 -0
  34. package/esm2022/global-footer/global-footer.component.mjs +73 -0
  35. package/esm2022/global-footer/global-footer.module.mjs +22 -0
  36. package/esm2022/hotkey/hotkey.directive.mjs +37 -0
  37. package/esm2022/hotkey/hotkey.module.mjs +18 -0
  38. package/esm2022/let/let.directive.mjs +38 -0
  39. package/esm2022/let/let.module.mjs +18 -0
  40. package/esm2022/loading/loading.component.mjs +27 -0
  41. package/esm2022/loading/loading.module.mjs +24 -0
  42. package/esm2022/loading/loading.service.mjs +91 -0
  43. package/esm2022/lodop/lodop.module.mjs +13 -0
  44. package/esm2022/lodop/lodop.service.mjs +223 -0
  45. package/esm2022/media/media.component.mjs +118 -0
  46. package/esm2022/media/media.module.mjs +20 -0
  47. package/esm2022/media/media.service.mjs +47 -0
  48. package/esm2022/notice-icon/notice-icon-tab.component.mjs +35 -0
  49. package/esm2022/notice-icon/notice-icon.component.mjs +90 -0
  50. package/esm2022/notice-icon/notice-icon.module.mjs +59 -0
  51. package/esm2022/observers/observer-size.mjs +119 -0
  52. package/esm2022/onboarding/onboarding.component.mjs +135 -0
  53. package/esm2022/onboarding/onboarding.module.mjs +27 -0
  54. package/esm2022/onboarding/onboarding.service.mjs +186 -0
  55. package/esm2022/page-header/page-header.component.mjs +247 -0
  56. package/esm2022/page-header/page-header.module.mjs +25 -0
  57. package/esm2022/pdf/pdf.component.mjs +474 -0
  58. package/esm2022/pdf/pdf.module.mjs +21 -0
  59. package/esm2022/qr/qr.component.mjs +137 -0
  60. package/esm2022/qr/qr.module.mjs +20 -0
  61. package/esm2022/quick-menu/quick-menu.component.mjs +90 -0
  62. package/esm2022/quick-menu/quick-menu.module.mjs +22 -0
  63. package/esm2022/result/result.component.mjs +61 -0
  64. package/esm2022/result/result.module.mjs +22 -0
  65. package/esm2022/reuse-tab/reuse-tab-context-menu.component.mjs +77 -0
  66. package/esm2022/reuse-tab/reuse-tab-context.component.mjs +34 -0
  67. package/esm2022/reuse-tab/reuse-tab-context.directive.mjs +36 -0
  68. package/esm2022/reuse-tab/reuse-tab-context.service.mjs +56 -0
  69. package/esm2022/reuse-tab/reuse-tab.component.mjs +368 -0
  70. package/esm2022/reuse-tab/reuse-tab.module.mjs +50 -0
  71. package/esm2022/reuse-tab/reuse-tab.service.mjs +559 -0
  72. package/esm2022/se/se-container.component.mjs +174 -0
  73. package/esm2022/se/se.component.mjs +235 -0
  74. package/esm2022/se/se.module.mjs +24 -0
  75. package/esm2022/sg/sg-container.component.mjs +53 -0
  76. package/esm2022/sg/sg.component.mjs +68 -0
  77. package/esm2022/sg/sg.module.mjs +21 -0
  78. package/esm2022/st/st-column-source.mjs +493 -0
  79. package/esm2022/st/st-data-source.mjs +480 -0
  80. package/esm2022/st/st-export.mjs +90 -0
  81. package/{esm2020 → esm2022}/st/st-filter.component.mjs +8 -7
  82. package/esm2022/st/st-row.directive.mjs +47 -0
  83. package/esm2022/st/st-widget-host.directive.mjs +32 -0
  84. package/esm2022/st/st-widget.mjs +27 -0
  85. package/esm2022/st/st.component.mjs +1004 -0
  86. package/esm2022/st/st.module.mjs +97 -0
  87. package/esm2022/sv/sv-container.component.mjs +127 -0
  88. package/esm2022/sv/sv-value.component.mjs +45 -0
  89. package/esm2022/sv/sv.component.mjs +120 -0
  90. package/esm2022/sv/sv.module.mjs +26 -0
  91. package/esm2022/tag-select/tag-select.component.mjs +64 -0
  92. package/esm2022/tag-select/tag-select.module.mjs +22 -0
  93. package/esm2022/xlsx/xlsx.directive.mjs +28 -0
  94. package/esm2022/xlsx/xlsx.module.mjs +20 -0
  95. package/esm2022/xlsx/xlsx.service.mjs +129 -0
  96. package/esm2022/zip/zip.module.mjs +16 -0
  97. package/esm2022/zip/zip.service.mjs +117 -0
  98. package/exception/exception.component.d.ts +1 -1
  99. package/{fesm2015 → fesm2022}/auto-focus.mjs +7 -7
  100. package/{fesm2015 → fesm2022}/auto-focus.mjs.map +1 -1
  101. package/{fesm2020 → fesm2022}/avatar-list.mjs +10 -10
  102. package/fesm2022/avatar-list.mjs.map +1 -0
  103. package/{fesm2020 → fesm2022}/chart-observer-size.mjs +10 -10
  104. package/fesm2022/chart-observer-size.mjs.map +1 -0
  105. package/{fesm2020 → fesm2022}/count-down.mjs +7 -7
  106. package/fesm2022/count-down.mjs.map +1 -0
  107. package/{fesm2020 → fesm2022}/date-picker.mjs +14 -13
  108. package/fesm2022/date-picker.mjs.map +1 -0
  109. package/{fesm2020 → fesm2022}/down-file.mjs +8 -8
  110. package/fesm2022/down-file.mjs.map +1 -0
  111. package/{fesm2020 → fesm2022}/ellipsis.mjs +7 -7
  112. package/fesm2022/ellipsis.mjs.map +1 -0
  113. package/{fesm2020 → fesm2022}/error-collect.mjs +9 -9
  114. package/fesm2022/error-collect.mjs.map +1 -0
  115. package/{fesm2020 → fesm2022}/exception.mjs +7 -7
  116. package/fesm2022/exception.mjs.map +1 -0
  117. package/{fesm2020 → fesm2022}/footer-toolbar.mjs +7 -7
  118. package/fesm2022/footer-toolbar.mjs.map +1 -0
  119. package/{fesm2020 → fesm2022}/full-content.mjs +13 -13
  120. package/fesm2022/full-content.mjs.map +1 -0
  121. package/{fesm2020 → fesm2022}/global-footer.mjs +10 -10
  122. package/fesm2022/global-footer.mjs.map +1 -0
  123. package/{fesm2020 → fesm2022}/hotkey.mjs +7 -7
  124. package/{fesm2015 → fesm2022}/hotkey.mjs.map +1 -1
  125. package/{fesm2020 → fesm2022}/let.mjs +9 -8
  126. package/fesm2022/let.mjs.map +1 -0
  127. package/{fesm2020 → fesm2022}/loading.mjs +10 -11
  128. package/fesm2022/loading.mjs.map +1 -0
  129. package/{fesm2020 → fesm2022}/lodop.mjs +7 -7
  130. package/{fesm2020 → fesm2022}/lodop.mjs.map +1 -1
  131. package/{fesm2020 → fesm2022}/media.mjs +10 -10
  132. package/fesm2022/media.mjs.map +1 -0
  133. package/fesm2022/notice-icon.mjs +180 -0
  134. package/fesm2022/notice-icon.mjs.map +1 -0
  135. package/{fesm2020 → fesm2022}/onboarding.mjs +10 -11
  136. package/{fesm2020 → fesm2022}/onboarding.mjs.map +1 -1
  137. package/{fesm2020 → fesm2022}/page-header.mjs +7 -7
  138. package/{fesm2015 → fesm2022}/page-header.mjs.map +1 -1
  139. package/{fesm2020 → fesm2022}/pdf.mjs +9 -9
  140. package/{fesm2020 → fesm2022}/pdf.mjs.map +1 -1
  141. package/{fesm2015 → fesm2022}/qr.mjs +7 -7
  142. package/{fesm2020 → fesm2022}/qr.mjs.map +1 -1
  143. package/{fesm2020 → fesm2022}/quick-menu.mjs +7 -7
  144. package/fesm2022/quick-menu.mjs.map +1 -0
  145. package/{fesm2020 → fesm2022}/result.mjs +7 -7
  146. package/{fesm2020 → fesm2022}/result.mjs.map +1 -1
  147. package/{fesm2020 → fesm2022}/reuse-tab.mjs +31 -31
  148. package/{fesm2015 → fesm2022}/reuse-tab.mjs.map +1 -1
  149. package/{fesm2020 → fesm2022}/se.mjs +15 -15
  150. package/fesm2022/se.mjs.map +1 -0
  151. package/{fesm2020 → fesm2022}/sg.mjs +10 -10
  152. package/fesm2022/sg.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/st.mjs +72 -72
  154. package/fesm2022/st.mjs.map +1 -0
  155. package/{fesm2020 → fesm2022}/sv.mjs +20 -20
  156. package/fesm2022/sv.mjs.map +1 -0
  157. package/{fesm2020 → fesm2022}/tag-select.mjs +7 -7
  158. package/fesm2022/tag-select.mjs.map +1 -0
  159. package/{fesm2020 → fesm2022}/xlsx.mjs +10 -10
  160. package/fesm2022/xlsx.mjs.map +1 -0
  161. package/{fesm2020 → fesm2022}/zip.mjs +7 -7
  162. package/{fesm2015 → fesm2022}/zip.mjs.map +1 -1
  163. package/footer-toolbar/footer-toolbar.component.d.ts +1 -1
  164. package/full-content/full-content.component.d.ts +1 -1
  165. package/global-footer/global-footer-item.component.d.ts +1 -1
  166. package/global-footer/global-footer.component.d.ts +1 -1
  167. package/hotkey/hotkey.directive.d.ts +1 -1
  168. package/let/let.directive.d.ts +1 -1
  169. package/loading/style/index.less +1 -4
  170. package/media/media.component.d.ts +1 -1
  171. package/notice-icon/notice-icon-tab.component.d.ts +1 -1
  172. package/notice-icon/notice-icon.component.d.ts +1 -1
  173. package/onboarding/style/index.less +1 -4
  174. package/package.json +105 -175
  175. package/page-header/page-header.component.d.ts +1 -1
  176. package/pdf/pdf.component.d.ts +1 -1
  177. package/qr/qr.component.d.ts +1 -1
  178. package/quick-menu/quick-menu.component.d.ts +1 -1
  179. package/result/result.component.d.ts +1 -1
  180. package/reuse-tab/reuse-tab-context-menu.component.d.ts +1 -1
  181. package/reuse-tab/reuse-tab-context.component.d.ts +1 -1
  182. package/reuse-tab/reuse-tab-context.directive.d.ts +1 -1
  183. package/reuse-tab/reuse-tab.component.d.ts +1 -1
  184. package/se/se-container.component.d.ts +1 -1
  185. package/se/se.component.d.ts +1 -1
  186. package/sg/sg-container.component.d.ts +1 -1
  187. package/sg/sg.component.d.ts +1 -1
  188. package/st/st-filter.component.d.ts +1 -1
  189. package/st/st-row.directive.d.ts +1 -1
  190. package/st/st-widget-host.directive.d.ts +1 -1
  191. package/st/st.component.d.ts +9 -5
  192. package/st/style/index.less +6 -2
  193. package/sv/sv-container.component.d.ts +1 -1
  194. package/sv/sv-value.component.d.ts +1 -1
  195. package/sv/sv.component.d.ts +1 -1
  196. package/tag-select/tag-select.component.d.ts +1 -1
  197. package/xlsx/xlsx.directive.d.ts +1 -1
  198. package/esm2020/auto-focus/auto-focus.directive.mjs +0 -50
  199. package/esm2020/auto-focus/auto-focus.module.mjs +0 -17
  200. package/esm2020/avatar-list/avatar-list-item.component.mjs +0 -26
  201. package/esm2020/avatar-list/avatar-list.component.mjs +0 -88
  202. package/esm2020/avatar-list/avatar-list.module.mjs +0 -22
  203. package/esm2020/count-down/count-down.component.mjs +0 -45
  204. package/esm2020/count-down/count-down.module.mjs +0 -20
  205. package/esm2020/date-picker/date-picker.module.mjs +0 -22
  206. package/esm2020/date-picker/range-shortcut.component.mjs +0 -40
  207. package/esm2020/date-picker/range.directive.mjs +0 -172
  208. package/esm2020/down-file/down-file.directive.mjs +0 -114
  209. package/esm2020/down-file/down-file.module.mjs +0 -20
  210. package/esm2020/ellipsis/ellipsis.component.mjs +0 -232
  211. package/esm2020/ellipsis/ellipsis.module.mjs +0 -21
  212. package/esm2020/error-collect/error-collect.component.mjs +0 -121
  213. package/esm2020/error-collect/error-collect.module.mjs +0 -20
  214. package/esm2020/exception/exception.component.mjs +0 -108
  215. package/esm2020/exception/exception.module.mjs +0 -23
  216. package/esm2020/footer-toolbar/footer-toolbar.component.mjs +0 -44
  217. package/esm2020/footer-toolbar/footer-toolbar.module.mjs +0 -21
  218. package/esm2020/full-content/full-content-toggle.directive.mjs +0 -24
  219. package/esm2020/full-content/full-content.component.mjs +0 -139
  220. package/esm2020/full-content/full-content.module.mjs +0 -20
  221. package/esm2020/full-content/full-content.service.mjs +0 -22
  222. package/esm2020/global-footer/global-footer-item.component.mjs +0 -30
  223. package/esm2020/global-footer/global-footer.component.mjs +0 -72
  224. package/esm2020/global-footer/global-footer.module.mjs +0 -21
  225. package/esm2020/hotkey/hotkey.directive.mjs +0 -36
  226. package/esm2020/hotkey/hotkey.module.mjs +0 -17
  227. package/esm2020/let/let.directive.mjs +0 -36
  228. package/esm2020/let/let.module.mjs +0 -17
  229. package/esm2020/loading/loading.component.mjs +0 -26
  230. package/esm2020/loading/loading.module.mjs +0 -24
  231. package/esm2020/loading/loading.service.mjs +0 -90
  232. package/esm2020/lodop/lodop.module.mjs +0 -12
  233. package/esm2020/lodop/lodop.service.mjs +0 -222
  234. package/esm2020/media/media.component.mjs +0 -117
  235. package/esm2020/media/media.module.mjs +0 -19
  236. package/esm2020/media/media.service.mjs +0 -46
  237. package/esm2020/notice-icon/notice-icon-tab.component.mjs +0 -34
  238. package/esm2020/notice-icon/notice-icon.component.mjs +0 -89
  239. package/esm2020/notice-icon/notice-icon.module.mjs +0 -58
  240. package/esm2020/observers/observer-size.mjs +0 -116
  241. package/esm2020/onboarding/onboarding.component.mjs +0 -134
  242. package/esm2020/onboarding/onboarding.module.mjs +0 -27
  243. package/esm2020/onboarding/onboarding.service.mjs +0 -185
  244. package/esm2020/page-header/page-header.component.mjs +0 -246
  245. package/esm2020/page-header/page-header.module.mjs +0 -24
  246. package/esm2020/pdf/pdf.component.mjs +0 -473
  247. package/esm2020/pdf/pdf.module.mjs +0 -20
  248. package/esm2020/qr/qr.component.mjs +0 -136
  249. package/esm2020/qr/qr.module.mjs +0 -19
  250. package/esm2020/quick-menu/quick-menu.component.mjs +0 -89
  251. package/esm2020/quick-menu/quick-menu.module.mjs +0 -21
  252. package/esm2020/result/result.component.mjs +0 -60
  253. package/esm2020/result/result.module.mjs +0 -21
  254. package/esm2020/reuse-tab/reuse-tab-context-menu.component.mjs +0 -76
  255. package/esm2020/reuse-tab/reuse-tab-context.component.mjs +0 -33
  256. package/esm2020/reuse-tab/reuse-tab-context.directive.mjs +0 -35
  257. package/esm2020/reuse-tab/reuse-tab-context.service.mjs +0 -55
  258. package/esm2020/reuse-tab/reuse-tab.component.mjs +0 -367
  259. package/esm2020/reuse-tab/reuse-tab.module.mjs +0 -49
  260. package/esm2020/reuse-tab/reuse-tab.service.mjs +0 -558
  261. package/esm2020/se/se-container.component.mjs +0 -172
  262. package/esm2020/se/se.component.mjs +0 -234
  263. package/esm2020/se/se.module.mjs +0 -23
  264. package/esm2020/sg/sg-container.component.mjs +0 -52
  265. package/esm2020/sg/sg.component.mjs +0 -67
  266. package/esm2020/sg/sg.module.mjs +0 -20
  267. package/esm2020/st/st-column-source.mjs +0 -492
  268. package/esm2020/st/st-data-source.mjs +0 -479
  269. package/esm2020/st/st-export.mjs +0 -89
  270. package/esm2020/st/st-row.directive.mjs +0 -45
  271. package/esm2020/st/st-widget-host.directive.mjs +0 -31
  272. package/esm2020/st/st-widget.mjs +0 -26
  273. package/esm2020/st/st.component.mjs +0 -1002
  274. package/esm2020/st/st.module.mjs +0 -96
  275. package/esm2020/sv/sv-container.component.mjs +0 -125
  276. package/esm2020/sv/sv-value.component.mjs +0 -44
  277. package/esm2020/sv/sv.component.mjs +0 -119
  278. package/esm2020/sv/sv.module.mjs +0 -25
  279. package/esm2020/tag-select/tag-select.component.mjs +0 -63
  280. package/esm2020/tag-select/tag-select.module.mjs +0 -21
  281. package/esm2020/xlsx/xlsx.directive.mjs +0 -27
  282. package/esm2020/xlsx/xlsx.module.mjs +0 -19
  283. package/esm2020/xlsx/xlsx.service.mjs +0 -128
  284. package/esm2020/zip/zip.module.mjs +0 -15
  285. package/esm2020/zip/zip.service.mjs +0 -116
  286. package/fesm2015/avatar-list.mjs +0 -139
  287. package/fesm2015/avatar-list.mjs.map +0 -1
  288. package/fesm2015/chart-observer-size.mjs +0 -124
  289. package/fesm2015/chart-observer-size.mjs.map +0 -1
  290. package/fesm2015/count-down.mjs +0 -69
  291. package/fesm2015/count-down.mjs.map +0 -1
  292. package/fesm2015/date-picker.mjs +0 -236
  293. package/fesm2015/date-picker.mjs.map +0 -1
  294. package/fesm2015/down-file.mjs +0 -141
  295. package/fesm2015/down-file.mjs.map +0 -1
  296. package/fesm2015/ellipsis.mjs +0 -258
  297. package/fesm2015/ellipsis.mjs.map +0 -1
  298. package/fesm2015/error-collect.mjs +0 -147
  299. package/fesm2015/error-collect.mjs.map +0 -1
  300. package/fesm2015/exception.mjs +0 -138
  301. package/fesm2015/exception.mjs.map +0 -1
  302. package/fesm2015/footer-toolbar.mjs +0 -70
  303. package/fesm2015/footer-toolbar.mjs.map +0 -1
  304. package/fesm2015/full-content.mjs +0 -202
  305. package/fesm2015/full-content.mjs.map +0 -1
  306. package/fesm2015/global-footer.mjs +0 -126
  307. package/fesm2015/global-footer.mjs.map +0 -1
  308. package/fesm2015/hotkey.mjs +0 -57
  309. package/fesm2015/let.mjs +0 -59
  310. package/fesm2015/let.mjs.map +0 -1
  311. package/fesm2015/loading.mjs +0 -142
  312. package/fesm2015/loading.mjs.map +0 -1
  313. package/fesm2015/lodop.mjs +0 -232
  314. package/fesm2015/lodop.mjs.map +0 -1
  315. package/fesm2015/media.mjs +0 -180
  316. package/fesm2015/media.mjs.map +0 -1
  317. package/fesm2015/notice-icon.mjs +0 -180
  318. package/fesm2015/notice-icon.mjs.map +0 -1
  319. package/fesm2015/onboarding.mjs +0 -336
  320. package/fesm2015/onboarding.mjs.map +0 -1
  321. package/fesm2015/page-header.mjs +0 -276
  322. package/fesm2015/pdf.mjs +0 -516
  323. package/fesm2015/pdf.mjs.map +0 -1
  324. package/fesm2015/qr.mjs.map +0 -1
  325. package/fesm2015/quick-menu.mjs +0 -114
  326. package/fesm2015/quick-menu.mjs.map +0 -1
  327. package/fesm2015/result.mjs +0 -88
  328. package/fesm2015/result.mjs.map +0 -1
  329. package/fesm2015/reuse-tab.mjs +0 -1217
  330. package/fesm2015/se.mjs +0 -444
  331. package/fesm2015/se.mjs.map +0 -1
  332. package/fesm2015/sg.mjs +0 -139
  333. package/fesm2015/sg.mjs.map +0 -1
  334. package/fesm2015/st.mjs +0 -2526
  335. package/fesm2015/st.mjs.map +0 -1
  336. package/fesm2015/sv.mjs +0 -308
  337. package/fesm2015/sv.mjs.map +0 -1
  338. package/fesm2015/tag-select.mjs +0 -91
  339. package/fesm2015/tag-select.mjs.map +0 -1
  340. package/fesm2015/xlsx.mjs +0 -172
  341. package/fesm2015/xlsx.mjs.map +0 -1
  342. package/fesm2015/zip.mjs +0 -136
  343. package/fesm2020/abc.mjs +0 -7
  344. package/fesm2020/abc.mjs.map +0 -1
  345. package/fesm2020/auto-focus.mjs +0 -71
  346. package/fesm2020/auto-focus.mjs.map +0 -1
  347. package/fesm2020/avatar-list.mjs.map +0 -1
  348. package/fesm2020/chart-observer-size.mjs.map +0 -1
  349. package/fesm2020/count-down.mjs.map +0 -1
  350. package/fesm2020/date-picker.mjs.map +0 -1
  351. package/fesm2020/down-file.mjs.map +0 -1
  352. package/fesm2020/ellipsis.mjs.map +0 -1
  353. package/fesm2020/error-collect.mjs.map +0 -1
  354. package/fesm2020/exception.mjs.map +0 -1
  355. package/fesm2020/footer-toolbar.mjs.map +0 -1
  356. package/fesm2020/full-content.mjs.map +0 -1
  357. package/fesm2020/global-footer.mjs.map +0 -1
  358. package/fesm2020/hotkey.mjs.map +0 -1
  359. package/fesm2020/let.mjs.map +0 -1
  360. package/fesm2020/loading.mjs.map +0 -1
  361. package/fesm2020/media.mjs.map +0 -1
  362. package/fesm2020/notice-icon.mjs +0 -180
  363. package/fesm2020/notice-icon.mjs.map +0 -1
  364. package/fesm2020/page-header.mjs.map +0 -1
  365. package/fesm2020/qr.mjs +0 -171
  366. package/fesm2020/quick-menu.mjs.map +0 -1
  367. package/fesm2020/reuse-tab.mjs.map +0 -1
  368. package/fesm2020/se.mjs.map +0 -1
  369. package/fesm2020/sg.mjs.map +0 -1
  370. package/fesm2020/st.mjs.map +0 -1
  371. package/fesm2020/sv.mjs.map +0 -1
  372. package/fesm2020/tag-select.mjs.map +0 -1
  373. package/fesm2020/xlsx.mjs.map +0 -1
  374. package/fesm2020/zip.mjs.map +0 -1
  375. /package/{esm2020 → esm2022}/abc.mjs +0 -0
  376. /package/{esm2020 → esm2022}/auto-focus/auto-focus.mjs +0 -0
  377. /package/{esm2020 → esm2022}/auto-focus/index.mjs +0 -0
  378. /package/{esm2020 → esm2022}/avatar-list/avatar-list.mjs +0 -0
  379. /package/{esm2020 → esm2022}/avatar-list/public_api.mjs +0 -0
  380. /package/{esm2020 → esm2022}/count-down/count-down.mjs +0 -0
  381. /package/{esm2020 → esm2022}/count-down/public_api.mjs +0 -0
  382. /package/{esm2020 → esm2022}/date-picker/date-picker.mjs +0 -0
  383. /package/{esm2020 → esm2022}/date-picker/public_api.mjs +0 -0
  384. /package/{esm2020 → esm2022}/down-file/down-file.mjs +0 -0
  385. /package/{esm2020 → esm2022}/down-file/public_api.mjs +0 -0
  386. /package/{esm2020 → esm2022}/ellipsis/ellipsis.mjs +0 -0
  387. /package/{esm2020 → esm2022}/ellipsis/public_api.mjs +0 -0
  388. /package/{esm2020 → esm2022}/error-collect/error-collect.mjs +0 -0
  389. /package/{esm2020 → esm2022}/error-collect/public_api.mjs +0 -0
  390. /package/{esm2020 → esm2022}/exception/exception.mjs +0 -0
  391. /package/{esm2020 → esm2022}/exception/public_api.mjs +0 -0
  392. /package/{esm2020 → esm2022}/footer-toolbar/footer-toolbar.mjs +0 -0
  393. /package/{esm2020 → esm2022}/footer-toolbar/public_api.mjs +0 -0
  394. /package/{esm2020 → esm2022}/full-content/full-content.mjs +0 -0
  395. /package/{esm2020 → esm2022}/full-content/public_api.mjs +0 -0
  396. /package/{esm2020 → esm2022}/global-footer/global-footer.mjs +0 -0
  397. /package/{esm2020 → esm2022}/global-footer/global-footer.types.mjs +0 -0
  398. /package/{esm2020 → esm2022}/global-footer/public_api.mjs +0 -0
  399. /package/{esm2020 → esm2022}/hotkey/hotkey.mjs +0 -0
  400. /package/{esm2020 → esm2022}/hotkey/public_api.mjs +0 -0
  401. /package/{esm2020 → esm2022}/let/index.mjs +0 -0
  402. /package/{esm2020 → esm2022}/let/let.mjs +0 -0
  403. /package/{esm2020 → esm2022}/loading/loading.mjs +0 -0
  404. /package/{esm2020 → esm2022}/loading/loading.types.mjs +0 -0
  405. /package/{esm2020 → esm2022}/loading/public_api.mjs +0 -0
  406. /package/{esm2020 → esm2022}/lodop/lodop.mjs +0 -0
  407. /package/{esm2020 → esm2022}/lodop/lodop.types.mjs +0 -0
  408. /package/{esm2020 → esm2022}/lodop/public_api.mjs +0 -0
  409. /package/{esm2020 → esm2022}/media/media.mjs +0 -0
  410. /package/{esm2020 → esm2022}/media/public_api.mjs +0 -0
  411. /package/{esm2020 → esm2022}/notice-icon/notice-icon.mjs +0 -0
  412. /package/{esm2020 → esm2022}/notice-icon/notice-icon.types.mjs +0 -0
  413. /package/{esm2020 → esm2022}/notice-icon/public_api.mjs +0 -0
  414. /package/{esm2020 → esm2022}/observers/chart-observer-size.mjs +0 -0
  415. /package/{esm2020 → esm2022}/observers/public-api.mjs +0 -0
  416. /package/{esm2020 → esm2022}/onboarding/onboarding.mjs +0 -0
  417. /package/{esm2020 → esm2022}/onboarding/onboarding.types.mjs +0 -0
  418. /package/{esm2020 → esm2022}/onboarding/public_api.mjs +0 -0
  419. /package/{esm2020 → esm2022}/page-header/page-header.mjs +0 -0
  420. /package/{esm2020 → esm2022}/page-header/public_api.mjs +0 -0
  421. /package/{esm2020 → esm2022}/pdf/pdf.config.mjs +0 -0
  422. /package/{esm2020 → esm2022}/pdf/pdf.mjs +0 -0
  423. /package/{esm2020 → esm2022}/pdf/pdf.types.mjs +0 -0
  424. /package/{esm2020 → esm2022}/pdf/public_api.mjs +0 -0
  425. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  426. /package/{esm2020 → esm2022}/qr/public_api.mjs +0 -0
  427. /package/{esm2020 → esm2022}/qr/qr.config.mjs +0 -0
  428. /package/{esm2020 → esm2022}/qr/qr.mjs +0 -0
  429. /package/{esm2020 → esm2022}/qr/qr.types.mjs +0 -0
  430. /package/{esm2020 → esm2022}/quick-menu/public_api.mjs +0 -0
  431. /package/{esm2020 → esm2022}/quick-menu/quick-menu.mjs +0 -0
  432. /package/{esm2020 → esm2022}/result/public_api.mjs +0 -0
  433. /package/{esm2020 → esm2022}/result/result.mjs +0 -0
  434. /package/{esm2020 → esm2022}/reuse-tab/lifecycle_hooks.mjs +0 -0
  435. /package/{esm2020 → esm2022}/reuse-tab/public_api.mjs +0 -0
  436. /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.interfaces.mjs +0 -0
  437. /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.mjs +0 -0
  438. /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.state.mjs +0 -0
  439. /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.strategy.mjs +0 -0
  440. /package/{esm2020 → esm2022}/se/public_api.mjs +0 -0
  441. /package/{esm2020 → esm2022}/se/se.mjs +0 -0
  442. /package/{esm2020 → esm2022}/se/se.types.mjs +0 -0
  443. /package/{esm2020 → esm2022}/sg/public_api.mjs +0 -0
  444. /package/{esm2020 → esm2022}/sg/sg.mjs +0 -0
  445. /package/{esm2020 → esm2022}/st/public_api.mjs +0 -0
  446. /package/{esm2020 → esm2022}/st/st.config.mjs +0 -0
  447. /package/{esm2020 → esm2022}/st/st.interfaces.mjs +0 -0
  448. /package/{esm2020 → esm2022}/st/st.mjs +0 -0
  449. /package/{esm2020 → esm2022}/st/st.types.mjs +0 -0
  450. /package/{esm2020 → esm2022}/sv/public_api.mjs +0 -0
  451. /package/{esm2020 → esm2022}/sv/sv.mjs +0 -0
  452. /package/{esm2020 → esm2022}/tag-select/public_api.mjs +0 -0
  453. /package/{esm2020 → esm2022}/tag-select/tag-select.mjs +0 -0
  454. /package/{esm2020 → esm2022}/xlsx/public_api.mjs +0 -0
  455. /package/{esm2020 → esm2022}/xlsx/xlsx.mjs +0 -0
  456. /package/{esm2020 → esm2022}/xlsx/xlsx.types.mjs +0 -0
  457. /package/{esm2020 → esm2022}/zip/public_api.mjs +0 -0
  458. /package/{esm2020 → esm2022}/zip/zip.mjs +0 -0
  459. /package/{esm2020 → esm2022}/zip/zip.types.mjs +0 -0
  460. /package/{fesm2015 → fesm2022}/abc.mjs +0 -0
  461. /package/{fesm2015 → fesm2022}/abc.mjs.map +0 -0
@@ -1,492 +0,0 @@
1
- import { Host, Inject, Injectable, Optional } from '@angular/core';
2
- import { ALAIN_I18N_TOKEN } from '@delon/theme';
3
- import { deepCopy, warn } from '@delon/util/other';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/platform-browser";
6
- import * as i2 from "./st-row.directive";
7
- import * as i3 from "@delon/acl";
8
- import * as i4 from "./st-widget";
9
- export class STColumnSource {
10
- constructor(dom, rowSource, acl, i18nSrv, stWidgetRegistry) {
11
- this.dom = dom;
12
- this.rowSource = rowSource;
13
- this.acl = acl;
14
- this.i18nSrv = i18nSrv;
15
- this.stWidgetRegistry = stWidgetRegistry;
16
- }
17
- setCog(val) {
18
- this.cog = val;
19
- }
20
- fixPop(i, def) {
21
- if (i.pop == null || i.pop === false) {
22
- i.pop = false;
23
- return;
24
- }
25
- let pop = {
26
- ...def
27
- };
28
- if (typeof i.pop === 'string') {
29
- pop.title = i.pop;
30
- }
31
- else if (typeof i.pop === 'object') {
32
- pop = {
33
- ...pop,
34
- ...i.pop
35
- };
36
- }
37
- if (typeof pop.condition !== 'function') {
38
- pop.condition = () => false;
39
- }
40
- i.pop = pop;
41
- }
42
- btnCoerce(list) {
43
- if (!list)
44
- return [];
45
- const ret = [];
46
- const { modal, drawer, pop, btnIcon } = this.cog;
47
- for (const item of list) {
48
- if (this.acl && item.acl && !this.acl.can(item.acl)) {
49
- continue;
50
- }
51
- if (item.type === 'modal' || item.type === 'static') {
52
- if (item.modal == null || item.modal.component == null) {
53
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
54
- console.warn(`[st] Should specify modal parameter when type is modal or static`);
55
- }
56
- item.type = 'none';
57
- }
58
- else {
59
- item.modal = { ...{ paramsName: 'record', size: 'lg' }, ...modal, ...item.modal };
60
- }
61
- }
62
- if (item.type === 'drawer') {
63
- if (item.drawer == null || item.drawer.component == null) {
64
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
65
- console.warn(`[st] Should specify drawer parameter when type is drawer`);
66
- }
67
- item.type = 'none';
68
- }
69
- else {
70
- item.drawer = { ...{ paramsName: 'record', size: 'lg' }, ...drawer, ...item.drawer };
71
- }
72
- }
73
- if (item.type === 'del' && typeof item.pop === 'undefined') {
74
- item.pop = true;
75
- }
76
- // pop
77
- this.fixPop(item, pop);
78
- if (item.icon) {
79
- item.icon = {
80
- ...btnIcon,
81
- ...(typeof item.icon === 'string' ? { type: item.icon } : item.icon)
82
- };
83
- }
84
- item.children = item.children && item.children.length > 0 ? this.btnCoerce(item.children) : [];
85
- // i18n
86
- if (item.i18n && this.i18nSrv) {
87
- item.text = this.i18nSrv.fanyi(item.i18n);
88
- }
89
- ret.push(item);
90
- }
91
- this.btnCoerceIf(ret);
92
- return ret;
93
- }
94
- btnCoerceIf(list) {
95
- for (const item of list) {
96
- item.iifBehavior = item.iifBehavior || this.cog.iifBehavior;
97
- if (item.children && item.children.length > 0) {
98
- this.btnCoerceIf(item.children);
99
- }
100
- else {
101
- item.children = [];
102
- }
103
- }
104
- }
105
- fixedCoerce(list) {
106
- const countReduce = (a, b) => a + +b.width.toString().replace('px', '');
107
- // left width
108
- list
109
- .filter(w => w.fixed && w.fixed === 'left' && w.width)
110
- .forEach((item, idx) => (item._left = `${list.slice(0, idx).reduce(countReduce, 0)}px`));
111
- // right width
112
- list
113
- .filter(w => w.fixed && w.fixed === 'right' && w.width)
114
- .reverse()
115
- .forEach((item, idx) => (item._right = `${idx > 0 ? list.slice(-idx).reduce(countReduce, 0) : 0}px`));
116
- }
117
- sortCoerce(item) {
118
- const res = this.fixSortCoerce(item);
119
- res.reName = {
120
- ...this.cog.sortReName,
121
- ...res.reName
122
- };
123
- return res;
124
- }
125
- fixSortCoerce(item) {
126
- if (typeof item.sort === 'undefined') {
127
- return { enabled: false };
128
- }
129
- let res = {};
130
- if (typeof item.sort === 'string') {
131
- res.key = item.sort;
132
- }
133
- else if (typeof item.sort !== 'boolean') {
134
- res = item.sort;
135
- }
136
- else if (typeof item.sort === 'boolean') {
137
- res.compare = (a, b) => a[item.indexKey] - b[item.indexKey];
138
- }
139
- if (!res.key) {
140
- res.key = item.indexKey;
141
- }
142
- res.enabled = true;
143
- return res;
144
- }
145
- filterCoerce(item) {
146
- if (item.filter == null) {
147
- return null;
148
- }
149
- let res = item.filter;
150
- res.type = res.type || 'default';
151
- res.showOPArea = res.showOPArea !== false;
152
- let icon = 'filter';
153
- let iconTheme = 'fill';
154
- let fixMenus = true;
155
- let value = undefined;
156
- switch (res.type) {
157
- case 'keyword':
158
- icon = 'search';
159
- iconTheme = 'outline';
160
- break;
161
- case 'number':
162
- icon = 'search';
163
- iconTheme = 'outline';
164
- res.number = {
165
- step: 1,
166
- min: -Infinity,
167
- max: Infinity,
168
- ...res.number
169
- };
170
- break;
171
- case 'date':
172
- icon = 'calendar';
173
- iconTheme = 'outline';
174
- res.date = {
175
- range: false,
176
- mode: 'date',
177
- showToday: true,
178
- showNow: false,
179
- ...res.date
180
- };
181
- break;
182
- case 'custom':
183
- break;
184
- default:
185
- fixMenus = false;
186
- break;
187
- }
188
- if (fixMenus && (res.menus == null || res.menus.length === 0)) {
189
- res.menus = [{ value }];
190
- }
191
- if (res.menus?.length === 0) {
192
- return null;
193
- }
194
- if (typeof res.multiple === 'undefined') {
195
- res.multiple = true;
196
- }
197
- res.confirmText = res.confirmText || this.cog.filterConfirmText;
198
- res.clearText = res.clearText || this.cog.filterClearText;
199
- res.key = res.key || item.indexKey;
200
- res.icon = res.icon || icon;
201
- const baseIcon = { type: icon, theme: iconTheme };
202
- if (typeof res.icon === 'string') {
203
- res.icon = { ...baseIcon, type: res.icon };
204
- }
205
- else {
206
- res.icon = { ...baseIcon, ...res.icon };
207
- }
208
- this.updateDefault(res);
209
- if (this.acl) {
210
- res.menus = res.menus?.filter(w => this.acl.can(w.acl));
211
- }
212
- return res.menus?.length === 0 ? null : res;
213
- }
214
- restoreRender(item) {
215
- if (item.renderTitle) {
216
- item.__renderTitle =
217
- typeof item.renderTitle === 'string'
218
- ? this.rowSource.getTitle(item.renderTitle)
219
- : item.renderTitle;
220
- }
221
- if (item.render) {
222
- item.__render =
223
- typeof item.render === 'string' ? this.rowSource.getRow(item.render) : item.render;
224
- }
225
- }
226
- widgetCoerce(item) {
227
- if (item.type !== 'widget')
228
- return;
229
- if (item.widget == null || !this.stWidgetRegistry.has(item.widget.type)) {
230
- delete item.type;
231
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
232
- warn(`st: No widget for type "${item.widget?.type}"`);
233
- }
234
- }
235
- }
236
- genHeaders(rootColumns) {
237
- const rows = [];
238
- const widths = [];
239
- const fillRowCells = (columns, colIndex, rowIndex = 0) => {
240
- // Init rows
241
- rows[rowIndex] = rows[rowIndex] || [];
242
- let currentColIndex = colIndex;
243
- const colSpans = columns.map(column => {
244
- const cell = {
245
- column,
246
- colStart: currentColIndex,
247
- hasSubColumns: false
248
- };
249
- let colSpan = 1;
250
- const subColumns = column.children;
251
- if (Array.isArray(subColumns) && subColumns.length > 0) {
252
- colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce((total, count) => total + count, 0);
253
- cell.hasSubColumns = true;
254
- }
255
- else {
256
- widths.push(cell.column.width || '');
257
- }
258
- if ('colSpan' in column) {
259
- colSpan = column.colSpan;
260
- }
261
- if ('rowSpan' in column) {
262
- cell.rowSpan = column.rowSpan;
263
- }
264
- cell.colSpan = colSpan;
265
- cell.colEnd = cell.colStart + colSpan - 1;
266
- rows[rowIndex].push(cell);
267
- currentColIndex += colSpan;
268
- return colSpan;
269
- });
270
- return colSpans;
271
- };
272
- fillRowCells(rootColumns, 0);
273
- // Handle `rowSpan`
274
- const rowCount = rows.length;
275
- for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
276
- rows[rowIndex].forEach(cell => {
277
- if (!('rowSpan' in cell) && !cell.hasSubColumns) {
278
- cell.rowSpan = rowCount - rowIndex;
279
- }
280
- });
281
- }
282
- return { headers: rows, headerWidths: rowCount > 1 ? widths : null };
283
- }
284
- cleanCond(list) {
285
- const res = [];
286
- const copyList = deepCopy(list);
287
- for (const item of copyList) {
288
- if (typeof item.iif === 'function' && !item.iif(item)) {
289
- continue;
290
- }
291
- if (this.acl && item.acl && !this.acl.can(item.acl)) {
292
- continue;
293
- }
294
- if (Array.isArray(item.children) && item.children.length > 0) {
295
- item.children = this.cleanCond(item.children);
296
- }
297
- res.push(item);
298
- }
299
- return res;
300
- }
301
- mergeClass(item) {
302
- const builtInClassNames = [];
303
- if (item._isTruncate) {
304
- builtInClassNames.push('text-truncate');
305
- }
306
- const rawClassName = item.className;
307
- if (!rawClassName) {
308
- const typeClass = {
309
- number: 'text-right',
310
- currency: 'text-right',
311
- date: 'text-center'
312
- }[item.type];
313
- if (typeClass) {
314
- builtInClassNames.push(typeClass);
315
- }
316
- item._className = builtInClassNames;
317
- return;
318
- }
319
- const rawClassNameIsArray = Array.isArray(rawClassName);
320
- if (!rawClassNameIsArray && typeof rawClassName === 'object') {
321
- const objClassNames = rawClassName;
322
- builtInClassNames.forEach(key => (objClassNames[key] = true));
323
- item._className = objClassNames;
324
- return;
325
- }
326
- const arrayClassNames = rawClassNameIsArray ? Array.from(rawClassName) : [rawClassName];
327
- arrayClassNames.splice(0, 0, ...builtInClassNames);
328
- item._className = [...new Set(arrayClassNames)].filter(w => !!w);
329
- }
330
- process(list, options) {
331
- if (!list || list.length === 0) {
332
- return { columns: [], headers: [], headerWidths: null };
333
- }
334
- const { noIndex } = this.cog;
335
- let checkboxCount = 0;
336
- let radioCount = 0;
337
- let point = 0;
338
- const columns = [];
339
- const processItem = (item) => {
340
- // index
341
- if (item.index) {
342
- if (!Array.isArray(item.index)) {
343
- item.index = item.index.toString().split('.');
344
- }
345
- item.indexKey = item.index.join('.');
346
- }
347
- // #region title
348
- const tit = (typeof item.title === 'string' ? { text: item.title } : item.title) || {};
349
- if (tit.i18n && this.i18nSrv) {
350
- tit.text = this.i18nSrv.fanyi(tit.i18n);
351
- }
352
- if (tit.text) {
353
- tit._text = this.dom.bypassSecurityTrustHtml(tit.text);
354
- }
355
- item.title = tit;
356
- // #endregion
357
- // no
358
- if (item.type === 'no') {
359
- item.noIndex = item.noIndex == null ? noIndex : item.noIndex;
360
- }
361
- // checkbox
362
- if (item.selections == null) {
363
- item.selections = [];
364
- }
365
- if (item.type === 'checkbox') {
366
- ++checkboxCount;
367
- if (!item.width) {
368
- item.width = `${item.selections.length > 0 ? 62 : 50}px`;
369
- }
370
- }
371
- if (this.acl) {
372
- item.selections = item.selections.filter(w => this.acl.can(w.acl));
373
- }
374
- // radio
375
- if (item.type === 'radio') {
376
- ++radioCount;
377
- item.selections = [];
378
- if (!item.width) {
379
- item.width = '50px';
380
- }
381
- }
382
- // types
383
- if (item.type === 'yn') {
384
- item.yn = { truth: true, ...this.cog.yn, ...item.yn };
385
- }
386
- // date
387
- if (item.type === 'date') {
388
- item.dateFormat = item.dateFormat || this.cog.date?.format;
389
- }
390
- if ((item.type === 'link' && typeof item.click !== 'function') ||
391
- (item.type === 'badge' && item.badge == null) ||
392
- (item.type === 'tag' && item.tag == null) ||
393
- (item.type === 'enum' && item.enum == null)) {
394
- item.type = '';
395
- }
396
- item._isTruncate = !!item.width && options.widthMode.strictBehavior === 'truncate' && item.type !== 'img';
397
- // className
398
- this.mergeClass(item);
399
- // width
400
- if (typeof item.width === 'number') {
401
- item._width = item.width;
402
- item.width = `${item.width}px`;
403
- }
404
- item._left = false;
405
- item._right = false;
406
- item.safeType = item.safeType ?? options.safeType;
407
- // sorter
408
- item._sort = this.sortCoerce(item);
409
- // filter
410
- item.filter = this.filterCoerce(item);
411
- // buttons
412
- item.buttons = this.btnCoerce(item.buttons);
413
- // widget
414
- this.widgetCoerce(item);
415
- // restore custom row
416
- this.restoreRender(item);
417
- // resizable
418
- item.resizable = {
419
- disabled: true,
420
- bounds: 'window',
421
- minWidth: 60,
422
- maxWidth: 360,
423
- preview: true,
424
- ...options.resizable,
425
- ...(typeof item.resizable === 'boolean' ? { disabled: !item.resizable } : item.resizable)
426
- };
427
- item.__point = point++;
428
- return item;
429
- };
430
- const processList = (data) => {
431
- for (const item of data) {
432
- columns.push(processItem(item));
433
- if (Array.isArray(item.children)) {
434
- processList(item.children);
435
- }
436
- }
437
- };
438
- const copyList = this.cleanCond(list);
439
- processList(copyList);
440
- if (checkboxCount > 1) {
441
- throw new Error(`[st]: just only one column checkbox`);
442
- }
443
- if (radioCount > 1) {
444
- throw new Error(`[st]: just only one column radio`);
445
- }
446
- this.fixedCoerce(columns);
447
- return {
448
- columns: columns.filter(w => !Array.isArray(w.children) || w.children.length === 0),
449
- ...this.genHeaders(copyList)
450
- };
451
- }
452
- restoreAllRender(columns) {
453
- columns.forEach(i => this.restoreRender(i));
454
- }
455
- updateDefault(filter) {
456
- if (filter.menus == null)
457
- return this;
458
- if (filter.type === 'default') {
459
- filter.default = filter.menus.findIndex(w => w.checked) !== -1;
460
- }
461
- else {
462
- filter.default = !!filter.menus[0].value;
463
- }
464
- return this;
465
- }
466
- cleanFilter(col) {
467
- const f = col.filter;
468
- f.default = false;
469
- if (f.type === 'default') {
470
- f.menus.forEach(i => (i.checked = false));
471
- }
472
- else {
473
- f.menus[0].value = undefined;
474
- }
475
- return this;
476
- }
477
- }
478
- STColumnSource.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: STColumnSource, deps: [{ token: i1.DomSanitizer }, { token: i2.STRowSource, host: true }, { token: i3.ACLService, optional: true }, { token: ALAIN_I18N_TOKEN, optional: true }, { token: i4.STWidgetRegistry }], target: i0.ɵɵFactoryTarget.Injectable });
479
- STColumnSource.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: STColumnSource });
480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: STColumnSource, decorators: [{
481
- type: Injectable
482
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.STRowSource, decorators: [{
483
- type: Host
484
- }] }, { type: i3.ACLService, decorators: [{
485
- type: Optional
486
- }] }, { type: undefined, decorators: [{
487
- type: Optional
488
- }, {
489
- type: Inject,
490
- args: [ALAIN_I18N_TOKEN]
491
- }] }, { type: i4.STWidgetRegistry }]; } });
492
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9zdC9zdC1jb2x1bW4tc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUEwQm5ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ1UsR0FBaUIsRUFDVCxTQUFzQixFQUNsQixHQUFlLEVBQ1csT0FBeUIsRUFDL0QsZ0JBQWtDO1FBSmxDLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFDVCxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ2xCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDVyxZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUMvRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQ3pDLENBQUM7SUFFSixNQUFNLENBQUMsR0FBa0I7UUFDdkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxDQUFpQixFQUFFLEdBQXNCO1FBQ3RELElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLEVBQUU7WUFDcEMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7WUFDZCxPQUFPO1NBQ1I7UUFFRCxJQUFJLEdBQUcsR0FBRztZQUNSLEdBQUcsR0FBRztTQUNQLENBQUM7UUFDRixJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDN0IsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FB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QixVQUFVOzswQkFNTixJQUFJOzswQkFDSixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhvc3QsIEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgQUNMU2VydmljZSB9IGZyb20gJ0BkZWxvbi9hY2wnO1xuaW1wb3J0IHsgQWxhaW5JMThOU2VydmljZSwgQUxBSU5fSTE4Tl9UT0tFTiB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBBbGFpblNUQ29uZmlnIH0gZnJvbSAnQGRlbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IGRlZXBDb3B5LCB3YXJuIH0gZnJvbSAnQGRlbG9uL3V0aWwvb3RoZXInO1xuaW1wb3J0IHR5cGUgeyBOZ0NsYXNzSW50ZXJmYWNlLCBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQgeyBTVFJvd1NvdXJjZSB9IGZyb20gJy4vc3Qtcm93LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTVFdpZGdldFJlZ2lzdHJ5IH0gZnJvbSAnLi9zdC13aWRnZXQnO1xuaW1wb3J0IHtcbiAgU1RDb2x1bW4sXG4gIFNUQ29sdW1uQnV0dG9uLFxuICBTVENvbHVtbkJ1dHRvblBvcCxcbiAgU1RDb2x1bW5GaWx0ZXIsXG4gIFNUQ29sdW1uR3JvdXBUeXBlLFxuICBTVENvbHVtblNhZmVUeXBlLFxuICBTVEljb24sXG4gIFNUUmVzaXphYmxlLFxuICBTVFNvcnRNYXAsXG4gIFNUV2lkdGhNb2RlXG59IGZyb20gJy4vc3QuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBfU1RDb2x1bW4sIF9TVEhlYWRlciB9IGZyb20gJy4vc3QudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNUQ29sdW1uU291cmNlUHJvY2Vzc09wdGlvbnMge1xuICB3aWR0aE1vZGU6IFNUV2lkdGhNb2RlO1xuICByZXNpemFibGU/OiBTVFJlc2l6YWJsZTtcbiAgc2FmZVR5cGU6IFNUQ29sdW1uU2FmZVR5cGU7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTVENvbHVtblNvdXJjZSB7XG4gIHByaXZhdGUgY29nITogQWxhaW5TVENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvbTogRG9tU2FuaXRpemVyLFxuICAgIEBIb3N0KCkgcHJpdmF0ZSByb3dTb3VyY2U6IFNUUm93U291cmNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYWNsOiBBQ0xTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQUxBSU5fSTE4Tl9UT0tFTikgcHJpdmF0ZSBpMThuU3J2OiBBbGFpbkkxOE5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RXaWRnZXRSZWdpc3RyeTogU1RXaWRnZXRSZWdpc3RyeVxuICApIHt9XG5cbiAgc2V0Q29nKHZhbDogQWxhaW5TVENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29nID0gdmFsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXhQb3AoaTogU1RDb2x1bW5CdXR0b24sIGRlZjogU1RDb2x1bW5CdXR0b25Qb3ApOiB2b2lkIHtcbiAgICBpZiAoaS5wb3AgPT0gbnVsbCB8fCBpLnBvcCA9PT0gZmFsc2UpIHtcbiAgICAgIGkucG9wID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHBvcCA9IHtcbiAgICAgIC4uLmRlZlxuICAgIH07XG4gICAgaWYgKHR5cGVvZiBpLnBvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBvcC50aXRsZSA9IGkucG9wO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGkucG9wID09PSAnb2JqZWN0Jykge1xuICAgICAgcG9wID0ge1xuICAgICAgICAuLi5wb3AsXG4gICAgICAgIC4uLmkucG9wXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcG9wLmNvbmRpdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcG9wLmNvbmRpdGlvbiA9ICgpID0+IGZhbHNlO1xuICAgIH1cblxuICAgIGkucG9wID0gcG9wO1xuICB9XG5cbiAgcHJpdmF0ZSBidG5Db2VyY2UobGlzdDogU1RDb2x1bW5CdXR0b25bXSk6IFNUQ29sdW1uQnV0dG9uW10ge1xuICAgIGlmICghbGlzdCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHJldDogU1RDb2x1bW5CdXR0b25bXSA9IFtdO1xuICAgIGNvbnN0IHsgbW9kYWwsIGRyYXdlciwgcG9wLCBidG5JY29uIH0gPSB0aGlzLmNvZztcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICBpZiAodGhpcy5hY2wgJiYgaXRlbS5hY2wgJiYgIXRoaXMuYWNsLmNhbihpdGVtLmFjbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdtb2RhbCcgfHwgaXRlbS50eXBlID09PSAnc3RhdGljJykge1xuICAgICAgICBpZiAoaXRlbS5tb2RhbCA9PSBudWxsIHx8IGl0ZW0ubW9kYWwuY29tcG9uZW50ID09IG51bGwpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtzdF0gU2hvdWxkIHNwZWNpZnkgbW9kYWwgcGFyYW1ldGVyIHdoZW4gdHlwZSBpcyBtb2RhbCBvciBzdGF0aWNgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXRlbS50eXBlID0gJ25vbmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0ubW9kYWwgPSB7IC4uLnsgcGFyYW1zTmFtZTogJ3JlY29yZCcsIHNpemU6ICdsZycgfSwgLi4ubW9kYWwsIC4uLml0ZW0ubW9kYWwgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnZHJhd2VyJykge1xuICAgICAgICBpZiAoaXRlbS5kcmF3ZXIgPT0gbnVsbCB8fCBpdGVtLmRyYXdlci5jb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW3N0XSBTaG91bGQgc3BlY2lmeSBkcmF3ZXIgcGFyYW1ldGVyIHdoZW4gdHlwZSBpcyBkcmF3ZXJgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaXRlbS50eXBlID0gJ25vbmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0uZHJhd2VyID0geyAuLi57IHBhcmFtc05hbWU6ICdyZWNvcmQnLCBzaXplOiAnbGcnIH0sIC4uLmRyYXdlciwgLi4uaXRlbS5kcmF3ZXIgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnZGVsJyAmJiB0eXBlb2YgaXRlbS5wb3AgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGl0ZW0ucG9wID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gcG9wXG4gICAgICB0aGlzLmZpeFBvcChpdGVtLCBwb3AhKTtcblxuICAgICAgaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICBpdGVtLmljb24gPSB7XG4gICAgICAgICAgLi4uYnRuSWNvbixcbiAgICAgICAgICAuLi4odHlwZW9mIGl0ZW0uaWNvbiA9PT0gJ3N0cmluZycgPyB7IHR5cGU6IGl0ZW0uaWNvbiB9IDogaXRlbS5pY29uKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDAgPyB0aGlzLmJ0bkNvZXJjZShpdGVtLmNoaWxkcmVuKSA6IFtdO1xuXG4gICAgICAvLyBpMThuXG4gICAgICBpZiAoaXRlbS5pMThuICYmIHRoaXMuaTE4blNydikge1xuICAgICAgICBpdGVtLnRleHQgPSB0aGlzLmkxOG5TcnYuZmFueWkoaXRlbS5pMThuKTtcbiAgICAgIH1cblxuICAgICAgcmV0LnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHRoaXMuYnRuQ29lcmNlSWYocmV0KTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSBidG5Db2VyY2VJZihsaXN0OiBTVENvbHVtbkJ1dHRvbltdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGl0ZW0uaWlmQmVoYXZpb3IgPSBpdGVtLmlpZkJlaGF2aW9yIHx8IHRoaXMuY29nLmlpZkJlaGF2aW9yO1xuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuYnRuQ29lcmNlSWYoaXRlbS5jaGlsZHJlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNoaWxkcmVuID0gW107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhlZENvZXJjZShsaXN0OiBfU1RDb2x1bW5bXSk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50UmVkdWNlID0gKGE6IG51bWJlciwgYjogX1NUQ29sdW1uKTogbnVtYmVyID0+IGEgKyArYi53aWR0aCEudG9TdHJpbmcoKS5yZXBsYWNlKCdweCcsICcnKTtcbiAgICAvLyBsZWZ0IHdpZHRoXG4gICAgbGlzdFxuICAgICAgLmZpbHRlcih3ID0+IHcuZml4ZWQgJiYgdy5maXhlZCA9PT0gJ2xlZnQnICYmIHcud2lkdGgpXG4gICAgICAuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiAoaXRlbS5fbGVmdCA9IGAke2xpc3Quc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnRSZWR1Y2UsIDApfXB4YCkpO1xuICAgIC8vIHJpZ2h0IHdpZHRoXG4gICAgbGlzdFxuICAgICAgLmZpbHRlcih3ID0+IHcuZml4ZWQgJiYgdy5maXhlZCA9PT0gJ3JpZ2h0JyAmJiB3LndpZHRoKVxuICAgICAgLnJldmVyc2UoKVxuICAgICAgLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4gKGl0ZW0uX3JpZ2h0ID0gYCR7aWR4ID4gMCA/IGxpc3Quc2xpY2UoLWlkeCkucmVkdWNlKGNvdW50UmVkdWNlLCAwKSA6IDB9cHhgKSk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRDb2VyY2UoaXRlbTogX1NUQ29sdW1uKTogU1RTb3J0TWFwIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmZpeFNvcnRDb2VyY2UoaXRlbSk7XG4gICAgcmVzLnJlTmFtZSA9IHtcbiAgICAgIC4uLnRoaXMuY29nLnNvcnRSZU5hbWUsXG4gICAgICAuLi5yZXMucmVOYW1lXG4gICAgfTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXhTb3J0Q29lcmNlKGl0ZW06IF9TVENvbHVtbik6IFNUU29ydE1hcCB7XG4gICAgaWYgKHR5cGVvZiBpdGVtLnNvcnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4geyBlbmFibGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGxldCByZXM6IFNUU29ydE1hcCA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBpdGVtLnNvcnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXMua2V5ID0gaXRlbS5zb3J0O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGl0ZW0uc29ydCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXMgPSBpdGVtLnNvcnQ7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5zb3J0ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJlcy5jb21wYXJlID0gKGEsIGIpID0+IGFbaXRlbS5pbmRleEtleSFdIC0gYltpdGVtLmluZGV4S2V5IV07XG4gICAgfVxuXG4gICAgaWYgKCFyZXMua2V5KSB7XG4gICAgICByZXMua2V5ID0gaXRlbS5pbmRleEtleTtcbiAgICB9XG5cbiAgICByZXMuZW5hYmxlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDb2VyY2UoaXRlbTogX1NUQ29sdW1uKTogU1RDb2x1bW5GaWx0ZXIgfCBudWxsIHtcbiAgICBpZiAoaXRlbS5maWx0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHJlczogU1RDb2x1bW5GaWx0ZXIgfCBudWxsID0gaXRlbS5maWx0ZXI7XG4gICAgcmVzLnR5cGUgPSByZXMudHlwZSB8fCAnZGVmYXVsdCc7XG4gICAgcmVzLnNob3dPUEFyZWEgPSByZXMuc2hvd09QQXJlYSAhPT0gZmFsc2U7XG5cbiAgICBsZXQgaWNvbiA9ICdmaWx0ZXInO1xuICAgIGxldCBpY29uVGhlbWUgPSAnZmlsbCc7XG4gICAgbGV0IGZpeE1lbnVzID0gdHJ1ZTtcbiAgICBsZXQgdmFsdWU6IE56U2FmZUFueSA9IHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKHJlcy50eXBlKSB7XG4gICAgICBjYXNlICdrZXl3b3JkJzpcbiAgICAgICAgaWNvbiA9ICdzZWFyY2gnO1xuICAgICAgICBpY29uVGhlbWUgPSAnb3V0bGluZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaWNvbiA9ICdzZWFyY2gnO1xuICAgICAgICBpY29uVGhlbWUgPSAnb3V0bGluZSc7XG4gICAgICAgIHJlcy5udW1iZXIgPSB7XG4gICAgICAgICAgc3RlcDogMSxcbiAgICAgICAgICBtaW46IC1JbmZpbml0eSxcbiAgICAgICAgICBtYXg6IEluZmluaXR5LFxuICAgICAgICAgIC4uLnJlcy5udW1iZXJcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgaWNvbiA9ICdjYWxlbmRhcic7XG4gICAgICAgIGljb25UaGVtZSA9ICdvdXRsaW5lJztcbiAgICAgICAgcmVzLmRhdGUgPSB7XG4gICAgICAgICAgcmFuZ2U6IGZhbHNlLFxuICAgICAgICAgIG1vZGU6ICdkYXRlJyxcbiAgICAgICAgICBzaG93VG9kYXk6IHRydWUsXG4gICAgICAgICAgc2hvd05vdzogZmFsc2UsXG4gICAgICAgICAgLi4ucmVzLmRhdGVcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjdXN0b20nOlxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGZpeE1lbnVzID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAoZml4TWVudXMgJiYgKHJlcy5tZW51cyA9PSBudWxsIHx8IHJlcy5tZW51cyEubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmVzLm1lbnVzID0gW3sgdmFsdWUgfV07XG4gICAgfVxuXG4gICAgaWYgKHJlcy5tZW51cz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHJlcy5tdWx0aXBsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlcy5tdWx0aXBsZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmVzLmNvbmZpcm1UZXh0ID0gcmVzLmNvbmZpcm1UZXh0IHx8IHRoaXMuY29nLmZpbHRlckNvbmZpcm1UZXh0O1xuICAgIHJlcy5jbGVhclRleHQgPSByZXMuY2xlYXJUZXh0IHx8IHRoaXMuY29nLmZpbHRlckNsZWFyVGV4dDtcbiAgICByZXMua2V5ID0gcmVzLmtleSB8fCBpdGVtLmluZGV4S2V5O1xuICAgIHJlcy5pY29uID0gcmVzLmljb24gfHwgaWNvbjtcblxuICAgIGNvbnN0IGJhc2VJY29uID0geyB0eXBlOiBpY29uLCB0aGVtZTogaWNvblRoZW1lIH0gYXMgU1RJY29uO1xuICAgIGlmICh0eXBlb2YgcmVzLmljb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXMuaWNvbiA9IHsgLi4uYmFzZUljb24sIHR5cGU6IHJlcy5pY29uIH0gYXMgU1RJY29uO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMuaWNvbiA9IHsgLi4uYmFzZUljb24sIC4uLnJlcy5pY29uIH07XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVEZWZhdWx0KHJlcyk7XG5cbiAgICBpZiAodGhpcy5hY2wpIHtcbiAgICAgIHJlcy5tZW51cyA9IHJlcy5tZW51cz8uZmlsdGVyKHcgPT4gdGhpcy5hY2wuY2FuKHcuYWNsISkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXMubWVudXM/Lmxlbmd0aCA9PT0gMCA/IG51bGwgOiByZXM7XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmVSZW5kZXIoaXRlbTogX1NUQ29sdW1uKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0ucmVuZGVyVGl0bGUpIHtcbiAgICAgIGl0ZW0uX19yZW5kZXJUaXRsZSA9XG4gICAgICAgIHR5cGVvZiBpdGVtLnJlbmRlclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gdGhpcy5yb3dTb3VyY2UuZ2V0VGl0bGUoaXRlbS5yZW5kZXJUaXRsZSlcbiAgICAgICAgICA6IChpdGVtLnJlbmRlclRpdGxlIGFzIFRlbXBsYXRlUmVmPHZvaWQ+KTtcbiAgICB9XG4gICAgaWYgKGl0ZW0ucmVuZGVyKSB7XG4gICAgICBpdGVtLl9fcmVuZGVyID1cbiAgICAgICAgdHlwZW9mIGl0ZW0ucmVuZGVyID09PSAnc3RyaW5nJyA/IHRoaXMucm93U291cmNlLmdldFJvdyhpdGVtLnJlbmRlcikgOiAoaXRlbS5yZW5kZXIgYXMgVGVtcGxhdGVSZWY8dm9pZD4pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgd2lkZ2V0Q29lcmNlKGl0ZW06IF9TVENvbHVtbik6IHZvaWQge1xuICAgIGlmIChpdGVtLnR5cGUgIT09ICd3aWRnZXQnKSByZXR1cm47XG4gICAgaWYgKGl0ZW0ud2lkZ2V0ID09IG51bGwgfHwgIXRoaXMuc3RXaWRnZXRSZWdpc3RyeS5oYXMoaXRlbS53aWRnZXQudHlwZSkpIHtcbiAgICAgIGRlbGV0ZSBpdGVtLnR5cGU7XG4gICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgIHdhcm4oYHN0OiBObyB3aWRnZXQgZm9yIHR5cGUgXCIke2l0ZW0ud2lkZ2V0Py50eXBlfVwiYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5IZWFkZXJzKHJvb3RDb2x1bW5zOiBfU1RDb2x1bW5bXSk6IHsgaGVhZGVyczogX1NUSGVhZGVyW11bXTsgaGVhZGVyV2lkdGhzOiBzdHJpbmdbXSB8IG51bGwgfSB7XG4gICAgY29uc3Qgcm93czogX1NUSGVhZGVyW11bXSA9IFtdO1xuICAgIGNvbnN0IHdpZHRoczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBmaWxsUm93Q2VsbHMgPSAoY29sdW1uczogX1NUQ29sdW1uW10sIGNvbEluZGV4OiBudW1iZXIsIHJvd0luZGV4ID0gMCk6IG51bWJlcltdID0+IHtcbiAgICAgIC8vIEluaXQgcm93c1xuICAgICAgcm93c1tyb3dJbmRleF0gPSByb3dzW3Jvd0luZGV4XSB8fCBbXTtcblxuICAgICAgbGV0IGN1cnJlbnRDb2xJbmRleCA9IGNvbEluZGV4O1xuICAgICAgY29uc3QgY29sU3BhbnM6IG51bWJlcltdID0gY29sdW1ucy5tYXAoY29sdW1uID0+IHtcbiAgICAgICAgY29uc3QgY2VsbDogU1RDb2x1bW5Hcm91cFR5cGUgPSB7XG4gICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIGNvbFN0YXJ0OiBjdXJyZW50Q29sSW5kZXgsXG4gICAgICAgICAgaGFzU3ViQ29sdW1uczogZmFsc2VcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgY29sU3BhbiA9IDE7XG5cbiAgICAgICAgY29uc3Qgc3ViQ29sdW1ucyA9IGNvbHVtbi5jaGlsZHJlbjtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc3ViQ29sdW1ucykgJiYgc3ViQ29sdW1ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29sU3BhbiA9IGZpbGxSb3dDZWxscyhzdWJDb2x1bW5zLCBjdXJyZW50Q29sSW5kZXgsIHJvd0luZGV4ICsgMSkucmVkdWNlKCh0b3RhbCwgY291bnQpID0+IHRvdGFsICsgY291bnQsIDApO1xuICAgICAgICAgIGNlbGwuaGFzU3ViQ29sdW1ucyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2lkdGhzLnB1c2goKGNlbGwuY29sdW1uLndpZHRoIGFzIHN0cmluZykgfHwgJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdjb2xTcGFuJyBpbiBjb2x1bW4pIHtcbiAgICAgICAgICBjb2xTcGFuID0gY29sdW1uLmNvbFNwYW4hO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCdyb3dTcGFuJyBpbiBjb2x1bW4pIHtcbiAgICAgICAgICBjZWxsLnJvd1NwYW4gPSBjb2x1bW4ucm93U3BhbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNlbGwuY29sU3BhbiA9IGNvbFNwYW47XG4gICAgICAgIGNlbGwuY29sRW5kID0gY2VsbC5jb2xTdGFydCArIGNvbFNwYW4gLSAxO1xuICAgICAgICByb3dzW3Jvd0luZGV4XS5wdXNoKGNlbGwgYXMgTnpTYWZlQW55KTtcblxuICAgICAgICBjdXJyZW50Q29sSW5kZXggKz0gY29sU3BhbjtcblxuICAgICAgICByZXR1cm4gY29sU3BhbjtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY29sU3BhbnM7XG4gICAgfTtcblxuICAgIGZpbGxSb3dDZWxscyhyb290Q29sdW1ucywgMCk7XG5cbiAgICAvLyBIYW5kbGUgYHJvd1NwYW5gXG4gICAgY29uc3Qgcm93Q291bnQgPSByb3dzLmxlbmd0aDtcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgcm93Q291bnQ7IHJvd0luZGV4ICs9IDEpIHtcbiAgICAgIHJvd3Nbcm93SW5kZXhdLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICAgIGlmICghKCdyb3dTcGFuJyBpbiBjZWxsKSAmJiAhKGNlbGwgYXMgX1NUSGVhZGVyKS5oYXNTdWJDb2x1bW5zKSB7XG4gICAgICAgICAgKGNlbGwgYXMgX1NUSGVhZGVyKS5yb3dTcGFuID0gcm93Q291bnQgLSByb3dJbmRleDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgaGVhZGVyczogcm93cywgaGVhZGVyV2lkdGhzOiByb3dDb3VudCA+IDEgPyB3aWR0aHMgOiBudWxsIH07XG4gIH1cblxuICBwcml2YXRlIGNsZWFuQ29uZChsaXN0OiBfU1RDb2x1bW5bXSk6IF9TVENvbHVtbltdIHtcbiAgICBjb25zdCByZXM6IF9TVENvbHVtbltdID0gW107XG4gICAgY29uc3QgY29weUxpc3QgPSBkZWVwQ29weShsaXN0KTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29weUxpc3QpIHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5paWYgPT09ICdmdW5jdGlvbicgJiYgIWl0ZW0uaWlmKGl0ZW0pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWNsICYmIGl0ZW0uYWNsICYmICF0aGlzLmFjbC5jYW4oaXRlbS5hY2wpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gPSB0aGlzLmNsZWFuQ29uZChpdGVtLmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICAgIHJlcy5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZUNsYXNzKGl0ZW06IF9TVENvbHVtbik6IHZvaWQge1xuICAgIGNvbnN0IGJ1aWx0SW5DbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChpdGVtLl9pc1RydW5jYXRlKSB7XG4gICAgICBidWlsdEluQ2xhc3NOYW1lcy5wdXNoKCd0ZXh0LXRydW5jYXRlJyk7XG4gICAgfVxuICAgIGNvbnN0IHJhd0NsYXNzTmFtZSA9IGl0ZW0uY2xhc3NOYW1lO1xuICAgIGlmICghcmF3Q2xhc3NOYW1lKSB7XG4gICAgICBjb25zdCB0eXBlQ2xhc3MgPSAoXG4gICAgICAgIHtcbiAgICAgICAgICBudW1iZXI6ICd0ZXh0LXJpZ2h0JyxcbiAgICAgICAgICBjdXJyZW5jeTogJ3RleHQtcmlnaHQnLFxuICAgICAgICAgIGRhdGU6ICd0ZXh0LWNlbnRlcidcbiAgICAgICAgfSBhcyBOelNhZmVBbnlcbiAgICAgIClbaXRlbS50eXBlIV07XG4gICAgICBpZiAodHlwZUNsYXNzKSB7XG4gICAgICAgIGJ1aWx0SW5DbGFzc05hbWVzLnB1c2godHlwZUNsYXNzKTtcbiAgICAgIH1cbiAgICAgIGl0ZW0uX2NsYXNzTmFtZSA9IGJ1aWx0SW5DbGFzc05hbWVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJhd0NsYXNzTmFtZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHJhd0NsYXNzTmFtZSk7XG4gICAgaWYgKCFyYXdDbGFzc05hbWVJc0FycmF5ICYmIHR5cGVvZiByYXdDbGFzc05hbWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBvYmpDbGFzc05hbWVzOiBOZ0NsYXNzSW50ZXJmYWNlID0gcmF3Q2xhc3NOYW1lO1xuICAgICAgYnVpbHRJbkNsYXNzTmFtZXMuZm9yRWFjaChrZXkgPT4gKG9iakNsYXNzTmFtZXNba2V5XSA9IHRydWUpKTtcbiAgICAgIGl0ZW0uX2NsYXNzTmFtZSA9IG9iakNsYXNzTmFtZXM7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYXJyYXlDbGFzc05hbWVzID0gcmF3Q2xhc3NOYW1lSXNBcnJheSA/IEFycmF5LmZyb20ocmF3Q2xhc3NOYW1lIGFzIHN0cmluZ1tdKSA6IFtyYXdDbGFzc05hbWVdO1xuICAgIGFycmF5Q2xhc3NOYW1lcy5zcGxpY2UoMCwgMCwgLi4uYnVpbHRJbkNsYXNzTmFtZXMpO1xuICAgIGl0ZW0uX2NsYXNzTmFtZSA9IFsuLi5uZXcgU2V0KGFycmF5Q2xhc3NOYW1lcyldLmZpbHRlcih3ID0+ICEhdyk7XG4gIH1cblxuICBwcm9jZXNzKFxuICAgIGxpc3Q6IFNUQ29sdW1uW10sXG4gICAgb3B0aW9uczogU1RDb2x1bW5Tb3VyY2VQcm9jZXNzT3B0aW9uc1xuICApOiB7IGNvbHVtbnM6IF9TVENvbHVtbltdOyBoZWFkZXJzOiBfU1RIZWFkZXJbXVtdOyBoZWFkZXJXaWR0aHM6IHN0cmluZ1tdIHwgbnVsbCB9IHtcbiAgICBpZiAoIWxpc3QgfHwgbGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGNvbHVtbnM6IFtdLCBoZWFkZXJzOiBbXSwgaGVhZGVyV2lkdGhzOiBudWxsIH07XG4gICAgfVxuICAgIGNvbnN0IHsgbm9JbmRleCB9ID0gdGhpcy5jb2c7XG4gICAgbGV0IGNoZWNrYm94Q291bnQgPSAwO1xuICAgIGxldCByYWRpb0NvdW50ID0gMDtcbiAgICBsZXQgcG9pbnQgPSAwO1xuICAgIGNvbnN0IGNvbHVtbnM6IF9TVENvbHVtbltdID0gW107XG5cbiAgICBjb25zdCBwcm9jZXNzSXRlbSA9IChpdGVtOiBfU1RDb2x1bW4pOiBfU1RDb2x1bW4gPT4ge1xuICAgICAgLy8gaW5kZXhcbiAgICAgIGlmIChpdGVtLmluZGV4KSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLmluZGV4KSkge1xuICAgICAgICAgIGl0ZW0uaW5kZXggPSBpdGVtLmluZGV4LnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmluZGV4S2V5ID0gaXRlbS5pbmRleC5qb2luKCcuJyk7XG4gICAgICB9XG5cbiAgICAgIC8vICNyZWdpb24gdGl0bGVcblxuICAgICAgY29uc3QgdGl0ID0gKHR5cGVvZiBpdGVtLnRpdGxlID09PSAnc3RyaW5nJyA/IHsgdGV4dDogaXRlbS50aXRsZSB9IDogaXRlbS50aXRsZSkgfHwge307XG4gICAgICBpZiAodGl0LmkxOG4gJiYgdGhpcy5pMThuU3J2KSB7XG4gICAgICAgIHRpdC50ZXh0ID0gdGhpcy5pMThuU3J2LmZhbnlpKHRpdC5pMThuKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aXQudGV4dCkge1xuICAgICAgICB0aXQuX3RleHQgPSB0aGlzLmRvbS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aXQudGV4dCk7XG4gICAgICB9XG4gICAgICBpdGVtLnRpdGxlID0gdGl0O1xuXG4gICAgICAvLyAjZW5kcmVnaW9uXG5cbiAgICAgIC8vIG5vXG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnbm8nKSB7XG4gICAgICAgIGl0ZW0ubm9JbmRleCA9IGl0ZW0ubm9JbmRleCA9PSBudWxsID8gbm9JbmRleCA6IGl0ZW0ubm9JbmRleDtcbiAgICAgIH1cbiAgICAgIC8vIGNoZWNrYm94XG4gICAgICBpZiAoaXRlbS5zZWxlY3Rpb25zID09IG51bGwpIHtcbiAgICAgICAgaXRlbS5zZWxlY3Rpb25zID0gW107XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgICsrY2hlY2tib3hDb3VudDtcbiAgICAgICAgaWYgKCFpdGVtLndpZHRoKSB7XG4gICAgICAgICAgaXRlbS53aWR0aCA9IGAke2l0ZW0uc2VsZWN0aW9ucy5sZW5ndGggPiAwID8gNjIgOiA1MH1weGA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmFjbCkge1xuICAgICAgICBpdGVtLnNlbGVjdGlvbnMgPSBpdGVtLnNlbGVjdGlvbnMuZmlsdGVyKHcgPT4gdGhpcy5hY2wuY2FuKHcuYWNsISkpO1xuICAgICAgfVxuICAgICAgLy8gcmFkaW9cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgKytyYWRpb0NvdW50O1xuICAgICAgICBpdGVtLnNlbGVjdGlvbnMgPSBbXTtcbiAgICAgICAgaWYgKCFpdGVtLndpZHRoKSB7XG4gICAgICAgICAgaXRlbS53aWR0aCA9ICc1MHB4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gdHlwZXNcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICd5bicpIHtcbiAgICAgICAgaXRlbS55biA9IHsgdHJ1dGg6IHRydWUsIC4uLnRoaXMuY29nLnluLCAuLi5pdGVtLnluIH07XG4gICAgICB9XG4gICAgICAvLyBkYXRlXG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgaXRlbS5kYXRlRm9ybWF0ID0gaXRlbS5kYXRlRm9ybWF0IHx8IHRoaXMuY29nLmRhdGU/LmZvcm1hdDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKGl0ZW0udHlwZSA9PT0gJ2xpbmsnICYmIHR5cGVvZiBpdGVtLmNsaWNrICE9PSAnZnVuY3Rpb24nKSB8fFxuICAgICAgICAoaXRlbS50eXBlID09PSAnYmFkZ2UnICYmIGl0ZW0uYmFkZ2UgPT0gbnVsbCkgfHxcbiAgICAgICAgKGl0ZW0udHlwZSA9PT0gJ3RhZycgJiYgaXRlbS50YWcgPT0gbnVsbCkgfHxcbiAgICAgICAgKGl0ZW0udHlwZSA9PT0gJ2VudW0nICYmIGl0ZW0uZW51bSA9PSBudWxsKVxuICAgICAgKSB7XG4gICAgICAgIGl0ZW0udHlwZSA9ICcnO1xuICAgICAgfVxuICAgICAgaXRlbS5faXNUcnVuY2F0ZSA9ICEhaXRlbS53aWR0aCAmJiBvcHRpb25zLndpZHRoTW9kZS5zdHJpY3RCZWhhdmlvciA9PT0gJ3RydW5jYXRlJyAmJiBpdGVtLnR5cGUgIT09ICdpbWcnO1xuICAgICAgLy8gY2xhc3NOYW1lXG4gICAgICB0aGlzLm1lcmdlQ2xhc3MoaXRlbSk7XG4gICAgICAvLyB3aWR0aFxuICAgICAgaWYgKHR5cGVvZiBpdGVtLndpZHRoID09PSAnbnVtYmVyJykge1xuICAgICAgICBpdGVtLl93aWR0aCA9IGl0ZW0ud2lkdGg7XG4gICAgICAgIGl0ZW0ud2lkdGggPSBgJHtpdGVtLndpZHRofXB4YDtcbiAgICAgIH1cbiAgICAgIGl0ZW0uX2xlZnQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uX3JpZ2h0ID0gZmFsc2U7XG4gICAgICBpdGVtLnNhZmVUeXBlID0gaXRlbS5zYWZlVHlwZSA/PyBvcHRpb25zLnNhZmVUeXBlO1xuXG4gICAgICAvLyBzb3J0ZXJcbiAgICAgIGl0ZW0uX3NvcnQgPSB0aGlzLnNvcnRDb2VyY2UoaXRlbSk7XG4gICAgICAvLyBmaWx0ZXJcbiAgICAgIGl0ZW0uZmlsdGVyID0gdGhpcy5maWx0ZXJDb2VyY2UoaXRlbSkgYXMgU1RDb2x1bW5GaWx0ZXI7XG4gICAgICAvLyBidXR0b25zXG4gICAgICBpdGVtLmJ1dHRvbnMgPSB0aGlzLmJ0bkNvZXJjZShpdGVtLmJ1dHRvbnMhKTtcbiAgICAgIC8vIHdpZGdldFxuICAgICAgdGhpcy53aWRnZXRDb2VyY2UoaXRlbSk7XG4gICAgICAvLyByZXN0b3JlIGN1c3RvbSByb3dcbiAgICAgIHRoaXMucmVzdG9yZVJlbmRlcihpdGVtKTtcbiAgICAgIC8vIHJlc2l6YWJsZVxuICAgICAgaXRlbS5yZXNpemFibGUgPSB7XG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICBib3VuZHM6ICd3aW5kb3cnLFxuICAgICAgICBtaW5XaWR0aDogNjAsXG4gICAgICAgIG1heFdpZHRoOiAzNjAsXG4gICAgICAgIHByZXZpZXc6IHRydWUsXG4gICAgICAgIC4uLm9wdGlvbnMucmVzaXphYmxlLFxuICAgICAgICAuLi4odHlwZW9mIGl0ZW0ucmVzaXphYmxlID09PSAnYm9vbGVhbicgPyAoeyBkaXNhYmxlZDogIWl0ZW0ucmVzaXphYmxlIH0gYXMgU1RSZXNpemFibGUpIDogaXRlbS5yZXNpemFibGUpXG4gICAgICB9O1xuXG4gICAgICBpdGVtLl9fcG9pbnQgPSBwb2ludCsrO1xuXG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9O1xuXG4gICAgY29uc3QgcHJvY2Vzc0xpc3QgPSAoZGF0YTogX1NUQ29sdW1uW10pOiB2b2lkID0+IHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkYXRhKSB7XG4gICAgICAgIGNvbHVtbnMucHVzaChwcm9jZXNzSXRlbShpdGVtKSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XG4gICAgICAgICAgcHJvY2Vzc0xpc3QoaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgY29weUxpc3QgPSB0aGlzLmNsZWFuQ29uZChsaXN0IGFzIF9TVENvbHVtbltdKTtcbiAgICBwcm9jZXNzTGlzdChjb3B5TGlzdCk7XG5cbiAgICBpZiAoY2hlY2tib3hDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW3N0XToganVzdCBvbmx5IG9uZSBjb2x1bW4gY2hlY2tib3hgKTtcbiAgICB9XG4gICAgaWYgKHJhZGlvQ291bnQgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFtzdF06IGp1c3Qgb25seSBvbmUgY29sdW1uIHJhZGlvYCk7XG4gICAgfVxuXG4gICAgdGhpcy5maXhlZENvZXJjZShjb2x1bW5zIGFzIF9TVENvbHVtbltdKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sdW1uczogY29sdW1ucy5maWx0ZXIodyA9PiAhQXJyYXkuaXNBcnJheSh3LmNoaWxkcmVuKSB8fCB3LmNoaWxkcmVuLmxlbmd0aCA9PT0gMCksXG4gICAgICAuLi50aGlzLmdlbkhlYWRlcnMoY29weUxpc3QpXG4gICAgfTtcbiAgfVxuXG4gIHJlc3RvcmVBbGxSZW5kZXIoY29sdW1uczogX1NUQ29sdW1uW10pOiB2b2lkIHtcbiAgICBjb2x1bW5zLmZvckVhY2goaSA9PiB0aGlzLnJlc3RvcmVSZW5kZXIoaSkpO1xuICB9XG5cbiAgdXBkYXRlRGVmYXVsdChmaWx0ZXI6IFNUQ29sdW1uRmlsdGVyKTogdGhpcyB7XG4gICAgaWYgKGZpbHRlci5tZW51cyA9PSBudWxsKSByZXR1cm4gdGhpcztcblxuICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICBmaWx0ZXIuZGVmYXVsdCA9IGZpbHRlci5tZW51cyEuZmluZEluZGV4KHcgPT4gdy5jaGVja2VkISkgIT09IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuZGVmYXVsdCA9ICEhZmlsdGVyLm1lbnVzIVswXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjbGVhbkZpbHRlcihjb2w6IF9TVENvbHVtbik6IHRoaXMge1xuICAgIGNvbnN0IGYgPSBjb2wuZmlsdGVyITtcbiAgICBmLmRlZmF1bHQgPSBmYWxzZTtcbiAgICBpZiAoZi50eXBlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgIGYubWVudXMhLmZvckVhY2goaSA9PiAoaS5jaGVja2VkID0gZmFsc2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZi5tZW51cyFbMF0udmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=