nsc-react-component 2.10.31 → 3.0.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 (355) hide show
  1. package/.babelrc +2 -2
  2. package/lib/Interface.js +1 -1
  3. package/lib/Interface.js.map +1 -0
  4. package/lib/base/affix/index.js +5 -47
  5. package/lib/base/affix/index.js.map +1 -0
  6. package/lib/base/alert/index.js +5 -47
  7. package/lib/base/alert/index.js.map +1 -0
  8. package/lib/base/anchor/index.d.ts +1 -1
  9. package/lib/base/anchor/index.js +8 -50
  10. package/lib/base/anchor/index.js.map +1 -0
  11. package/lib/base/avatar/index.d.ts +1 -1
  12. package/lib/base/avatar/index.js +8 -50
  13. package/lib/base/avatar/index.js.map +1 -0
  14. package/lib/base/backTop/index.js +5 -47
  15. package/lib/base/backTop/index.js.map +1 -0
  16. package/lib/base/badge/index.d.ts +1 -1
  17. package/lib/base/badge/index.js +8 -50
  18. package/lib/base/badge/index.js.map +1 -0
  19. package/lib/base/breadcrumb/index.js +5 -47
  20. package/lib/base/breadcrumb/index.js.map +1 -0
  21. package/lib/base/button/index.d.ts +1 -1
  22. package/lib/base/button/index.js +93 -135
  23. package/lib/base/button/index.js.map +1 -0
  24. package/lib/base/calendar/index.js +5 -47
  25. package/lib/base/calendar/index.js.map +1 -0
  26. package/lib/base/card/index.d.ts +2 -2
  27. package/lib/base/card/index.js +8 -51
  28. package/lib/base/card/index.js.map +1 -0
  29. package/lib/base/carousel/index.js +5 -47
  30. package/lib/base/carousel/index.js.map +1 -0
  31. package/lib/base/cascader/index.d.ts +3 -3
  32. package/lib/base/cascader/index.js +156 -224
  33. package/lib/base/cascader/index.js.map +1 -0
  34. package/lib/base/chart/index.d.ts +2 -2
  35. package/lib/base/chart/index.js +177 -287
  36. package/lib/base/chart/index.js.map +1 -0
  37. package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
  38. package/lib/base/checkbox/CheckboxGroup.js +165 -259
  39. package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
  40. package/lib/base/checkbox/index.d.ts +2 -2
  41. package/lib/base/checkbox/index.js +8 -49
  42. package/lib/base/checkbox/index.js.map +1 -0
  43. package/lib/base/collapse/index.d.ts +1 -1
  44. package/lib/base/collapse/index.js +8 -50
  45. package/lib/base/collapse/index.js.map +1 -0
  46. package/lib/base/colorpicker/index.d.ts +5 -0
  47. package/lib/base/colorpicker/index.js +8 -0
  48. package/lib/base/colorpicker/index.js.map +1 -0
  49. package/lib/base/common/BodyRow/index.js +48 -102
  50. package/lib/base/common/BodyRow/index.js.map +1 -0
  51. package/lib/base/common/EllipseCell/index.d.ts +1 -1
  52. package/lib/base/common/EllipseCell/index.js +16 -58
  53. package/lib/base/common/EllipseCell/index.js.map +1 -0
  54. package/lib/base/common/FileIcon.d.ts +2 -2
  55. package/lib/base/common/FileIcon.js +86 -132
  56. package/lib/base/common/FileIcon.js.map +1 -0
  57. package/lib/base/common/Icon.d.ts +2 -2
  58. package/lib/base/common/Icon.js +42 -96
  59. package/lib/base/common/Icon.js.map +1 -0
  60. package/lib/base/common/IconData.js +2 -2
  61. package/lib/base/common/IconData.js.map +1 -0
  62. package/lib/base/common/IconFont.d.ts +2 -2
  63. package/lib/base/common/IconFont.js +7 -8
  64. package/lib/base/common/IconFont.js.map +1 -0
  65. package/lib/base/common/NoAuthority.d.ts +2 -2
  66. package/lib/base/common/NoAuthority.js +13 -53
  67. package/lib/base/common/NoAuthority.js.map +1 -0
  68. package/lib/base/common/NoData.d.ts +2 -2
  69. package/lib/base/common/NoData.js +29 -74
  70. package/lib/base/common/NoData.js.map +1 -0
  71. package/lib/base/common/NoData.less +8 -2
  72. package/lib/base/common/NoMessage.d.ts +2 -2
  73. package/lib/base/common/NoMessage.js +30 -70
  74. package/lib/base/common/NoMessage.js.map +1 -0
  75. package/lib/base/common/NoNetWork.d.ts +2 -2
  76. package/lib/base/common/NoNetWork.js +30 -70
  77. package/lib/base/common/NoNetWork.js.map +1 -0
  78. package/lib/base/common/Page404.d.ts +2 -2
  79. package/lib/base/common/Page404.js +30 -70
  80. package/lib/base/common/Page404.js.map +1 -0
  81. package/lib/base/common/PageRequest.js +91 -154
  82. package/lib/base/common/PageRequest.js.map +1 -0
  83. package/lib/base/common/TreePanel.d.ts +1 -1
  84. package/lib/base/common/TreePanel.js +133 -212
  85. package/lib/base/common/TreePanel.js.map +1 -0
  86. package/lib/base/common/iconfontalibaba.js +15 -22
  87. package/lib/base/common/iconfontalibaba.js.map +1 -0
  88. package/lib/base/common/withZhLocale.d.ts +1 -1
  89. package/lib/base/common/withZhLocale.js +3 -8
  90. package/lib/base/common/withZhLocale.js.map +1 -0
  91. package/lib/base/configProvider/index.js +8 -50
  92. package/lib/base/configProvider/index.js.map +1 -0
  93. package/lib/base/datepick/Rangepicker.d.ts +4 -4
  94. package/lib/base/datepick/Rangepicker.js +231 -330
  95. package/lib/base/datepick/Rangepicker.js.map +1 -0
  96. package/lib/base/datepick/index.d.ts +2 -2
  97. package/lib/base/datepick/index.js +56 -115
  98. package/lib/base/datepick/index.js.map +1 -0
  99. package/lib/base/datepick/index.less +5 -5
  100. package/lib/base/descriptions/index.d.ts +1 -1
  101. package/lib/base/descriptions/index.js +8 -50
  102. package/lib/base/descriptions/index.js.map +1 -0
  103. package/lib/base/divider/index.js +5 -47
  104. package/lib/base/divider/index.js.map +1 -0
  105. package/lib/base/download/index.js +42 -84
  106. package/lib/base/download/index.js.map +1 -0
  107. package/lib/base/drawer/index.d.ts +2 -11
  108. package/lib/base/drawer/index.js +8 -57
  109. package/lib/base/drawer/index.js.map +1 -0
  110. package/lib/base/dropdown/index.js +19 -66
  111. package/lib/base/dropdown/index.js.map +1 -0
  112. package/lib/base/editor/index.d.ts +1 -1
  113. package/lib/base/editor/index.js +83 -128
  114. package/lib/base/editor/index.js.map +1 -0
  115. package/lib/base/errorboundary/index.js +19 -63
  116. package/lib/base/errorboundary/index.js.map +1 -0
  117. package/lib/base/form/Form.d.ts +2 -2
  118. package/lib/base/form/Form.js +302 -429
  119. package/lib/base/form/Form.js.map +1 -0
  120. package/lib/base/form/filed/Cascader.d.ts +2 -2
  121. package/lib/base/form/filed/Cascader.js +6 -45
  122. package/lib/base/form/filed/Cascader.js.map +1 -0
  123. package/lib/base/form/filed/Checkbox.d.ts +2 -2
  124. package/lib/base/form/filed/Checkbox.js +6 -45
  125. package/lib/base/form/filed/Checkbox.js.map +1 -0
  126. package/lib/base/form/filed/DatePicker.d.ts +2 -2
  127. package/lib/base/form/filed/DatePicker.js +6 -45
  128. package/lib/base/form/filed/DatePicker.js.map +1 -0
  129. package/lib/base/form/filed/FormItem.d.ts +2 -2
  130. package/lib/base/form/filed/FormItem.js +64 -128
  131. package/lib/base/form/filed/FormItem.js.map +1 -0
  132. package/lib/base/form/filed/Input.d.ts +2 -2
  133. package/lib/base/form/filed/Input.js +14 -51
  134. package/lib/base/form/filed/Input.js.map +1 -0
  135. package/lib/base/form/filed/InputEamil.d.ts +2 -2
  136. package/lib/base/form/filed/InputEamil.js +5 -44
  137. package/lib/base/form/filed/InputEamil.js.map +1 -0
  138. package/lib/base/form/filed/InputNumber.d.ts +2 -2
  139. package/lib/base/form/filed/InputNumber.js +5 -44
  140. package/lib/base/form/filed/InputNumber.js.map +1 -0
  141. package/lib/base/form/filed/InputPassword.d.ts +2 -2
  142. package/lib/base/form/filed/InputPassword.js +5 -44
  143. package/lib/base/form/filed/InputPassword.js.map +1 -0
  144. package/lib/base/form/filed/Item.d.ts +3 -3
  145. package/lib/base/form/filed/Item.js +90 -164
  146. package/lib/base/form/filed/Item.js.map +1 -0
  147. package/lib/base/form/filed/Radio.d.ts +2 -2
  148. package/lib/base/form/filed/Radio.js +7 -45
  149. package/lib/base/form/filed/Radio.js.map +1 -0
  150. package/lib/base/form/filed/RangerPicker.d.ts +2 -2
  151. package/lib/base/form/filed/RangerPicker.js +6 -45
  152. package/lib/base/form/filed/RangerPicker.js.map +1 -0
  153. package/lib/base/form/filed/Rate.d.ts +2 -2
  154. package/lib/base/form/filed/Rate.js +6 -47
  155. package/lib/base/form/filed/Rate.js.map +1 -0
  156. package/lib/base/form/filed/Select.d.ts +2 -2
  157. package/lib/base/form/filed/Select.js +9 -49
  158. package/lib/base/form/filed/Select.js.map +1 -0
  159. package/lib/base/form/filed/Slider.d.ts +2 -2
  160. package/lib/base/form/filed/Slider.js +6 -47
  161. package/lib/base/form/filed/Slider.js.map +1 -0
  162. package/lib/base/form/filed/Switch.d.ts +2 -2
  163. package/lib/base/form/filed/Switch.js +6 -47
  164. package/lib/base/form/filed/Switch.js.map +1 -0
  165. package/lib/base/form/filed/TagSelect.d.ts +2 -2
  166. package/lib/base/form/filed/TagSelect.js +6 -45
  167. package/lib/base/form/filed/TagSelect.js.map +1 -0
  168. package/lib/base/form/filed/TextArea.d.ts +2 -2
  169. package/lib/base/form/filed/TextArea.js +5 -44
  170. package/lib/base/form/filed/TextArea.js.map +1 -0
  171. package/lib/base/form/filed/Upload.d.ts +2 -2
  172. package/lib/base/form/filed/Upload.js +9 -45
  173. package/lib/base/form/filed/Upload.js.map +1 -0
  174. package/lib/base/form/index.d.ts +2 -2
  175. package/lib/base/form/index.js +17 -59
  176. package/lib/base/form/index.js.map +1 -0
  177. package/lib/base/grid/Col.js +5 -47
  178. package/lib/base/grid/Col.js.map +1 -0
  179. package/lib/base/grid/Row.js +5 -47
  180. package/lib/base/grid/Row.js.map +1 -0
  181. package/lib/base/grid/index.js +1 -1
  182. package/lib/base/grid/index.js.map +1 -0
  183. package/lib/base/iframe/index.d.ts +1 -1
  184. package/lib/base/iframe/index.js +44 -94
  185. package/lib/base/iframe/index.js.map +1 -0
  186. package/lib/base/image/index.js +159 -260
  187. package/lib/base/image/index.js.map +1 -0
  188. package/lib/base/input/Email.d.ts +2 -2
  189. package/lib/base/input/Email.js +55 -104
  190. package/lib/base/input/Email.js.map +1 -0
  191. package/lib/base/input/Number.d.ts +1 -1
  192. package/lib/base/input/Number.js +46 -105
  193. package/lib/base/input/Number.js.map +1 -0
  194. package/lib/base/input/Password.d.ts +1 -1
  195. package/lib/base/input/Password.js +46 -105
  196. package/lib/base/input/Password.js.map +1 -0
  197. package/lib/base/input/Search.d.ts +1 -1
  198. package/lib/base/input/Search.js +44 -103
  199. package/lib/base/input/Search.js.map +1 -0
  200. package/lib/base/input/TextArea.d.ts +1 -1
  201. package/lib/base/input/TextArea.js +62 -124
  202. package/lib/base/input/TextArea.js.map +1 -0
  203. package/lib/base/input/index.d.ts +3 -3
  204. package/lib/base/input/index.js +119 -196
  205. package/lib/base/input/index.js.map +1 -0
  206. package/lib/base/layout/index.d.ts +3 -3
  207. package/lib/base/layout/index.js +14 -57
  208. package/lib/base/layout/index.js.map +1 -0
  209. package/lib/base/list/index.d.ts +1 -1
  210. package/lib/base/list/index.js +8 -50
  211. package/lib/base/list/index.js.map +1 -0
  212. package/lib/base/menu/index.d.ts +7 -7
  213. package/lib/base/menu/index.js +100 -166
  214. package/lib/base/menu/index.js.map +1 -0
  215. package/lib/base/message/index.d.ts +8 -9
  216. package/lib/base/message/index.js +5 -49
  217. package/lib/base/message/index.js.map +1 -0
  218. package/lib/base/modal/Confirm.d.ts +1 -1
  219. package/lib/base/modal/Confirm.js +15 -23
  220. package/lib/base/modal/Confirm.js.map +1 -0
  221. package/lib/base/modal/index.d.ts +8 -8
  222. package/lib/base/modal/index.js +275 -363
  223. package/lib/base/modal/index.js.map +1 -0
  224. package/lib/base/modal/index.less +8 -8
  225. package/lib/base/notification/index.d.ts +8 -10
  226. package/lib/base/notification/index.js +12 -57
  227. package/lib/base/notification/index.js.map +1 -0
  228. package/lib/base/pagination/index.js +5 -47
  229. package/lib/base/pagination/index.js.map +1 -0
  230. package/lib/base/pdfviwer/index.d.ts +1 -1
  231. package/lib/base/pdfviwer/index.js +68 -93
  232. package/lib/base/pdfviwer/index.js.map +1 -0
  233. package/lib/base/popconfirm/index.js +5 -47
  234. package/lib/base/popconfirm/index.js.map +1 -0
  235. package/lib/base/popover/index.js +19 -66
  236. package/lib/base/popover/index.js.map +1 -0
  237. package/lib/base/progress/index.js +5 -47
  238. package/lib/base/progress/index.js.map +1 -0
  239. package/lib/base/qecode/index.d.ts +5 -0
  240. package/lib/base/qecode/index.js +8 -0
  241. package/lib/base/qecode/index.js.map +1 -0
  242. package/lib/base/radio/RadioGroup.d.ts +1 -1
  243. package/lib/base/radio/RadioGroup.js +198 -296
  244. package/lib/base/radio/RadioGroup.js.map +1 -0
  245. package/lib/base/radio/index.d.ts +2 -2
  246. package/lib/base/radio/index.js +8 -51
  247. package/lib/base/radio/index.js.map +1 -0
  248. package/lib/base/result/index.js +5 -47
  249. package/lib/base/result/index.js.map +1 -0
  250. package/lib/base/select/index.d.ts +4 -4
  251. package/lib/base/select/index.js +351 -468
  252. package/lib/base/select/index.js.map +1 -0
  253. package/lib/base/skeleton/index.js +5 -47
  254. package/lib/base/skeleton/index.js.map +1 -0
  255. package/lib/base/space/index.js +5 -47
  256. package/lib/base/space/index.js.map +1 -0
  257. package/lib/base/spin/index.js +5 -47
  258. package/lib/base/spin/index.js.map +1 -0
  259. package/lib/base/statistic/index.d.ts +1 -1
  260. package/lib/base/statistic/index.js +8 -50
  261. package/lib/base/statistic/index.js.map +1 -0
  262. package/lib/base/steps/index.d.ts +1 -1
  263. package/lib/base/steps/index.js +8 -50
  264. package/lib/base/steps/index.js.map +1 -0
  265. package/lib/base/switch/index.js +5 -47
  266. package/lib/base/switch/index.js.map +1 -0
  267. package/lib/base/table/index.d.ts +9 -8
  268. package/lib/base/table/index.js +747 -934
  269. package/lib/base/table/index.js.map +1 -0
  270. package/lib/base/table/index.module.less +14 -12
  271. package/lib/base/tabs/Tabpane.d.ts +1 -1
  272. package/lib/base/tabs/Tabpane.js +22 -59
  273. package/lib/base/tabs/Tabpane.js.map +1 -0
  274. package/lib/base/tabs/index.d.ts +1 -1
  275. package/lib/base/tabs/index.js +110 -158
  276. package/lib/base/tabs/index.js.map +1 -0
  277. package/lib/base/tabs/index.less +4 -4
  278. package/lib/base/tagSelect/TagSelect.d.ts +3 -3
  279. package/lib/base/tagSelect/TagSelect.js +124 -214
  280. package/lib/base/tagSelect/TagSelect.js.map +1 -0
  281. package/lib/base/tagSelect/index.d.ts +3 -3
  282. package/lib/base/tagSelect/index.js +90 -145
  283. package/lib/base/tagSelect/index.js.map +1 -0
  284. package/lib/base/tagSelect/index.less +4 -4
  285. package/lib/base/timeline/index.js +8 -50
  286. package/lib/base/timeline/index.js.map +1 -0
  287. package/lib/base/tooltip/index.js +19 -66
  288. package/lib/base/tooltip/index.js.map +1 -0
  289. package/lib/base/tour/index.d.ts +5 -0
  290. package/lib/base/tour/index.js +8 -0
  291. package/lib/base/tour/index.js.map +1 -0
  292. package/lib/base/transfer/index.js +5 -47
  293. package/lib/base/transfer/index.js.map +1 -0
  294. package/lib/base/tree/TreeSearch.d.ts +3 -3
  295. package/lib/base/tree/TreeSearch.js +121 -194
  296. package/lib/base/tree/TreeSearch.js.map +1 -0
  297. package/lib/base/tree/index.d.ts +7 -7
  298. package/lib/base/tree/index.js +169 -243
  299. package/lib/base/tree/index.js.map +1 -0
  300. package/lib/base/treeselect/index.js +5 -47
  301. package/lib/base/treeselect/index.js.map +1 -0
  302. package/lib/base/typography/index.js +5 -47
  303. package/lib/base/typography/index.js.map +1 -0
  304. package/lib/base/upload/Dragger.js +363 -542
  305. package/lib/base/upload/Dragger.js.map +1 -0
  306. package/lib/base/upload/Upload.d.ts +3 -1
  307. package/lib/base/upload/Upload.js +352 -530
  308. package/lib/base/upload/Upload.js.map +1 -0
  309. package/lib/base/upload/index copy.d.ts +1 -1
  310. package/lib/base/upload/index copy.js +315 -432
  311. package/lib/base/upload/index copy.js.map +1 -0
  312. package/lib/base/upload/index.js +365 -591
  313. package/lib/base/upload/index.js.map +1 -0
  314. package/lib/base/upload/index.less +12 -12
  315. package/lib/base/watermark/index.d.ts +5 -0
  316. package/lib/base/watermark/index.js +8 -0
  317. package/lib/base/watermark/index.js.map +1 -0
  318. package/lib/config.js +5 -8
  319. package/lib/config.js.map +1 -0
  320. package/lib/constants.js +2 -2
  321. package/lib/constants.js.map +1 -0
  322. package/lib/index.d.ts +4 -2
  323. package/lib/index.js +6 -3
  324. package/lib/index.js.map +1 -0
  325. package/lib/page/BasePage/Form.d.ts +1 -1
  326. package/lib/page/BasePage/Form.js +253 -360
  327. package/lib/page/BasePage/Form.js.map +1 -0
  328. package/lib/page/BasePage/index copy.d.ts +107 -0
  329. package/lib/page/BasePage/index copy.js +857 -0
  330. package/lib/page/BasePage/index copy.js.map +1 -0
  331. package/lib/page/BasePage/index.d.ts +4 -3
  332. package/lib/page/BasePage/index.js +767 -935
  333. package/lib/page/BasePage/index.js.map +1 -0
  334. package/lib/page/BasePage/index.module copy.less +143 -0
  335. package/lib/page/BasePage/index.module.less +54 -50
  336. package/lib/page/HeaderSearch/index.d.ts +2 -1
  337. package/lib/page/HeaderSearch/index.js +198 -273
  338. package/lib/page/HeaderSearch/index.js.map +1 -0
  339. package/lib/page/HeaderSearch/index.less +7 -7
  340. package/lib/page/PasswordCheck/index.d.ts +1 -1
  341. package/lib/page/PasswordCheck/index.js +50 -109
  342. package/lib/page/PasswordCheck/index.js.map +1 -0
  343. package/lib/page/PasswordCheck/index.less +2 -2
  344. package/lib/treeUtils.js +45 -58
  345. package/lib/treeUtils.js.map +1 -0
  346. package/lib/utils.d.ts +2 -2
  347. package/lib/utils.js +48 -61
  348. package/lib/utils.js.map +1 -0
  349. package/package.json +102 -98
  350. package/.vscode/settings.json +0 -3
  351. package/lib/base/comment/index.d.ts +0 -5
  352. package/lib/base/comment/index.js +0 -50
  353. package/lib/base/form/index.less +0 -41
  354. package/lib/base/pageHeader/index.d.ts +0 -5
  355. package/lib/base/pageHeader/index.js +0 -50
@@ -1,260 +1,159 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4
-
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
-
7
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
-
9
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
-
11
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12
-
13
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
14
-
15
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
16
-
17
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
18
-
19
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
20
-
21
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
22
-
23
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
24
-
25
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
26
-
27
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
28
-
29
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
30
-
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
6
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
31
7
  import React, { PureComponent } from "react";
32
8
  import Form from "../../base/form";
33
9
  import Button from "../../base/button";
34
10
  import cls from "classnames";
35
- import styles from "./index.less";
11
+ import "./index.less";
36
12
  import Col from "../../base/grid/Col";
37
13
  import Row from "../../base/grid/Row";
38
14
  import moment from "moment";
39
15
  import { isEmptyObj } from "@bj-nsc/functions";
40
16
  import { DownOutlined, UpOutlined, ReloadOutlined, SearchOutlined } from "@ant-design/icons";
41
17
  import { getLess, getNode } from "../../utils";
42
-
43
- var HeaderSearch = /*#__PURE__*/function (_PureComponent) {
44
- _inherits(HeaderSearch, _PureComponent);
45
-
46
- var _super = _createSuper(HeaderSearch);
47
-
48
- function HeaderSearch() {
49
- var _this;
50
-
51
- _classCallCheck(this, HeaderSearch);
52
-
53
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
54
- args[_key] = arguments[_key];
55
- }
56
-
57
- _this = _super.call.apply(_super, [this].concat(args));
58
-
59
- _defineProperty(_assertThisInitialized(_this), "searchRef", /*#__PURE__*/React.createRef());
60
-
61
- _defineProperty(_assertThisInitialized(_this), "dateFormat", {});
62
-
63
- _defineProperty(_assertThisInitialized(_this), "state", {
18
+ const styles = null;
19
+ class HeaderSearch extends PureComponent {
20
+ constructor() {
21
+ super(...arguments);
22
+ _defineProperty(this, "searchRef", /*#__PURE__*/React.createRef());
23
+ _defineProperty(this, "dateFormat", {});
24
+ _defineProperty(this, "state", {
64
25
  expand: false
65
26
  });
66
-
67
- return _this;
68
27
  }
69
-
70
- _createClass(HeaderSearch, [{
71
- key: "setSearchParams",
72
- value: function setSearchParams(params, callBack) {
73
- var _this$searchRef$curre;
74
-
75
- (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 ? void 0 : _this$searchRef$curre.setFieldsValue(params);
76
- }
77
- }, {
78
- key: "getSearchValues",
79
- value: function getSearchValues() {
80
- var fromValue = this.formatValue();
81
- return fromValue;
82
- }
83
- }, {
84
- key: "formatValue",
85
- value: function formatValue() {
86
- var _this$searchRef$curre2;
87
-
88
- var fromValue = (_this$searchRef$curre2 = this.searchRef.current) === null || _this$searchRef$curre2 === void 0 ? void 0 : _this$searchRef$curre2.getFieldsValue();
89
-
90
- if (!isEmptyObj(this.dateFormat)) {
91
- for (var key in this.dateFormat) {
92
- var olddata = fromValue[key];
93
-
94
- if (Array.isArray(olddata)) {
95
- if (olddata.length > 0 && olddata[0] && olddata[1]) {
96
- fromValue[key] = [moment(olddata[0]).format(this.dateFormat[key]), moment(olddata[1]).format(this.dateFormat[key])];
97
- }
98
- } else if (olddata) {
99
- fromValue[key] = moment(olddata).format(this.dateFormat[key]);
28
+ setSearchParams(params, callBack) {
29
+ var _this$searchRef$curre;
30
+ (_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 || _this$searchRef$curre.setFieldsValue(params);
31
+ }
32
+ getSearchValues() {
33
+ const fromValue = this.formatValue();
34
+ return fromValue;
35
+ }
36
+ formatValue() {
37
+ var _this$searchRef$curre2;
38
+ const fromValue = (_this$searchRef$curre2 = this.searchRef.current) === null || _this$searchRef$curre2 === void 0 ? void 0 : _this$searchRef$curre2.getFieldsValue();
39
+ if (!isEmptyObj(this.dateFormat)) {
40
+ for (let key in this.dateFormat) {
41
+ let olddata = fromValue[key];
42
+ if (Array.isArray(olddata)) {
43
+ if (olddata.length > 0 && olddata[0] && olddata[1]) {
44
+ fromValue[key] = [moment(olddata[0]).format(this.dateFormat[key]), moment(olddata[1]).format(this.dateFormat[key])];
100
45
  }
46
+ } else if (olddata) {
47
+ fromValue[key] = moment(olddata).format(this.dateFormat[key]);
101
48
  }
102
49
  }
103
-
104
- return fromValue;
105
50
  }
106
- }, {
107
- key: "onSearch",
108
- value: function onSearch() {
109
- var onSearch = this.props.onSearch;
110
- var fromValue = this.formatValue();
111
-
112
- if (onSearch) {
113
- onSearch(fromValue);
114
- return;
115
- }
51
+ return fromValue;
52
+ }
53
+ onSearch() {
54
+ const {
55
+ onSearch
56
+ } = this.props;
57
+ const fromValue = this.formatValue();
58
+ if (onSearch) {
59
+ onSearch(fromValue);
60
+ return;
116
61
  }
117
- }, {
118
- key: "resetFields",
119
- value: function resetFields() {
120
- var _this$searchRef$curre3;
121
-
122
- (_this$searchRef$curre3 = this.searchRef.current) === null || _this$searchRef$curre3 === void 0 ? void 0 : _this$searchRef$curre3.resetFields();
62
+ }
63
+ resetFields() {
64
+ var _this$searchRef$curre3;
65
+ (_this$searchRef$curre3 = this.searchRef.current) === null || _this$searchRef$curre3 === void 0 || _this$searchRef$curre3.resetFields();
66
+ }
67
+ resetSearch() {
68
+ var _this$searchRef$curre4;
69
+ if (this.props.onReset) {
70
+ this.props.onReset();
71
+ return;
123
72
  }
124
- }, {
125
- key: "resetSearch",
126
- value: function resetSearch() {
127
- var _this$searchRef$curre4;
128
-
129
- if (this.props.onReset) {
130
- this.props.onReset();
131
- return;
132
- }
133
-
134
- (_this$searchRef$curre4 = this.searchRef.current) === null || _this$searchRef$curre4 === void 0 ? void 0 : _this$searchRef$curre4.resetFields();
73
+ (_this$searchRef$curre4 = this.searchRef.current) === null || _this$searchRef$curre4 === void 0 || _this$searchRef$curre4.resetFields();
74
+ }
75
+ render() {
76
+ const {
77
+ searchForms = [],
78
+ toolButtonPosition,
79
+ onSearch,
80
+ onReset,
81
+ searchFormProps = {}
82
+ } = this.props;
83
+ let colSpan = 0;
84
+ const headerCount = toolButtonPosition == "right" ? 1 : 2;
85
+ const headerRout = searchForms.length % 4;
86
+ if (headerRout == 0) {
87
+ colSpan = 18;
88
+ } else if (headerRout == 1) {
89
+ colSpan = 12;
90
+ } else if (headerRout == 2) {
91
+ colSpan = 6;
135
92
  }
136
- }, {
137
- key: "render",
138
- value: function render() {
139
- var _this2 = this;
140
-
141
- var _this$props = this.props,
142
- _this$props$searchFor = _this$props.searchForms,
143
- searchForms = _this$props$searchFor === void 0 ? [] : _this$props$searchFor,
144
- toolButtonPosition = _this$props.toolButtonPosition,
145
- onSearch = _this$props.onSearch,
146
- onReset = _this$props.onReset,
147
- _this$props$searchFor2 = _this$props.searchFormProps,
148
- searchFormProps = _this$props$searchFor2 === void 0 ? {} : _this$props$searchFor2;
149
- var colSpan = 0;
150
- var headerCount = toolButtonPosition == "right" ? 1 : 2;
151
- var headerRout = searchForms.length % 4;
152
-
153
- if (headerRout == 0) {
154
- colSpan = 18;
155
- } else if (headerRout == 1) {
156
- colSpan = 12;
157
- } else if (headerRout == 2) {
158
- colSpan = 6;
93
+ return /*#__PURE__*/React.createElement(Row, {
94
+ gutter: 24,
95
+ wrap: true
96
+ }, /*#__PURE__*/React.createElement("div", {
97
+ className: cls(getLess(styles, "nsc-headersearch-header"), {
98
+ [getLess(styles, "nsc-headersearch-header-padding")]: searchForms.length > 3
99
+ }, this.props.className)
100
+ }, /*#__PURE__*/React.createElement("div", {
101
+ className: cls(getLess(styles, "nsc-headersearch-form"))
102
+ }, /*#__PURE__*/React.createElement(Form, _extends({
103
+ ref: this.searchRef,
104
+ labelCol: {},
105
+ wrapperCol: {},
106
+ style: {
107
+ width: "100%",
108
+ display: "flex",
109
+ flexWrap: "wrap"
110
+ },
111
+ onFinish: this.onSearch.bind(this)
112
+ // labelAlign={'left'}
113
+ }, searchFormProps), searchForms.map((item, index) => {
114
+ var _item$props;
115
+ const itemProps = item.props || {};
116
+ let display = "block";
117
+ if (itemProps.valueFormat) {
118
+ this.dateFormat[item.name] = itemProps.valueFormat;
159
119
  }
160
-
161
- return /*#__PURE__*/React.createElement(Row, {
162
- gutter: 24,
163
- wrap: true
164
- }, /*#__PURE__*/React.createElement("div", {
165
- className: cls(getLess(styles, "header"), _defineProperty({}, getLess(styles, "header-padding"), searchForms.length > 3), this.props.className)
166
- }, /*#__PURE__*/React.createElement("div", {
167
- className: cls(getLess(styles, "form"))
168
- }, /*#__PURE__*/React.createElement(Form, _extends({
169
- ref: this.searchRef,
170
- labelCol: {},
171
- wrapperCol: {},
172
- style: {
173
- width: "100%",
174
- display: "flex",
175
- flexWrap: "wrap"
176
- },
177
- onFinish: this.onSearch.bind(this) // labelAlign={'left'}
178
-
179
- }, searchFormProps), searchForms.map(function (item, index) {
180
- var _item$props;
181
-
182
- var itemProps = item.props || {};
183
- var display = "block";
184
-
185
- if (itemProps.valueFormat) {
186
- _this2.dateFormat[item.name] = itemProps.valueFormat;
187
- }
188
-
189
- if (index > headerCount && !_this2.state.expand) {
190
- display = "none"; //return
191
- }
192
-
193
- var allowChars = (item === null || item === void 0 ? void 0 : (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.allowChars) || false;
194
-
195
- var props = _objectSpread({}, itemProps);
196
-
197
- var searchDisabled = props.searchDisabled === true ? true : false;
198
- delete props.searchDisabled;
199
-
200
- if (!item.type || item.type == "Input") {
201
- props.allowChars = true;
202
- } else {
203
- delete props.allowChars;
204
- }
205
-
206
- var defaultItem = {
207
- label: item.label,
208
- name: item.name,
209
- allowChars: allowChars,
210
- rules: item.rules,
211
- componentName: item.type ? item.type : "Input"
212
- };
213
-
214
- if (item.labelCol) {
215
- defaultItem = _objectSpread(_objectSpread({}, defaultItem), {}, {
216
- labelCol: item.labelCol
217
- });
218
- delete item.labelCol;
219
- }
220
-
221
- if (item.wrapperCol) {
222
- defaultItem = _objectSpread(_objectSpread({}, defaultItem), {}, {
223
- wrapperCol: item.wrapperCol
224
- });
225
- delete item.wrapperCol;
226
- }
227
-
228
- var placeholder = item.type == "Select" ? "\u8BF7\u9009\u62E9".concat(item.label) : "\u8BF7\u8F93\u5165".concat(item.label);
229
-
230
- if (item.type == "RangePicker") {
231
- placeholder = ["开始时间", "结束时间"];
232
- }
233
-
234
- return /*#__PURE__*/React.createElement(Col, {
235
- md: {
236
- span: 12
237
- },
238
- sm: {
239
- span: 24
240
- },
241
- lg: {
242
- span: 6
243
- },
244
- key: index,
245
- style: {
246
- paddingRight: 0,
247
- display: display
248
- }
249
- }, /*#__PURE__*/React.createElement(Form.Item, defaultItem, getNode(item.type, _objectSpread(_objectSpread({
250
- placeholder: placeholder,
251
- style: {
252
- width: "100%"
253
- }
254
- }, props), {}, {
255
- disabled: searchDisabled
256
- }))));
257
- }), /*#__PURE__*/React.createElement(Col, {
120
+ if (index > headerCount && !this.state.expand) {
121
+ display = "none";
122
+ //return
123
+ }
124
+ let allowChars = (item === null || item === void 0 || (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.allowChars) || false;
125
+ let props = _objectSpread({}, itemProps);
126
+ let searchDisabled = props.searchDisabled === true ? true : false;
127
+ delete props.searchDisabled;
128
+ if (!item.type || item.type == "Input") {
129
+ props.allowChars = true;
130
+ } else {
131
+ delete props.allowChars;
132
+ }
133
+ let defaultItem = {
134
+ label: item.label,
135
+ name: item.name,
136
+ allowChars: allowChars,
137
+ rules: item.rules,
138
+ componentName: item.type ? item.type : "Input"
139
+ };
140
+ if (item.labelCol) {
141
+ defaultItem = _objectSpread(_objectSpread({}, defaultItem), {}, {
142
+ labelCol: item.labelCol
143
+ });
144
+ delete item.labelCol;
145
+ }
146
+ if (item.wrapperCol) {
147
+ defaultItem = _objectSpread(_objectSpread({}, defaultItem), {}, {
148
+ wrapperCol: item.wrapperCol
149
+ });
150
+ delete item.wrapperCol;
151
+ }
152
+ let placeholder = item.type == "Select" ? "\u8BF7\u9009\u62E9".concat(item.label) : "\u8BF7\u8F93\u5165".concat(item.label);
153
+ if (item.type == "RangePicker") {
154
+ placeholder = ["开始时间", "结束时间"];
155
+ }
156
+ return /*#__PURE__*/React.createElement(Col, {
258
157
  md: {
259
158
  span: 12
260
159
  },
@@ -262,46 +161,72 @@ var HeaderSearch = /*#__PURE__*/function (_PureComponent) {
262
161
  span: 24
263
162
  },
264
163
  lg: {
265
- span: toolButtonPosition == "right" ? 12 : 6
266
- },
267
- style: {
268
- paddingRight: 0
164
+ span: 6
269
165
  },
270
- offset: (this.state.expand || searchForms.length < 4) && searchForms.length > 1 ? colSpan : 0
271
- }, /*#__PURE__*/React.createElement("div", {
272
- className: cls(getLess(styles, "search-buttons"), _defineProperty({}, getLess(styles, "search-buttons-flex"), searchForms.length > 1)),
166
+ key: index,
273
167
  style: {
274
- marginTop: 0
168
+ paddingRight: 0,
169
+ display: display
275
170
  }
276
- }, /*#__PURE__*/React.createElement("div", {
277
- className: cls(_defineProperty({}, getLess(styles, "button-reverse"), this.props.buttonRevers == true))
278
- }, /*#__PURE__*/React.createElement(Button, {
279
- type: "primary" // onClick={this.onSearch.bind(this)}
280
- ,
281
- icon: /*#__PURE__*/React.createElement(SearchOutlined, null),
171
+ }, /*#__PURE__*/React.createElement(Form.Item, defaultItem, getNode(item.type, _objectSpread(_objectSpread({
172
+ placeholder: placeholder,
282
173
  style: {
283
- marginLeft: 0
284
- },
285
- htmlType: "submit"
286
- }, "\u67E5\u8BE2"), searchForms.length > 1 && /*#__PURE__*/React.createElement(Button // type={"primary"}
287
- , {
288
- onClick: this.resetSearch.bind(this),
289
- icon: /*#__PURE__*/React.createElement(ReloadOutlined, null)
290
- }, "\u91CD\u7F6E")), searchForms.length > 3 && /*#__PURE__*/React.createElement("div", {
291
- className: getLess(styles, "expand_style"),
292
- onClick: function onClick() {
293
- var expand = _this2.state.expand;
294
-
295
- _this2.setState({
296
- expand: !expand
297
- });
174
+ width: "100%"
298
175
  }
299
- }, this.state.expand ? "收起" : "展开", this.state.expand ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null))))))));
300
- }
301
- }]);
302
-
303
- return HeaderSearch;
304
- }(PureComponent);
305
-
176
+ }, props), {}, {
177
+ disabled: searchDisabled
178
+ }))));
179
+ }), /*#__PURE__*/React.createElement(Col, {
180
+ md: {
181
+ span: 12
182
+ },
183
+ sm: {
184
+ span: 24
185
+ },
186
+ lg: {
187
+ span: toolButtonPosition == "right" ? 12 : 6
188
+ },
189
+ style: {
190
+ paddingRight: 0
191
+ },
192
+ offset: (this.state.expand || searchForms.length < 4) && searchForms.length > 1 ? colSpan : 0
193
+ }, /*#__PURE__*/React.createElement("div", {
194
+ className: cls(getLess(styles, "nsc-headersearch-search-buttons"), {
195
+ [getLess(styles, "nsc-headersearch-search-buttons-flex")]: searchForms.length > 1
196
+ }),
197
+ style: {
198
+ marginTop: 0
199
+ }
200
+ }, /*#__PURE__*/React.createElement("div", {
201
+ className: cls({
202
+ [getLess(styles, "nsc-headersearch-button-reverse")]: this.props.buttonRevers == true
203
+ })
204
+ }, /*#__PURE__*/React.createElement(Button, {
205
+ type: "primary"
206
+ // onClick={this.onSearch.bind(this)}
207
+ ,
208
+ icon: /*#__PURE__*/React.createElement(SearchOutlined, null),
209
+ style: {
210
+ marginLeft: 0
211
+ },
212
+ htmlType: "submit"
213
+ }, "\u67E5\u8BE2"), searchForms.length > 1 && /*#__PURE__*/React.createElement(Button
214
+ // type={"primary"}
215
+ , {
216
+ onClick: this.resetSearch.bind(this),
217
+ icon: /*#__PURE__*/React.createElement(ReloadOutlined, null)
218
+ }, "\u91CD\u7F6E")), searchForms.length > 3 && /*#__PURE__*/React.createElement("div", {
219
+ className: getLess(styles, "nsc-headersearch-expand-style"),
220
+ onClick: () => {
221
+ const {
222
+ expand
223
+ } = this.state;
224
+ this.setState({
225
+ expand: !expand
226
+ });
227
+ }
228
+ }, this.state.expand ? "收起" : "展开", this.state.expand ? /*#__PURE__*/React.createElement(UpOutlined, null) : /*#__PURE__*/React.createElement(DownOutlined, null))))))));
229
+ }
230
+ }
306
231
  export default HeaderSearch;
307
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvSGVhZGVyU2VhcmNoL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiQnV0dG9uIiwiY2xzIiwic3R5bGVzIiwiQ29sIiwiUm93IiwibW9tZW50IiwiaXNFbXB0eU9iaiIsIkRvd25PdXRsaW5lZCIsIlVwT3V0bGluZWQiLCJSZWxvYWRPdXRsaW5lZCIsIlNlYXJjaE91dGxpbmVkIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJIZWFkZXJTZWFyY2giLCJjcmVhdGVSZWYiLCJleHBhbmQiLCJwYXJhbXMiLCJjYWxsQmFjayIsInNlYXJjaFJlZiIsImN1cnJlbnQiLCJzZXRGaWVsZHNWYWx1ZSIsImZyb21WYWx1ZSIsImZvcm1hdFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJkYXRlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZvcm1hdCIsIm9uU2VhcmNoIiwicHJvcHMiLCJyZXNldEZpZWxkcyIsIm9uUmVzZXQiLCJzZWFyY2hGb3JtcyIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInNlYXJjaEZvcm1Qcm9wcyIsImNvbFNwYW4iLCJoZWFkZXJDb3VudCIsImhlYWRlclJvdXQiLCJjbGFzc05hbWUiLCJ3aWR0aCIsImRpc3BsYXkiLCJmbGV4V3JhcCIsImJpbmQiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzdGF0ZSIsImFsbG93Q2hhcnMiLCJzZWFyY2hEaXNhYmxlZCIsInR5cGUiLCJkZWZhdWx0SXRlbSIsImxhYmVsIiwicnVsZXMiLCJjb21wb25lbnROYW1lIiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicGxhY2Vob2xkZXIiLCJzcGFuIiwicGFkZGluZ1JpZ2h0Iiwic3R5bGUiLCJkaXNhYmxlZCIsIm1hcmdpblRvcCIsImJ1dHRvblJldmVycyIsIm1hcmdp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QVQsQ0FEcEI7QUFFRSxRQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiLGNBQVFhLE1BQVIsR0FBbUIsTUFBSSxDQUFDcUMsS0FBeEIsQ0FBUXJDLE1BQVI7O0FBQ0EsVUFBQSxNQUFJLENBQUN3RCxRQUFMLENBQWM7QUFDWnhELFlBQUFBLE1BQU0sRUFBRSxDQUFDQTtBQURHLFdBQWQ7QUFHRDtBQVBILFNBU0csS0FBS3FDLEtBQUwsQ0FBV3JDLE1BQVgsR0FBb0IsSUFBcEIsR0FBMkIsSUFUOUIsRUFVRyxLQUFLcUMsS0FBTCxDQUFXckMsTUFBWCxnQkFBb0Isb0JBQUMsVUFBRCxPQUFwQixnQkFBcUMsb0JBQUMsWUFBRCxPQVZ4QyxDQWpDSixDQVpGLENBdEVGLENBREYsQ0FQRixDQURGLENBREY7QUFpSkQ7Ozs7RUFwTndCakIsYTs7QUFzTjNCLGVBQWVlLFlBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IENvbCBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL0NvbFwiO1xyXG5pbXBvcnQgUm93IGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvUm93XCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIFVwT3V0bGluZWQsXHJcbiAgUmVsb2FkT3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuXHJcbmludGVyZmFjZSBTZWFyY2hJdGVtUHJvcHMge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxhYmVsQ29sPzogYW55O1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgd3JhcHBlckNvbD86IGFueTtcclxuICBwcm9wcz86IGFueTtcclxufVxyXG5pbnRlcmZhY2UgU2VhcmNoUHJvcHMge1xyXG4gIHNlYXJjaEZvcm1zOiBBcnJheTxTZWFyY2hJdGVtUHJvcHM+OyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHRvb2xCdXR0b25Qb3NpdGlvbj86IHN0cmluZztcclxuICBvblNlYXJjaD86IGFueTtcclxuICBvblJlc2V0PzogYW55O1xyXG4gIHNlYXJjaEZvcm1Qcm9wcz86IG9iamVjdDtcclxuICBidXR0b25SZXZlcnM/OiBib29sZWFuO1xyXG4gIGNsYXNzTmFtZT86IGFueTtcclxufVxyXG5cclxuY2xhc3MgSGVhZGVyU2VhcmNoIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxTZWFyY2hQcm9wcywgYW55PiB7XHJcbiAgc2VhcmNoUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIHN0YXRlID0geyBleHBhbmQ6IGZhbHNlIH07XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIHJldHVybiBmcm9tVmFsdWU7XHJcbiAgfVxyXG4gIGZvcm1hdFZhbHVlKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IGZyb21WYWx1ZVtrZXldO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBpZiAob2xkZGF0YS5sZW5ndGggPiAwICYmIG9sZGRhdGFbMF0gJiYgb2xkZGF0YVsxXSkge1xyXG4gICAgICAgICAgICBmcm9tVmFsdWVba2V5XSA9IFtcclxuICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBtb21lbnQob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGZyb21WYWx1ZVtrZXldID0gbW9tZW50KG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnJvbVZhbHVlO1xyXG4gIH1cclxuICBvblNlYXJjaCgpIHtcclxuICAgIGNvbnN0IHsgb25TZWFyY2ggfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKCk7XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goZnJvbVZhbHVlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNldEZpZWxkcygpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hGb3JtcyA9IFtdLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24sXHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvblJlc2V0LFxyXG4gICAgICBzZWFyY2hGb3JtUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGxldCBjb2xTcGFuID0gMDtcclxuICAgIGNvbnN0IGhlYWRlckNvdW50ID0gdG9vbEJ1dHRvblBvc2l0aW9uID09IFwicmlnaHRcIiA/IDEgOiAyO1xyXG4gICAgY29uc3QgaGVhZGVyUm91dCA9IHNlYXJjaEZvcm1zLmxlbmd0aCAlIDQ7XHJcbiAgICBpZiAoaGVhZGVyUm91dCA9PSAwKSB7XHJcbiAgICAgIGNvbFNwYW4gPSAxODtcclxuICAgIH0gZWxzZSBpZiAoaGVhZGVyUm91dCA9PSAxKSB7XHJcbiAgICAgIGNvbFNwYW4gPSAxMjtcclxuICAgIH0gZWxzZSBpZiAoaGVhZGVyUm91dCA9PSAyKSB7XHJcbiAgICAgIGNvbFNwYW4gPSA2O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFJvdyBndXR0ZXI9ezI0fSB3cmFwPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJoZWFkZXJcIiksXHJcbiAgICAgICAgICAgIHsgW2dldExlc3Moc3R5bGVzLCBcImhlYWRlci1wYWRkaW5nXCIpXTogc2VhcmNoRm9ybXMubGVuZ3RoID4gMyB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNsYXNzTmFtZVxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImZvcm1cIikpfT5cclxuICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgIGxhYmVsQ29sPXt7fX1cclxuICAgICAgICAgICAgICB3cmFwcGVyQ29sPXt7fX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIsIGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4V3JhcDogXCJ3cmFwXCIgfX1cclxuICAgICAgICAgICAgICBvbkZpbmlzaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8vIGxhYmVsQWxpZ249eydsZWZ0J31cclxuICAgICAgICAgICAgICB7Li4uc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc3BsYXkgPSBcImJsb2NrXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gaGVhZGVyQ291bnQgJiYgIXRoaXMuc3RhdGUuZXhwYW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgICAgLy9yZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbT8ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSB7IC4uLml0ZW1Qcm9wcyB9O1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaERpc2FibGVkID1cclxuICAgICAgICAgICAgICAgICAgcHJvcHMuc2VhcmNoRGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuc2VhcmNoRGlzYWJsZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzLmFsbG93Q2hhcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdEl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM6IGFsbG93Q2hhcnMsXHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBpdGVtLnJ1bGVzLFxyXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lOiBpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCIsXHJcbiAgICAgICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtID0geyAuLi5kZWZhdWx0SXRlbSwgbGFiZWxDb2w6IGl0ZW0ubGFiZWxDb2wgfTtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0ubGFiZWxDb2w7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS53cmFwcGVyQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtID0geyAuLi5kZWZhdWx0SXRlbSwgd3JhcHBlckNvbDogaXRlbS53cmFwcGVyQ29sIH07XHJcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLndyYXBwZXJDb2w7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGxhY2Vob2xkZXI6IGFueSA9XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0udHlwZSA9PSBcIlNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBg6K+36YCJ5oupJHtpdGVtLmxhYmVsfWBcclxuICAgICAgICAgICAgICAgICAgICA6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YDtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gW1wi5byA5aeL5pe26Ze0XCIsIFwi57uT5p2f5pe26Ze0XCJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgICAgIG1kPXt7IHNwYW46IDEyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgICAgICBsZz17eyBzcGFuOiA2IH19XHJcbiAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAsIGRpc3BsYXk6IGRpc3BsYXkgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW0gey4uLmRlZmF1bHRJdGVtfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiBcIjEwMCVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHNlYXJjaERpc2FibGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAxMiB9fVxyXG4gICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgIGxnPXt7IHNwYW46IHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgPyAxMiA6IDYgfX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCB9fVxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0PXtcclxuICAgICAgICAgICAgICAgICAgKHRoaXMuc3RhdGUuZXhwYW5kIHx8IHNlYXJjaEZvcm1zLmxlbmd0aCA8IDQpICYmXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICA/IGNvbFNwYW5cclxuICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInNlYXJjaC1idXR0b25zXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInNlYXJjaC1idXR0b25zLWZsZXhcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXMubGVuZ3RoID4gMSxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpblRvcDogMCB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcImJ1dHRvbi1yZXZlcnNlXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5idXR0b25SZXZlcnMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb25DbGljaz17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFNlYXJjaE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgaHRtbFR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5sZW5ndGggPiAxICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVzZXRTZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFJlbG9hZE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDph43nva5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmRfc3R5bGVcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXhwYW5kIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQ6ICFleHBhbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5zdGF0ZS5leHBhbmQgPyBcIuaUtui1t1wiIDogXCLlsZXlvIBcIn1cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IDxVcE91dGxpbmVkIC8+IDogPERvd25PdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICA8L0Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBIZWFkZXJTZWFyY2g7XHJcbiJdfQ==
232
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiQnV0dG9uIiwiY2xzIiwiQ29sIiwiUm93IiwibW9tZW50IiwiaXNFbXB0eU9iaiIsIkRvd25PdXRsaW5lZCIsIlVwT3V0bGluZWQiLCJSZWxvYWRPdXRsaW5lZCIsIlNlYXJjaE91dGxpbmVkIiwiZ2V0TGVzcyIsImdldE5vZGUiLCJzdHlsZXMiLCJIZWFkZXJTZWFyY2giLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsImV4cGFuZCIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiY3VycmVudCIsInNldEZpZWxkc1ZhbHVlIiwiZ2V0U2VhcmNoVmFsdWVzIiwiZnJvbVZhbHVlIiwiZm9ybWF0VmFsdWUiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwiZ2V0RmllbGRzVmFsdWUiLCJkYXRlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImZvcm1hdCIsIm9uU2VhcmNoIiwicHJvcHMiLCJyZXNldEZpZWxkcyIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTQiLCJvblJlc2V0IiwicmVuZGVyIiwic2VhcmNoRm9ybXMiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJzZWFyY2hGb3JtUHJvcHMiLCJjb2xTcGFuIiwiaGVhZGVyQ291bnQiLCJoZWFkZXJSb3V0IiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsIndyYXAiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInJlZiIsImxhYmVsQ29sIiwid3JhcHBlckNvbCIsInN0eWxlIiwid2lkdGgiLCJkaXNwbGF5IiwiZmxleFdyYXAiLCJvbkZpbmlzaCIsImJpbmQiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInN0YXRlIiwiYWxsb3dDaGFycyIsIl9vYmplY3RTcHJlYWQiLCJzZWFyY2hEaXNhYmxlZCIsInR5cGUiLCJkZWZhdWx0SXRlbSIsImxhYmVsIiwicnVsZXMiLCJjb21wb25lbnROYW1lIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJtZCIsInNwYW4iLCJzbSIsImxnIiwicGFkZGluZ1JpZ2h0IiwiSXRlbSIsImRpc2FibGVkIiwib2Zmc2V0IiwibWFyZ2luVG9wIiwiYnV0dG9uUmV2ZXJzIiwiaWNvbiIsIm1hcmdpbkxlZnQiLCJodG1sVHlwZSIsIm9uQ2xpY2siLCJzZXRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvSGVhZGVyU2VhcmNoL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IENvbCBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL0NvbFwiO1xyXG5pbXBvcnQgUm93IGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvUm93XCI7XHJcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIFVwT3V0bGluZWQsXHJcbiAgUmVsb2FkT3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNlYXJjaEl0ZW1Qcm9wcyB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxDb2w/OiBhbnk7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICB3cmFwcGVyQ29sPzogYW55O1xyXG4gIHByb3BzPzogYW55O1xyXG59XHJcbmludGVyZmFjZSBTZWFyY2hQcm9wcyB7XHJcbiAgc2VhcmNoRm9ybXM6IEFycmF5PFNlYXJjaEl0ZW1Qcm9wcz47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogc3RyaW5nO1xyXG4gIG9uU2VhcmNoPzogYW55O1xyXG4gIG9uUmVzZXQ/OiBhbnk7XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogb2JqZWN0O1xyXG4gIGJ1dHRvblJldmVycz86IGJvb2xlYW47XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG59XHJcblxyXG5jbGFzcyBIZWFkZXJTZWFyY2ggZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFNlYXJjaFByb3BzLCBhbnk+IHtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgc3RhdGUgPSB7IGV4cGFuZDogZmFsc2UgfTtcclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUocGFyYW1zKTtcclxuICB9XHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZSgpO1xyXG4gICAgcmV0dXJuIGZyb21WYWx1ZTtcclxuICB9XHJcbiAgZm9ybWF0VmFsdWUoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZnJvbVZhbHVlW2tleV07XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGlmIChvbGRkYXRhLmxlbmd0aCA+IDAgJiYgb2xkZGF0YVswXSAmJiBvbGRkYXRhWzFdKSB7XHJcbiAgICAgICAgICAgIGZyb21WYWx1ZVtrZXldID0gW1xyXG4gICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIG1vbWVudChvbGRkYXRhWzFdKS5mb3JtYXQodGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgZnJvbVZhbHVlW2tleV0gPSBtb21lbnQob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmcm9tVmFsdWU7XHJcbiAgfVxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgY29uc3QgeyBvblNlYXJjaCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoKTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmcm9tVmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0RmllbGRzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEZvcm1zID0gW10sXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbixcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uUmVzZXQsXHJcbiAgICAgIHNlYXJjaEZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgbGV0IGNvbFNwYW4gPSAwO1xyXG4gICAgY29uc3QgaGVhZGVyQ291bnQgPSB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJyaWdodFwiID8gMSA6IDI7XHJcbiAgICBjb25zdCBoZWFkZXJSb3V0ID0gc2VhcmNoRm9ybXMubGVuZ3RoICUgNDtcclxuICAgIGlmIChoZWFkZXJSb3V0ID09IDApIHtcclxuICAgICAgY29sU3BhbiA9IDE4O1xyXG4gICAgfSBlbHNlIGlmIChoZWFkZXJSb3V0ID09IDEpIHtcclxuICAgICAgY29sU3BhbiA9IDEyO1xyXG4gICAgfSBlbHNlIGlmIChoZWFkZXJSb3V0ID09IDIpIHtcclxuICAgICAgY29sU3BhbiA9IDY7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9IHdyYXA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtaGVhZGVyXCIpLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtaGVhZGVyLXBhZGRpbmdcIildOlxyXG4gICAgICAgICAgICAgICAgc2VhcmNoRm9ybXMubGVuZ3RoID4gMyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5jbGFzc05hbWVcclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtaGVhZGVyc2VhcmNoLWZvcm1cIikpfT5cclxuICAgICAgICAgICAgPEZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgIGxhYmVsQ29sPXt7fX1cclxuICAgICAgICAgICAgICB3cmFwcGVyQ29sPXt7fX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogXCIxMDAlXCIsIGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4V3JhcDogXCJ3cmFwXCIgfX1cclxuICAgICAgICAgICAgICBvbkZpbmlzaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIC8vIGxhYmVsQWxpZ249eydsZWZ0J31cclxuICAgICAgICAgICAgICB7Li4uc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3NlYXJjaEZvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgICAgICAgbGV0IGRpc3BsYXkgPSBcImJsb2NrXCI7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gaGVhZGVyQ291bnQgJiYgIXRoaXMuc3RhdGUuZXhwYW5kKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgICAgLy9yZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbT8ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBsZXQgcHJvcHMgPSB7IC4uLml0ZW1Qcm9wcyB9O1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlYXJjaERpc2FibGVkID1cclxuICAgICAgICAgICAgICAgICAgcHJvcHMuc2VhcmNoRGlzYWJsZWQgPT09IHRydWUgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgcHJvcHMuc2VhcmNoRGlzYWJsZWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIHByb3BzLmFsbG93Q2hhcnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgZGVmYXVsdEl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM6IGFsbG93Q2hhcnMsXHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzOiBpdGVtLnJ1bGVzLFxyXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lOiBpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCIsXHJcbiAgICAgICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmxhYmVsQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtID0geyAuLi5kZWZhdWx0SXRlbSwgbGFiZWxDb2w6IGl0ZW0ubGFiZWxDb2wgfTtcclxuICAgICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0ubGFiZWxDb2w7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS53cmFwcGVyQ29sKSB7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRJdGVtID0geyAuLi5kZWZhdWx0SXRlbSwgd3JhcHBlckNvbDogaXRlbS53cmFwcGVyQ29sIH07XHJcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLndyYXBwZXJDb2w7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgcGxhY2Vob2xkZXI6IGFueSA9XHJcbiAgICAgICAgICAgICAgICAgIGl0ZW0udHlwZSA9PSBcIlNlbGVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgPyBg6K+36YCJ5oupJHtpdGVtLmxhYmVsfWBcclxuICAgICAgICAgICAgICAgICAgICA6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YDtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyID0gW1wi5byA5aeL5pe26Ze0XCIsIFwi57uT5p2f5pe26Ze0XCJdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgICAgIG1kPXt7IHNwYW46IDEyIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgICAgICBsZz17eyBzcGFuOiA2IH19XHJcbiAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nUmlnaHQ6IDAsIGRpc3BsYXk6IGRpc3BsYXkgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW0gey4uLmRlZmF1bHRJdGVtfT5cclxuICAgICAgICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7IHdpZHRoOiBcIjEwMCVcIiB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IHNlYXJjaERpc2FibGVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBtZD17eyBzcGFuOiAxMiB9fVxyXG4gICAgICAgICAgICAgICAgc209e3sgc3BhbjogMjQgfX1cclxuICAgICAgICAgICAgICAgIGxnPXt7IHNwYW46IHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcInJpZ2h0XCIgPyAxMiA6IDYgfX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdSaWdodDogMCB9fVxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0PXtcclxuICAgICAgICAgICAgICAgICAgKHRoaXMuc3RhdGUuZXhwYW5kIHx8IHNlYXJjaEZvcm1zLmxlbmd0aCA8IDQpICYmXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDFcclxuICAgICAgICAgICAgICAgICAgICA/IGNvbFNwYW5cclxuICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtc2VhcmNoLWJ1dHRvbnNcIiksXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1oZWFkZXJzZWFyY2gtc2VhcmNoLWJ1dHRvbnMtZmxleFwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDEsXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5Ub3A6IDAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKHtcclxuICAgICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtaGVhZGVyc2VhcmNoLWJ1dHRvbi1yZXZlcnNlXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5idXR0b25SZXZlcnMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gb25DbGljaz17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFNlYXJjaE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgaHRtbFR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb3Jtcy5sZW5ndGggPiAxICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucmVzZXRTZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17PFJlbG9hZE91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICDph43nva5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7c2VhcmNoRm9ybXMubGVuZ3RoID4gMyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibnNjLWhlYWRlcnNlYXJjaC1leHBhbmQtc3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBleHBhbmQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZDogIWV4cGFuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnN0YXRlLmV4cGFuZCA/IFwi5pS26LW3XCIgOiBcIuWxleW8gFwifVxyXG4gICAgICAgICAgICAgICAgICAgICAge3RoaXMuc3RhdGUuZXhwYW5kID8gPFVwT3V0bGluZWQgLz4gOiA8RG93bk91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgIDwvRm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L1Jvdz5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEhlYWRlclNlYXJjaDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxjQUFjO0FBQ3JCLE9BQU9DLEdBQUcsTUFBTSxxQkFB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