nsc-react-component 2.12.2 → 2.13.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 (312) hide show
  1. package/lib/Interface.js +1 -1
  2. package/lib/Interface.js.map +1 -0
  3. package/lib/base/affix/index.js +5 -46
  4. package/lib/base/affix/index.js.map +1 -0
  5. package/lib/base/alert/index.js +5 -46
  6. package/lib/base/alert/index.js.map +1 -0
  7. package/lib/base/anchor/index.js +8 -49
  8. package/lib/base/anchor/index.js.map +1 -0
  9. package/lib/base/avatar/index.js +8 -49
  10. package/lib/base/avatar/index.js.map +1 -0
  11. package/lib/base/backTop/index.js +5 -46
  12. package/lib/base/backTop/index.js.map +1 -0
  13. package/lib/base/badge/index.js +8 -49
  14. package/lib/base/badge/index.js.map +1 -0
  15. package/lib/base/breadcrumb/index.js +5 -46
  16. package/lib/base/breadcrumb/index.js.map +1 -0
  17. package/lib/base/button/index.d.ts +1 -1
  18. package/lib/base/button/index.js +93 -134
  19. package/lib/base/button/index.js.map +1 -0
  20. package/lib/base/calendar/index.js +5 -46
  21. package/lib/base/calendar/index.js.map +1 -0
  22. package/lib/base/card/index.js +8 -50
  23. package/lib/base/card/index.js.map +1 -0
  24. package/lib/base/carousel/index.js +5 -46
  25. package/lib/base/carousel/index.js.map +1 -0
  26. package/lib/base/cascader/index.d.ts +3 -3
  27. package/lib/base/cascader/index.js +150 -221
  28. package/lib/base/cascader/index.js.map +1 -0
  29. package/lib/base/chart/index.d.ts +2 -2
  30. package/lib/base/chart/index.js +178 -287
  31. package/lib/base/chart/index.js.map +1 -0
  32. package/lib/base/checkbox/CheckboxGroup.d.ts +3 -3
  33. package/lib/base/checkbox/CheckboxGroup.js +165 -258
  34. package/lib/base/checkbox/CheckboxGroup.js.map +1 -0
  35. package/lib/base/checkbox/index.d.ts +2 -2
  36. package/lib/base/checkbox/index.js +8 -48
  37. package/lib/base/checkbox/index.js.map +1 -0
  38. package/lib/base/collapse/index.js +8 -49
  39. package/lib/base/collapse/index.js.map +1 -0
  40. package/lib/base/comment/index.js +5 -46
  41. package/lib/base/comment/index.js.map +1 -0
  42. package/lib/base/common/BodyRow/index.js +48 -102
  43. package/lib/base/common/BodyRow/index.js.map +1 -0
  44. package/lib/base/common/EllipseCell/index.d.ts +1 -1
  45. package/lib/base/common/EllipseCell/index.js +16 -57
  46. package/lib/base/common/EllipseCell/index.js.map +1 -0
  47. package/lib/base/common/FileIcon.d.ts +2 -2
  48. package/lib/base/common/FileIcon.js +86 -132
  49. package/lib/base/common/FileIcon.js.map +1 -0
  50. package/lib/base/common/Icon.d.ts +2 -2
  51. package/lib/base/common/Icon.js +42 -96
  52. package/lib/base/common/Icon.js.map +1 -0
  53. package/lib/base/common/IconData.js +2 -2
  54. package/lib/base/common/IconData.js.map +1 -0
  55. package/lib/base/common/IconFont.d.ts +2 -2
  56. package/lib/base/common/IconFont.js +6 -8
  57. package/lib/base/common/IconFont.js.map +1 -0
  58. package/lib/base/common/NoAuthority.d.ts +2 -2
  59. package/lib/base/common/NoAuthority.js +13 -53
  60. package/lib/base/common/NoAuthority.js.map +1 -0
  61. package/lib/base/common/NoData.d.ts +2 -2
  62. package/lib/base/common/NoData.js +34 -74
  63. package/lib/base/common/NoData.js.map +1 -0
  64. package/lib/base/common/NoMessage.d.ts +2 -2
  65. package/lib/base/common/NoMessage.js +30 -70
  66. package/lib/base/common/NoMessage.js.map +1 -0
  67. package/lib/base/common/NoNetWork.d.ts +2 -2
  68. package/lib/base/common/NoNetWork.js +30 -70
  69. package/lib/base/common/NoNetWork.js.map +1 -0
  70. package/lib/base/common/Page404.d.ts +2 -2
  71. package/lib/base/common/Page404.js +30 -70
  72. package/lib/base/common/Page404.js.map +1 -0
  73. package/lib/base/common/PageRequest.js +91 -154
  74. package/lib/base/common/PageRequest.js.map +1 -0
  75. package/lib/base/common/TreePanel.d.ts +1 -1
  76. package/lib/base/common/TreePanel.js +133 -212
  77. package/lib/base/common/TreePanel.js.map +1 -0
  78. package/lib/base/common/iconfontalibaba.js +15 -22
  79. package/lib/base/common/iconfontalibaba.js.map +1 -0
  80. package/lib/base/common/withZhLocale.d.ts +1 -1
  81. package/lib/base/common/withZhLocale.js +3 -7
  82. package/lib/base/common/withZhLocale.js.map +1 -0
  83. package/lib/base/configProvider/index.js +8 -49
  84. package/lib/base/configProvider/index.js.map +1 -0
  85. package/lib/base/datepick/Rangepicker.d.ts +3 -3
  86. package/lib/base/datepick/Rangepicker.js +229 -325
  87. package/lib/base/datepick/Rangepicker.js.map +1 -0
  88. package/lib/base/datepick/index.d.ts +2 -2
  89. package/lib/base/datepick/index.js +56 -113
  90. package/lib/base/datepick/index.js.map +1 -0
  91. package/lib/base/descriptions/index.js +8 -49
  92. package/lib/base/descriptions/index.js.map +1 -0
  93. package/lib/base/divider/index.js +5 -46
  94. package/lib/base/divider/index.js.map +1 -0
  95. package/lib/base/download/index.js +42 -84
  96. package/lib/base/download/index.js.map +1 -0
  97. package/lib/base/drawer/index.js +14 -57
  98. package/lib/base/drawer/index.js.map +1 -0
  99. package/lib/base/dropdown/index.js +19 -65
  100. package/lib/base/dropdown/index.js.map +1 -0
  101. package/lib/base/editor/index.d.ts +1 -1
  102. package/lib/base/editor/index.js +83 -128
  103. package/lib/base/editor/index.js.map +1 -0
  104. package/lib/base/errorboundary/index.js +19 -63
  105. package/lib/base/errorboundary/index.js.map +1 -0
  106. package/lib/base/form/Form.d.ts +2 -2
  107. package/lib/base/form/Form.js +314 -427
  108. package/lib/base/form/Form.js.map +1 -0
  109. package/lib/base/form/filed/Cascader.d.ts +2 -2
  110. package/lib/base/form/filed/Cascader.js +6 -45
  111. package/lib/base/form/filed/Cascader.js.map +1 -0
  112. package/lib/base/form/filed/Checkbox.d.ts +2 -2
  113. package/lib/base/form/filed/Checkbox.js +6 -45
  114. package/lib/base/form/filed/Checkbox.js.map +1 -0
  115. package/lib/base/form/filed/DatePicker.d.ts +2 -2
  116. package/lib/base/form/filed/DatePicker.js +6 -45
  117. package/lib/base/form/filed/DatePicker.js.map +1 -0
  118. package/lib/base/form/filed/FormItem.d.ts +2 -2
  119. package/lib/base/form/filed/FormItem.js +65 -127
  120. package/lib/base/form/filed/FormItem.js.map +1 -0
  121. package/lib/base/form/filed/Input.d.ts +2 -2
  122. package/lib/base/form/filed/Input.js +14 -51
  123. package/lib/base/form/filed/Input.js.map +1 -0
  124. package/lib/base/form/filed/InputEamil.d.ts +2 -2
  125. package/lib/base/form/filed/InputEamil.js +5 -44
  126. package/lib/base/form/filed/InputEamil.js.map +1 -0
  127. package/lib/base/form/filed/InputNumber.d.ts +2 -2
  128. package/lib/base/form/filed/InputNumber.js +5 -44
  129. package/lib/base/form/filed/InputNumber.js.map +1 -0
  130. package/lib/base/form/filed/InputPassword.d.ts +2 -2
  131. package/lib/base/form/filed/InputPassword.js +5 -44
  132. package/lib/base/form/filed/InputPassword.js.map +1 -0
  133. package/lib/base/form/filed/Item.d.ts +3 -3
  134. package/lib/base/form/filed/Item.js +91 -163
  135. package/lib/base/form/filed/Item.js.map +1 -0
  136. package/lib/base/form/filed/Radio.d.ts +2 -2
  137. package/lib/base/form/filed/Radio.js +7 -45
  138. package/lib/base/form/filed/Radio.js.map +1 -0
  139. package/lib/base/form/filed/RangerPicker.d.ts +2 -2
  140. package/lib/base/form/filed/RangerPicker.js +6 -45
  141. package/lib/base/form/filed/RangerPicker.js.map +1 -0
  142. package/lib/base/form/filed/Rate.d.ts +2 -2
  143. package/lib/base/form/filed/Rate.js +6 -46
  144. package/lib/base/form/filed/Rate.js.map +1 -0
  145. package/lib/base/form/filed/Select.d.ts +2 -2
  146. package/lib/base/form/filed/Select.js +9 -49
  147. package/lib/base/form/filed/Select.js.map +1 -0
  148. package/lib/base/form/filed/Slider.d.ts +2 -2
  149. package/lib/base/form/filed/Slider.js +6 -46
  150. package/lib/base/form/filed/Slider.js.map +1 -0
  151. package/lib/base/form/filed/Switch.d.ts +2 -2
  152. package/lib/base/form/filed/Switch.js +6 -46
  153. package/lib/base/form/filed/Switch.js.map +1 -0
  154. package/lib/base/form/filed/TagSelect.d.ts +2 -2
  155. package/lib/base/form/filed/TagSelect.js +6 -45
  156. package/lib/base/form/filed/TagSelect.js.map +1 -0
  157. package/lib/base/form/filed/TextArea.d.ts +2 -2
  158. package/lib/base/form/filed/TextArea.js +5 -44
  159. package/lib/base/form/filed/TextArea.js.map +1 -0
  160. package/lib/base/form/filed/Upload.d.ts +2 -2
  161. package/lib/base/form/filed/Upload.js +9 -45
  162. package/lib/base/form/filed/Upload.js.map +1 -0
  163. package/lib/base/form/index.js +17 -58
  164. package/lib/base/form/index.js.map +1 -0
  165. package/lib/base/grid/Col.js +5 -46
  166. package/lib/base/grid/Col.js.map +1 -0
  167. package/lib/base/grid/Row.js +5 -46
  168. package/lib/base/grid/Row.js.map +1 -0
  169. package/lib/base/grid/index.js +1 -1
  170. package/lib/base/grid/index.js.map +1 -0
  171. package/lib/base/iframe/index.d.ts +1 -1
  172. package/lib/base/iframe/index.js +44 -93
  173. package/lib/base/iframe/index.js.map +1 -0
  174. package/lib/base/image/index.js +163 -261
  175. package/lib/base/image/index.js.map +1 -0
  176. package/lib/base/input/Email.d.ts +2 -2
  177. package/lib/base/input/Email.js +55 -103
  178. package/lib/base/input/Email.js.map +1 -0
  179. package/lib/base/input/Number.d.ts +1 -1
  180. package/lib/base/input/Number.js +48 -104
  181. package/lib/base/input/Number.js.map +1 -0
  182. package/lib/base/input/Password.d.ts +1 -1
  183. package/lib/base/input/Password.js +48 -104
  184. package/lib/base/input/Password.js.map +1 -0
  185. package/lib/base/input/Search.d.ts +1 -1
  186. package/lib/base/input/Search.js +46 -102
  187. package/lib/base/input/Search.js.map +1 -0
  188. package/lib/base/input/TextArea.d.ts +1 -1
  189. package/lib/base/input/TextArea.js +64 -123
  190. package/lib/base/input/TextArea.js.map +1 -0
  191. package/lib/base/input/index.d.ts +2 -2
  192. package/lib/base/input/index.js +121 -195
  193. package/lib/base/input/index.js.map +1 -0
  194. package/lib/base/layout/index.js +14 -56
  195. package/lib/base/layout/index.js.map +1 -0
  196. package/lib/base/list/index.js +8 -49
  197. package/lib/base/list/index.js.map +1 -0
  198. package/lib/base/menu/index.d.ts +5 -5
  199. package/lib/base/menu/index.js +100 -164
  200. package/lib/base/menu/index.js.map +1 -0
  201. package/lib/base/message/index.js +5 -47
  202. package/lib/base/message/index.js.map +1 -0
  203. package/lib/base/modal/Confirm.js +14 -18
  204. package/lib/base/modal/Confirm.js.map +1 -0
  205. package/lib/base/modal/index.d.ts +1 -1
  206. package/lib/base/modal/index.js +274 -359
  207. package/lib/base/modal/index.js.map +1 -0
  208. package/lib/base/notification/index.js +5 -47
  209. package/lib/base/notification/index.js.map +1 -0
  210. package/lib/base/pageHeader/index.js +5 -46
  211. package/lib/base/pageHeader/index.js.map +1 -0
  212. package/lib/base/pagination/index.js +5 -46
  213. package/lib/base/pagination/index.js.map +1 -0
  214. package/lib/base/pdfviwer/index.d.ts +1 -1
  215. package/lib/base/pdfviwer/index.js +67 -92
  216. package/lib/base/pdfviwer/index.js.map +1 -0
  217. package/lib/base/popconfirm/index.js +5 -46
  218. package/lib/base/popconfirm/index.js.map +1 -0
  219. package/lib/base/popover/index.js +19 -65
  220. package/lib/base/popover/index.js.map +1 -0
  221. package/lib/base/progress/index.js +5 -46
  222. package/lib/base/progress/index.js.map +1 -0
  223. package/lib/base/radio/RadioGroup.d.ts +1 -1
  224. package/lib/base/radio/RadioGroup.js +198 -295
  225. package/lib/base/radio/RadioGroup.js.map +1 -0
  226. package/lib/base/radio/index.d.ts +1 -1
  227. package/lib/base/radio/index.js +8 -50
  228. package/lib/base/radio/index.js.map +1 -0
  229. package/lib/base/result/index.js +5 -46
  230. package/lib/base/result/index.js.map +1 -0
  231. package/lib/base/select/index.d.ts +4 -4
  232. package/lib/base/select/index.js +358 -475
  233. package/lib/base/select/index.js.map +1 -0
  234. package/lib/base/skeleton/index.js +5 -46
  235. package/lib/base/skeleton/index.js.map +1 -0
  236. package/lib/base/space/index.js +5 -46
  237. package/lib/base/space/index.js.map +1 -0
  238. package/lib/base/spin/index.js +5 -46
  239. package/lib/base/spin/index.js.map +1 -0
  240. package/lib/base/statistic/index.js +8 -49
  241. package/lib/base/statistic/index.js.map +1 -0
  242. package/lib/base/steps/index.js +8 -49
  243. package/lib/base/steps/index.js.map +1 -0
  244. package/lib/base/switch/index.js +5 -46
  245. package/lib/base/switch/index.js.map +1 -0
  246. package/lib/base/table/index.d.ts +8 -8
  247. package/lib/base/table/index.js +743 -927
  248. package/lib/base/table/index.js.map +1 -0
  249. package/lib/base/tabs/Tabpane.d.ts +1 -1
  250. package/lib/base/tabs/Tabpane.js +22 -58
  251. package/lib/base/tabs/Tabpane.js.map +1 -0
  252. package/lib/base/tabs/index.d.ts +1 -1
  253. package/lib/base/tabs/index.js +110 -156
  254. package/lib/base/tabs/index.js.map +1 -0
  255. package/lib/base/tagSelect/TagSelect.d.ts +3 -3
  256. package/lib/base/tagSelect/TagSelect.js +124 -213
  257. package/lib/base/tagSelect/TagSelect.js.map +1 -0
  258. package/lib/base/tagSelect/index.d.ts +3 -3
  259. package/lib/base/tagSelect/index.js +90 -145
  260. package/lib/base/tagSelect/index.js.map +1 -0
  261. package/lib/base/timeline/index.js +8 -49
  262. package/lib/base/timeline/index.js.map +1 -0
  263. package/lib/base/tooltip/index.js +19 -65
  264. package/lib/base/tooltip/index.js.map +1 -0
  265. package/lib/base/transfer/index.js +5 -46
  266. package/lib/base/transfer/index.js.map +1 -0
  267. package/lib/base/tree/TreeSearch.d.ts +3 -3
  268. package/lib/base/tree/TreeSearch.js +119 -186
  269. package/lib/base/tree/TreeSearch.js.map +1 -0
  270. package/lib/base/tree/index.d.ts +2 -2
  271. package/lib/base/tree/index.js +169 -241
  272. package/lib/base/tree/index.js.map +1 -0
  273. package/lib/base/treeselect/index.js +5 -46
  274. package/lib/base/treeselect/index.js.map +1 -0
  275. package/lib/base/typography/index.js +5 -46
  276. package/lib/base/typography/index.js.map +1 -0
  277. package/lib/base/upload/Dragger.js +370 -605
  278. package/lib/base/upload/Dragger.js.map +1 -0
  279. package/lib/base/upload/Upload.js +352 -529
  280. package/lib/base/upload/Upload.js.map +1 -0
  281. package/lib/base/upload/index copy.d.ts +1 -1
  282. package/lib/base/upload/index copy.js +315 -431
  283. package/lib/base/upload/index copy.js.map +1 -0
  284. package/lib/base/upload/index.js +367 -640
  285. package/lib/base/upload/index.js.map +1 -0
  286. package/lib/config.d.ts +2 -0
  287. package/lib/config.js +7 -9
  288. package/lib/config.js.map +1 -0
  289. package/lib/constants.js +2 -2
  290. package/lib/constants.js.map +1 -0
  291. package/lib/index.js +2 -1
  292. package/lib/index.js.map +1 -0
  293. package/lib/page/BasePage/Form.d.ts +1 -1
  294. package/lib/page/BasePage/Form.js +253 -360
  295. package/lib/page/BasePage/Form.js.map +1 -0
  296. package/lib/page/BasePage/index.d.ts +9 -4
  297. package/lib/page/BasePage/index.js +864 -962
  298. package/lib/page/BasePage/index.js.map +1 -0
  299. package/lib/page/BasePage/index.module copy.less +144 -0
  300. package/lib/page/BasePage/index.module.less +92 -58
  301. package/lib/page/HeaderSearch/index.d.ts +1 -1
  302. package/lib/page/HeaderSearch/index.js +196 -272
  303. package/lib/page/HeaderSearch/index.js.map +1 -0
  304. package/lib/page/PasswordCheck/index.d.ts +1 -1
  305. package/lib/page/PasswordCheck/index.js +53 -109
  306. package/lib/page/PasswordCheck/index.js.map +1 -0
  307. package/lib/treeUtils.js +45 -58
  308. package/lib/treeUtils.js.map +1 -0
  309. package/lib/utils.d.ts +2 -2
  310. package/lib/utils.js +48 -61
  311. package/lib/utils.js.map +1 -0
  312. package/package.json +1 -1
@@ -1,54 +1,15 @@
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
1
  import "antd/es/select/style/css";
4
2
  import _Select from "antd/es/select";
5
- var _excluded = ["url", "listeners", "viewname", "cached", "cacheKey", "viewtype"],
6
- _excluded2 = ["children", "store", "data", "onChange", "onSelect", "options", "labelField", "valueField", "defaultStyle", "showGroup", "addData", "deleteData", "valueType"];
7
-
8
- 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); }
9
-
10
- 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; }
11
-
12
- 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; }
13
-
14
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
-
16
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
17
-
18
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
-
20
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
21
-
22
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
23
-
24
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
25
-
3
+ const _excluded = ["url", "listeners", "viewname", "cached", "cacheKey", "viewtype"],
4
+ _excluded2 = ["children", "store", "data", "onChange", "onSelect", "options", "labelField", "valueField", "defaultStyle", "showGroup", "addData", "deleteData", "valueType"];
5
+ 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); }
6
+ 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; }
7
+ 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; }
26
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
27
-
28
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
29
-
30
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
31
-
32
- 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); } }
33
-
34
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
35
-
36
- 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); }
37
-
38
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
39
-
40
- 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); }; }
41
-
42
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
43
-
44
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
45
-
46
- 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; } }
47
-
48
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
49
-
50
- 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; }
51
-
10
+ 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; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
+ 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); }
52
13
  import React, { PureComponent } from "react";
53
14
  import Store from "@bj-nsc/msn";
54
15
  import { utils } from "@bj-nsc/msn/lib/utils";
@@ -57,79 +18,60 @@ import styles from "./index.less";
57
18
  import cls from "classnames";
58
19
  import PinyinMatch from "pinyin-match";
59
20
  import { getFlattenData } from "@bj-nsc/functions";
60
- var Option = _Select.Option,
61
- OptGroup = _Select.OptGroup;
62
-
63
- var NSCSelect = /*#__PURE__*/function (_PureComponent) {
64
- _inherits(NSCSelect, _PureComponent);
65
-
66
- var _super = _createSuper(NSCSelect);
67
-
68
- function NSCSelect(props) {
69
- var _this2;
70
-
71
- _classCallCheck(this, NSCSelect);
72
-
73
- _this2 = _super.call(this, props);
74
-
75
- _defineProperty(_assertThisInitialized(_this2), "state", {
21
+ const {
22
+ Option,
23
+ OptGroup
24
+ } = _Select;
25
+ export default class NSCSelect extends PureComponent {
26
+ constructor(props) {
27
+ super(props);
28
+ _defineProperty(this, "state", {
76
29
  dataSource: [],
77
30
  selectValue: null,
78
31
  allDataSource: [],
79
32
  children: null,
80
33
  allChildren: null
81
34
  });
82
-
83
- _defineProperty(_assertThisInitialized(_this2), "store", {});
84
-
85
- var data = props.data,
86
- _props$store = props.store,
87
- store = _props$store === void 0 ? {} : _props$store,
88
- children = props.children,
89
- options = props.options,
90
- _props$addData = props.addData,
91
- addData = _props$addData === void 0 ? [] : _props$addData,
92
- _props$deleteData = props.deleteData,
93
- deleteData = _props$deleteData === void 0 ? [] : _props$deleteData;
94
-
95
- var url = store.url,
96
- _store$listeners = store.listeners,
97
- listenersPops = _store$listeners === void 0 ? {} : _store$listeners,
98
- viewname = store.viewname,
99
- cached = store.cached,
100
- cacheKey = store.cacheKey,
101
- _store$viewtype = store.viewtype,
102
- viewtype = _store$viewtype === void 0 ? "sys" : _store$viewtype,
103
- stores = _objectWithoutProperties(store, _excluded);
104
-
105
- var valueField = viewname ? "dictKey" : "value";
106
-
107
- var _config = config(),
108
- viewUrl = _config.viewUrl,
109
- viewBizUrl = _config.viewBizUrl;
110
-
111
- var requestViewUrl = viewtype == "sys" ? viewUrl : viewBizUrl;
112
-
113
- var getAllData = function getAllData(data) {
35
+ _defineProperty(this, "store", {});
36
+ const {
37
+ data,
38
+ store = {},
39
+ children,
40
+ options,
41
+ addData = [],
42
+ deleteData = []
43
+ } = props;
44
+ const {
45
+ url,
46
+ listeners: listenersPops = {},
47
+ viewname,
48
+ cached,
49
+ cacheKey,
50
+ viewtype = "sys"
51
+ } = store,
52
+ stores = _objectWithoutProperties(store, _excluded);
53
+ const valueField = viewname ? "dictKey" : "value";
54
+ let {
55
+ viewUrl,
56
+ viewBizUrl
57
+ } = config();
58
+ let requestViewUrl = viewtype == "sys" ? viewUrl : viewBizUrl;
59
+ const getAllData = data => {
114
60
  if (!Array.isArray(data)) {
115
61
  return [];
116
62
  }
117
-
118
- var newData = _toConsumableArray(data);
119
-
63
+ let newData = [...data];
120
64
  if (addData.length > 0) {
121
- newData = [].concat(_toConsumableArray(addData), _toConsumableArray(newData));
65
+ newData = [...addData, ...newData];
122
66
  }
123
-
124
67
  if (deleteData.length > 0) {
125
- var spliceData = [];
126
- var valueFields = valueField.split(",");
127
- newData.map(function (item, i) {
128
- var value = "";
129
- valueFields.map(function (v, index) {
68
+ let spliceData = [];
69
+ const valueFields = valueField.split(",");
70
+ newData.map((item, i) => {
71
+ let value = "";
72
+ valueFields.map((v, index) => {
130
73
  value = index == 0 ? value + item[v] : value + "," + item[v];
131
74
  });
132
-
133
75
  if (deleteData.indexOf(value) == -1) {
134
76
  spliceData.push(item);
135
77
  }
@@ -139,55 +81,45 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
139
81
  return newData;
140
82
  }
141
83
  };
142
-
143
84
  if (!children) {
144
85
  if (!(data || viewname || url || options)) {
145
86
  throw new Error("url、viewname、data、options不能都为空!");
146
87
  }
147
-
148
- var _this = _assertThisInitialized(_this2);
149
-
150
- var storeProps = _objectSpread({
88
+ let _this = this;
89
+ let storeProps = _objectSpread({
151
90
  model: "model",
152
- component: _assertThisInitialized(_this2),
91
+ component: this,
153
92
  listeners: {
154
- onBeforeLoad: function onBeforeLoad(store, options) {
93
+ onBeforeLoad: function (store, options) {
155
94
  utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);
156
95
  },
157
- load: function load(data, modelData, store) {
158
- var newData = getAllData(data);
159
-
96
+ load: function (data, modelData, store) {
97
+ const newData = getAllData(data);
160
98
  _this.setState({
161
99
  dataSource: newData,
162
100
  allDataSource: newData
163
101
  });
164
-
165
102
  utils.callback(listenersPops.load, _this, [data, modelData, store]);
166
103
  },
167
- dataChanged: function dataChanged(data, modelData, store) {
168
- var newData = getAllData(data);
169
-
104
+ dataChanged: function (data, modelData, store) {
105
+ const newData = getAllData(data);
170
106
  _this.setState({
171
107
  dataSource: newData,
172
108
  allDataSource: newData
173
109
  });
174
-
175
110
  utils.callback(listenersPops.dataChanged, _this, [data, modelData, store]);
176
111
  }
177
112
  }
178
113
  }, stores);
179
-
180
114
  if ((viewname || url) && data == null && options == null) {
181
- var isCached = cached;
182
- var isCacheKey = cacheKey;
183
-
115
+ let isCached = cached;
116
+ let isCacheKey = cacheKey;
184
117
  if (viewname) {
185
118
  if (typeof cached !== "boolean") {
186
119
  isCached = true;
187
120
  isCacheKey = isCacheKey ? isCacheKey : viewname;
188
121
  }
189
122
  }
190
-
191
123
  storeProps = _objectSpread(_objectSpread({}, {
192
124
  autoLoad: true,
193
125
  url: url || requestViewUrl + viewname,
@@ -196,393 +128,344 @@ var NSCSelect = /*#__PURE__*/function (_PureComponent) {
196
128
  cacheKey: isCacheKey
197
129
  }), storeProps);
198
130
  }
199
-
200
- _this2.store = new Store(storeProps);
131
+ this.store = new Store(storeProps);
201
132
  }
202
-
203
- return _this2;
204
133
  }
205
-
206
- _createClass(NSCSelect, [{
207
- key: "resetData",
208
- value: function resetData() {
209
- var children = this.props.children;
210
- var _this$state = this.state,
211
- allDataSource = _this$state.allDataSource,
212
- allChildren = _this$state.allChildren;
213
-
214
- if (children) {
215
- this.setState({
216
- children: allChildren
217
- });
218
- } else {
219
- this.setState({
220
- dataSource: allDataSource
221
- });
222
- }
223
- }
224
- }, {
225
- key: "getData",
226
- value: function getData() {
227
- return this.state.allDataSource;
134
+ resetData() {
135
+ const {
136
+ children
137
+ } = this.props;
138
+ const {
139
+ allDataSource,
140
+ allChildren
141
+ } = this.state;
142
+ if (children) {
143
+ this.setState({
144
+ children: allChildren
145
+ });
146
+ } else {
147
+ this.setState({
148
+ dataSource: allDataSource
149
+ });
228
150
  }
229
- }, {
230
- key: "getValue",
231
- value: function getValue() {
232
- return this.state.selectValue;
151
+ }
152
+ getData() {
153
+ return this.state.allDataSource;
154
+ }
155
+ getValue() {
156
+ return this.state.selectValue;
157
+ }
158
+ setValue(value) {
159
+ this.setState({
160
+ selectValue: value
161
+ });
162
+ }
163
+ getSelectData(value) {
164
+ const {
165
+ dataSource
166
+ } = this.state;
167
+ let {
168
+ store = {},
169
+ valueField
170
+ } = this.props;
171
+ const {
172
+ viewname
173
+ } = store;
174
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
175
+ const newData = getFlattenData(dataSource, {
176
+ keyField: valueField
177
+ });
178
+ if (Array.isArray(value)) {
179
+ let res = [];
180
+ value.map(val => {
181
+ res.push(newData[val] || {});
182
+ });
183
+ return res;
184
+ } else {
185
+ return newData[value] || {};
233
186
  }
234
- }, {
235
- key: "setValue",
236
- value: function setValue(value) {
187
+ }
188
+ componentDidMount() {
189
+ const {
190
+ data,
191
+ options,
192
+ children
193
+ } = this.props;
194
+ if (!children && (data || options)) {
237
195
  this.setState({
238
- selectValue: value
196
+ dataSource: data ? data : options,
197
+ allDataSource: data ? data : options
239
198
  });
240
- }
241
- }, {
242
- key: "getSelectData",
243
- value: function getSelectData(value) {
244
- var dataSource = this.state.dataSource;
245
- var _this$props = this.props,
246
- _this$props$store = _this$props.store,
247
- store = _this$props$store === void 0 ? {} : _this$props$store,
248
- valueField = _this$props.valueField;
249
- var viewname = store.viewname;
250
- valueField = valueField ? valueField : viewname ? "dictKey" : "value";
251
- var newData = getFlattenData(dataSource, {
252
- keyField: valueField
199
+ } else if (children) {
200
+ this.setState({
201
+ children: children,
202
+ allChildren: children
253
203
  });
254
-
255
- if (Array.isArray(value)) {
256
- var res = [];
257
- value.map(function (val) {
258
- res.push(newData[val] || {});
259
- });
260
- return res;
261
- } else {
262
- return newData[value] || {};
263
- }
264
204
  }
265
- }, {
266
- key: "componentDidMount",
267
- value: function componentDidMount() {
268
- var _this$props2 = this.props,
269
- data = _this$props2.data,
270
- options = _this$props2.options,
271
- children = _this$props2.children;
272
-
273
- if (!children && (data || options)) {
205
+ }
206
+ componentDidUpdate(newProps, newState, Snapshot) {
207
+ const {
208
+ data,
209
+ options,
210
+ children
211
+ } = this.props;
212
+ const {
213
+ allDataSource,
214
+ allChildren
215
+ } = this.state;
216
+ if (!children && (data || options)) {
217
+ const newData = data ? data : options;
218
+ if (JSON.stringify(allDataSource) !== JSON.stringify(newData)) {
274
219
  this.setState({
275
- dataSource: data ? data : options,
276
- allDataSource: data ? data : options
220
+ dataSource: newData,
221
+ allDataSource: newData
277
222
  });
278
- } else if (children) {
223
+ }
224
+ } else if (children && Array.isArray(children)) {
225
+ const stateChildrenProps = [];
226
+ allChildren.map(s => {
227
+ stateChildrenProps.push(s.props);
228
+ });
229
+ const childrenProps = [];
230
+ children.map(c => {
231
+ childrenProps.push(c.props);
232
+ });
233
+ if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
279
234
  this.setState({
280
235
  children: children,
281
236
  allChildren: children
282
237
  });
283
238
  }
284
239
  }
285
- }, {
286
- key: "componentDidUpdate",
287
- value: function componentDidUpdate(newProps, newState, Snapshot) {
288
- var _this$props3 = this.props,
289
- data = _this$props3.data,
290
- options = _this$props3.options,
291
- children = _this$props3.children;
292
- var _this$state2 = this.state,
293
- allDataSource = _this$state2.allDataSource,
294
- allChildren = _this$state2.allChildren;
295
-
296
- if (!children && (data || options)) {
297
- var newData = data ? data : options;
298
-
299
- if (JSON.stringify(allDataSource) !== JSON.stringify(newData)) {
240
+ }
241
+ componentWillUnmount() {
242
+ this.setState = (state, callback) => {
243
+ return;
244
+ };
245
+ }
246
+ onSearch(value) {
247
+ const {
248
+ allDataSource,
249
+ allChildren
250
+ } = this.state;
251
+ const {
252
+ filterOption = true,
253
+ onSearch,
254
+ children,
255
+ store = {}
256
+ } = this.props;
257
+ let {
258
+ labelField
259
+ } = this.props;
260
+ const {
261
+ viewname
262
+ } = store;
263
+ labelField = labelField ? labelField : viewname ? "dictValue" : "label";
264
+ if (filterOption) {
265
+ let result = [];
266
+ if (!children) {
267
+ if (value) {
268
+ allDataSource.forEach(item => {
269
+ let label = "";
270
+ if (labelField.split(",").length == 1) {
271
+ label = item[labelField];
272
+ } else {
273
+ const labelFields = labelField.split(",");
274
+ labelFields.map((l, index) => {
275
+ label = index == 0 ? label + item[l] : label + "-" + item[l];
276
+ });
277
+ }
278
+ let flag = PinyinMatch.match(label, value);
279
+ if (flag) {
280
+ result.push(item);
281
+ }
282
+ });
300
283
  this.setState({
301
- dataSource: newData,
302
- allDataSource: newData
284
+ dataSource: result
303
285
  });
304
- }
305
- } else if (children && Array.isArray(children)) {
306
- var stateChildrenProps = [];
307
- allChildren.map(function (s) {
308
- stateChildrenProps.push(s.props);
309
- });
310
- var childrenProps = [];
311
- children.map(function (c) {
312
- childrenProps.push(c.props);
313
- });
314
-
315
- if (JSON.stringify(stateChildrenProps) !== JSON.stringify(childrenProps)) {
286
+ } else {
316
287
  this.setState({
317
- children: children,
318
- allChildren: children
288
+ dataSource: allDataSource
319
289
  });
320
290
  }
321
- }
322
- }
323
- }, {
324
- key: "componentWillUnmount",
325
- value: function componentWillUnmount() {
326
- this.setState = function (state, callback) {
327
- return;
328
- };
329
- }
330
- }, {
331
- key: "onSearch",
332
- value: function onSearch(value) {
333
- var _this$state3 = this.state,
334
- allDataSource = _this$state3.allDataSource,
335
- allChildren = _this$state3.allChildren;
336
- var _this$props4 = this.props,
337
- _this$props4$filterOp = _this$props4.filterOption,
338
- filterOption = _this$props4$filterOp === void 0 ? true : _this$props4$filterOp,
339
- onSearch = _this$props4.onSearch,
340
- children = _this$props4.children,
341
- _this$props4$store = _this$props4.store,
342
- store = _this$props4$store === void 0 ? {} : _this$props4$store;
343
- var labelField = this.props.labelField;
344
- var viewname = store.viewname;
345
- labelField = labelField ? labelField : viewname ? "dictValue" : "label";
346
-
347
- if (filterOption) {
348
- var result = [];
349
-
350
- if (!children) {
351
- if (value) {
352
- allDataSource.forEach(function (item) {
353
- var label = "";
354
-
355
- if (labelField.split(",").length == 1) {
356
- label = item[labelField];
357
- } else {
358
- var labelFields = labelField.split(",");
359
- labelFields.map(function (l, index) {
360
- label = index == 0 ? label + item[l] : label + "-" + item[l];
361
- });
362
- }
363
-
364
- var flag = PinyinMatch.match(label, value);
365
-
291
+ } else {
292
+ if (value) {
293
+ if (Array.isArray(allChildren)) {
294
+ allChildren.map((child, index) => {
295
+ var _child$props;
296
+ let label = child === null || child === void 0 || (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
297
+ let flag = PinyinMatch.match(label, value);
366
298
  if (flag) {
367
- result.push(item);
299
+ result.push(child);
368
300
  }
369
301
  });
370
- this.setState({
371
- dataSource: result
372
- });
373
- } else {
374
- this.setState({
375
- dataSource: allDataSource
376
- });
377
302
  }
378
- } else {
379
- if (value) {
380
- if (Array.isArray(allChildren)) {
381
- allChildren.map(function (child, index) {
382
- var _child$props;
383
-
384
- var label = child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children;
385
- var flag = PinyinMatch.match(label, value);
386
-
387
- if (flag) {
388
- result.push(child);
389
- }
390
- });
391
- }
392
-
393
- this.setState({
394
- children: result
395
- });
396
- } else {
397
- this.setState({
398
- children: children
399
- });
400
- }
401
- }
402
- }
403
-
404
- onSearch && onSearch(value);
405
- }
406
- }, {
407
- key: "renderOption",
408
- value: function renderOption(optionData) {
409
- var _this$props5 = this.props,
410
- _this$props5$store = _this$props5.store,
411
- store = _this$props5$store === void 0 ? {} : _this$props5$store,
412
- _this$props5$valueTyp = _this$props5.valueType,
413
- valueType = _this$props5$valueTyp === void 0 ? "string" : _this$props5$valueTyp,
414
- labelField = _this$props5.labelField,
415
- valueField = _this$props5.valueField;
416
- var viewname = store.viewname;
417
- valueField = valueField ? valueField : viewname ? "dictKey" : "value";
418
- labelField = labelField ? labelField : viewname ? "dictValue" : "label";
419
- return optionData.map(function (item) {
420
- var value;
421
-
422
- if (valueField.split(",").length == 1) {
423
- value = valueType === "number" ? Number(item[valueField]) : item[valueField];
424
- } else {
425
- var valueFields = valueField.split(",");
426
- value = "";
427
- valueFields.map(function (v, index) {
428
- value = index == 0 ? value + item[v] : value + "," + item[v];
303
+ this.setState({
304
+ children: result
429
305
  });
430
- }
431
-
432
- var key = item.id ? item.id !== "undefined" ? item.id : value : value;
433
- var label = "";
434
-
435
- if (labelField.split(",").length == 1) {
436
- label = item[labelField];
437
306
  } else {
438
- var labelFields = labelField.split(",");
439
- labelFields.map(function (l, index) {
440
- label = index == 0 ? label + item[l] : label + "-" + item[l];
307
+ this.setState({
308
+ children: children
441
309
  });
442
310
  }
443
-
444
- return /*#__PURE__*/React.createElement(Option, {
445
- key: key,
446
- value: value,
447
- label: label,
448
- disabled: item.disabled ? true : false
449
- }, label);
450
- });
311
+ }
451
312
  }
452
- }, {
453
- key: "renderChildren",
454
- value: function renderChildren() {
455
- var _this3 = this;
456
-
457
- var _this$props$showGroup = this.props.showGroup,
458
- showGroup = _this$props$showGroup === void 0 ? true : _this$props$showGroup;
459
- var _this$state4 = this.state,
460
- dataSource = _this$state4.dataSource,
461
- children = _this$state4.children;
462
-
463
- if (children) {
464
- return /*#__PURE__*/React.createElement(React.Fragment, null, children);
313
+ onSearch && onSearch(value);
314
+ }
315
+ renderOption(optionData) {
316
+ let {
317
+ store = {},
318
+ valueType = "string",
319
+ labelField,
320
+ valueField
321
+ } = this.props;
322
+ const {
323
+ viewname
324
+ } = store;
325
+ valueField = valueField ? valueField : viewname ? "dictKey" : "value";
326
+ labelField = labelField ? labelField : viewname ? "dictValue" : "label";
327
+ return optionData.map(item => {
328
+ let value;
329
+ if (valueField.split(",").length == 1) {
330
+ value = valueType === "number" ? Number(item[valueField]) : item[valueField];
465
331
  } else {
466
- var optGroupData = {},
467
- optionData = [];
468
- dataSource.forEach(function (item) {
469
- var label = item.groupName;
470
-
471
- if (label && showGroup) {
472
- if (!optGroupData[label]) optGroupData[label] = [];
473
- optGroupData[label].push(item);
474
- } else {
475
- optionData.push(item);
476
- }
332
+ const valueFields = valueField.split(",");
333
+ value = "";
334
+ valueFields.map((v, index) => {
335
+ value = index == 0 ? value + item[v] : value + "," + item[v];
477
336
  });
478
- var option = this.renderOption(optionData);
479
- var optGroup = Object.keys(optGroupData).map(function (key) {
480
- return /*#__PURE__*/React.createElement(OptGroup, {
481
- key: key,
482
- label: key
483
- }, _this3.renderOption(optGroupData[key]));
337
+ }
338
+ let key = item.id ? item.id !== "undefined" ? item.id : value : value;
339
+ let label = "";
340
+ if (labelField.split(",").length == 1) {
341
+ label = item[labelField];
342
+ } else {
343
+ const labelFields = labelField.split(",");
344
+ labelFields.map((l, index) => {
345
+ label = index == 0 ? label + item[l] : label + "-" + item[l];
484
346
  });
485
- return /*#__PURE__*/React.createElement(React.Fragment, null, option, optGroup);
486
347
  }
487
- }
488
- }, {
489
- key: "onChange",
490
- value: function onChange(value, options) {
491
- var onChange = this.props.onChange;
492
- this.setState({
493
- selectValue: value
348
+ return /*#__PURE__*/React.createElement(Option, {
349
+ key: key,
350
+ value: value,
351
+ label: label,
352
+ disabled: item.disabled ? true : false
353
+ }, label);
354
+ });
355
+ }
356
+ renderChildren() {
357
+ const {
358
+ showGroup = true
359
+ } = this.props;
360
+ const {
361
+ dataSource,
362
+ children
363
+ } = this.state;
364
+ if (children) {
365
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
366
+ } else {
367
+ let optGroupData = {},
368
+ optionData = [];
369
+ dataSource.forEach(item => {
370
+ let label = item.groupName;
371
+ if (label && showGroup) {
372
+ if (!optGroupData[label]) optGroupData[label] = [];
373
+ optGroupData[label].push(item);
374
+ } else {
375
+ optionData.push(item);
376
+ }
494
377
  });
495
-
496
- if (onChange) {
497
- var data = this.getSelectData(value);
498
- onChange(value, options, data);
499
- }
378
+ let option = this.renderOption(optionData);
379
+ let optGroup = Object.keys(optGroupData).map(key => {
380
+ return /*#__PURE__*/React.createElement(OptGroup, {
381
+ key: key,
382
+ label: key
383
+ }, this.renderOption(optGroupData[key]));
384
+ });
385
+ return /*#__PURE__*/React.createElement(React.Fragment, null, option, optGroup);
500
386
  }
501
- }, {
502
- key: "onSelect",
503
- value: function onSelect(value, options) {
504
- var onSelect = this.props.onSelect;
505
-
506
- if (onSelect) {
507
- var data = this.getSelectData(value);
508
- onSelect(value, options, data);
509
- }
387
+ }
388
+ onChange(value, options) {
389
+ const {
390
+ onChange
391
+ } = this.props;
392
+ this.setState({
393
+ selectValue: value
394
+ });
395
+ if (onChange) {
396
+ const data = this.getSelectData(value);
397
+ onChange(value, options, data);
510
398
  }
511
- }, {
512
- key: "onDropdownVisibleChange",
513
- value: function onDropdownVisibleChange(open) {
514
- if (!open) {
515
- this.resetData();
516
- }
399
+ }
400
+ onSelect(value, options) {
401
+ const {
402
+ onSelect
403
+ } = this.props;
404
+ if (onSelect) {
405
+ const data = this.getSelectData(value);
406
+ onSelect(value, options, data);
517
407
  }
518
- }, {
519
- key: "render",
520
- value: function render() {
521
- var _this$props6 = this.props,
522
- children = _this$props6.children,
523
- store = _this$props6.store,
524
- data = _this$props6.data,
525
- onChange = _this$props6.onChange,
526
- onSelect = _this$props6.onSelect,
527
- options = _this$props6.options,
528
- labelField = _this$props6.labelField,
529
- valueField = _this$props6.valueField,
530
- defaultStyle = _this$props6.defaultStyle,
531
- _this$props6$showGrou = _this$props6.showGroup,
532
- showGroup = _this$props6$showGrou === void 0 ? true : _this$props6$showGrou,
533
- addData = _this$props6.addData,
534
- deleteData = _this$props6.deleteData,
535
- valueType = _this$props6.valueType,
536
- params = _objectWithoutProperties(_this$props6, _excluded2);
537
-
538
- var props = {
539
- filterOption: false,
540
- showSearch: true,
541
- optionFilterProp: "label",
542
- placeholder: "请选择",
543
- allowClear: true
544
- };
545
-
546
- var _config2 = config(),
547
- antdStyle = _config2.antdStyle,
548
- mountElementId = _config2.mountElementId;
549
-
550
- if (mountElementId) {
551
- props = _objectSpread({
552
- getPopupContainer: function getPopupContainer() {
553
- return document.getElementById(mountElementId);
554
- }
555
- }, props);
556
- }
557
-
558
- if ((defaultStyle || antdStyle) && defaultStyle === true) {
559
- return /*#__PURE__*/React.createElement("div", {
560
- className: cls(styles["nsc_select"], this.props.className)
561
- }, /*#__PURE__*/React.createElement(_Select, _extends({
562
- value: this.state.selectValue,
563
- onChange: this.onChange.bind(this),
564
- onSearch: this.onSearch.bind(this),
565
- onSelect: this.onSelect.bind(this),
566
- onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
567
- }, props, params), this.renderChildren()));
568
- } else {
569
- return /*#__PURE__*/React.createElement(_Select, _extends({
570
- value: this.state.selectValue,
571
- onSearch: this.onSearch.bind(this),
572
- onChange: this.onChange.bind(this),
573
- onSelect: this.onSelect.bind(this),
574
- onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
575
- }, props, params), this.renderChildren());
576
- }
408
+ }
409
+ onDropdownVisibleChange(open) {
410
+ if (!open) {
411
+ this.resetData();
577
412
  }
578
- }]);
579
-
580
- return NSCSelect;
581
- }(PureComponent);
582
-
413
+ }
414
+ render() {
415
+ const _this$props = this.props,
416
+ {
417
+ children,
418
+ store,
419
+ data,
420
+ onChange,
421
+ onSelect,
422
+ options,
423
+ labelField,
424
+ valueField,
425
+ defaultStyle,
426
+ showGroup = true,
427
+ addData,
428
+ deleteData,
429
+ valueType
430
+ } = _this$props,
431
+ params = _objectWithoutProperties(_this$props, _excluded2);
432
+ let props = {
433
+ filterOption: false,
434
+ showSearch: true,
435
+ optionFilterProp: "label",
436
+ placeholder: "请选择",
437
+ allowClear: true
438
+ };
439
+ let {
440
+ antdStyle,
441
+ mountElementId
442
+ } = config();
443
+ if (mountElementId) {
444
+ props = _objectSpread({
445
+ getPopupContainer: () => document.getElementById(mountElementId)
446
+ }, props);
447
+ }
448
+ if ((defaultStyle || antdStyle) && defaultStyle === true) {
449
+ return /*#__PURE__*/React.createElement("div", {
450
+ className: cls(styles["nsc_select"], this.props.className)
451
+ }, /*#__PURE__*/React.createElement(_Select, _extends({
452
+ value: this.state.selectValue,
453
+ onChange: this.onChange.bind(this),
454
+ onSearch: this.onSearch.bind(this),
455
+ onSelect: this.onSelect.bind(this),
456
+ onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
457
+ }, props, params), this.renderChildren()));
458
+ } else {
459
+ return /*#__PURE__*/React.createElement(_Select, _extends({
460
+ value: this.state.selectValue,
461
+ onSearch: this.onSearch.bind(this),
462
+ onChange: this.onChange.bind(this),
463
+ onSelect: this.onSelect.bind(this),
464
+ onDropdownVisibleChange: this.onDropdownVisibleChange.bind(this)
465
+ }, props, params), this.renderChildren());
466
+ }
467
+ }
468
+ }
583
469
  _defineProperty(NSCSelect, "Option", Option);
584
-
585
470
  _defineProperty(NSCSelect, "OptGroup", OptGroup);
586
-
587
- export { NSCSelect as default };
588
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2Uvc2VsZWN0L2luZGV4LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiTlNDU2VsZWN0IiwicHJvcHMiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGEiLCJzdG9yZSIsIm9wdGlvbnMiLCJhZGREYXRhIiwiZGVsZXRlRGF0YSIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJ2aWV3bmFtZSIsImNhY2hlZCIsImNhY2hlS2V5Iiwidmlld3R5cGUiLCJzdG9yZXMiLCJ2YWx1ZUZpZWxkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwic3BsaWNlRGF0YSIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInZhbHVlIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInB1c2giLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJkYXRhQ2hhbmdlZCIsImlzQ2FjaGVkIiwiaXNDYWNoZUtleSIsImF1dG9Mb2FkIiwic3RhdGUiLCJrZXlGaWVsZCIsInJlcyIsInZhbCIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJmaWx0ZXJPcHRpb24iLCJvblNlYXJjaCIsImxhYmVsRmllbGQiLCJyZXN1bHQiLCJmb3JFYWNoIiwibGFiZWwiLCJsYWJlbEZpZWxkcyIsImwiLCJmbGFnIiwibWF0Y2giLCJjaGlsZCIsIm9wdGlvbkRhdGEiLCJ2YWx1ZVR5cGUiLCJOdW1iZXIiLCJrZXkiLCJpZCIsImRpc2FibGVkIiwic2hvd0dyb3VwIiwib3B0R3JvdXBEYXRhIiwiZ3JvdXBOYW1lIiwib3B0aW9uIiwicmVuZGVyT3B0aW9uIiwib3B0R3JvdXAiLCJPYmplY3QiLCJrZXlzIiwib25DaGFuZ2UiLCJnZXRTZWxlY3REYXRhIiwib25TZWxlY3QiLCJvcGVuIiwicmVzZXREYXRhIiwiZGVmYXVsdFN0eWxlIiwicGFyYW1zIiwic2hvd1NlYXJjaCIsIm9wdGlvbkZpbHRlclByb3AiLCJwbGFjZWhvbGRlciIsImFsbG93Q2xlYXIiLCJhbnRkU3R5bGUiLCJtb3VudEVsZW1lbnRJZCIsImdldFBvcHVwQ29udGFpbmVyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNsYXNzTmFtZSIsImJpbmQiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsInJlbmRlckNoaWxkcmVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLElBQWdCQyxhQUFoQixRQUFxQyxPQUFyQztBQUVBLE9BQU9DLEtBQVAsTUFBa0MsYUFBbEM7QUFDQSxTQUFTQyxLQUFULFFBQXNCLHVCQUF0QjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsY0FBbkI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixZQUFoQjtBQUVBLE9BQU9DLFdBQVAsTUFBd0IsY0FBeEI7QUFDQSxTQUFTQyxjQUFULFFBQStCLG1CQUEvQjtBQUNBLElBQVFDLE1BQVIsV0FBUUEsTUFBUjtBQUFBLElBQWdCQyxRQUFoQixXQUFnQkEsUUFBaEI7O0lBaUJxQkMsUzs7Ozs7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VzJHLFNBQWxDO0FBQW5CLHdCQUNFO0FBQ0UsVUFBQSxLQUFLLEVBQUUsS0FBS3RELEtBQUwsQ0FBV25ELFdBRHBCO0FBRUUsVUFBQSxRQUFRLEVBQUUsS0FBS3lGLFFBQUwsQ0FBY2lCLElBQWQsQ0FBbUIsSUFBbkIsQ0FGWjtBQUdFLFVBQUEsUUFBUSxFQUFFLEtBQUt6QyxRQUFMLENBQWN5QyxJQUFkLENBQW1CLElBQW5CLENBSFo7QUFJRSxVQUFBLFFBQVEsRUFBRSxLQUFLZixRQUFMLENBQWNlLElBQWQsQ0FBbUIsSUFBbkIsQ0FKWjtBQUtFLFVBQUEsdUJBQXVCLEVBQUUsS0FBS0MsdUJBQUwsQ0FBNkJELElBQTdCLENBQWtDLElBQWxDO0FBTDNCLFdBTU01RyxLQU5OLEVBT01pRyxNQVBOLEdBU0csS0FBS2EsY0FBTCxFQVRILENBREYsQ0FERjtBQWVELE9BaEJELE1BZ0JPO0FBQ0wsNEJBQ0U7QUFDRSxVQUFBLEtBQUssRUFBRSxLQUFLekQsS0FBTCxDQUFXbkQsV0FEcEI7QUFFRSxVQUFBLFFBQVEsRUFBRSxLQUFLaUUsUUFBTCxDQUFjeUMsSUFBZCxDQUFtQixJQUFuQixDQUZaO0FBR0UsVUFBQSxRQUFRLEVBQUUsS0FBS2pCLFFBQUwsQ0FBY2lCLElBQWQsQ0FBbUIsSUFBbkIsQ0FIWjtBQUlFLFVBQUEsUUFBUSxFQUFFLEtBQUtmLFFBQUwsQ0FBY2UsSUFBZCxDQUFtQixJQUFuQixDQUpaO0FBS0UsVUFBQSx1QkFBdUIsRUFBRSxLQUFLQyx1QkFBTCxDQUE2QkQsSUFBN0IsQ0FBa0MsSUFBbEM7QUFMM0IsV0FNTTVHLEtBTk4sRUFPTWlHLE1BUE4sR0FTRyxLQUFLYSxjQUFMLEVBVEgsQ0FERjtBQWFEO0FBQ0Y7Ozs7RUFwYW9DekgsYTs7Z0JBQWxCVSxTLFlBQ0hGLE07O2dCQURHRSxTLGNBRURELFE7O1NBRkNDLFMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBTZWxlY3QsIFNlbGVjdFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgb21pdCBmcm9tIFwib21pdC5qc1wiO1xyXG5pbXBvcnQgUGlueWluTWF0Y2ggZnJvbSBcInBpbnlpbi1tYXRjaFwiO1xyXG5pbXBvcnQgeyBnZXRGbGF0dGVuRGF0YSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5jb25zdCB7IE9wdGlvbiwgT3B0R3JvdXAgfSA9IFNlbGVjdDtcclxuXHJcbmludGVyZmFjZSBJU2VsZWN0UHJvcHMgZXh0ZW5kcyBTZWxlY3RQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD47IC8v6buY6K6k5pWw5o2uXHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRTdHlsZT86IGJvb2xlYW47XHJcbiAgc2hvd0dyb3VwPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrliIbnu4RcclxuICBhZGREYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/phY3lkIhzdG9yZeS9v+eUqO+8jOS7juWinuWKoOmineWklueahOaVsOaNrlxyXG4gIGRlbGV0ZURhdGE/OiBBcnJheTxTdHJpbmc+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5Yig6Zmk5LuO5pWw5o2u5bqT5Lit6I635Y+W5Yiw55qE5oyH5a6a5pWw5o2uXHJcbiAgdmFsdWVCcmVhaz86IHN0cmluZzsgLy/lpJrkuKp2YWx1ZeS9v+eUqOeahOWIhumalOesplxyXG4gIHZhbHVlVHlwZT86IFwic3RyaW5nXCIgfCBcIm51bWJlclwiO1xyXG4gIFtwcm9OYW1lOiBzdHJpbmddOiBhbnk7XHJcbiAgb25DaGFuZ2U/OiBhbnk7XHJcbiAgb25TZWxlY3Q/OiBhbnk7XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTlNDU2VsZWN0IGV4dGVuZHMgUHVyZUNvbXBvbmVudDxJU2VsZWN0UHJvcHM+IHtcclxuICBzdGF0aWMgT3B0aW9uID0gT3B0aW9uO1xyXG4gIHN0YXRpYyBPcHRHcm91cCA9IE9wdEdyb3VwO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICBzZWxlY3RWYWx1ZTogbnVsbCxcclxuICAgIGFsbERhdGFTb3VyY2U6IFtdLFxyXG4gICAgY2hpbGRyZW46IG51bGwsXHJcbiAgICBhbGxDaGlsZHJlbjogbnVsbCxcclxuICB9O1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgYWRkRGF0YSA9IFtdLFxyXG4gICAgICBkZWxldGVEYXRhID0gW10sXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHVybCxcclxuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sXHJcbiAgICAgIHZpZXduYW1lLFxyXG4gICAgICBjYWNoZWQsXHJcbiAgICAgIGNhY2hlS2V5LFxyXG4gICAgICB2aWV3dHlwZSA9IFwic3lzXCIsXHJcbiAgICAgIC4uLnN0b3Jlc1xyXG4gICAgfSA9IHN0b3JlO1xyXG4gICAgY29uc3QgdmFsdWVGaWVsZCA9IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsZXQgeyB2aWV3VXJsLCB2aWV3Qml6VXJsIH0gPSBjb25maWcoKTtcclxuICAgIGxldCByZXF1ZXN0Vmlld1VybCA9IHZpZXd0eXBlID09IFwic3lzXCIgPyB2aWV3VXJsIDogdmlld0JpelVybDtcclxuICAgIGNvbnN0IGdldEFsbERhdGEgPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5ld0RhdGEgPSBbLi4uZGF0YV07XHJcbiAgICAgIGlmIChhZGREYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdEYXRhID0gWy4uLmFkZERhdGEsIC4uLm5ld0RhdGFdO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChkZWxldGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBsZXQgc3BsaWNlRGF0YSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICBuZXdEYXRhLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIHZhbHVlRmllbGRzLm1hcCgodiwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGlmIChkZWxldGVEYXRhLmluZGV4T2YodmFsdWUpID09IC0xKSB7XHJcbiAgICAgICAgICAgIHNwbGljZURhdGEucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gc3BsaWNlRGF0YTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gbmV3RGF0YTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgaWYgKCEoZGF0YSB8fCB2aWV3bmFtZSB8fCB1cmwgfHwgb3B0aW9ucykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzjgIF2aWV3bmFtZeOAgWRhdGHjgIFvcHRpb25z5LiN6IO96YO95Li656m677yBXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgIGxldCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiBmdW5jdGlvbiAoc3RvcmUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5vbkJlZm9yZUxvYWQsIF90aGlzLCBbc3RvcmUsIG9wdGlvbnNdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBsb2FkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmxvYWQsIF90aGlzLCBbZGF0YSwgbW9kZWxEYXRhLCBzdG9yZV0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiBmdW5jdGlvbiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZ2V0QWxsRGF0YShkYXRhKTtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBuZXdEYXRhLCBhbGxEYXRhU291cmNlOiBuZXdEYXRhIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICgodmlld25hbWUgfHwgdXJsKSAmJiBkYXRhID09IG51bGwgJiYgb3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVkID0gY2FjaGVkO1xyXG4gICAgICAgIGxldCBpc0NhY2hlS2V5ID0gY2FjaGVLZXk7XHJcbiAgICAgICAgaWYgKHZpZXduYW1lKSB7XHJcbiAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZCAhPT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgaXNDYWNoZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBpc0NhY2hlS2V5ID0gaXNDYWNoZUtleSA/IGlzQ2FjaGVLZXkgOiB2aWV3bmFtZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi57XHJcbiAgICAgICAgICAgIGF1dG9Mb2FkOiB0cnVlLFxyXG4gICAgICAgICAgICB1cmw6IHVybCB8fCByZXF1ZXN0Vmlld1VybCArIHZpZXduYW1lLCAvL+ivu+Wtl+WFuO+8jHVybOWbuuWumu+8jHZpZXduYW1lXHJcbiAgICAgICAgICAgIGNhY2hlZDogaXNDYWNoZWQsXHJcbiAgICAgICAgICAgIGNhY2hlS2V5OiBpc0NhY2hlS2V5LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXREYXRhKCkge1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNoaWxkcmVuOiBhbGxDaGlsZHJlbiB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGFsbERhdGFTb3VyY2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLmFsbERhdGFTb3VyY2U7XHJcbiAgfVxyXG5cclxuICBnZXRWYWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXRlLnNlbGVjdFZhbHVlO1xyXG4gIH1cclxuICBzZXRWYWx1ZSh2YWx1ZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0RGF0YSh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHsgc3RvcmUgPSB7fSwgdmFsdWVGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgdmFsdWVGaWVsZCA9IHZhbHVlRmllbGQgPyB2YWx1ZUZpZWxkIDogdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRGbGF0dGVuRGF0YShkYXRhU291cmNlLCB7IGtleUZpZWxkOiB2YWx1ZUZpZWxkIH0pO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgIGxldCByZXMgPSBbXSBhcyBhbnk7XHJcbiAgICAgIHZhbHVlLm1hcCgodmFsKSA9PiB7XHJcbiAgICAgICAgcmVzLnB1c2gobmV3RGF0YVt2YWxdIHx8IHt9KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiByZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3RGF0YVt2YWx1ZV0gfHwge307XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGRhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgICBhbGxEYXRhU291cmNlOiBkYXRhID8gZGF0YSA6IG9wdGlvbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKG5ld1Byb3BzLCBuZXdTdGF0ZSwgU25hcHNob3QpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgb3B0aW9ucywgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFsbERhdGFTb3VyY2UsIGFsbENoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKCFjaGlsZHJlbiAmJiAoZGF0YSB8fCBvcHRpb25zKSkge1xyXG4gICAgICBjb25zdCBuZXdEYXRhID0gZGF0YSA/IGRhdGEgOiBvcHRpb25zO1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoYWxsRGF0YVNvdXJjZSkgIT09IEpTT04uc3RyaW5naWZ5KG5ld0RhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgICAgYWxsRGF0YVNvdXJjZTogbmV3RGF0YSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjb25zdCBzdGF0ZUNoaWxkcmVuUHJvcHM6IGFueSA9IFtdO1xyXG4gICAgICBhbGxDaGlsZHJlbi5tYXAoKHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHN0YXRlQ2hpbGRyZW5Qcm9wcy5wdXNoKHMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgY2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoYzogYW55KSA9PiB7XHJcbiAgICAgICAgY2hpbGRyZW5Qcm9wcy5wdXNoKGMucHJvcHMpO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHN0YXRlQ2hpbGRyZW5Qcm9wcykgIT09IEpTT04uc3RyaW5naWZ5KGNoaWxkcmVuUHJvcHMpXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgYWxsQ2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSA9IChzdGF0ZSwgY2FsbGJhY2spID0+IHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfTtcclxuICB9XHJcbiAgb25TZWFyY2godmFsdWUpIHtcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IGZpbHRlck9wdGlvbiA9IHRydWUsIG9uU2VhcmNoLCBjaGlsZHJlbiwgc3RvcmUgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCB7IGxhYmVsRmllbGQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIGxhYmVsRmllbGQgPSBsYWJlbEZpZWxkID8gbGFiZWxGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0VmFsdWVcIiA6IFwibGFiZWxcIjtcclxuICAgIGlmIChmaWx0ZXJPcHRpb24pIHtcclxuICAgICAgbGV0IHJlc3VsdCA9IFtdO1xyXG4gICAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgbGFiZWwgPSBpdGVtW2xhYmVsRmllbGRdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGl0ZW1bbF0gOiBsYWJlbCArIFwiLVwiICsgaXRlbVtsXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFsbENoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBhbGxDaGlsZHJlbi5tYXAoKGNoaWxkOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGxhYmVsID0gY2hpbGQ/LnByb3BzPy5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICBsZXQgZmxhZyA9IFBpbnlpbk1hdGNoLm1hdGNoKGxhYmVsLCB2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiByZXN1bHQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgb25TZWFyY2ggJiYgb25TZWFyY2godmFsdWUpO1xyXG4gIH1cclxuICByZW5kZXJPcHRpb24ob3B0aW9uRGF0YSkge1xyXG4gICAgbGV0IHtcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgdmFsdWVUeXBlID0gXCJzdHJpbmdcIixcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgcmV0dXJuIG9wdGlvbkRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCB2YWx1ZTogYW55O1xyXG4gICAgICBpZiAodmFsdWVGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICB2YWx1ZSA9XHJcbiAgICAgICAgICB2YWx1ZVR5cGUgPT09IFwibnVtYmVyXCIgPyBOdW1iZXIoaXRlbVt2YWx1ZUZpZWxkXSkgOiBpdGVtW3ZhbHVlRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlRmllbGRzOiBhbnkgPSB2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICB2YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgdmFsdWUgPSBpbmRleCA9PSAwID8gdmFsdWUgKyBpdGVtW3ZdIDogdmFsdWUgKyBcIixcIiArIGl0ZW1bdl07XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGtleSA9IGl0ZW0uaWQgPyAoaXRlbS5pZCAhPT0gXCJ1bmRlZmluZWRcIiA/IGl0ZW0uaWQgOiB2YWx1ZSkgOiB2YWx1ZTtcclxuICAgICAgbGV0IGxhYmVsID0gXCJcIjtcclxuICAgICAgaWYgKGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgbGFiZWwgPSBpdGVtW2xhYmVsRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsRmllbGRzOiBhbnkgPSBsYWJlbEZpZWxkLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICBsYWJlbEZpZWxkcy5tYXAoKGwsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICBsYWJlbCA9IGluZGV4ID09IDAgPyBsYWJlbCArIGl0ZW1bbF0gOiBsYWJlbCArIFwiLVwiICsgaXRlbVtsXTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxPcHRpb25cclxuICAgICAgICAgIGtleT17a2V5fVxyXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxyXG4gICAgICAgICAgbGFiZWw9e2xhYmVsfVxyXG4gICAgICAgICAgZGlzYWJsZWQ9e2l0ZW0uZGlzYWJsZWQgPyB0cnVlIDogZmFsc2V9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2xhYmVsfVxyXG4gICAgICAgIDwvT3B0aW9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlbmRlckNoaWxkcmVuKCkge1xyXG4gICAgY29uc3QgeyBzaG93R3JvdXAgPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlLCBjaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG9wdEdyb3VwRGF0YSA9IHt9LFxyXG4gICAgICAgIG9wdGlvbkRhdGEgPSBbXTtcclxuICAgICAgZGF0YVNvdXJjZS5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IGxhYmVsID0gaXRlbS5ncm91cE5hbWU7XHJcbiAgICAgICAgaWYgKGxhYmVsICYmIHNob3dHcm91cCkge1xyXG4gICAgICAgICAgaWYgKCFvcHRHcm91cERhdGFbbGFiZWxdKSBvcHRHcm91cERhdGFbbGFiZWxdID0gW107XHJcbiAgICAgICAgICBvcHRHcm91cERhdGFbbGFiZWxdLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdGlvbkRhdGEucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgb3B0aW9uID0gdGhpcy5yZW5kZXJPcHRpb24ob3B0aW9uRGF0YSk7XHJcbiAgICAgIGxldCBvcHRHcm91cCA9IE9iamVjdC5rZXlzKG9wdEdyb3VwRGF0YSkubWFwKChrZXkpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPE9wdEdyb3VwIGtleT17a2V5fSBsYWJlbD17a2V5fT5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyT3B0aW9uKG9wdEdyb3VwRGF0YVtrZXldKX1cclxuICAgICAgICAgIDwvT3B0R3JvdXA+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIHtvcHRpb259XHJcbiAgICAgICAgICB7b3B0R3JvdXB9XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7IG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIHNlbGVjdFZhbHVlOiB2YWx1ZSxcclxuICAgIH0pO1xyXG4gICAgaWYgKG9uQ2hhbmdlKSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvbkNoYW5nZSh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uU2VsZWN0KHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICBjb25zdCB7IG9uU2VsZWN0IH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGlmIChvblNlbGVjdCkge1xyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRTZWxlY3REYXRhKHZhbHVlKTtcclxuICAgICAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMsIGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZShvcGVuKSB7XHJcbiAgICBpZiAoIW9wZW4pIHtcclxuICAgICAgdGhpcy5yZXNldERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3RvcmUsXHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIG9uQ2hhbmdlLFxyXG4gICAgICBvblNlbGVjdCxcclxuICAgICAgb3B0aW9ucyxcclxuICAgICAgbGFiZWxGaWVsZCxcclxuICAgICAgdmFsdWVGaWVsZCxcclxuICAgICAgZGVmYXVsdFN0eWxlLFxyXG4gICAgICBzaG93R3JvdXAgPSB0cnVlLFxyXG4gICAgICBhZGREYXRhLFxyXG4gICAgICBkZWxldGVEYXRhLFxyXG4gICAgICB2YWx1ZVR5cGUsXHJcbiAgICAgIC4uLnBhcmFtc1xyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgIGZpbHRlck9wdGlvbjogZmFsc2UsXHJcbiAgICAgIHNob3dTZWFyY2g6IHRydWUsXHJcbiAgICAgIG9wdGlvbkZpbHRlclByb3A6IFwibGFiZWxcIixcclxuICAgICAgcGxhY2Vob2xkZXI6IFwi6K+36YCJ5oupXCIsXHJcbiAgICAgIGFsbG93Q2xlYXI6IHRydWUsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGxldCB7IGFudGRTdHlsZSwgbW91bnRFbGVtZW50SWQgfSA9IGNvbmZpZygpO1xyXG4gICAgaWYgKG1vdW50RWxlbWVudElkKSB7XHJcbiAgICAgIHByb3BzID0ge1xyXG4gICAgICAgIGdldFBvcHVwQ29udGFpbmVyOiAoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb3VudEVsZW1lbnRJZCksXHJcbiAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBpZiAoKGRlZmF1bHRTdHlsZSB8fCBhbnRkU3R5bGUpICYmIGRlZmF1bHRTdHlsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoc3R5bGVzW1wibnNjX3NlbGVjdFwiXSwgdGhpcy5wcm9wcy5jbGFzc05hbWUpfT5cclxuICAgICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUuc2VsZWN0VmFsdWV9XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLm9uU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICAgIDwvU2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlPXt0aGlzLm9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XHJcbiAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
471
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJTdG9yZSIsInV0aWxzIiwiY29uZmlnIiwic3R5bGVzIiwiY2xzIiwiUGlueWluTWF0Y2giLCJnZXRGbGF0dGVuRGF0YSIsIk9wdGlvbiIsIk9wdEdyb3VwIiwiX1NlbGVjdCIsIk5TQ1NlbGVjdCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkiLCJkYXRhU291cmNlIiwic2VsZWN0VmFsdWUiLCJhbGxEYXRhU291cmNlIiwiY2hpbGRyZW4iLCJhbGxDaGlsZHJlbiIsImRhdGEiLCJzdG9yZSIsIm9wdGlvbnMiLCJhZGREYXRhIiwiZGVsZXRlRGF0YSIsInVybCIsImxpc3RlbmVycyIsImxpc3RlbmVyc1BvcHMiLCJ2aWV3bmFtZSIsImNhY2hlZCIsImNhY2hlS2V5Iiwidmlld3R5cGUiLCJzdG9yZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJ2YWx1ZUZpZWxkIiwidmlld1VybCIsInZpZXdCaXpVcmwiLCJyZXF1ZXN0Vmlld1VybCIsImdldEFsbERhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJuZXdEYXRhIiwibGVuZ3RoIiwic3BsaWNlRGF0YSIsInZhbHVlRmllbGRzIiwic3BsaXQiLCJtYXAiLCJpdGVtIiwiaSIsInZhbHVlIiwidiIsImluZGV4IiwiaW5kZXhPZiIsInB1c2giLCJFcnJvciIsIl90aGlzIiwic3RvcmVQcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9uQmVmb3JlTG9hZCIsImNhbGxiYWNrIiwibG9hZCIsIm1vZGVsRGF0YSIsInNldFN0YXRlIiwiZGF0YUNoYW5nZWQiLCJpc0NhY2hlZCIsImlzQ2FjaGVLZXkiLCJhdXRvTG9hZCIsInJlc2V0RGF0YSIsInN0YXRlIiwiZ2V0RGF0YSIsImdldFZhbHVlIiwic2V0VmFsdWUiLCJnZXRTZWxlY3REYXRhIiwia2V5RmllbGQiLCJyZXMiLCJ2YWwiLCJjb21wb25lbnREaWRNb3VudCIsImNvbXBvbmVudERpZFVwZGF0ZSIsIm5ld1Byb3BzIiwibmV3U3RhdGUiLCJTbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZUNoaWxkcmVuUHJvcHMiLCJzIiwiY2hpbGRyZW5Qcm9wcyIsImMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIm9uU2VhcmNoIiwiZmlsdGVyT3B0aW9uIiwibGFiZWxGaWVsZCIsInJlc3VsdCIsImZvckVhY2giLCJsYWJlbCIsImxhYmVsRmllbGRzIiwibCIsImZsYWciLCJtYXRjaCIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uRGF0YSIsInZhbHVlVHlwZSIsIk51bWJlciIsImtleSIsImlkIiwiY3JlYXRlRWxlbWVudCIsImRpc2FibGVkIiwicmVuZGVyQ2hpbGRyZW4iLCJzaG93R3JvdXAiLCJGcmFnbWVudCIsIm9wdEdyb3VwRGF0YSIsImdyb3VwTmFtZSIsIm9wdGlvbiIsIm9wdEdyb3VwIiwiT2JqZWN0Iiwia2V5cyIsIm9uQ2hhbmdlIiwib25TZWxlY3QiLCJvbkRyb3Bkb3duVmlzaWJsZUNoYW5nZSIsIm9wZW4iLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImRlZmF1bHRTdHlsZSIsInBhcmFtcyIsIl9leGNsdWRlZDIiLCJzaG93U2VhcmNoIiwib3B0aW9uRmlsdGVyUHJvcCIsInBsYWNlaG9sZGVyIiwiYWxsb3dDbGVhciIsImFudGRTdHlsZSIsIm1vdW50RWxlbWVudElkIiwiZ2V0UG9wdXBDb250YWluZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xhc3NOYW1lIiwiX2V4dGVuZHMiLCJiaW5kIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9zZWxlY3QvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFNlbGVjdCwgU2VsZWN0UHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCBQaW55aW5NYXRjaCBmcm9tIFwicGlueWluLW1hdGNoXCI7XHJcbmltcG9ydCB7IGdldEZsYXR0ZW5EYXRhIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmNvbnN0IHsgT3B0aW9uLCBPcHRHcm91cCB9ID0gU2VsZWN0O1xyXG5cclxuaW50ZXJmYWNlIElTZWxlY3RQcm9wcyBleHRlbmRzIFNlbGVjdFByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PjsgLy/pu5jorqTmlbDmja5cclxuICBsYWJlbEZpZWxkPzogc3RyaW5nO1xyXG4gIHZhbHVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFN0eWxlPzogYm9vbGVhbjtcclxuICBzaG93R3JvdXA/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWIhue7hFxyXG4gIGFkZERhdGE/OiBBcnJheTxPYmplY3Q+OyAvL+mFjeWQiHN0b3Jl5L2/55So77yM5LuO5aKe5Yqg6aKd5aSW55qE5pWw5o2uXHJcbiAgZGVsZXRlRGF0YT86IEFycmF5PFN0cmluZz47IC8v6YWN5ZCIc3RvcmXkvb/nlKjvvIzliKDpmaTku47mlbDmja7lupPkuK3ojrflj5bliLDnmoTmjIflrprmlbDmja5cclxuICB2YWx1ZUJyZWFrPzogc3RyaW5nOyAvL+WkmuS4qnZhbHVl5L2/55So55qE5YiG6ZqU56ymXHJcbiAgdmFsdWVUeXBlPzogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCI7XHJcbiAgW3Byb05hbWU6IHN0cmluZ106IGFueTtcclxuICBvbkNoYW5nZT86IGFueTtcclxuICBvblNlbGVjdD86IGFueTtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOU0NTZWxlY3QgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PElTZWxlY3RQcm9wcz4ge1xyXG4gIHN0YXRpYyBPcHRpb24gPSBPcHRpb247XHJcbiAgc3RhdGljIE9wdEdyb3VwID0gT3B0R3JvdXA7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIHNlbGVjdFZhbHVlOiBudWxsLFxyXG4gICAgYWxsRGF0YVNvdXJjZTogW10sXHJcbiAgICBjaGlsZHJlbjogbnVsbCxcclxuICAgIGFsbENoaWxkcmVuOiBudWxsLFxyXG4gIH07XHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRhdGEsXHJcbiAgICAgIHN0b3JlID0ge30sXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBhZGREYXRhID0gW10sXHJcbiAgICAgIGRlbGV0ZURhdGEgPSBbXSxcclxuICAgIH0gPSBwcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgdXJsLFxyXG4gICAgICBsaXN0ZW5lcnM6IGxpc3RlbmVyc1BvcHMgPSB7fSxcclxuICAgICAgdmlld25hbWUsXHJcbiAgICAgIGNhY2hlZCxcclxuICAgICAgY2FjaGVLZXksXHJcbiAgICAgIHZpZXd0eXBlID0gXCJzeXNcIixcclxuICAgICAgLi4uc3RvcmVzXHJcbiAgICB9ID0gc3RvcmU7XHJcbiAgICBjb25zdCB2YWx1ZUZpZWxkID0gdmlld25hbWUgPyBcImRpY3RLZXlcIiA6IFwidmFsdWVcIjtcclxuICAgIGxldCB7IHZpZXdVcmwsIHZpZXdCaXpVcmwgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHJlcXVlc3RWaWV3VXJsID0gdmlld3R5cGUgPT0gXCJzeXNcIiA/IHZpZXdVcmwgOiB2aWV3Qml6VXJsO1xyXG4gICAgY29uc3QgZ2V0QWxsRGF0YSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIHJldHVybiBbXTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgbmV3RGF0YSA9IFsuLi5kYXRhXTtcclxuICAgICAgaWYgKGFkZERhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0RhdGEgPSBbLi4uYWRkRGF0YSwgLi4ubmV3RGF0YV07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGRlbGV0ZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBzcGxpY2VEYXRhID0gW107XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIG5ld0RhdGEubWFwKChpdGVtLCBpKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xyXG4gICAgICAgICAgdmFsdWVGaWVsZHMubWFwKCh2LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGRlbGV0ZURhdGEuaW5kZXhPZih2YWx1ZSkgPT0gLTEpIHtcclxuICAgICAgICAgICAgc3BsaWNlRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBzcGxpY2VEYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBuZXdEYXRhO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHZpZXduYW1lIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgXZpZXduYW1l44CBZGF0YeOAgW9wdGlvbnPkuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBnZXRBbGxEYXRhKGRhdGEpO1xyXG4gICAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGRhdGFTb3VyY2U6IG5ld0RhdGEsIGFsbERhdGFTb3VyY2U6IG5ld0RhdGEgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKCh2aWV3bmFtZSB8fCB1cmwpICYmIGRhdGEgPT0gbnVsbCAmJiBvcHRpb25zID09IG51bGwpIHtcclxuICAgICAgICBsZXQgaXNDYWNoZWQgPSBjYWNoZWQ7XHJcbiAgICAgICAgbGV0IGlzQ2FjaGVLZXkgPSBjYWNoZUtleTtcclxuICAgICAgICBpZiAodmlld25hbWUpIHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkICE9PSBcImJvb2xlYW5cIikge1xyXG4gICAgICAgICAgICBpc0NhY2hlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlzQ2FjaGVLZXkgPSBpc0NhY2hlS2V5ID8gaXNDYWNoZUtleSA6IHZpZXduYW1lO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsIHx8IHJlcXVlc3RWaWV3VXJsICsgdmlld25hbWUsIC8v6K+75a2X5YW477yMdXJs5Zu65a6a77yMdmlld25hbWVcclxuICAgICAgICAgICAgY2FjaGVkOiBpc0NhY2hlZCxcclxuICAgICAgICAgICAgY2FjaGVLZXk6IGlzQ2FjaGVLZXksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXNldERhdGEoKSB7XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGlmIChjaGlsZHJlbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY2hpbGRyZW46IGFsbENoaWxkcmVuIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogYWxsRGF0YVNvdXJjZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXREYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuYWxsRGF0YVNvdXJjZTtcclxuICB9XHJcblxyXG4gIGdldFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0VmFsdWU7XHJcbiAgfVxyXG4gIHNldFZhbHVlKHZhbHVlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3REYXRhKHZhbHVlKSB7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgeyBzdG9yZSA9IHt9LCB2YWx1ZUZpZWxkIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyB2aWV3bmFtZSB9ID0gc3RvcmU7XHJcbiAgICB2YWx1ZUZpZWxkID0gdmFsdWVGaWVsZCA/IHZhbHVlRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdEtleVwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgY29uc3QgbmV3RGF0YSA9IGdldEZsYXR0ZW5EYXRhKGRhdGFTb3VyY2UsIHsga2V5RmllbGQ6IHZhbHVlRmllbGQgfSk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcclxuICAgICAgbGV0IHJlcyA9IFtdIGFzIGFueTtcclxuICAgICAgdmFsdWUubWFwKCh2YWwpID0+IHtcclxuICAgICAgICByZXMucHVzaChuZXdEYXRhW3ZhbF0gfHwge30pO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXdEYXRhW3ZhbHVlXSB8fCB7fTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghY2hpbGRyZW4gJiYgKGRhdGEgfHwgb3B0aW9ucykpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZGF0YVNvdXJjZTogZGF0YSA/IGRhdGEgOiBvcHRpb25zLFxyXG4gICAgICAgIGFsbERhdGFTb3VyY2U6IGRhdGEgPyBkYXRhIDogb3B0aW9ucyxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcclxuICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUobmV3UHJvcHMsIG5ld1N0YXRlLCBTbmFwc2hvdCkge1xyXG4gICAgY29uc3QgeyBkYXRhLCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWxsRGF0YVNvdXJjZSwgYWxsQ2hpbGRyZW4gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBpZiAoIWNoaWxkcmVuICYmIChkYXRhIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGEgPSBkYXRhID8gZGF0YSA6IG9wdGlvbnM7XHJcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShhbGxEYXRhU291cmNlKSAhPT0gSlNPTi5zdHJpbmdpZnkobmV3RGF0YSkpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRhdGFTb3VyY2U6IG5ld0RhdGEsXHJcbiAgICAgICAgICBhbGxEYXRhU291cmNlOiBuZXdEYXRhLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHN0YXRlQ2hpbGRyZW5Qcm9wczogYW55ID0gW107XHJcbiAgICAgIGFsbENoaWxkcmVuLm1hcCgoczogYW55KSA9PiB7XHJcbiAgICAgICAgc3RhdGVDaGlsZHJlblByb3BzLnB1c2gocy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb25zdCBjaGlsZHJlblByb3BzOiBhbnkgPSBbXTtcclxuICAgICAgY2hpbGRyZW4ubWFwKChjOiBhbnkpID0+IHtcclxuICAgICAgICBjaGlsZHJlblByb3BzLnB1c2goYy5wcm9wcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoc3RhdGVDaGlsZHJlblByb3BzKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hpbGRyZW5Qcm9wcylcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBjaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgICBhbGxDaGlsZHJlbjogY2hpbGRyZW4sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlID0gKHN0YXRlLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9O1xyXG4gIH1cclxuICBvblNlYXJjaCh2YWx1ZSkge1xyXG4gICAgY29uc3QgeyBhbGxEYXRhU291cmNlLCBhbGxDaGlsZHJlbiB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgZmlsdGVyT3B0aW9uID0gdHJ1ZSwgb25TZWFyY2gsIGNoaWxkcmVuLCBzdG9yZSA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHsgbGFiZWxGaWVsZCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgdmlld25hbWUgfSA9IHN0b3JlO1xyXG4gICAgbGFiZWxGaWVsZCA9IGxhYmVsRmllbGQgPyBsYWJlbEZpZWxkIDogdmlld25hbWUgPyBcImRpY3RWYWx1ZVwiIDogXCJsYWJlbFwiO1xyXG4gICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICBsZXQgcmVzdWx0ID0gW107XHJcbiAgICAgIGlmICghY2hpbGRyZW4pIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGFsbERhdGFTb3VyY2UuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZGF0YVNvdXJjZTogcmVzdWx0LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICBkYXRhU291cmNlOiBhbGxEYXRhU291cmNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYWxsQ2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGFsbENoaWxkcmVuLm1hcCgoY2hpbGQ6IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBjaGlsZD8ucHJvcHM/LmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgIGxldCBmbGFnID0gUGlueWluTWF0Y2gubWF0Y2gobGFiZWwsIHZhbHVlKTtcclxuICAgICAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IHJlc3VsdCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBvblNlYXJjaCAmJiBvblNlYXJjaCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHJlbmRlck9wdGlvbihvcHRpb25EYXRhKSB7XHJcbiAgICBsZXQge1xyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICB2YWx1ZVR5cGUgPSBcInN0cmluZ1wiLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHZpZXduYW1lIH0gPSBzdG9yZTtcclxuICAgIHZhbHVlRmllbGQgPSB2YWx1ZUZpZWxkID8gdmFsdWVGaWVsZCA6IHZpZXduYW1lID8gXCJkaWN0S2V5XCIgOiBcInZhbHVlXCI7XHJcbiAgICBsYWJlbEZpZWxkID0gbGFiZWxGaWVsZCA/IGxhYmVsRmllbGQgOiB2aWV3bmFtZSA/IFwiZGljdFZhbHVlXCIgOiBcImxhYmVsXCI7XHJcbiAgICByZXR1cm4gb3B0aW9uRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcbiAgICAgIGlmICh2YWx1ZUZpZWxkLnNwbGl0KFwiLFwiKS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgIHZhbHVlID1cclxuICAgICAgICAgIHZhbHVlVHlwZSA9PT0gXCJudW1iZXJcIiA/IE51bWJlcihpdGVtW3ZhbHVlRmllbGRdKSA6IGl0ZW1bdmFsdWVGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWVGaWVsZHM6IGFueSA9IHZhbHVlRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIHZhbHVlID0gXCJcIjtcclxuICAgICAgICB2YWx1ZUZpZWxkcy5tYXAoKHYsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGluZGV4ID09IDAgPyB2YWx1ZSArIGl0ZW1bdl0gOiB2YWx1ZSArIFwiLFwiICsgaXRlbVt2XTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBsZXQga2V5ID0gaXRlbS5pZCA/IChpdGVtLmlkICE9PSBcInVuZGVmaW5lZFwiID8gaXRlbS5pZCA6IHZhbHVlKSA6IHZhbHVlO1xyXG4gICAgICBsZXQgbGFiZWwgPSBcIlwiO1xyXG4gICAgICBpZiAobGFiZWxGaWVsZC5zcGxpdChcIixcIikubGVuZ3RoID09IDEpIHtcclxuICAgICAgICBsYWJlbCA9IGl0ZW1bbGFiZWxGaWVsZF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWxGaWVsZHM6IGFueSA9IGxhYmVsRmllbGQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgIGxhYmVsRmllbGRzLm1hcCgobCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIGxhYmVsID0gaW5kZXggPT0gMCA/IGxhYmVsICsgaXRlbVtsXSA6IGxhYmVsICsgXCItXCIgKyBpdGVtW2xdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPE9wdGlvblxyXG4gICAgICAgICAga2V5PXtrZXl9XHJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XHJcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aXRlbS5kaXNhYmxlZCA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bGFiZWx9XHJcbiAgICAgICAgPC9PcHRpb24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVuZGVyQ2hpbGRyZW4oKSB7XHJcbiAgICBjb25zdCB7IHNob3dHcm91cCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGRhdGFTb3VyY2UsIGNoaWxkcmVuIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiA8PntjaGlsZHJlbn08Lz47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3B0R3JvdXBEYXRhID0ge30sXHJcbiAgICAgICAgb3B0aW9uRGF0YSA9IFtdO1xyXG4gICAgICBkYXRhU291cmNlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBpdGVtLmdyb3VwTmFtZTtcclxuICAgICAgICBpZiAobGFiZWwgJiYgc2hvd0dyb3VwKSB7XHJcbiAgICAgICAgICBpZiAoIW9wdEdyb3VwRGF0YVtsYWJlbF0pIG9wdEdyb3VwRGF0YVtsYWJlbF0gPSBbXTtcclxuICAgICAgICAgIG9wdEdyb3VwRGF0YVtsYWJlbF0ucHVzaChpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9uRGF0YS5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBvcHRpb24gPSB0aGlzLnJlbmRlck9wdGlvbihvcHRpb25EYXRhKTtcclxuICAgICAgbGV0IG9wdEdyb3VwID0gT2JqZWN0LmtleXMob3B0R3JvdXBEYXRhKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8T3B0R3JvdXAga2V5PXtrZXl9IGxhYmVsPXtrZXl9PlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJPcHRpb24ob3B0R3JvdXBEYXRhW2tleV0pfVxyXG4gICAgICAgICAgPC9PcHRHcm91cD5cclxuICAgICAgICApO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgIHtvcHRHcm91cH1cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25DaGFuZ2UodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VsZWN0VmFsdWU6IHZhbHVlLFxyXG4gICAgfSk7XHJcbiAgICBpZiAob25DaGFuZ2UpIHtcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0U2VsZWN0RGF0YSh2YWx1ZSk7XHJcbiAgICAgIG9uQ2hhbmdlKHZhbHVlLCBvcHRpb25zLCBkYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25TZWxlY3QodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHsgb25TZWxlY3QgfSA9IHRoaXMucHJvcHM7XHJcblxyXG4gICAgaWYgKG9uU2VsZWN0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmdldFNlbGVjdERhdGEodmFsdWUpO1xyXG4gICAgICBvblNlbGVjdCh2YWx1ZSwgb3B0aW9ucywgZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uRHJvcGRvd25WaXNpYmxlQ2hhbmdlKG9wZW4pIHtcclxuICAgIGlmICghb3Blbikge1xyXG4gICAgICB0aGlzLnJlc2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdG9yZSxcclxuICAgICAgZGF0YSxcclxuICAgICAgb25DaGFuZ2UsXHJcbiAgICAgIG9uU2VsZWN0LFxyXG4gICAgICBvcHRpb25zLFxyXG4gICAgICBsYWJlbEZpZWxkLFxyXG4gICAgICB2YWx1ZUZpZWxkLFxyXG4gICAgICBkZWZhdWx0U3R5bGUsXHJcbiAgICAgIHNob3dHcm91cCA9IHRydWUsXHJcbiAgICAgIGFkZERhdGEsXHJcbiAgICAgIGRlbGV0ZURhdGEsXHJcbiAgICAgIHZhbHVlVHlwZSxcclxuICAgICAgLi4ucGFyYW1zXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgZmlsdGVyT3B0aW9uOiBmYWxzZSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJ1ZSxcclxuICAgICAgb3B0aW9uRmlsdGVyUHJvcDogXCJsYWJlbFwiLFxyXG4gICAgICBwbGFjZWhvbGRlcjogXCLor7fpgInmi6lcIixcclxuICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgbGV0IHsgYW50ZFN0eWxlLCBtb3VudEVsZW1lbnRJZCB9ID0gY29uZmlnKCk7XHJcbiAgICBpZiAobW91bnRFbGVtZW50SWQpIHtcclxuICAgICAgcHJvcHMgPSB7XHJcbiAgICAgICAgZ2V0UG9wdXBDb250YWluZXI6ICgpID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG1vdW50RWxlbWVudElkKSxcclxuICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmICgoZGVmYXVsdFN0eWxlIHx8IGFudGRTdHlsZSkgJiYgZGVmYXVsdFN0eWxlID09PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhzdHlsZXNbXCJuc2Nfc2VsZWN0XCJdLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxyXG4gICAgICAgICAgPFNlbGVjdFxyXG4gICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWxlY3RWYWx1ZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMub25TZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxyXG4gICAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxTZWxlY3RcclxuICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnNlbGVjdFZhbHVlfVxyXG4gICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uQ2hhbmdlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICBvblNlbGVjdD17dGhpcy5vblNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgb25Ecm9wZG93blZpc2libGVDaGFuZ2U9e3RoaXMub25Ecm9wZG93blZpc2libGVDaGFuZ2UuYmluZCh0aGlzKX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3RoaXMucmVuZGVyQ2hpbGRyZW4oKX1cclxuICAgICAgICA8L1NlbGVjdD5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBUSxPQUFPO0FBRTVDLE9BQU9DLEtBQUssTUFBc0IsYUFBYTtBQUMvQyxTQUFTQyxLQUFLLFFBQVEsdUJBQXVCO0FBQzdDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBRTVCLE9BQU9DLFdBQVcsTUFBTSxjQUFjO0FBQ3RDLFNBQVNDLGNBQWMsUUFBUSxtQkFBbUI7QUFDbEQsTUFBTTtFQUFFQyxNQUFNO0VBQUVDO0FBQVMsQ0FBQyxHQUFBQyxPQUFTO0FBaUJuQyxlQUFlLE1BQU1DLFNBQVMsU0FBU1gsYUFBYSxDQUFlO0VBV2pFWSxXQUFXQSxDQUFDQyxLQUFLLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQ0Ms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