raise-common-lib 0.0.206 → 0.0.208

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 (266) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +28020 -1275
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dashboard/api.js +46 -0
  7. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +638 -0
  8. package/esm2015/lib/dashboard/bar-charts/utils.js +40 -0
  9. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +700 -0
  10. package/esm2015/lib/dashboard/dashboard.service.js +650 -0
  11. package/esm2015/lib/dashboard/dashboardPorlets.service.js +3107 -0
  12. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +358 -0
  13. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +67 -0
  14. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4443 -0
  15. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4293 -0
  16. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1553 -0
  17. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +857 -0
  18. package/esm2015/lib/dashboard/pane-group-new.component.js +2930 -0
  19. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1016 -0
  20. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1003 -0
  21. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +319 -0
  22. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1638 -0
  23. package/esm2015/lib/form/checkbox-group/index.component.js +60 -5
  24. package/esm2015/lib/raise-common-lib.module.js +56 -3
  25. package/esm2015/lib/service/InjectionToken.js +13 -0
  26. package/esm2015/public-api.js +3 -1
  27. package/esm2015/raise-common-lib.js +22 -6
  28. package/esm5/lib/dashboard/api.js +48 -0
  29. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +733 -0
  30. package/esm5/lib/dashboard/bar-charts/utils.js +45 -0
  31. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +772 -0
  32. package/esm5/lib/dashboard/dashboard.service.js +846 -0
  33. package/esm5/lib/dashboard/dashboardPorlets.service.js +3536 -0
  34. package/esm5/lib/dashboard/dialog-group/download/index.component.js +441 -0
  35. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +78 -0
  36. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4940 -0
  37. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4751 -0
  38. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1683 -0
  39. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +931 -0
  40. package/esm5/lib/dashboard/pane-group-new.component.js +3307 -0
  41. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1138 -0
  42. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1184 -0
  43. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +354 -0
  44. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1792 -0
  45. package/esm5/lib/form/checkbox-group/index.component.js +74 -5
  46. package/esm5/lib/raise-common-lib.module.js +56 -3
  47. package/esm5/lib/service/InjectionToken.js +13 -0
  48. package/esm5/public-api.js +3 -1
  49. package/esm5/raise-common-lib.js +22 -6
  50. package/fesm2015/raise-common-lib.js +24747 -1110
  51. package/fesm2015/raise-common-lib.js.map +1 -1
  52. package/fesm5/raise-common-lib.js +27815 -1263
  53. package/fesm5/raise-common-lib.js.map +1 -1
  54. package/lib/dashboard/api.d.ts +21 -0
  55. package/lib/dashboard/bar-charts/bar-charts.component.d.ts +60 -0
  56. package/lib/dashboard/bar-charts/utils.d.ts +1 -0
  57. package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +49 -0
  58. package/lib/dashboard/dashboard.service.d.ts +149 -0
  59. package/lib/dashboard/dashboardPorlets.service.d.ts +211 -0
  60. package/lib/dashboard/dialog-group/download/index.component.d.ts +33 -0
  61. package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +12 -0
  62. package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +125 -0
  63. package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +128 -0
  64. package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +74 -0
  65. package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +44 -0
  66. package/lib/dashboard/pane-group-new.component.d.ts +165 -0
  67. package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +53 -0
  68. package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +59 -0
  69. package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +27 -0
  70. package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +147 -0
  71. package/lib/form/checkbox-group/index.component.d.ts +5 -0
  72. package/lib/service/InjectionToken.d.ts +4 -0
  73. package/package.json +1 -1
  74. package/public-api.d.ts +2 -0
  75. package/raise-common-lib.d.ts +20 -4
  76. package/raise-common-lib.metadata.json +1 -1
  77. package/src/assets/img/arrow_right.svg +4 -4
  78. package/src/assets/img/calendar-disabled.svg +6 -6
  79. package/src/assets/img/calendar.svg +6 -6
  80. package/src/assets/img/calendar_arrow_left.svg +3 -3
  81. package/src/assets/img/calendar_arrow_right.svg +3 -3
  82. package/src/assets/img/checked-vector.svg +3 -3
  83. package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
  84. package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
  85. package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
  86. package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
  87. package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
  88. package/src/assets/img/dashboard_icon/Close.svg +4 -0
  89. package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
  90. package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
  91. package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
  92. package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
  93. package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
  94. package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
  95. package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
  96. package/src/assets/img/dashboard_icon/area-white.svg +3 -0
  97. package/src/assets/img/dashboard_icon/area.svg +3 -0
  98. package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
  99. package/src/assets/img/dashboard_icon/bar.svg +14 -0
  100. package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
  101. package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
  102. package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
  103. package/src/assets/img/dashboard_icon/column-white.svg +14 -0
  104. package/src/assets/img/dashboard_icon/column.svg +26 -0
  105. package/src/assets/img/dashboard_icon/customize.png +0 -0
  106. package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
  107. package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
  108. package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
  109. package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
  110. package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
  111. package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
  112. package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
  113. package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
  114. package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
  115. package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
  116. package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
  117. package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
  118. package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
  119. package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
  120. package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
  121. package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
  122. package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
  123. package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
  124. package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
  125. package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
  126. package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
  127. package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
  128. package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
  129. package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
  130. package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
  131. package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
  132. package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
  133. package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
  134. package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
  135. package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
  136. package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
  137. package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
  138. package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
  139. package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
  140. package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
  141. package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
  142. package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
  143. package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
  144. package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
  145. package/src/assets/img/dashboard_icon/ftable.svg +24 -0
  146. package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
  147. package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
  148. package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
  149. package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
  150. package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
  151. package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
  152. package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
  153. package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
  154. package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
  155. package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
  156. package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
  157. package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
  158. package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
  159. package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
  160. package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
  161. package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
  162. package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
  163. package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
  164. package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
  165. package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
  166. package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
  167. package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
  168. package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
  169. package/src/assets/img/dashboard_icon/geo.svg +14 -0
  170. package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
  171. package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
  172. package/src/assets/img/dashboard_icon/information-1.png +0 -0
  173. package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
  174. package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
  175. package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
  176. package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
  177. package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
  178. package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
  179. package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
  180. package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
  181. package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
  182. package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
  183. package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
  184. package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
  185. package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
  186. package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
  187. package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
  188. package/src/assets/img/dashboard_icon/more_View.svg +3 -0
  189. package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
  190. package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
  191. package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
  192. package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
  193. package/src/assets/img/dashboard_icon/pie.svg +16 -0
  194. package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
  195. package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
  196. package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
  197. package/src/assets/img/dashboard_icon/pivot.svg +8 -0
  198. package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
  199. package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
  200. package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
  201. package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
  202. package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
  203. package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
  204. package/src/assets/img/dashboard_icon/radar.svg +19 -0
  205. package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
  206. package/src/assets/img/dashboard_icon/search_input.svg +4 -0
  207. package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
  208. package/src/assets/img/dashboard_icon/table-3.svg +16 -0
  209. package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
  210. package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
  211. package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
  212. package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
  213. package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
  214. package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
  215. package/src/assets/img/dashboard_icon/tick.svg +26 -0
  216. package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
  217. package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
  218. package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
  219. package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
  220. package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
  221. package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
  222. package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
  223. package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
  224. package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
  225. package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
  226. package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
  227. package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
  228. package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
  229. package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
  230. package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
  231. package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
  232. package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
  233. package/src/assets/img/dashboard_icon/transpose.svg +16 -0
  234. package/src/assets/img/dialog-close.svg +4 -4
  235. package/src/assets/img/dialog-grow.svg +6 -6
  236. package/src/assets/img/dialog-shrink.svg +6 -6
  237. package/src/assets/img/plus.svg +4 -4
  238. package/src/assets/img/search.svg +4 -4
  239. package/src/assets/img/shrink-icon.svg +6 -6
  240. package/src/assets/img/time-disabled.svg +4 -4
  241. package/src/assets/img/time.svg +4 -4
  242. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  243. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  244. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  245. package/src/assets/img/toolbar-action-combine.svg +4 -4
  246. package/src/assets/img/toolbar-action-edit.svg +4 -4
  247. package/src/assets/img/toolbar-action-expand.svg +7 -7
  248. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  249. package/src/assets/img/toolbar-action-lock.svg +6 -6
  250. package/src/assets/img/toolbar-action-preview.svg +7 -7
  251. package/src/assets/img/toolbar-action-publish.svg +5 -5
  252. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  253. package/src/assets/img/toolbar-action-rename.svg +7 -7
  254. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  255. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  256. package/src/assets/img/toolbar-action-settle.svg +7 -7
  257. package/src/assets/img/toolbar-action-share.svg +5 -5
  258. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  259. package/src/assets/img/toolbar-action-sync.svg +4 -4
  260. package/src/assets/img/toolbar-action-template.svg +6 -6
  261. package/src/assets/img/toolbar-action-workflow.svg +9 -9
  262. package/src/assets/style/reset/button.scss +0 -1
  263. package/src/assets/style/reset/checkbox.scss +8 -3
  264. package/src/assets/style/reset/mat-dialog.scss +11 -5
  265. package/src/assets/style/style.scss +14 -4
  266. package/src/assets/style/variables.scss +1 -0
@@ -0,0 +1,700 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import { Component, Inject, ChangeDetectorRef, Optional, } from "@angular/core";
7
+ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
8
+ import { ApiList } from "../../api";
9
+ import { DashboardService } from "../../dashboard.service";
10
+ import { DashboardPorletsService } from "../../dashboardPorlets.service";
11
+ import { throttle } from "lodash";
12
+ import { API_SERVICE_TOKEN, PBF_TOKEN } from "../../../service/InjectionToken";
13
+ import { DialogService } from "../../../service/dialog.service";
14
+ export class DataMartNewComponent {
15
+ /**
16
+ * @param {?} data
17
+ * @param {?} dialogRef
18
+ * @param {?} dialogService
19
+ * @param {?} dialog
20
+ * @param {?} api
21
+ * @param {?} dashboardService
22
+ * @param {?} DashboardPorletsService
23
+ * @param {?} ref
24
+ * @param {?} pbf
25
+ * @param {?} http
26
+ */
27
+ constructor(data, dialogRef, dialogService, dialog, api, dashboardService, DashboardPorletsService, ref, pbf, http) {
28
+ this.data = data;
29
+ this.dialogRef = dialogRef;
30
+ this.dialogService = dialogService;
31
+ this.dialog = dialog;
32
+ this.api = api;
33
+ this.dashboardService = dashboardService;
34
+ this.DashboardPorletsService = DashboardPorletsService;
35
+ this.ref = ref;
36
+ this.pbf = pbf;
37
+ this.http = http;
38
+ this.fatherList = [];
39
+ this.sonList = [];
40
+ this.grandsonList = [];
41
+ this.fatherId = "";
42
+ this.sonIds = [];
43
+ this.selectedAll = false;
44
+ this.orginGrandData = [];
45
+ this.disabled = false;
46
+ this.cacheEntityType = "";
47
+ this.isSelectAllDisabled = false;
48
+ this.doFilter = throttle((/**
49
+ * @param {?} val
50
+ * @return {?}
51
+ */
52
+ (val) => this.doSearch(val)), 200);
53
+ }
54
+ /**
55
+ * @return {?}
56
+ */
57
+ ngOnInit() {
58
+ this.getInfo();
59
+ this.getSources();
60
+ }
61
+ /**
62
+ * @return {?}
63
+ */
64
+ ngAfterViewInit() {
65
+ this.pbf.introStep.next("next");
66
+ }
67
+ /**
68
+ * @return {?}
69
+ */
70
+ getInfo() {
71
+ this.translation = JSON.parse(localStorage.getItem("translation"));
72
+ this.userInfo = JSON.parse(localStorage.getItem("userInfo"));
73
+ this.lang = this.pbf.getLanguageParams();
74
+ this.config =
75
+ this.data && this.data.dashboard
76
+ ? JSON.parse(this.data.dashboard.config)
77
+ : {};
78
+ }
79
+ /**
80
+ * @return {?}
81
+ */
82
+ getSources() {
83
+ /** @type {?} */
84
+ const dataObj = {
85
+ accountId: this.userInfo.accountId,
86
+ language: this.lang,
87
+ dashboardVersion: 2,
88
+ };
89
+ this.pbf.pageLoading = true;
90
+ this.pbf.pageLoading_.next(true);
91
+ this.http.post(this.api.urlList.GetSources, dataObj, (/**
92
+ * @param {?} res
93
+ * @return {?}
94
+ */
95
+ (res) => {
96
+ this.pbf.pageLoading = false;
97
+ this.pbf.pageLoading_.next(true);
98
+ if (res) {
99
+ this.DashboardPorletsService.sourcesData[this.data.dashboard.id] = res;
100
+ this.DashboardPorletsService.GetSourcesRes = res;
101
+ this.fatherList = res;
102
+ if (this.config.datamartId) {
103
+ // this.disabled = true;
104
+ this.fatherId = this.config.datamartId;
105
+ this.sonIds = this.config.datamartViewId
106
+ ? this.config.datamartViewId.split(",")
107
+ : this.config.views
108
+ ? this.config.views.map((/**
109
+ * @param {?} item
110
+ * @return {?}
111
+ */
112
+ (item) => item.datamartViewId))
113
+ : [];
114
+ /** @type {?} */
115
+ let datasource = res.find((/**
116
+ * @param {?} el
117
+ * @return {?}
118
+ */
119
+ (el) => el.id == this.fatherId));
120
+ if (datasource) {
121
+ this.getdataMart(datasource, true);
122
+ if (!this.cacheEntityType && this.config.datamartId) {
123
+ this.cacheEntityType = this.entityType;
124
+ }
125
+ /** @type {?} */
126
+ let dataview = datasource.views.filter((/**
127
+ * @param {?} el
128
+ * @return {?}
129
+ */
130
+ (el) => this.sonIds.includes(el.id)));
131
+ this.handleItemChange(dataview, true);
132
+ this.getSelectedAllStatus();
133
+ }
134
+ }
135
+ }
136
+ }));
137
+ }
138
+ /**
139
+ * @return {?}
140
+ */
141
+ getSelectedAllStatus() {
142
+ /** @type {?} */
143
+ let num = 0;
144
+ this.sonList.forEach((/**
145
+ * @param {?} son
146
+ * @return {?}
147
+ */
148
+ (son) => {
149
+ if (son.checked && son.langCode !== "FINANCIAL_FIGURES") {
150
+ num++;
151
+ }
152
+ }));
153
+ if (num === this.sonList.length - 1)
154
+ this.selectedAll = true;
155
+ else
156
+ this.selectedAll = false;
157
+ }
158
+ /**
159
+ * @return {?}
160
+ */
161
+ nextStep() {
162
+ this.pbf.introStep.next("next");
163
+ }
164
+ /**
165
+ * @param {?} item
166
+ * @param {?=} isInit
167
+ * @return {?}
168
+ */
169
+ getdataMart(item, isInit = false) {
170
+ if (this.cacheEntityType && this.cacheEntityType === item.entityType) {
171
+ return;
172
+ }
173
+ if (!isInit &&
174
+ this.cacheEntityType &&
175
+ this.cacheEntityType !== item.entityType) {
176
+ /** @type {?} */
177
+ const _title = this.translation.ARE_YOU_SURE_TO_CHANGE_DATA_MART ||
178
+ ".Are you sure to change entity type of data mart? Dashboard will be reset since entity type is changed.";
179
+ /** @type {?} */
180
+ const _no = this.translation.NO || ".NO";
181
+ /** @type {?} */
182
+ const _yes = this.translation.YES || ".YES";
183
+ // const dialogRef = this.layoutUtilsService.alertElement(
184
+ // this.translation.WARNING || ".WARNING",
185
+ // _title,
186
+ // _no,
187
+ // _yes,
188
+ // true,
189
+ // true,
190
+ // "480px",
191
+ // "324px"
192
+ // );
193
+ /** @type {?} */
194
+ const dialogRef = this.dialogService.showCommonDilaog({
195
+ title: this.translation.WARNING || ".WARNING",
196
+ description: _title,
197
+ saveBtnLabel: _yes,
198
+ cancelBtnLabel: _no,
199
+ });
200
+ dialogRef.afterClosed().subscribe((/**
201
+ * @param {?} res
202
+ * @return {?}
203
+ */
204
+ (res) => {
205
+ if (!res) {
206
+ return;
207
+ }
208
+ this.setFatherId(item, isInit);
209
+ }));
210
+ return;
211
+ }
212
+ if (!item) {
213
+ return;
214
+ }
215
+ this.setFatherId(item, isInit);
216
+ }
217
+ /**
218
+ * @private
219
+ * @param {?} item
220
+ * @param {?} isInit
221
+ * @return {?}
222
+ */
223
+ setFatherId(item, isInit) {
224
+ this.fatherId = item.id;
225
+ this.entityType = item.entityType;
226
+ /** @type {?} */
227
+ let isFiguresChecked = false;
228
+ /** @type {?} */
229
+ let isOtherChecked = false;
230
+ if (item.views.find((/**
231
+ * @param {?} item
232
+ * @return {?}
233
+ */
234
+ (item) => item.langCode === "FINANCIAL_FIGURES" && this.sonIds.includes(item.id)))) {
235
+ isFiguresChecked = true;
236
+ this.isSelectAllDisabled = true;
237
+ }
238
+ if (item.views.find((/**
239
+ * @param {?} item
240
+ * @return {?}
241
+ */
242
+ (item) => item.langCode !== "FINANCIAL_FIGURES" && this.sonIds.includes(item.id))))
243
+ isOtherChecked = true;
244
+ this.sonList = item.views.map((/**
245
+ * @param {?} item
246
+ * @return {?}
247
+ */
248
+ (item) => {
249
+ /** @type {?} */
250
+ let isDisabled = (isFiguresChecked && item.langCode !== "FINANCIAL_FIGURES") ||
251
+ (item.langCode === "FINANCIAL_FIGURES" && isOtherChecked);
252
+ return Object.assign({}, item, { checked: this.cacheEntityType && this.cacheEntityType !== this.entityType
253
+ ? false
254
+ : this.sonIds.includes(item.id), disabled: this.cacheEntityType && this.cacheEntityType !== this.entityType
255
+ ? false
256
+ : isDisabled });
257
+ }));
258
+ this.cacheEntityType = item.entityType;
259
+ if (!isInit) {
260
+ this.sonIds = [];
261
+ this.grandsonList = [];
262
+ this.orginGrandData = [];
263
+ this.selectedAll = false;
264
+ this.isSelectAllDisabled = false;
265
+ if (this.cacheEntityType && this.cacheEntityType !== item.entityType) {
266
+ this.sonList = item.views.map((/**
267
+ * @param {?} item
268
+ * @return {?}
269
+ */
270
+ (item) => {
271
+ return Object.assign({}, item, { checked: false, disabled: false });
272
+ }));
273
+ }
274
+ }
275
+ }
276
+ /**
277
+ * @param {?} data
278
+ * @param {?=} val
279
+ * @return {?}
280
+ */
281
+ handleItemChange(data, val) {
282
+ if (!data)
283
+ return false;
284
+ if (val) {
285
+ if (Array.isArray(data)) {
286
+ data.forEach((/**
287
+ * @param {?} item
288
+ * @return {?}
289
+ */
290
+ (item) => {
291
+ if (!this.sonIds.includes(item.id)) {
292
+ this.sonIds.push(item.id);
293
+ }
294
+ if (Array.isArray(item.tables)) {
295
+ item.tables.forEach((/**
296
+ * @param {?} child
297
+ * @return {?}
298
+ */
299
+ (child) => {
300
+ if (!this.grandsonList.some((/**
301
+ * @param {?} el
302
+ * @return {?}
303
+ */
304
+ (el) => el.id === child.id))) {
305
+ this.grandsonList.push(Object.assign({}, child));
306
+ }
307
+ }));
308
+ }
309
+ }));
310
+ }
311
+ else {
312
+ // financial figures can’t be selected together with other groups
313
+ if (data.langCode !== "FINANCIAL_FIGURES") {
314
+ this.sonList.forEach((/**
315
+ * @param {?} item
316
+ * @return {?}
317
+ */
318
+ (item) => {
319
+ if (item.langCode === "FINANCIAL_FIGURES")
320
+ item.disabled = true;
321
+ }));
322
+ }
323
+ else {
324
+ if (!this.sonList.find((/**
325
+ * @param {?} item
326
+ * @return {?}
327
+ */
328
+ (item) => item.checked && item.langCode !== "FINANCIAL_FIGURES"))) {
329
+ this.sonList.forEach((/**
330
+ * @param {?} item
331
+ * @return {?}
332
+ */
333
+ (item) => {
334
+ if (item.langCode !== "FINANCIAL_FIGURES")
335
+ item.disabled = true;
336
+ }));
337
+ this.isSelectAllDisabled = true;
338
+ }
339
+ }
340
+ data.tables.forEach((/**
341
+ * @param {?} item
342
+ * @return {?}
343
+ */
344
+ (item) => {
345
+ if (!this.grandsonList.some((/**
346
+ * @param {?} el
347
+ * @return {?}
348
+ */
349
+ (el) => el.id === item.id))) {
350
+ this.grandsonList.push(Object.assign({}, item));
351
+ }
352
+ }));
353
+ if (!this.sonIds.includes(data.id)) {
354
+ this.sonIds.push(data.id);
355
+ }
356
+ }
357
+ }
358
+ else {
359
+ this.grandsonList = [];
360
+ this.sonList.forEach((/**
361
+ * @param {?} item
362
+ * @return {?}
363
+ */
364
+ (item) => {
365
+ if (data.langCode === "FINANCIAL_FIGURES") {
366
+ item.disabled = false;
367
+ this.isSelectAllDisabled = false;
368
+ }
369
+ if (item.id == data.id) {
370
+ item.checked = val;
371
+ }
372
+ if (item.checked) {
373
+ item.tables.forEach((/**
374
+ * @param {?} sonItem
375
+ * @return {?}
376
+ */
377
+ (sonItem) => {
378
+ if (!this.grandsonList.some((/**
379
+ * @param {?} el
380
+ * @return {?}
381
+ */
382
+ (el) => el.id === sonItem.id))) {
383
+ this.grandsonList.push(Object.assign({}, sonItem));
384
+ }
385
+ }));
386
+ }
387
+ }));
388
+ if (data.langCode !== "FINANCIAL_FIGURES" &&
389
+ !this.sonList.find((/**
390
+ * @param {?} item
391
+ * @return {?}
392
+ */
393
+ (item) => item.checked && item.langCode !== "FINANCIAL_FIGURES"))) {
394
+ this.sonList.forEach((/**
395
+ * @param {?} obj
396
+ * @return {?}
397
+ */
398
+ (obj) => {
399
+ if (obj.langCode === "FINANCIAL_FIGURES")
400
+ obj.disabled = false;
401
+ }));
402
+ }
403
+ this.sonIds = this.sonIds.filter((/**
404
+ * @param {?} item
405
+ * @return {?}
406
+ */
407
+ (item) => item != data.id));
408
+ }
409
+ this.getSelectedAllStatus();
410
+ this.orginGrandData = JSON.parse(JSON.stringify(this.grandsonList));
411
+ if (!this.ref["destroyed"]) {
412
+ this.ref.markForCheck();
413
+ this.ref.detectChanges;
414
+ }
415
+ }
416
+ /**
417
+ * @param {?} val
418
+ * @return {?}
419
+ */
420
+ selectAll(val) {
421
+ if (!val) {
422
+ this.orginGrandData = [];
423
+ }
424
+ this.grandsonList = [];
425
+ this.sonIds = [];
426
+ this.sonList.forEach((/**
427
+ * @param {?} item
428
+ * @return {?}
429
+ */
430
+ (item) => {
431
+ if (item.langCode !== "FINANCIAL_FIGURES")
432
+ item.checked = val;
433
+ if (val) {
434
+ if (item.langCode === "FINANCIAL_FIGURES") {
435
+ item.disabled = true;
436
+ return;
437
+ }
438
+ this.sonIds.push(item.id);
439
+ item.tables.forEach((/**
440
+ * @param {?} sonItem
441
+ * @return {?}
442
+ */
443
+ (sonItem) => {
444
+ if (!this.grandsonList.some((/**
445
+ * @param {?} el
446
+ * @return {?}
447
+ */
448
+ (el) => el.id === sonItem.id))) {
449
+ this.grandsonList.push(Object.assign({}, sonItem));
450
+ }
451
+ }));
452
+ }
453
+ else {
454
+ if (item.langCode === "FINANCIAL_FIGURES")
455
+ item.disabled = false;
456
+ }
457
+ }));
458
+ this.orginGrandData = JSON.parse(JSON.stringify(this.grandsonList));
459
+ }
460
+ /**
461
+ * @param {?} val
462
+ * @return {?}
463
+ */
464
+ doSearch(val) {
465
+ /** @type {?} */
466
+ let tempList = JSON.parse(JSON.stringify(this.orginGrandData));
467
+ if (val) {
468
+ this.grandsonList = tempList.filter((/**
469
+ * @param {?} item
470
+ * @return {?}
471
+ */
472
+ (item) => item.langValue.toLowerCase().includes(val.toLowerCase())));
473
+ }
474
+ else {
475
+ this.grandsonList = tempList;
476
+ }
477
+ }
478
+ // 保存弹窗筛选数据
479
+ /**
480
+ * @return {?}
481
+ */
482
+ saveData() {
483
+ this.pbf.introStep.next("complete");
484
+ this.pbf.pageLoading = true;
485
+ /** @type {?} */
486
+ let config;
487
+ /** @type {?} */
488
+ let datamartViewCode = this.sonList.filter((/**
489
+ * @param {?} el
490
+ * @return {?}
491
+ */
492
+ (el) => this.sonIds.includes(el.id)));
493
+ config = {
494
+ datamartId: this.fatherId,
495
+ datamartViewId: this.sonIds.join(","),
496
+ views: datamartViewCode.map((/**
497
+ * @param {?} e
498
+ * @return {?}
499
+ */
500
+ (e) => {
501
+ return {
502
+ datamartViewId: e.id,
503
+ datamartViewCode: e.langCode,
504
+ };
505
+ })),
506
+ };
507
+ /** @type {?} */
508
+ const entityList = this.data.dashboard.entityType === this.entityType
509
+ ? this.DashboardPorletsService.entityList
510
+ : [];
511
+ /** @type {?} */
512
+ const dataObj = {
513
+ entityList,
514
+ accountId: this.userInfo.accountId,
515
+ userId: this.userInfo.id,
516
+ dashboardId: this.data.dashboardId,
517
+ dataMartTables: this.grandsonList,
518
+ entityType: this.entityType || this.data.dashboard.entityType,
519
+ config: JSON.stringify(config),
520
+ };
521
+ this.http.post(this.api.urlList.AddDataMartTables, dataObj, (/**
522
+ * @param {?} res
523
+ * @return {?}
524
+ */
525
+ (res) => {
526
+ if (res.status === "SUCCESS") {
527
+ /** @type {?} */
528
+ const _saveMessage = this.translation.DASHBOARD_PROPERTIES_SAVED ||
529
+ ".DASHBOARD_PROPERTIES_SAVED";
530
+ this.showToast(_saveMessage, "Success");
531
+ this.config.datamartViewId = this.sonIds.join(",");
532
+ this.config.views = [];
533
+ this.sonList.forEach((/**
534
+ * @param {?} item
535
+ * @return {?}
536
+ */
537
+ (item) => {
538
+ this.sonIds.forEach((/**
539
+ * @param {?} sonId
540
+ * @return {?}
541
+ */
542
+ (sonId) => {
543
+ if (item.id === sonId) {
544
+ this.config.views.push({
545
+ datamartViewCode: item.langCode,
546
+ datamartViewId: item.id,
547
+ });
548
+ }
549
+ }));
550
+ }));
551
+ this.data.dashboard.config = JSON.stringify(this.config);
552
+ if (this.data.edit) {
553
+ this.DashboardPorletsService.portletFields_Temp = {};
554
+ }
555
+ if (entityList &&
556
+ entityList.length &&
557
+ this.data.dashboard.entityType === this.entityType) {
558
+ this.pbf.triggerDashboardRefresh.next({
559
+ entityList,
560
+ id: this.data.dashboard.id,
561
+ });
562
+ this.dialogRef.close();
563
+ return;
564
+ }
565
+ this.DashboardPorletsService.GetDashboardV1(this.data.dashboardId, true, (/**
566
+ * @param {?} res
567
+ * @param {?=} portlets
568
+ * @return {?}
569
+ */
570
+ (res, portlets = []) => {
571
+ this.dashboardService.changelayout.next({
572
+ status: "true",
573
+ id: this.data.dashboard.id,
574
+ });
575
+ this.pbf.pageLoading = false;
576
+ this.dialogRef.close({
577
+ push_btn: false,
578
+ portlet: {},
579
+ portlets,
580
+ dashboard: res,
581
+ });
582
+ this.ref.markForCheck();
583
+ }));
584
+ }
585
+ else {
586
+ this.pbf.pageLoading = false;
587
+ this.pbf.pageLoading_.next(true);
588
+ this.ref.markForCheck();
589
+ /** @type {?} */
590
+ const _saveMessage = res.messages[0].message || "error";
591
+ this.showToast(_saveMessage, "Error");
592
+ }
593
+ }));
594
+ }
595
+ // toast msg
596
+ /**
597
+ * @param {?} msg
598
+ * @param {?} status
599
+ * @return {?}
600
+ */
601
+ showToast(msg, status) {
602
+ this.dialogService.showNotification(msg, {
603
+ status,
604
+ });
605
+ }
606
+ // 关闭弹窗
607
+ /**
608
+ * @return {?}
609
+ */
610
+ closePopup() {
611
+ this.dialogRef.close();
612
+ }
613
+ }
614
+ DataMartNewComponent.decorators = [
615
+ { type: Component, args: [{
616
+ selector: "kt-data-mart-new",
617
+ template: "<div class=\"new_mart_data_popup\">\r\n\t<div class=\"close_box\" (click)=\"closePopup()\">\r\n\t\t<img src=\"../../../../assets/img/dialog-close.svg\" class=\"deleteIcon\" />\r\n\t</div>\r\n\t<div class=\"popup_header\">\r\n\t\t<p class=\"popup_title\">{{ translation.DATA_MART || \".DATA_MART\" }}</p>\r\n\t\t<p class=\"popup_sub_title\">\r\n\t\t\t{{\r\n\t\t\t\ttranslation.PLS_SELECT_DATA_TABLES ||\r\n\t\t\t\t\t\".Please select data tables for this dashboard\"\r\n\t\t\t}}\r\n\t\t</p>\r\n\t</div>\r\n\t<div class=\"popup_main_container\">\r\n\t\t<div class=\"left_menu_container\" id=\"info-step-2\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"menu_item\"\r\n\t\t\t\t*ngFor=\"let item of fatherList\"\r\n\t\t\t\t[ngClass]=\"{ selectItem: fatherId === item.id }\"\r\n\t\t\t\t(click)=\"getdataMart(item, true)\"\r\n\t\t\t>\r\n\t\t\t\t<span class=\"activeLine\" *ngIf=\"fatherId === item.id\"></span>\r\n\t\t\t\t{{\r\n\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t: translation[item.langCode] || \".\" + item.langCode\r\n\t\t\t\t}}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"table_container\" id=\"info-step-3\" (click)=\"nextStep()\">\r\n\t\t\t<div class=\"table_content\">\r\n\t\t\t\t<div class=\"group_data\">\r\n\t\t\t\t\t<div class=\"table_header\">\r\n\t\t\t\t\t\t<div class=\"div_group\">\r\n\t\t\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t\t\t[disabled]=\"isSelectAllDisabled\"\r\n\t\t\t\t\t\t\t\t[color]=\"'primary'\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"selectedAll\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"selectAll($event)\"\r\n\t\t\t\t\t\t\t\t>{{\r\n\t\t\t\t\t\t\t\t\ttranslation[\"GROUP\"] || \".group\"\r\n\t\t\t\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"group_item__box\" *ngFor=\"let item of sonList\">\r\n\t\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t\t[disabled]=\"item.disabled\"\r\n\t\t\t\t\t\t\t[color]=\"'primary'\"\r\n\t\t\t\t\t\t\t[(ngModel)]=\"item.checked\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"handleItemChange(item, $event)\"\r\n\t\t\t\t\t\t\t>{{\r\n\t\t\t\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t\t\t\t: translation[item.langCode] ||\r\n\t\t\t\t\t\t\t\t\t \".\" + item.langCode\r\n\t\t\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t<ejs-tooltip\r\n\t\t\t\t\t\t\t*ngIf=\"item.langCode === 'FINANCIAL_FIGURES'\"\r\n\t\t\t\t\t\t\tid=\"tooltip\"\r\n\t\t\t\t\t\t\tcssClass=\"figures-tooltip\"\r\n\t\t\t\t\t\t\t[content]=\"\r\n\t\t\t\t\t\t\t\ttranslation.DASHBOARD_FINANCIAL_FIGURES_TOOLTIPS ||\r\n\t\t\t\t\t\t\t\t'Financial Figures can\u2019t be selected together with other groups.'\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span></span>\r\n\t\t\t\t\t\t</ejs-tooltip>\r\n\t\t\t\t\t\t<!-- <ejs-tooltip\r\n\t\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\t\tDashboardPorletsService.checkIsQ2Q(item.tables)\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\tcssClass=\"figures-tooltip\"\r\n\t\t\t\t\t\t\tcontent=\"Q2Q\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span></span>\r\n\t\t\t\t\t\t</ejs-tooltip> -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"table_data\">\r\n\t\t\t\t\t<div class=\"table_header\">\r\n\t\t\t\t\t\t<div class=\"data_table_box\">\r\n\t\t\t\t\t\t\t<div class=\"table_title\">\r\n\t\t\t\t\t\t\t\t{{ translation[\"DATA_TABLE\"] || \".Data Table\" }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"search_container\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[placeholder]=\"translation['SEARCH']\"\r\n\t\t\t\t\t\t\t\t\tclass=\"search_input\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"doFilter($event.target.value)\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t\t(keydown)=\"\r\n\t\t\t\t\t\t\t\t\t\tpbf.disabledInputEnterEvent($event)\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"table_main_content\" style=\"overflow: auto\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t*ngFor=\"let item of grandsonList\"\r\n\t\t\t\t\t\t\t[ngClass]=\"{ maxBox: grandsonList.length >= 11 }\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div *ngIf=\"!item.isHide\" class=\"table_data_item\">\r\n\t\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t\t\t\t\t: translation[item.langCode] ||\r\n\t\t\t\t\t\t\t\t\t\t \".\" + item.langCode\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"popup_footer\">\r\n\t\t<button class=\"cancle_btn popup_btn\" (click)=\"closePopup()\">\r\n\t\t\t{{ translation[\"CANCEL\"] || \".CANCEL\" }}\r\n\t\t</button>\r\n\t\t<button\r\n\t\t\tclass=\"sure_btn popup_btn\"\r\n\t\t\tid=\"info-step-5\"\r\n\t\t\t(click)=\"saveData()\"\r\n\t\t\t[disabled]=\"disabled || !entityType || grandsonList.length == 0\"\r\n\t\t>\r\n\t\t\t{{ translation[\"SAVE\"] || \".SAVE\" }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n",
618
+ styles: [".new_mart_data_popup{width:100%;position:relative;height:100%;padding:60px 74px;font-family:Arial;display:flex;flex-direction:column;overflow:hidden}.new_mart_data_popup .close_box{position:absolute;right:12px;top:12px;padding:10px;cursor:pointer}.new_mart_data_popup .close_box .deleteIcon{width:24px;height:24px}.new_mart_data_popup .popup_header{margin-bottom:32px}.new_mart_data_popup .popup_header .popup_title{font-size:24px;font-weight:700;text-align:center;color:#44566c;line-height:28px;margin-bottom:12px}.new_mart_data_popup .popup_header .popup_sub_title{font-size:13px;line-height:15px;color:#44566c;text-align:center}.new_mart_data_popup .popup_main_container{flex:1;width:100%;margin-bottom:40px;display:flex;overflow:hidden}.new_mart_data_popup .popup_main_container .left_menu_container{margin-right:30px;text-align:left}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item{line-height:16px;margin-bottom:22px;color:#002c4f;font-size:13px;position:relative;max-width:160px;word-wrap:break-word;cursor:pointer;padding-left:15px}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item.selectItem{font-weight:700}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item .activeLine{display:block;position:absolute;left:0;top:0;width:2px;height:17px;background-color:#0081ff}.new_mart_data_popup .popup_main_container .table_container{flex:1;height:100%;overflow:hidden;border:1px solid #eaedf0;display:flex;flex-direction:column}.new_mart_data_popup .popup_main_container .table_container .table_header{height:40px;background-color:#f8fafb;display:flex;align-items:center}.new_mart_data_popup .popup_main_container .table_container .table_header::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:700}.new_mart_data_popup .popup_main_container .table_container .table_header .div_group{min-width:200px;padding-left:20px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box{flex:1;display:flex;align-items:center;justify-content:space-between;padding-left:20px;padding-right:5px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .table_title{font-size:13px;font-weight:700;color:#44566c}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container{width:190px;height:30px;position:relative}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input{background-image:url(../../assets/img/search.svg);background-size:16px;background-repeat:no-repeat;background-position-y:center;background-position-x:10px;width:190px;height:30px;padding:7px 7px 6px 38px;border-radius:5px;background-color:#fff;transform:translateY(0);outline:0;border:none;font-weight:400!important;color:#44566c;font-size:12px!important}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-webkit-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-moz-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input:-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_content{display:flex;flex:1;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:400}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data{height:100%;border-right:1px solid #eaedf0}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box{display:flex;align-items:center;padding-left:20px;height:40px;border-bottom:1px solid #eaedf0;padding-right:10px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip{margin-left:5px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip span{display:inline-block;width:14px;height:14px;background-image:url(../../assets/img/dashboard_icon/information-grey.svg);background-size:contain;margin-top:5px;cursor:pointer}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data{flex:1;display:flex;height:100%;flex-direction:column;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_main_content{flex:1;overflow:auto}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .maxBox:last-child .table_data_item{border-bottom:none}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_data_item{padding-right:5px;padding-left:20px;height:40px;line-height:40px;font-size:13px;color:#44566c;border-bottom:1px solid #eaedf0}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox .mat-checkbox-background{border:1px solid #d1d1d1}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox.mat-checkbox-checked .mat-checkbox-background{border:none}.new_mart_data_popup .disabled-button{pointer-events:none;opacity:.5}.new_mart_data_popup .popup_footer{height:40px;display:flex;align-items:center;justify-content:center}.new_mart_data_popup .popup_footer .popup_btn{width:200px;height:40px;line-height:40px;border:none;border-radius:5px;text-align:center;font-size:13px;font-weight:700}.new_mart_data_popup .popup_footer .popup_btn.cancle_btn{background-color:#eaedf0;color:#979797;margin-right:20px}.new_mart_data_popup .popup_footer .popup_btn.sure_btn{color:#fff;background-color:#1364b3}"]
619
+ }] }
620
+ ];
621
+ /** @nocollapse */
622
+ DataMartNewComponent.ctorParameters = () => [
623
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
624
+ { type: MatDialogRef },
625
+ { type: DialogService },
626
+ { type: MatDialog },
627
+ { type: ApiList },
628
+ { type: DashboardService },
629
+ { type: DashboardPorletsService },
630
+ { type: ChangeDetectorRef },
631
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PBF_TOKEN,] }] },
632
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [API_SERVICE_TOKEN,] }] }
633
+ ];
634
+ if (false) {
635
+ /** @type {?} */
636
+ DataMartNewComponent.prototype.translation;
637
+ /** @type {?} */
638
+ DataMartNewComponent.prototype.userInfo;
639
+ /** @type {?} */
640
+ DataMartNewComponent.prototype.lang;
641
+ /** @type {?} */
642
+ DataMartNewComponent.prototype.entityType;
643
+ /** @type {?} */
644
+ DataMartNewComponent.prototype.config;
645
+ /** @type {?} */
646
+ DataMartNewComponent.prototype.fatherList;
647
+ /** @type {?} */
648
+ DataMartNewComponent.prototype.sonList;
649
+ /** @type {?} */
650
+ DataMartNewComponent.prototype.grandsonList;
651
+ /** @type {?} */
652
+ DataMartNewComponent.prototype.fatherId;
653
+ /** @type {?} */
654
+ DataMartNewComponent.prototype.sonIds;
655
+ /** @type {?} */
656
+ DataMartNewComponent.prototype.selectedAll;
657
+ /** @type {?} */
658
+ DataMartNewComponent.prototype.orginGrandData;
659
+ /** @type {?} */
660
+ DataMartNewComponent.prototype.disabled;
661
+ /** @type {?} */
662
+ DataMartNewComponent.prototype.cacheEntityType;
663
+ /** @type {?} */
664
+ DataMartNewComponent.prototype.isSelectAllDisabled;
665
+ /** @type {?} */
666
+ DataMartNewComponent.prototype.doFilter;
667
+ /** @type {?} */
668
+ DataMartNewComponent.prototype.data;
669
+ /** @type {?} */
670
+ DataMartNewComponent.prototype.dialogRef;
671
+ /**
672
+ * @type {?}
673
+ * @private
674
+ */
675
+ DataMartNewComponent.prototype.dialogService;
676
+ /** @type {?} */
677
+ DataMartNewComponent.prototype.dialog;
678
+ /**
679
+ * @type {?}
680
+ * @private
681
+ */
682
+ DataMartNewComponent.prototype.api;
683
+ /** @type {?} */
684
+ DataMartNewComponent.prototype.dashboardService;
685
+ /** @type {?} */
686
+ DataMartNewComponent.prototype.DashboardPorletsService;
687
+ /**
688
+ * @type {?}
689
+ * @private
690
+ */
691
+ DataMartNewComponent.prototype.ref;
692
+ /** @type {?} */
693
+ DataMartNewComponent.prototype.pbf;
694
+ /**
695
+ * @type {?}
696
+ * @private
697
+ */
698
+ DataMartNewComponent.prototype.http;
699
+ }
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04saUJBQWlCLEVBRWpCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9oRSxNQUFNLE9BQU8sb0JBQW9COzs7Ozs7Ozs7Ozs7O0lBa0IvQixZQUNrQyxJQUFTLEVBQ2xDLFNBQTZDLEVBQzVDLGFBQTRCLEVBQzdCLE1BQWlCLEVBQ2hCLEdBQVksRUFDYixnQkFBa0MsRUFDbEMsdUJBQWdELEVBQy9DLEdBQXNCLEVBQ1EsR0FBUSxFQUNDLElBQVM7UUFUeEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQVM7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Q3ZCLHVDQUFvQjs7SUFDcEIsNENBQXlCOztJQUN6Qix3Q0FBcUI7O0lBQ3JCLHNDQUFtQjs7SUFDbkIsMkNBQTJCOztJQUMzQiw4Q0FBMkI7O0lBQzNCLHdDQUF3Qjs7SUFDeEIsK0NBQTRCOztJQUM1QixtREFBbUM7O0lBaVRuQyx3Q0FBNkQ7O0lBOVMzRCxvQ0FBeUM7O0lBQ3pDLHlDQUFvRDs7Ozs7SUFDcEQsNkNBQW9DOztJQUNwQyxzQ0FBd0I7Ozs7O0lBQ3hCLG1DQUFvQjs7SUFDcEIsZ0RBQXlDOztJQUN6Qyx1REFBdUQ7Ozs7O0lBQ3ZELG1DQUE4Qjs7SUFDOUIsbUNBQThDOzs7OztJQUM5QyxvQ0FBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgeyBBcGlMaXN0IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQVBJX1NFUlZJQ0VfVE9LRU4sIFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwia3QtZGF0YS1tYXJ0LW5ld1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YU1hcnROZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHRyYW5zbGF0aW9uO1xyXG4gIHVzZXJJbmZvO1xyXG4gIGxhbmc7XHJcbiAgZW50aXR5VHlwZTtcclxuICBjb25maWc7XHJcblxyXG4gIHB1YmxpYyBmYXRoZXJMaXN0ID0gW107XHJcbiAgcHVibGljIHNvbkxpc3QgPSBbXTtcclxuICBwdWJsaWMgZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgcHVibGljIGZhdGhlcklkID0gXCJcIjtcclxuICBwdWJsaWMgc29uSWRzID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgcHVibGljIG9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNhY2hlRW50aXR5VHlwZSA9IFwiXCI7XHJcbiAgcHVibGljIGlzU2VsZWN0QWxsRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEYXRhTWFydE5ld0NvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGFwaTogQXBpTGlzdCxcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHVibGljIERhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwdWJsaWMgcGJmOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQSV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIGh0dHA6IGFueVxyXG4gICkge31cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gICAgdGhpcy5nZXRTb3VyY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcIm5leHRcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5mbygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gICAgdGhpcy51c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VySW5mb1wiKSk7XHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLnBiZi5nZXRMYW5ndWFnZVBhcmFtcygpO1xyXG4gICAgdGhpcy5jb25maWcgPVxyXG4gICAgICB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmRhc2hib2FyZFxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLmRhdGEuZGFzaGJvYXJkLmNvbmZpZylcclxuICAgICAgICA6IHt9O1xyXG4gIH1cclxuICBnZXRTb3VyY2VzKCkge1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZyxcclxuICAgICAgZGFzaGJvYXJkVmVyc2lvbjogMixcclxuICAgIH07XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuR2V0U291cmNlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc291cmNlc0RhdGFbdGhpcy5kYXRhLmRhc2hib2FyZC5pZF0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXRTb3VyY2VzUmVzID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZmF0aGVyTGlzdCA9IHJlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgIC8vIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5mYXRoZXJJZCA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQ7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcyA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkXHJcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWQuc3BsaXQoXCIsXCIpXHJcbiAgICAgICAgICAgIDogdGhpcy5jb25maWcudmlld3NcclxuICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy52aWV3cy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0YW1hcnRWaWV3SWQpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBsZXQgZGF0YXNvdXJjZSA9IHJlcy5maW5kKChlbCkgPT4gZWwuaWQgPT0gdGhpcy5mYXRoZXJJZCk7XHJcbiAgICAgICAgICBpZiAoZGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldGRhdGFNYXJ0KGRhdGFzb3VyY2UsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IHRoaXMuZW50aXR5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRhdGF2aWV3ID0gZGF0YXNvdXJjZS52aWV3cy5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuc29uSWRzLmluY2x1ZGVzKGVsLmlkKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1DaGFuZ2UoZGF0YXZpZXcsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQWxsU3RhdHVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKSB7XHJcbiAgICBsZXQgbnVtID0gMDtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChzb24pID0+IHtcclxuICAgICAgaWYgKHNvbi5jaGVja2VkICYmIHNvbi5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgbnVtKys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKG51bSA9PT0gdGhpcy5zb25MaXN0Lmxlbmd0aCAtIDEpIHRoaXMuc2VsZWN0ZWRBbGwgPSB0cnVlO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZXh0U3RlcCgpIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwibmV4dFwiKTtcclxuICB9XHJcblxyXG4gIGdldGRhdGFNYXJ0KGl0ZW0sIGlzSW5pdCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgPT09IGl0ZW0uZW50aXR5VHlwZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICFpc0luaXQgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IGl0ZW0uZW50aXR5VHlwZVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IF90aXRsZSA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5BUkVfWU9VX1NVUkVfVE9fQ0hBTkdFX0RBVEFfTUFSVCB8fFxyXG4gICAgICAgIFwiLkFyZSB5b3Ugc3VyZSB0byBjaGFuZ2UgZW50aXR5IHR5cGUgb2YgZGF0YSBtYXJ0PyBEYXNoYm9hcmQgd2lsbCBiZSByZXNldCBzaW5jZSBlbnRpdHkgdHlwZSBpcyBjaGFuZ2VkLlwiO1xyXG4gICAgICBjb25zdCBfbm8gPSB0aGlzLnRyYW5zbGF0aW9uLk5PIHx8IFwiLk5PXCI7XHJcbiAgICAgIGNvbnN0IF95ZXMgPSB0aGlzLnRyYW5zbGF0aW9uLllFUyB8fCBcIi5ZRVNcIjtcclxuICAgICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5sYXlvdXRVdGlsc1NlcnZpY2UuYWxlcnRFbGVtZW50KFxyXG4gICAgICAvLyBcdHRoaXMudHJhbnNsYXRpb24uV0FSTklORyB8fCBcIi5XQVJOSU5HXCIsXHJcbiAgICAgIC8vIFx0X3RpdGxlLFxyXG4gICAgICAvLyBcdF9ubyxcclxuICAgICAgLy8gXHRfeWVzLFxyXG4gICAgICAvLyBcdHRydWUsXHJcbiAgICAgIC8vIFx0dHJ1ZSxcclxuICAgICAgLy8gXHRcIjQ4MHB4XCIsXHJcbiAgICAgIC8vIFx0XCIzMjRweFwiXHJcbiAgICAgIC8vICk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29tbW9uRGlsYW9nKHtcclxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbi5XQVJOSU5HIHx8IFwiLldBUk5JTkdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogX3RpdGxlLFxyXG4gICAgICAgIHNhdmVCdG5MYWJlbDogX3llcyxcclxuICAgICAgICBjYW5jZWxCdG5MYWJlbDogX25vLFxyXG4gICAgICB9KTtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEZhdGhlcklkKGl0ZW0sIGlzSW5pdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpIHtcclxuICAgIHRoaXMuZmF0aGVySWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5lbnRpdHlUeXBlID0gaXRlbS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IGlzRmlndXJlc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgIGxldCBpc090aGVyQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGlzRmlndXJlc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgICBpc090aGVyQ2hlY2tlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGlzRGlzYWJsZWQgPVxyXG4gICAgICAgIChpc0ZpZ3VyZXNDaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgfHxcclxuICAgICAgICAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIGlzT3RoZXJDaGVja2VkKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIGNoZWNrZWQ6XHJcbiAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgICAgOiB0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSxcclxuICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgICAgICA6IGlzRGlzYWJsZWQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IGl0ZW0uZW50aXR5VHlwZTtcclxuXHJcbiAgICBpZiAoIWlzSW5pdCkge1xyXG4gICAgICB0aGlzLnNvbklkcyA9IFtdO1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gaXRlbS5lbnRpdHlUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtQ2hhbmdlKGRhdGEsIHZhbD86IGJvb2xlYW4pIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS50YWJsZXMpKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IGNoaWxkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBmaW5hbmNpYWwgZmlndXJlcyBjYW7igJl0IGJlIHNlbGVjdGVkIHRvZ2V0aGVyIHdpdGggb3RoZXIgZ3JvdXBzXHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhLnRhYmxlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhkYXRhLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMucHVzaChkYXRhLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmlkID09IGRhdGEuaWQpIHtcclxuICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgaXRlbS50YWJsZXMuZm9yRWFjaCgoc29uSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gc29uSXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIC4uLnNvbkl0ZW0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBkYXRhLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiZcclxuICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIlxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9iai5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvbklkcyA9IHRoaXMuc29uSWRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBkYXRhLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKTtcclxuICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhbmRzb25MaXN0KSk7XHJcbiAgICBpZiAoIXRoaXMucmVmW1wiZGVzdHJveWVkXCJdKSB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RBbGwodmFsKSB7XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5zb25JZHMgPSBbXTtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKHNvbkl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBzb25JdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5zb25JdGVtLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmFuZHNvbkxpc3QpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb0ZpbHRlciA9IHRocm90dGxlKCh2YWwpID0+IHRoaXMuZG9TZWFyY2godmFsKSwgMjAwKTtcclxuICBwdWJsaWMgZG9TZWFyY2godmFsKSB7XHJcbiAgICBsZXQgdGVtcExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JnaW5HcmFuZERhdGEpKTtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSB0ZW1wTGlzdC5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgICAgaXRlbS5sYW5nVmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWwudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gdGVtcExpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOS/neWtmOW8ueeql+etm+mAieaVsOaNrlxyXG4gIHNhdmVEYXRhKCkge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJjb21wbGV0ZVwiKTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBjb25maWc7XHJcbiAgICBsZXQgZGF0YW1hcnRWaWV3Q29kZSA9IHRoaXMuc29uTGlzdC5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICB0aGlzLnNvbklkcy5pbmNsdWRlcyhlbC5pZClcclxuICAgICk7XHJcbiAgICBjb25maWcgPSB7XHJcbiAgICAgIGRhdGFtYXJ0SWQ6IHRoaXMuZmF0aGVySWQsXHJcbiAgICAgIGRhdGFtYXJ0Vmlld0lkOiB0aGlzLnNvbklkcy5qb2luKFwiLFwiKSxcclxuICAgICAgdmlld3M6IGRhdGFtYXJ0Vmlld0NvZGUubWFwKChlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBlLmlkLFxyXG4gICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogZS5sYW5nQ29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlMaXN0ID1cclxuICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICA/IHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZW50aXR5TGlzdFxyXG4gICAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgZW50aXR5TGlzdCxcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLnVzZXJJbmZvLmlkLFxyXG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy5kYXRhLmRhc2hib2FyZElkLFxyXG4gICAgICBkYXRhTWFydFRhYmxlczogdGhpcy5ncmFuZHNvbkxpc3QsXHJcbiAgICAgIGVudGl0eVR5cGU6IHRoaXMuZW50aXR5VHlwZSB8fCB0aGlzLmRhdGEuZGFzaGJvYXJkLmVudGl0eVR5cGUsXHJcbiAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5BZGREYXRhTWFydFRhYmxlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICBjb25zdCBfc2F2ZU1lc3NhZ2UgPVxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5EQVNIQk9BUkRfUFJPUEVSVElFU19TQVZFRCB8fFxyXG4gICAgICAgICAgXCIuREFTSEJPQVJEX1BST1BFUlRJRVNfU0FWRURcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiU3VjY2Vzc1wiKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZCA9IHRoaXMuc29uSWRzLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLnZpZXdzID0gW107XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHRoaXMuc29uSWRzLmZvckVhY2goKHNvbklkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBzb25JZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnZpZXdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogaXRlbS5sYW5nQ29kZSxcclxuICAgICAgICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXRGaWVsZHNfVGVtcCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbnRpdHlMaXN0ICYmXHJcbiAgICAgICAgICBlbnRpdHlMaXN0Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucGJmLnRyaWdnZXJEYXNoYm9hcmRSZWZyZXNoLm5leHQoe1xyXG4gICAgICAgICAgICBlbnRpdHlMaXN0LFxyXG4gICAgICAgICAgICBpZDogdGhpcy5kYXRhLmRhc2hib2FyZC5pZCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RGFzaGJvYXJkVjEoXHJcbiAgICAgICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkSWQsXHJcbiAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgKHJlcywgcG9ydGxldHMgPSBbXSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2hhbmdlbGF5b3V0Lm5leHQoe1xyXG4gICAgICAgICAgICAgIHN0YXR1czogXCJ0cnVlXCIsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgICAgICAgICAgcHVzaF9idG46IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHBvcnRsZXQ6IHt9LFxyXG4gICAgICAgICAgICAgIHBvcnRsZXRzLFxyXG4gICAgICAgICAgICAgIGRhc2hib2FyZDogcmVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIGNvbnN0IF9zYXZlTWVzc2FnZSA9IHJlcy5tZXNzYWdlc1swXS5tZXNzYWdlIHx8IFwiZXJyb3JcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiRXJyb3JcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyB0b2FzdCBtc2dcclxuICBwdWJsaWMgc2hvd1RvYXN0KG1zZywgc3RhdHVzOiBcIlN1Y2Nlc3NcIiB8IFwiRXJyb3JcIikge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24obXNnLCB7XHJcbiAgICAgIHN0YXR1cyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyDlhbPpl63lvLnnqpdcclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==