@resolveio/client-lib-core 0.0.1

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 (350) hide show
  1. package/esm2020/lib/account-manager.service.mjs +213 -0
  2. package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
  3. package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
  4. package/esm2020/lib/auth/auth.service.mjs +241 -0
  5. package/esm2020/lib/auth/auth365.component.mjs +44 -0
  6. package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
  7. package/esm2020/lib/auth/enroll.component.mjs +81 -0
  8. package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
  9. package/esm2020/lib/core.component.mjs +488 -0
  10. package/esm2020/lib/core.module.mjs +179 -0
  11. package/esm2020/lib/core.service.mjs +96 -0
  12. package/esm2020/lib/directive/focus.mjs +22 -0
  13. package/esm2020/lib/directive/scroll.mjs +55 -0
  14. package/esm2020/lib/home/about-us.component.mjs +34 -0
  15. package/esm2020/lib/home/contact-us.component.mjs +57 -0
  16. package/esm2020/lib/home/demo.component.mjs +59 -0
  17. package/esm2020/lib/home/home.component.mjs +105 -0
  18. package/esm2020/lib/home/home.module.mjs +50 -0
  19. package/esm2020/lib/logger/logger.component.mjs +221 -0
  20. package/esm2020/lib/models/app-status.model.mjs +2 -0
  21. package/esm2020/lib/models/collection-document.model.mjs +2 -0
  22. package/esm2020/lib/models/cron-job.model.mjs +2 -0
  23. package/esm2020/lib/models/dialog.model.mjs +2 -0
  24. package/esm2020/lib/models/file.model.mjs +2 -0
  25. package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
  26. package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
  27. package/esm2020/lib/models/pagination.model.mjs +2 -0
  28. package/esm2020/lib/models/permission.model.mjs +2 -0
  29. package/esm2020/lib/models/select-data-label.model.mjs +2 -0
  30. package/esm2020/lib/models/subscription.model.mjs +2 -0
  31. package/esm2020/lib/models/support-ticket.model.mjs +2 -0
  32. package/esm2020/lib/models/user-group.model.mjs +2 -0
  33. package/esm2020/lib/models/user.model.mjs +2 -0
  34. package/esm2020/lib/offline-db.mjs +519 -0
  35. package/esm2020/lib/offline-manager.service.mjs +107 -0
  36. package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
  37. package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
  38. package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
  39. package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
  40. package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
  41. package/esm2020/lib/pipes/pipe.module.mjs +54 -0
  42. package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
  43. package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
  44. package/esm2020/lib/resolveio-class.mjs +41 -0
  45. package/esm2020/lib/shared/shared.module.mjs +91 -0
  46. package/esm2020/lib/socket-manager.service.mjs +360 -0
  47. package/esm2020/lib/socket.service.mjs +129 -0
  48. package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
  49. package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
  50. package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
  51. package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
  52. package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
  53. package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
  54. package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
  55. package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
  56. package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
  57. package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
  58. package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
  59. package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
  60. package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
  61. package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
  62. package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
  63. package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
  64. package/esm2020/lib/token-manager.service.mjs +24 -0
  65. package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
  66. package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
  67. package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
  68. package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
  69. package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
  70. package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
  71. package/esm2020/lib/util/action-name.helper.mjs +9 -0
  72. package/esm2020/lib/util/aws.service.mjs +79 -0
  73. package/esm2020/lib/util/common.helper.mjs +140 -0
  74. package/esm2020/lib/util/validation.service.mjs +177 -0
  75. package/esm2020/lib/util/window-resize.service.mjs +24 -0
  76. package/esm2020/lib/util/window.service.mjs +16 -0
  77. package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
  78. package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
  79. package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
  80. package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
  81. package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
  82. package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
  83. package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
  84. package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
  85. package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
  86. package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
  87. package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
  88. package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
  89. package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
  90. package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
  91. package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
  92. package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
  93. package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
  94. package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
  95. package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
  96. package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
  97. package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
  98. package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
  99. package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
  100. package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
  101. package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
  102. package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
  103. package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
  104. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
  105. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
  106. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
  107. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
  108. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
  109. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
  110. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
  111. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
  112. package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
  113. package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
  114. package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
  115. package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
  116. package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
  117. package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
  118. package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
  119. package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
  120. package/esm2020/public_api.mjs +109 -0
  121. package/esm2020/resolveio-client-lib-core.mjs +5 -0
  122. package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
  123. package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
  124. package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
  125. package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
  126. package/lib/account-manager.service.d.ts +42 -0
  127. package/lib/auth/auth-guard.service.d.ts +25 -0
  128. package/lib/auth/auth-permissions.service.d.ts +10 -0
  129. package/lib/auth/auth.service.d.ts +29 -0
  130. package/lib/auth/auth365.component.d.ts +20 -0
  131. package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
  132. package/lib/auth/enroll.component.d.ts +28 -0
  133. package/lib/auth/forgot-password.component.d.ts +28 -0
  134. package/lib/core.component.d.ts +69 -0
  135. package/lib/core.module.d.ts +32 -0
  136. package/lib/core.service.d.ts +53 -0
  137. package/lib/directive/focus.d.ts +10 -0
  138. package/lib/directive/scroll.d.ts +20 -0
  139. package/lib/home/about-us.component.d.ts +15 -0
  140. package/lib/home/contact-us.component.d.ts +20 -0
  141. package/lib/home/demo.component.d.ts +25 -0
  142. package/lib/home/home.component.d.ts +33 -0
  143. package/lib/home/home.module.d.ts +13 -0
  144. package/lib/logger/logger.component.d.ts +37 -0
  145. package/lib/models/app-status.model.d.ts +4 -0
  146. package/lib/models/collection-document.model.d.ts +6 -0
  147. package/lib/models/cron-job.model.d.ts +13 -0
  148. package/lib/models/dialog.model.d.ts +18 -0
  149. package/lib/models/file.model.d.ts +9 -0
  150. package/lib/models/log-method-latency.model.d.ts +7 -0
  151. package/lib/models/navbar-main-tab.model.d.ts +14 -0
  152. package/lib/models/pagination.model.d.ts +17 -0
  153. package/lib/models/permission.model.d.ts +13 -0
  154. package/lib/models/select-data-label.model.d.ts +9 -0
  155. package/lib/models/subscription.model.d.ts +19 -0
  156. package/lib/models/support-ticket.model.d.ts +71 -0
  157. package/lib/models/user-group.model.d.ts +19 -0
  158. package/lib/models/user.model.d.ts +70 -0
  159. package/lib/offline-db.d.ts +28 -0
  160. package/lib/offline-manager.service.d.ts +23 -0
  161. package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
  162. package/lib/pipes/filter.pipe.d.ts +12 -0
  163. package/lib/pipes/json-parse.pipe.d.ts +7 -0
  164. package/lib/pipes/minus-currency.pipe.d.ts +7 -0
  165. package/lib/pipes/phone.pipe.d.ts +7 -0
  166. package/lib/pipes/pipe.module.d.ts +13 -0
  167. package/lib/pipes/reverse-list.pipe.d.ts +6 -0
  168. package/lib/pipes/titlecase.pipe.d.ts +7 -0
  169. package/lib/resolveio-class.d.ts +26 -0
  170. package/lib/shared/shared.module.d.ts +16 -0
  171. package/lib/socket-manager.service.d.ts +33 -0
  172. package/lib/socket.service.d.ts +33 -0
  173. package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
  174. package/lib/standard-pages/faq/faq.component.d.ts +17 -0
  175. package/lib/standard-pages/features/features.component.d.ts +12 -0
  176. package/lib/standard-pages/home/home.component.d.ts +14 -0
  177. package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
  178. package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
  179. package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
  180. package/lib/standard-pages/standard-pages.module.d.ts +17 -0
  181. package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
  182. package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
  183. package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
  184. package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
  185. package/lib/support-ticket/support-ticket.component.d.ts +20 -0
  186. package/lib/support-ticket/support-ticket.module.d.ts +16 -0
  187. package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
  188. package/lib/support-ticket/support-ticket.service.d.ts +9 -0
  189. package/lib/token-manager.service.d.ts +11 -0
  190. package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
  191. package/lib/user-settings/user-settings.component.d.ts +20 -0
  192. package/lib/user-settings/user-settings.module.d.ts +15 -0
  193. package/lib/user-settings/user-settings.permission.d.ts +2 -0
  194. package/lib/user-settings/user-settings.routing.d.ts +3 -0
  195. package/lib/user-settings/user-settings.service.d.ts +9 -0
  196. package/lib/util/action-name.helper.d.ts +1 -0
  197. package/lib/util/aws.service.d.ts +16 -0
  198. package/lib/util/common.helper.d.ts +12 -0
  199. package/lib/util/validation.service.d.ts +85 -0
  200. package/lib/util/window-resize.service.d.ts +12 -0
  201. package/lib/util/window.service.d.ts +6 -0
  202. package/lib/widgets/alert/alert.model.d.ts +1 -0
  203. package/lib/widgets/alert/alert.service.d.ts +11 -0
  204. package/lib/widgets/chartjs/chart.component.d.ts +22 -0
  205. package/lib/widgets/chartjs/chart.module.d.ts +8 -0
  206. package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
  207. package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
  208. package/lib/widgets/data-table/data-table.component.d.ts +23 -0
  209. package/lib/widgets/data-table/data-table.model.d.ts +13 -0
  210. package/lib/widgets/data-table/data-table.module.d.ts +12 -0
  211. package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
  212. package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
  213. package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
  214. package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
  215. package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
  216. package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
  217. package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
  218. package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
  219. package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
  220. package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
  221. package/lib/widgets/dialog/dialog.service.d.ts +18 -0
  222. package/lib/widgets/file/file-upload.component.d.ts +49 -0
  223. package/lib/widgets/file/file-upload.module.d.ts +14 -0
  224. package/lib/widgets/form-button/form-button.component.d.ts +14 -0
  225. package/lib/widgets/form-button/form-button.module.d.ts +9 -0
  226. package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
  227. package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
  228. package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
  229. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
  230. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
  231. package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
  232. package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
  233. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
  234. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
  235. package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
  236. package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
  237. package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
  238. package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
  239. package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
  240. package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
  241. package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
  242. package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
  243. package/lib/widgets/user-role/user-role.component.d.ts +10 -0
  244. package/lib/widgets/user-role/user-role.module.d.ts +8 -0
  245. package/package.json +72 -0
  246. package/public_api.d.ts +105 -0
  247. package/resolveio-client-lib-core.d.ts +5 -0
  248. package/src/assets/css/font-awesome.css +2338 -0
  249. package/src/assets/css/home-page-layout.css +7221 -0
  250. package/src/assets/css/home-page-theme.css +1157 -0
  251. package/src/assets/css/leaflet.css +629 -0
  252. package/src/assets/css/owl.carousel.min.css +1 -0
  253. package/src/assets/css/owl.theme.min.css +1 -0
  254. package/src/assets/css/style.css +1283 -0
  255. package/src/assets/css/tablet.css +18 -0
  256. package/src/assets/css/toastr.css +192 -0
  257. package/src/assets/images/ResolveIO.png +0 -0
  258. package/src/assets/images/ResolveIO_white.png +0 -0
  259. package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
  260. package/src/assets/images/contactus/cont-comp.png +0 -0
  261. package/src/assets/images/contactus/cont-mail.png +0 -0
  262. package/src/assets/images/contactus/cont-phone.png +0 -0
  263. package/src/assets/images/contactus/form-img.png +0 -0
  264. package/src/assets/images/contactus/user.png +0 -0
  265. package/src/assets/images/faq/Faq-form.png +0 -0
  266. package/src/assets/images/faq/clientlogo1.jpg +0 -0
  267. package/src/assets/images/faq/clientlogo2.jpg +0 -0
  268. package/src/assets/images/faq/clientlogo3.jpg +0 -0
  269. package/src/assets/images/faq/clientlogo4.jpg +0 -0
  270. package/src/assets/images/faq/clientlogo5.jpg +0 -0
  271. package/src/assets/images/faq/faq_banner copy.jpg +0 -0
  272. package/src/assets/images/faq/faq_banner.jpg +0 -0
  273. package/src/assets/images/faq/faqwomen.jpg +0 -0
  274. package/src/assets/images/faq/mail-input.png +0 -0
  275. package/src/assets/images/faq/user-input.png +0 -0
  276. package/src/assets/images/favicon-32x32.png +0 -0
  277. package/src/assets/images/features/future-bnr.jpg +0 -0
  278. package/src/assets/images/features/polygon.png +0 -0
  279. package/src/assets/images/home/banner-1.jpg +0 -0
  280. package/src/assets/images/home/booking.png +0 -0
  281. package/src/assets/images/home/client.jpg +0 -0
  282. package/src/assets/images/home/client2.jpg +0 -0
  283. package/src/assets/images/home/clientlogo1.jpg +0 -0
  284. package/src/assets/images/home/clientlogo2.jpg +0 -0
  285. package/src/assets/images/home/clientlogo3.jpg +0 -0
  286. package/src/assets/images/home/clientlogo4.jpg +0 -0
  287. package/src/assets/images/home/clientlogo5.jpg +0 -0
  288. package/src/assets/images/home/easy_invoicing.png +0 -0
  289. package/src/assets/images/home/inventory.png +0 -0
  290. package/src/assets/images/home/manage.png +0 -0
  291. package/src/assets/images/home/more.png +0 -0
  292. package/src/assets/images/home/order_management.png +0 -0
  293. package/src/assets/images/home/plan.png +0 -0
  294. package/src/assets/images/home-page/AjaxLoader.gif +0 -0
  295. package/src/assets/images/home-page/ResolveIO_white.png +0 -0
  296. package/src/assets/images/home-page/abt_thumb.png +0 -0
  297. package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
  298. package/src/assets/images/home-page/arrow_btn.png +0 -0
  299. package/src/assets/images/home-page/banner_thumb.png +0 -0
  300. package/src/assets/images/home-page/blank.gif +0 -0
  301. package/src/assets/images/home-page/close_icon.png +0 -0
  302. package/src/assets/images/home-page/contact_bg.jpg +0 -0
  303. package/src/assets/images/home-page/email_icon.png +0 -0
  304. package/src/assets/images/home-page/fancybox_loading.gif +0 -0
  305. package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
  306. package/src/assets/images/home-page/fancybox_overlay.png +0 -0
  307. package/src/assets/images/home-page/fancybox_sprite.png +0 -0
  308. package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
  309. package/src/assets/images/home-page/header_center_after.png +0 -0
  310. package/src/assets/images/home-page/header_left_after.png +0 -0
  311. package/src/assets/images/home-page/home_banner_1.jpg +0 -0
  312. package/src/assets/images/home-page/logo.png +0 -0
  313. package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
  314. package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
  315. package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
  316. package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
  317. package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
  318. package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
  319. package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
  320. package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
  321. package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
  322. package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
  323. package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
  324. package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
  325. package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
  326. package/src/assets/images/home-page/password_icon.png +0 -0
  327. package/src/assets/images/home-page/phone_icon.png +0 -0
  328. package/src/assets/images/home-page/software_icon_1.png +0 -0
  329. package/src/assets/images/home-page/software_icon_2.png +0 -0
  330. package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
  331. package/src/assets/images/home-page/software_thumb.png +0 -0
  332. package/src/assets/images/home-page/white_arrow_btn.png +0 -0
  333. package/src/assets/images/howitwork/add-booking.png +0 -0
  334. package/src/assets/images/howitwork/add-order.png +0 -0
  335. package/src/assets/images/howitwork/add-stuff.png +0 -0
  336. package/src/assets/images/howitwork/how_banner.jpg +0 -0
  337. package/src/assets/images/howitwork/howimg1.png +0 -0
  338. package/src/assets/images/howitwork/howimg2.png +0 -0
  339. package/src/assets/images/howitwork/step-check.png +0 -0
  340. package/src/assets/images/loginsignup/formimg.jpg +0 -0
  341. package/src/assets/images/loginsignup/login-logo.png +0 -0
  342. package/src/assets/images/owl.video.play.png +0 -0
  343. package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
  344. package/src/assets/images/pricing/clientlogo1.jpg +0 -0
  345. package/src/assets/images/pricing/clientlogo2.jpg +0 -0
  346. package/src/assets/images/pricing/clientlogo3.jpg +0 -0
  347. package/src/assets/images/pricing/clientlogo4.jpg +0 -0
  348. package/src/assets/images/pricing/clientlogo5.jpg +0 -0
  349. package/src/assets/images/pricing/info-ico.png +0 -0
  350. package/src/assets/scss/toastr.scss +201 -0
@@ -0,0 +1,57 @@
1
+ import { Component } from '@angular/core';
2
+ import { UserSettingsService } from './user-settings.service';
3
+ import { UserSettingsModulePermission } from './user-settings.permission';
4
+ import { ProviderService, BaseComponent } from '../resolveio-class';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./user-settings.service";
7
+ import * as i2 from "../resolveio-class";
8
+ import * as i3 from "@angular/router";
9
+ export class UserSettingsComponent extends BaseComponent {
10
+ constructor(_us, _services) {
11
+ super(_services);
12
+ this._us = _us;
13
+ this._services = _services;
14
+ }
15
+ ngOnInit() {
16
+ this.selectedUserSettings$ = this._us.selectedUser.subscribe(val => this.selectedUserSettingsChanged(val));
17
+ }
18
+ ngOnDestroy() {
19
+ this._us.setSelectedUser('0');
20
+ this.selectedUserSettings$.unsubscribe();
21
+ }
22
+ selectedUserSettingsChanged(id) {
23
+ this.setUserSettingsMenuData();
24
+ }
25
+ setUserSettingsMenuData(id, user) {
26
+ let tabs = [];
27
+ UserSettingsModulePermission.views.forEach(view => {
28
+ if (this._services._account.isUserInView(view.link) || this._services._account.isUserSuperAdmin()) {
29
+ switch (view.link) {
30
+ case '/user-settings/settings':
31
+ tabs.push({ link: '/user-settings/settings', params: null, label: 'Settings' });
32
+ break;
33
+ default:
34
+ break;
35
+ }
36
+ }
37
+ });
38
+ this.menuData = {
39
+ title: 'User Settings',
40
+ module: 'User Settings',
41
+ description_name: 'User: ',
42
+ description: user ? user.fullname : '',
43
+ tabs: tabs
44
+ };
45
+ this._services._app.setNavbarModuleData(this.menuData);
46
+ }
47
+ }
48
+ UserSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsComponent, deps: [{ token: i1.UserSettingsService }, { token: i2.ProviderService }], target: i0.ɵɵFactoryTarget.Component });
49
+ UserSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: UserSettingsComponent, selector: "ng-component", providers: [ProviderService], usesInheritance: true, ngImport: i0, template: '<router-outlet></router-outlet>', isInline: true, directives: [{ type: i3.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsComponent, decorators: [{
51
+ type: Component,
52
+ args: [{
53
+ providers: [ProviderService],
54
+ template: '<router-outlet></router-outlet>'
55
+ }]
56
+ }], ctorParameters: function () { return [{ type: i1.UserSettingsService }, { type: i2.ProviderService }]; } });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQVFwRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsYUFBYTtJQU12RCxZQUFvQixHQUF3QixFQUFVLFNBQTBCO1FBQy9FLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQURFLFFBQUcsR0FBSCxHQUFHLENBQXFCO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBaUI7SUFFaEYsQ0FBQztJQUVELFFBQVE7UUFDUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUMzRCxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxFQUFVO1FBQ3JDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxFQUFXLEVBQUUsSUFBZ0I7UUFDcEQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRWQsNEJBQTRCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtnQkFDbEcsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNsQixLQUFLLHlCQUF5Qjt3QkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO3dCQUM5RSxNQUFNO29CQUNQO3dCQUNDLE1BQU07aUJBQ1A7YUFDRDtRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNmLEtBQUssRUFBRSxlQUFlO1lBQ3RCLE1BQU0sRUFBRSxlQUFlO1lBQ3ZCLGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0QyxJQUFJLEVBQUUsSUFBSTtTQUNWLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7a0hBbERXLHFCQUFxQjtzR0FBckIscUJBQXFCLHVDQUp0QixDQUFDLGVBQWUsQ0FBQyxpREFDbEIsaUNBQWlDOzJGQUcvQixxQkFBcUI7a0JBTGpDLFNBQVM7bUJBQUM7b0JBQ1YsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDO29CQUM1QixRQUFRLEVBQUUsaUNBQWlDO2lCQUMzQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZiYXJNb2RlbCB9IGZyb20gJy4uL3dpZGdldHMvbmF2YmFyLW1vZHVsZS9uYXZiYXItbW9kdWxlLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc01vZHVsZVBlcm1pc3Npb24gfSBmcm9tICcuL3VzZXItc2V0dGluZ3MucGVybWlzc2lvbic7XG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UsIEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9yZXNvbHZlaW8tY2xhc3MnO1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcblx0cHJvdmlkZXJzOiBbUHJvdmlkZXJTZXJ2aWNlXSxcblx0dGVtcGxhdGU6ICc8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+J1xufSlcblxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5nc0NvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7IFxuXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzJDogU3Vic2NyaXB0aW9uO1xuXG5cdG1lbnVEYXRhOiBOYXZiYXJNb2RlbDtcblx0XG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3VzOiBVc2VyU2V0dGluZ3NTZXJ2aWNlLCBwcml2YXRlIF9zZXJ2aWNlczogUHJvdmlkZXJTZXJ2aWNlKSB7XG5cdFx0c3VwZXIoX3NlcnZpY2VzKTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc2VsZWN0ZWRVc2VyU2V0dGluZ3MkID0gdGhpcy5fdXMuc2VsZWN0ZWRVc2VyLnN1YnNjcmliZShcblx0XHRcdHZhbCA9PiB0aGlzLnNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZCh2YWwpXG5cdFx0KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuX3VzLnNldFNlbGVjdGVkVXNlcignMCcpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZFVzZXJTZXR0aW5ncyQudW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdHNlbGVjdGVkVXNlclNldHRpbmdzQ2hhbmdlZChpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZXRVc2VyU2V0dGluZ3NNZW51RGF0YSgpO1xuXHR9XG5cblx0c2V0VXNlclNldHRpbmdzTWVudURhdGEoaWQ/OiBzdHJpbmcsIHVzZXI/OiBVc2VyTW9kZWwpIHtcblx0XHRsZXQgdGFicyA9IFtdO1xuXG5cdFx0VXNlclNldHRpbmdzTW9kdWxlUGVybWlzc2lvbi52aWV3cy5mb3JFYWNoKHZpZXcgPT4ge1xuXHRcdFx0aWYgKHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlckluVmlldyh2aWV3LmxpbmspIHx8IHRoaXMuX3NlcnZpY2VzLl9hY2NvdW50LmlzVXNlclN1cGVyQWRtaW4oKSkge1xuXHRcdFx0XHRzd2l0Y2ggKHZpZXcubGluaykge1xuXHRcdFx0XHRcdGNhc2UgJy91c2VyLXNldHRpbmdzL3NldHRpbmdzJzogXG5cdFx0XHRcdFx0XHR0YWJzLnB1c2goe2xpbms6ICcvdXNlci1zZXR0aW5ncy9zZXR0aW5ncycsIHBhcmFtczogbnVsbCwgbGFiZWw6ICdTZXR0aW5ncyd9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZW51RGF0YSA9IHtcblx0XHRcdHRpdGxlOiAnVXNlciBTZXR0aW5ncycsXG5cdFx0XHRtb2R1bGU6ICdVc2VyIFNldHRpbmdzJyxcblx0XHRcdGRlc2NyaXB0aW9uX25hbWU6ICdVc2VyOiAnLFxuXHRcdFx0ZGVzY3JpcHRpb246IHVzZXIgPyB1c2VyLmZ1bGxuYW1lIDogJycsXG5cdFx0XHR0YWJzOiB0YWJzXG5cdFx0fTtcblxuXHRcdHRoaXMuX3NlcnZpY2VzLl9hcHAuc2V0TmF2YmFyTW9kdWxlRGF0YSh0aGlzLm1lbnVEYXRhKTtcblx0fVxufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { SharedModule } from '../shared/shared.module';
3
+ import { UserSettingsRouting } from './user-settings.routing';
4
+ import { UserSettingsComponent } from './user-settings.component';
5
+ import { UserSettingsService } from './user-settings.service';
6
+ import { DatatableModule } from '../widgets/data-table/data-table.module';
7
+ import { FileModule } from '../widgets/file/file-upload.module';
8
+ import { TreeNgxModule } from 'tree-ngx';
9
+ import { CKEditorModule } from '@ckeditor/ckeditor5-angular';
10
+ import { UsersSettingsComponent } from './settings/users-settings.component';
11
+ import { CommonModule } from '@angular/common';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/router";
14
+ // import { TourNgBootstrapModule } from '../widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module';
15
+ export class UserSettingsModule {
16
+ }
17
+ UserSettingsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
+ UserSettingsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, declarations: [UserSettingsComponent,
19
+ UsersSettingsComponent], imports: [CommonModule,
20
+ SharedModule, i1.RouterModule, DatatableModule,
21
+ FileModule,
22
+ TreeNgxModule,
23
+ CKEditorModule] });
24
+ UserSettingsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, providers: [
25
+ UserSettingsService
26
+ ], imports: [[
27
+ CommonModule,
28
+ SharedModule,
29
+ UserSettingsRouting,
30
+ DatatableModule,
31
+ FileModule,
32
+ TreeNgxModule,
33
+ CKEditorModule,
34
+ // TourNgBootstrapModule
35
+ ]] });
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsModule, decorators: [{
37
+ type: NgModule,
38
+ args: [{
39
+ imports: [
40
+ CommonModule,
41
+ SharedModule,
42
+ UserSettingsRouting,
43
+ DatatableModule,
44
+ FileModule,
45
+ TreeNgxModule,
46
+ CKEditorModule,
47
+ // TourNgBootstrapModule
48
+ ],
49
+ declarations: [
50
+ UserSettingsComponent,
51
+ UsersSettingsComponent
52
+ ],
53
+ providers: [
54
+ UserSettingsService
55
+ ]
56
+ }]
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXNlci1zZXR0aW5ncy91c2VyLXNldHRpbmdzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBQy9DLGdHQUFnRztBQXFCaEcsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQVA3QixxQkFBcUI7UUFDckIsc0JBQXNCLGFBWHRCLFlBQVk7UUFDWixZQUFZLG1CQUVaLGVBQWU7UUFDZixVQUFVO1FBQ1YsYUFBYTtRQUNiLGNBQWM7Z0hBV0gsa0JBQWtCLGFBSm5CO1FBQ1YsbUJBQW1CO0tBQ25CLFlBaEJRO1lBQ1IsWUFBWTtZQUNaLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLFVBQVU7WUFDVixhQUFhO1lBQ2IsY0FBYztZQUNkLHdCQUF3QjtTQUN4QjsyRkFTVyxrQkFBa0I7a0JBbkI5QixRQUFRO21CQUFDO29CQUNULE9BQU8sRUFBRTt3QkFDUixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLHdCQUF3QjtxQkFDeEI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNiLHFCQUFxQjt3QkFDckIsc0JBQXNCO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1YsbUJBQW1CO3FCQUNuQjtpQkFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5cbmltcG9ydCB7IFVzZXJTZXR0aW5nc1JvdXRpbmcgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Mucm91dGluZyc7XG5pbXBvcnQgeyBVc2VyU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3VzZXItc2V0dGluZ3MuY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhdGFibGVNb2R1bGUgfSBmcm9tICcuLi93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZU1vZHVsZSB9IGZyb20gJy4uL3dpZGdldHMvZmlsZS9maWxlLXVwbG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVHJlZU5neE1vZHVsZSB9IGZyb20gJ3RyZWUtbmd4JztcbmltcG9ydCB7IENLRWRpdG9yTW9kdWxlIH0gZnJvbSAnQGNrZWRpdG9yL2NrZWRpdG9yNS1hbmd1bGFyJztcbmltcG9ydCB7IFVzZXJzU2V0dGluZ3NDb21wb25lbnQgfSBmcm9tICcuL3NldHRpbmdzL3VzZXJzLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuLy8gaW1wb3J0IHsgVG91ck5nQm9vdHN0cmFwTW9kdWxlIH0gZnJvbSAnLi4vd2lkZ2V0cy9uZ3gtdG91ci1uZy1ib290c3RyYXAvbmctYm9vdHN0cmFwLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG5cdGltcG9ydHM6IFtcblx0XHRDb21tb25Nb2R1bGUsXG5cdFx0U2hhcmVkTW9kdWxlLFxuXHRcdFVzZXJTZXR0aW5nc1JvdXRpbmcsXG5cdFx0RGF0YXRhYmxlTW9kdWxlLFxuXHRcdEZpbGVNb2R1bGUsXG5cdFx0VHJlZU5neE1vZHVsZSxcblx0XHRDS0VkaXRvck1vZHVsZSxcblx0XHQvLyBUb3VyTmdCb290c3RyYXBNb2R1bGVcblx0XSxcblx0ZGVjbGFyYXRpb25zOiBbIFxuXHRcdFVzZXJTZXR0aW5nc0NvbXBvbmVudCxcblx0XHRVc2Vyc1NldHRpbmdzQ29tcG9uZW50XG5cdF0sXG5cdHByb3ZpZGVyczogW1xuXHRcdFVzZXJTZXR0aW5nc1NlcnZpY2Vcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,10 @@
1
+ export const UserSettingsModulePermission = {
2
+ name: 'user-settings',
3
+ views: [
4
+ { link: '/user-settings/settings', label: 'Settings', has_parameter: false }
5
+ ],
6
+ approval: {
7
+ type: 'user-settings'
8
+ }
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5wZXJtaXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEwQjtJQUNsRSxJQUFJLEVBQUUsZUFBZTtJQUNyQixLQUFLLEVBQUU7UUFDTixFQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUM7S0FDMUU7SUFDRCxRQUFRLEVBQUU7UUFDVCxJQUFJLEVBQUUsZUFBZTtLQUNyQjtDQUNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvcGVybWlzc2lvbi5tb2RlbCc7XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NNb2R1bGVQZXJtaXNzaW9uOiBNb2R1bGVQZXJtaXNzaW9uTW9kZWwgPSB7XG5cdG5hbWU6ICd1c2VyLXNldHRpbmdzJyxcblx0dmlld3M6IFtcblx0XHR7bGluazogJy91c2VyLXNldHRpbmdzL3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGhhc19wYXJhbWV0ZXI6IGZhbHNlfVxuXHRdLFxuXHRhcHByb3ZhbDoge1xuXHRcdHR5cGU6ICd1c2VyLXNldHRpbmdzJ1xuXHR9XG59O1xuIl19
@@ -0,0 +1,14 @@
1
+ import { RouterModule } from '@angular/router';
2
+ import { UserSettingsComponent } from './user-settings.component';
3
+ import { UsersSettingsComponent } from './settings/users-settings.component';
4
+ const routes = [{
5
+ path: 'user-settings',
6
+ component: UserSettingsComponent,
7
+ children: [
8
+ { path: 'settings', component: UsersSettingsComponent },
9
+ { path: '**', redirectTo: 'settings' }
10
+ ]
11
+ }
12
+ ];
13
+ export const UserSettingsRouting = RouterModule.forChild(routes);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5yb3V0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5yb3V0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBVSxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3RSxNQUFNLE1BQU0sR0FBVyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsUUFBUSxFQUFFO1lBQ1QsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRTtZQUN2RCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtTQUN0QztLQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUErQixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXMsIFJvdXRlck1vZHVsZSwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVXNlclNldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi91c2VyLXNldHRpbmdzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0gZnJvbSAnLi9zZXR0aW5ncy91c2Vycy1zZXR0aW5ncy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFt7IFxuXHRwYXRoOiAndXNlci1zZXR0aW5ncycsXG5cdGNvbXBvbmVudDogVXNlclNldHRpbmdzQ29tcG9uZW50LFxuXHRjaGlsZHJlbjogW1xuXHRcdHsgcGF0aDogJ3NldHRpbmdzJywgY29tcG9uZW50OiBVc2Vyc1NldHRpbmdzQ29tcG9uZW50IH0sXG5cdFx0eyBwYXRoOiAnKionLCByZWRpcmVjdFRvOiAnc2V0dGluZ3MnIH1cblx0XX1cbl07XG5cbmV4cG9ydCBjb25zdCBVc2VyU2V0dGluZ3NSb3V0aW5nOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJvdXRlPiA9IFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpO1xuIl19
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class UserSettingsService {
5
+ constructor() {
6
+ this.selectedUser = new BehaviorSubject('0');
7
+ }
8
+ setSelectedUser(id) {
9
+ this.selectedUser.next(id);
10
+ }
11
+ }
12
+ UserSettingsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
13
+ UserSettingsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService });
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: UserSettingsService, decorators: [{
15
+ type: Injectable
16
+ }], ctorParameters: function () { return []; } });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3VzZXItc2V0dGluZ3MvdXNlci1zZXR0aW5ncy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFHdkMsTUFBTSxPQUFPLG1CQUFtQjtJQUkvQjtRQUZBLGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFekIsQ0FBQztJQUVoQixlQUFlLENBQUMsRUFBVTtRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDOztnSEFSVyxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3NTZXJ2aWNlIHtcblxuXHRzZWxlY3RlZFVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcwJyk7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdHNldFNlbGVjdGVkVXNlcihpZDogc3RyaW5nKSB7XG5cdFx0dGhpcy5zZWxlY3RlZFVzZXIubmV4dChpZCk7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ let typeCache = {};
2
+ export function type(label) {
3
+ if (typeCache[label]) {
4
+ throw new Error(`Action type "${label}" is not unqiue"`);
5
+ }
6
+ typeCache[label] = true;
7
+ return label;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW5hbWUuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3V0aWwvYWN0aW9uLW5hbWUuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLElBQUksU0FBUyxHQUFpQyxFQUFFLENBQUM7QUFDakQsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFhO0lBQ3BDLElBQUksU0FBUyxDQUFTLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssa0JBQWtCLENBQUMsQ0FBQztLQUN6RDtJQUVELFNBQVMsQ0FBUyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUM7SUFFaEMsT0FBVSxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImxldCB0eXBlQ2FjaGU6IHsgW2xhYmVsOiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbmV4cG9ydCBmdW5jdGlvbiB0eXBlPFQ+KGxhYmVsOiBUIHwgJycpOiBUIHtcblx0aWYgKHR5cGVDYWNoZVs8c3RyaW5nPmxhYmVsXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQWN0aW9uIHR5cGUgXCIke2xhYmVsfVwiIGlzIG5vdCB1bnFpdWVcImApO1xuXHR9XG5cblx0dHlwZUNhY2hlWzxzdHJpbmc+bGFiZWxdID0gdHJ1ZTtcblxuXHRyZXR1cm4gPFQ+bGFiZWw7XG59XG4iXX0=
@@ -0,0 +1,79 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SocketManagerService } from '../socket-manager.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../socket-manager.service";
5
+ export class AwsService {
6
+ constructor(_socket) {
7
+ this._socket = _socket;
8
+ }
9
+ dataURItoFile(dataURI, filename) {
10
+ // convert base64 to raw binary data held in a string
11
+ // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this
12
+ let byteString = atob(dataURI.split(',')[1]);
13
+ // separate out the mime component
14
+ let mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
15
+ // write the bytes of the string to an ArrayBuffer
16
+ let ab = new ArrayBuffer(byteString.length);
17
+ let ia = new Uint8Array(ab);
18
+ for (let i = 0; i < byteString.length; i++) {
19
+ ia[i] = byteString.charCodeAt(i);
20
+ }
21
+ // write the ArrayBuffer to a blob, and you're done
22
+ let blob = new Blob([ab], { type: mimeString });
23
+ blob['lastModifiedDate'] = new Date();
24
+ blob['name'] = filename;
25
+ return blob;
26
+ }
27
+ uploadFile(file, type, order, filename) {
28
+ return new Promise((resolve, reject) => {
29
+ if (file.size) {
30
+ this.getBase64(file).then(data => {
31
+ this._socket.call('uploadFileAndSave', filename ? filename : file.name, data, file.size, order ? order : -1, type, true, (err, res) => {
32
+ if (res) {
33
+ resolve(res);
34
+ }
35
+ else {
36
+ reject(err);
37
+ }
38
+ });
39
+ });
40
+ }
41
+ else {
42
+ reject('Invalid File');
43
+ }
44
+ });
45
+ }
46
+ getFileWithKey(key, callback) {
47
+ this._socket.call('getFile', key, callback);
48
+ }
49
+ getFileWithId(id, callback) {
50
+ this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
51
+ this.getFileWithKey(file.key, callback);
52
+ });
53
+ }
54
+ deleteFile(key, callback) {
55
+ this._socket.call('deleteFile', key, callback);
56
+ }
57
+ deleteFileWithId(id, callback) {
58
+ this._socket.call('findOne', 'files', { _id: id }, (err, file) => {
59
+ this.deleteFile(file.key, callback);
60
+ });
61
+ }
62
+ deleteFilesWithKeys(keys, callback) {
63
+ this._socket.call('deleteFiles', keys, callback);
64
+ }
65
+ getBase64(file) {
66
+ return new Promise((resolve, reject) => {
67
+ const reader = new FileReader();
68
+ reader.readAsDataURL(file);
69
+ reader.onload = () => resolve(reader.result);
70
+ reader.onerror = error => reject(error);
71
+ });
72
+ }
73
+ }
74
+ AwsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService, deps: [{ token: i1.SocketManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ AwsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AwsService, decorators: [{
77
+ type: Injectable
78
+ }], ctorParameters: function () { return [{ type: i1.SocketManagerService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvdXRpbC9hd3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFHakUsTUFBTSxPQUFPLFVBQVU7SUFFdEIsWUFBb0IsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFBRyxDQUFDO0lBRXJELGFBQWEsQ0FBQyxPQUFlLEVBQUUsUUFBZ0I7UUFDOUMscURBQXFEO1FBQ3JELHNGQUFzRjtRQUN0RixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLGtDQUFrQztRQUNsQyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkUsa0RBQWtEO1FBQ2xELElBQUksRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQztRQUVE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TSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7dUdBL0VXLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc29ja2V0LW1hbmFnZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBd3NTZXJ2aWNlICB7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfc29ja2V0OiBTb2NrZXRNYW5hZ2VyU2VydmljZSkge31cblxuXHRkYXRhVVJJdG9GaWxlKGRhdGFVUkk6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IEZpbGUge1xuXHRcdC8vIGNvbnZlcnQgYmFzZTY0IHRvIHJhdyBiaW5hcnkgZGF0YSBoZWxkIGluIGEgc3RyaW5nXG5cdFx0Ly8gZG9lc24ndCBoYW5kbGUgVVJMRW5jb2RlZCBEYXRhVVJJcyAtIHNlZSBTTyBhbnN3ZXIgIzY4NTAyNzYgZm9yIGNvZGUgdGhhdCBkb2VzIHRoaXNcblx0XHRsZXQgYnl0ZVN0cmluZyA9IGF0b2IoZGF0YVVSSS5zcGxpdCgnLCcpWzFdKTtcblxuXHRcdC8vIHNlcGFyYXRlIG91dCB0aGUgbWltZSBjb21wb25lbnRcblx0XHRsZXQgbWltZVN0cmluZyA9IGRhdGFVUkkuc3BsaXQoJywnKVswXS5zcGxpdCgnOicpWzFdLnNwbGl0KCc7JylbMF07XG5cblx0XHQvLyB3cml0ZSB0aGUgYnl0ZXMgb2YgdGhlIHN0cmluZyB0byBhbiBBcnJheUJ1ZmZlclxuXHRcdGxldCBhYiA9IG5ldyBBcnJheUJ1ZmZlcihieXRlU3RyaW5nLmxlbmd0aCk7XG5cdFx0bGV0IGlhID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZVN0cmluZy5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWFbaV0gPSBieXRlU3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0Ly8gd3JpdGUgdGhlIEFycmF5QnVmZmVyIHRvIGEgYmxvYiwgYW5kIHlvdSdyZSBkb25lXG5cdFx0bGV0IGJsb2IgPSBuZXcgQmxvYihbYWJdLCB7dHlwZTogbWltZVN0cmluZ30pO1xuXHRcdFxuXHRcdGJsb2JbJ2xhc3RNb2RpZmllZERhdGUnXSA9IG5ldyBEYXRlKCk7XG5cdFx0YmxvYlsnbmFtZSddID0gZmlsZW5hbWU7XG5cblx0XHRyZXR1cm4gPEZpbGU+YmxvYjtcblx0fVxuXG5cdHVwbG9hZEZpbGUoZmlsZTogRmlsZSwgdHlwZTogc3RyaW5nLCBvcmRlcj86IG51bWJlciwgZmlsZW5hbWU/OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UgKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmIChmaWxlLnNpemUpIHtcblx0XHRcdFx0dGhpcy5nZXRCYXNlNjQoZmlsZSkudGhlbihkYXRhID0+IHtcblx0XHRcdFx0XHR0aGlzLl9zb2NrZXQuY2FsbCgndXBsb2FkRmlsZUFuZFNhdmUnLCBmaWxlbmFtZSA/IGZpbGVuYW1lIDogZmlsZS5uYW1lLCBkYXRhLCBmaWxlLnNpemUsIG9yZGVyID8gb3JkZXIgOiAtMSwgdHlwZSwgdHJ1ZSwgKGVyciwgcmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0cmVqZWN0KCdJbnZhbGlkIEZpbGUnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGdldEZpbGVXaXRoS2V5KGtleTogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZ2V0RmlsZScsIGtleSwgY2FsbGJhY2spO1xuXHR9XG5cblx0Z2V0RmlsZVdpdGhJZChpZDogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQuY2FsbCgnZmluZE9uZScsICdmaWxlcycsIHtfaWQ6IGlkfSwgKGVyciwgZmlsZSkgPT4ge1xuXHRcdFx0dGhpcy5nZXRGaWxlV2l0aEtleShmaWxlLmtleSwgY2FsbGJhY2spO1xuXHRcdH0pO1xuXHR9XG5cblx0ZGVsZXRlRmlsZShrZXk6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2RlbGV0ZUZpbGUnLCBrZXksIGNhbGxiYWNrKTtcblx0fVxuXG5cdGRlbGV0ZUZpbGVXaXRoSWQoaWQ6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2ZpbmRPbmUnLCAnZmlsZXMnLCB7X2lkOiBpZH0sIChlcnIsIGZpbGUpID0+IHtcblx0XHRcdHRoaXMuZGVsZXRlRmlsZShmaWxlLmtleSwgY2FsbGJhY2spO1xuXHRcdH0pO1xuXHR9XG5cblx0ZGVsZXRlRmlsZXNXaXRoS2V5cyhrZXlzOiBzdHJpbmdbXSwgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG5cdFx0dGhpcy5fc29ja2V0LmNhbGwoJ2RlbGV0ZUZpbGVzJywga2V5cywgY2FsbGJhY2spO1xuXHR9XG5cblx0Z2V0QmFzZTY0KGZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXHRcdFx0cmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cdFx0XHRyZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZSg8c3RyaW5nPnJlYWRlci5yZXN1bHQpO1xuXHRcdFx0cmVhZGVyLm9uZXJyb3IgPSBlcnJvciA9PiByZWplY3QoZXJyb3IpO1xuXHRcdH0pO1xuXHR9XG59XG4iXX0=
@@ -0,0 +1,140 @@
1
+ import { detailedDiff } from 'deep-object-diff';
2
+ import * as moment from 'moment';
3
+ const isObject = (object) => {
4
+ return object instanceof Object && object.constructor.name === 'Object';
5
+ };
6
+ export function toTitleCase(str) {
7
+ return str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
8
+ }
9
+ export function isUpperCase(str) {
10
+ return (/^[A-Z]*$/).test(str);
11
+ }
12
+ export function pad(num, size) {
13
+ let s = num + '';
14
+ while (s.length < size) {
15
+ s = '0' + s;
16
+ }
17
+ return s;
18
+ }
19
+ export function deepCopy(obj) {
20
+ return JSON.parse(JSON.stringify(obj), dateReviver);
21
+ }
22
+ export function dateReviver(key, value) {
23
+ if (typeof value === 'string') {
24
+ let a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
25
+ if (a) {
26
+ return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6].split('.')[0], +a[6].split('.')[1]));
27
+ }
28
+ }
29
+ return value;
30
+ }
31
+ export function b64toBlobURL(b64Data, contentType, sliceSize) {
32
+ b64Data = b64Data.replace('data:application/pdf;base64,', '');
33
+ contentType = contentType || '';
34
+ sliceSize = sliceSize || 512;
35
+ let byteCharacters = atob(b64Data);
36
+ let byteArrays = [];
37
+ for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
38
+ let slice = byteCharacters.slice(offset, offset + sliceSize);
39
+ let byteNumbers = new Array(slice.length);
40
+ for (let i = 0; i < slice.length; i++) {
41
+ byteNumbers[i] = slice.charCodeAt(i);
42
+ }
43
+ let byteArray = new Uint8Array(byteNumbers);
44
+ byteArrays.push(byteArray);
45
+ }
46
+ let blob = new Blob(byteArrays, { type: contentType });
47
+ return URL.createObjectURL(blob);
48
+ }
49
+ export function blobToFile(theBlob, fileName) {
50
+ //A Blob() is almost a File() - it's just missing the two properties below which we will add
51
+ theBlob.lastModifiedDate = new Date();
52
+ theBlob.name = fileName;
53
+ return theBlob;
54
+ }
55
+ export function toDataURL(url, callback) {
56
+ let xhr = new XMLHttpRequest();
57
+ xhr.onload = function () {
58
+ let reader = new FileReader();
59
+ reader.onloadend = function () {
60
+ callback(reader.result);
61
+ };
62
+ reader.readAsDataURL(xhr.response);
63
+ };
64
+ xhr.open('GET', url);
65
+ xhr.responseType = 'blob';
66
+ xhr.send();
67
+ }
68
+ export function getDeepDiffDetails(obj1, obj2) {
69
+ let diff = detailedDiff(obj1, obj2);
70
+ let newDiff = detailedDiff(obj2, obj1);
71
+ let diffString = '';
72
+ if ((Object.keys(diff['updated']).length)) {
73
+ // if (Object.keys(diff['added']).length){
74
+ // diffString += '; ';
75
+ // }
76
+ // if (Object.keys(diff['deleted']).length) {
77
+ // diffString += '; ';
78
+ // }
79
+ for (let i = 0; i < Object.keys(diff['updated']).length; i++) {
80
+ if (!Array.isArray(obj1[Object.keys(diff['updated'])[i]])) {
81
+ let key = Object.keys(diff['updated'])[i];
82
+ let newKey = Object.keys(newDiff['updated'])[i];
83
+ if ((key.substr(0, 2) !== 'id')) {
84
+ if (diff['updated'][key] && moment.isDate(diff['updated'][key])) {
85
+ diffString += 'Updated: \n' + toTitleCase(key.replace(/_/g, ' ')) + ': "' + moment(diff['updated'][key]).format('llll') + '" to "' + moment(newDiff['updated'][newKey]).format('llll') + '"\n';
86
+ }
87
+ else if (diff['updated'][key] && typeof (diff['updated'][key]) === 'object') {
88
+ let objString = '';
89
+ for (let j = 0; j < Object.keys(diff['updated'][key]).length; j++) {
90
+ let objKey = Object.keys(diff['updated'][key])[j];
91
+ let newObjKey = Object.keys(newDiff['updated'][key])[j];
92
+ if (j > 0) {
93
+ objString += 'll, \n';
94
+ }
95
+ objString += toTitleCase(objKey.replace(/_/g, ' ')) + ': "' + diff['updated'][key][objKey] + '" to "' + newDiff['updated'][key][newObjKey] + '"' + (j < Object.keys(diff['updated'][key]).length - 1 ? ', ' : '');
96
+ }
97
+ diffString += 'Updated: \n' + objString + '\n';
98
+ }
99
+ else {
100
+ diffString += 'Updated: \n' + toTitleCase(key.replace(/_/g, ' ')) + ': "' + diff['updated'][key] + '" to "' + newDiff['updated'][newKey] + '"' + (i < Object.keys(diff['updated']).length - 1 ? '\n' : '');
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ return diffString;
107
+ }
108
+ export function generateCronStringFromDate(date) {
109
+ return date.getSeconds() + ' ' + date.getMinutes() + ' ' + date.getHours() + ' ' + date.getDate() + ' ' + (date.getMonth() + 1) + ' ' + date.getDay();
110
+ }
111
+ export function s2ab(s) {
112
+ let buf = new ArrayBuffer(s.length);
113
+ let view = new Uint8Array(buf);
114
+ // tslint:disable-next-line:no-bitwise
115
+ for (let i = 0; i !== s.length; ++i) {
116
+ view[i] = s.charCodeAt(i) & 0xFF;
117
+ }
118
+ return buf;
119
+ }
120
+ export function mergeDeep(target, ...sources) {
121
+ if (!sources.length) {
122
+ return target;
123
+ }
124
+ const source = sources.shift();
125
+ if (isObject(target) && isObject(source)) {
126
+ for (const key in source) {
127
+ if (isObject(source[key])) {
128
+ if (!target[key]) {
129
+ Object.assign(target, { [key]: {} });
130
+ }
131
+ mergeDeep(target[key], source[key]);
132
+ }
133
+ else {
134
+ Object.assign(target, { [key]: source[key] });
135
+ }
136
+ }
137
+ }
138
+ return mergeDeep(target, ...sources);
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi91dGlsL2NvbW1vbi5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QyxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzNCLE9BQU8sTUFBTSxZQUFZLE1BQU0sSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLElBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFHO0lBQzlCLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFO1FBQ3ZCLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQ1o7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNWLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQUc7SUFDM0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUs7SUFDckMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDOUIsSUFBSSxDQUFDLEdBQUcsOERBQThELENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxFQUFFO1lBQ04sT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzRztLQUNEO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVU7SUFDNUQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsOEJBQThCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsV0FBVyxHQUFHLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDaEMsU0FBUyxHQUFHLFNBQVMsSUFBSSxHQUFHLENBQUM7SUFFN0IsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUVwQixLQUFLLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksU0FBUyxFQUFFO1FBQ3pFLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztRQUU3RCxJQUFJLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1QyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQzNCO0lBRUQsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDckQsT0FBTyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQU8sRUFBRSxRQUFRO0lBQ3hDLDRGQUE0RjtJQUM1RixPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN0QyxPQUFPLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUN4QixPQUFjLE9BQVEsQ0FBQztBQUMzQixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUTtJQUN0QyxJQUFJLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQy9CLEdBQUcsQ0FBQyxNQUFNLEdBQUc7UUFDWixJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxTQUFTLEdBQUc7WUFDbEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUM7UUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUM7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyQixHQUFHLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztJQUMxQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLElBQVksRUFBRSxJQUFZO0lBQzVELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsSUFBSSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUV2QyxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUMsMENBQTBDO1FBQzFDLHVCQUF1QjtRQUN2QixJQUFJO1FBRUosNkNBQTZDO1FBQzdDLHVCQUF1QjtRQUN2QixJQUFJO1FBRUosS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFDO29CQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO3dCQUNoRSxVQUFVLElBQUksYUFBYSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQztxQkFDL0w7eUJBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTt3QkFDM0UsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO3dCQUVuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQ2xFLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ2xELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBRXhELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQ0FDVixTQUFTLElBQUksUUFBUSxDQUFDOzZCQUN0Qjs0QkFDRCxTQUFTLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7eUJBRWxOO3dCQUNELFVBQVUsSUFBSSxhQUFhLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQztxQkFDL0M7eUJBQ0c7d0JBQ0gsVUFBVSxJQUFJLGFBQWEsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztxQkFDM007aUJBQ0Q7YUFDRDtTQUNEO0tBQ0Q7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLElBQVU7SUFDcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDdkosQ0FBQztBQUVELE1BQU0sVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNyQixJQUFJLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0Isc0NBQXNDO0lBQ3RDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1FBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQUU7SUFDMUUsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPO0lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ3BCLE9BQU8sTUFBTSxDQUFDO0tBQ2Q7SUFDRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFL0IsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3pDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFO1lBQ3pCLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNqQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDckM7Z0JBQ0QsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUNwQztpQkFDSTtnQkFDSixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM5QztTQUNEO0tBQ0Q7SUFFRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGlmZiwgYWRkZWREaWZmLCBkZWxldGVkRGlmZiwgdXBkYXRlZERpZmYsIGRldGFpbGVkRGlmZiB9IGZyb20gJ2RlZXAtb2JqZWN0LWRpZmYnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IGlzT2JqZWN0ID0gKG9iamVjdCkgPT4ge1xuXHRyZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0ICYmIG9iamVjdC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnT2JqZWN0Jztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1RpdGxlQ2FzZShzdHIpIHtcblx0cmV0dXJuIHN0ci5yZXBsYWNlKC9cXHdcXFMqL2csIGZ1bmN0aW9uKHR4dCl7cmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTsgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VwcGVyQ2FzZShzdHIpIHtcblx0cmV0dXJuICgvXltBLVpdKiQvKS50ZXN0KHN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYWQobnVtLCBzaXplKSB7XG5cdGxldCBzID0gbnVtICsgJyc7XG5cdHdoaWxlIChzLmxlbmd0aCA8IHNpemUpIHtcblx0XHRzID0gJzAnICsgcztcblx0fVxuXHRyZXR1cm4gcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDb3B5KG9iaikge1xuXHRyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopLCBkYXRlUmV2aXZlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmV2aXZlcihrZXksIHZhbHVlKSB7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG5cdFx0bGV0IGEgPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKT8pWiQvLmV4ZWModmFsdWUpO1xuXHRcdGlmIChhKSB7XG5cdFx0XHRyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLCArYVs1XSwgK2FbNl0uc3BsaXQoJy4nKVswXSwgK2FbNl0uc3BsaXQoJy4nKVsxXSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiNjR0b0Jsb2JVUkwoYjY0RGF0YSwgY29udGVudFR5cGUsIHNsaWNlU2l6ZT8pIHtcblx0YjY0RGF0YSA9IGI2NERhdGEucmVwbGFjZSgnZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcsICcnKTtcblx0Y29udGVudFR5cGUgPSBjb250ZW50VHlwZSB8fCAnJztcblx0c2xpY2VTaXplID0gc2xpY2VTaXplIHx8IDUxMjtcblxuXHRsZXQgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGI2NERhdGEpO1xuXHRsZXQgYnl0ZUFycmF5cyA9IFtdO1xuXG5cdGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aDsgb2Zmc2V0ICs9IHNsaWNlU2l6ZSkge1xuXHRcdGxldCBzbGljZSA9IGJ5dGVDaGFyYWN0ZXJzLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc2xpY2VTaXplKTtcblxuXHRcdGxldCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2xpY2UubGVuZ3RoOyBpKyspIHtcblx0XHRieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XG5cdFx0fVxuXG5cdFx0bGV0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuXHRcdGJ5dGVBcnJheXMucHVzaChieXRlQXJyYXkpO1xuXHR9XG5cblx0bGV0IGJsb2IgPSBuZXcgQmxvYihieXRlQXJyYXlzLCB7dHlwZTogY29udGVudFR5cGV9KTtcblx0cmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2IsIGZpbGVOYW1lKSA6IEZpbGUge1xuICAgIC8vQSBCbG9iKCkgaXMgYWxtb3N0IGEgRmlsZSgpIC0gaXQncyBqdXN0IG1pc3NpbmcgdGhlIHR3byBwcm9wZXJ0aWVzIGJlbG93IHdoaWNoIHdlIHdpbGwgYWRkXG4gICAgdGhlQmxvYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcbiAgICB0aGVCbG9iLm5hbWUgPSBmaWxlTmFtZTtcbiAgICByZXR1cm4gKDxGaWxlPnRoZUJsb2IpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9EYXRhVVJMKHVybCwgY2FsbGJhY2spIHtcblx0bGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXHR4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cdFx0bGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cdFx0cmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y2FsbGJhY2socmVhZGVyLnJlc3VsdCk7XG5cdFx0fTtcblx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTCh4aHIucmVzcG9uc2UpO1xuXHR9O1xuXHR4aHIub3BlbignR0VUJywgdXJsKTtcblx0eGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJztcblx0eGhyLnNlbmQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZXBEaWZmRGV0YWlscyhvYmoxOiBPYmplY3QsIG9iajI6IE9iamVjdCkge1xuXHRsZXQgZGlmZiA9IGRldGFpbGVkRGlmZihvYmoxLCBvYmoyKTtcblx0bGV0IG5ld0RpZmYgPSBkZXRhaWxlZERpZmYob2JqMiwgb2JqMSk7XG5cdFxuXHRsZXQgZGlmZlN0cmluZyA9ICcnO1xuXHRcdFxuXHRpZiAoKE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSkubGVuZ3RoKSkge1xuXHRcdC8vIGlmIChPYmplY3Qua2V5cyhkaWZmWydhZGRlZCddKS5sZW5ndGgpe1xuXHRcdC8vIFx0ZGlmZlN0cmluZyArPSAnOyAnO1xuXHRcdC8vIH1cblx0XHRcblx0XHQvLyBpZiAoT2JqZWN0LmtleXMoZGlmZlsnZGVsZXRlZCddKS5sZW5ndGgpIHtcblx0XHQvLyBcdGRpZmZTdHJpbmcgKz0gJzsgJztcblx0XHQvLyB9XG5cdFx0XHRcdFx0XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkob2JqMVtPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ10pW2ldXSkpIHtcblx0XHRcdFx0bGV0IGtleSA9IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSlbaV07XG5cdFx0XHRcdGxldCBuZXdLZXkgPSBPYmplY3Qua2V5cyhuZXdEaWZmWyd1cGRhdGVkJ10pW2ldO1xuXG5cdFx0XHRcdGlmICgoa2V5LnN1YnN0cigwLCAyKSAhPT0gJ2lkJykpe1xuXHRcdFx0XHRcdGlmIChkaWZmWyd1cGRhdGVkJ11ba2V5XSAmJiBtb21lbnQuaXNEYXRlKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKSkge1xuXHRcdFx0XHRcdFx0ZGlmZlN0cmluZyArPSAnVXBkYXRlZDogXFxuJyArIHRvVGl0bGVDYXNlKGtleS5yZXBsYWNlKC9fL2csICcgJykpICsgJzogXCInICsgbW9tZW50KGRpZmZbJ3VwZGF0ZWQnXVtrZXldKS5mb3JtYXQoJ2xsbGwnKSArICdcIiB0byBcIicgKyBtb21lbnQobmV3RGlmZlsndXBkYXRlZCddW25ld0tleV0pLmZvcm1hdCgnbGxsbCcpICsgJ1wiXFxuJztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZiAoZGlmZlsndXBkYXRlZCddW2tleV0gJiYgdHlwZW9mKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRcdGxldCBvYmpTdHJpbmcgPSAnJztcblxuXHRcdFx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBPYmplY3Qua2V5cyhkaWZmWyd1cGRhdGVkJ11ba2V5XSkubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0bGV0IG9iaktleSA9IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKVtqXTtcblx0XHRcdFx0XHRcdFx0bGV0IG5ld09iaktleSA9IE9iamVjdC5rZXlzKG5ld0RpZmZbJ3VwZGF0ZWQnXVtrZXldKVtqXTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoaiA+IDApIHtcblx0XHRcdFx0XHRcdFx0XHRvYmpTdHJpbmcgKz0gJ2xsLCBcXG4nO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG9ialN0cmluZyArPSB0b1RpdGxlQ2FzZShvYmpLZXkucmVwbGFjZSgvXy9nLCAnICcpKSArICc6IFwiJyArIGRpZmZbJ3VwZGF0ZWQnXVtrZXldW29iaktleV0gKyAnXCIgdG8gXCInICsgbmV3RGlmZlsndXBkYXRlZCddW2tleV1bbmV3T2JqS2V5XSArICdcIicgKyAoaiA8IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXVtrZXldKS5sZW5ndGggLSAxID8gJywgJyA6ICcnKTtcblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRkaWZmU3RyaW5nICs9ICdVcGRhdGVkOiBcXG4nICsgb2JqU3RyaW5nICsgJ1xcbic7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2V7XG5cdFx0XHRcdFx0XHRkaWZmU3RyaW5nICs9ICdVcGRhdGVkOiBcXG4nICsgdG9UaXRsZUNhc2Uoa2V5LnJlcGxhY2UoL18vZywgJyAnKSkgKyAnOiBcIicgKyBkaWZmWyd1cGRhdGVkJ11ba2V5XSArICdcIiB0byBcIicgKyBuZXdEaWZmWyd1cGRhdGVkJ11bbmV3S2V5XSArICdcIicgKyAoaSA8IE9iamVjdC5rZXlzKGRpZmZbJ3VwZGF0ZWQnXSkubGVuZ3RoIC0gMSA/ICdcXG4nIDogJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0cmV0dXJuIGRpZmZTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNyb25TdHJpbmdGcm9tRGF0ZShkYXRlOiBEYXRlKSB7XG5cdHJldHVybiBkYXRlLmdldFNlY29uZHMoKSArICcgJyArIGRhdGUuZ2V0TWludXRlcygpICsgJyAnICsgZGF0ZS5nZXRIb3VycygpICsgJyAnICsgZGF0ZS5nZXREYXRlKCkgKyAnICcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnICcgKyBkYXRlLmdldERheSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gczJhYihzKSB7XG5cdGxldCBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuXHRsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zik7XG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG5cdGZvciAobGV0IGkgPSAwOyBpICE9PSBzLmxlbmd0aDsgKytpKSB7IHZpZXdbaV0gPSBzLmNoYXJDb2RlQXQoaSkgJiAweEZGOyB9XG5cdHJldHVybiBidWY7IFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VEZWVwKHRhcmdldCwgLi4uc291cmNlcykge1xuXHRpZiAoIXNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRjb25zdCBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG5cblx0aWYgKGlzT2JqZWN0KHRhcmdldCkgJiYgaXNPYmplY3Qoc291cmNlKSkge1xuXHRcdGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuXHRcdFx0aWYgKGlzT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0T2JqZWN0LmFzc2lnbih0YXJnZXQsIHsgW2tleV06IHt9IH0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1lcmdlRGVlcCh0YXJnZXRba2V5XSwgc291cmNlW2tleV0pO1xuXHRcdFx0fSBcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuYXNzaWduKHRhcmdldCwgeyBba2V5XTogc291cmNlW2tleV0gfSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1lcmdlRGVlcCh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufSJdfQ==