@colijnit/sharedcomponents 1.0.56 → 1.0.58

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 (727) hide show
  1. package/README.md +8 -11
  2. package/bundles/colijnit-sharedcomponents.umd.js +10297 -0
  3. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -0
  4. package/colijnit-sharedcomponents.d.ts +91 -0
  5. package/colijnit-sharedcomponents.metadata.json +1 -0
  6. package/esm2015/colijnit-sharedcomponents.js +92 -0
  7. package/esm2015/lib/assets/dictionary/text.properties.js +11 -0
  8. package/esm2015/lib/businessobject/build-images-and-documentation-result.js +2 -0
  9. package/esm2015/lib/businessobject/co-document-right.bo.js +3 -0
  10. package/esm2015/lib/businessobject/drag-drop-container-element.js +2 -0
  11. package/esm2015/lib/businessobject/drag-drop-container.js +7 -0
  12. package/esm2015/lib/components/activity-list/activity-list.component.js +130 -0
  13. package/esm2015/lib/components/activity-list/activity-list.module.js +24 -0
  14. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.component.js +47 -0
  15. package/esm2015/lib/components/app-file-dropzone/app-file-dropzone.module.js +20 -0
  16. package/esm2015/lib/components/date-planning/component/agenda/agenda-base-view.component.js +61 -0
  17. package/esm2015/lib/components/date-planning/component/agenda/agenda-day-view.component.js +36 -0
  18. package/esm2015/lib/components/date-planning/component/agenda/agenda-event.component.js +56 -0
  19. package/esm2015/lib/components/date-planning/component/agenda/agenda-events.component.js +47 -0
  20. package/esm2015/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.js +68 -0
  21. package/esm2015/lib/components/date-planning/component/agenda/agenda-header.component.js +243 -0
  22. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-cell.component.js +36 -0
  23. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.js +50 -0
  24. package/esm2015/lib/components/date-planning/component/agenda/agenda-hour-view.component.js +46 -0
  25. package/esm2015/lib/components/date-planning/component/agenda/agenda-month-view.component.js +61 -0
  26. package/esm2015/lib/components/date-planning/component/agenda/agenda-select-event.component.js +39 -0
  27. package/esm2015/lib/components/date-planning/component/agenda/agenda-view.component.js +35 -0
  28. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-select-view.component.js +64 -0
  29. package/esm2015/lib/components/date-planning/component/agenda/agenda-week-view.component.js +48 -0
  30. package/esm2015/lib/components/date-planning/component/agenda/view-select.component.js +42 -0
  31. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-months.component.js +34 -0
  32. package/esm2015/lib/components/date-planning/component/calendar/calendar-all-years.component.js +48 -0
  33. package/esm2015/lib/components/date-planning/component/calendar/calendar-header.component.js +107 -0
  34. package/esm2015/lib/components/date-planning/component/calendar/calendar-view.component.js +178 -0
  35. package/esm2015/lib/components/date-planning/component/calendar/calendar.component.js +34 -0
  36. package/esm2015/lib/components/date-planning/date-planning.component.js +113 -0
  37. package/esm2015/lib/components/date-planning/date-planning.module.js +63 -0
  38. package/esm2015/lib/components/docsign/component/signature/signature.component.js +75 -0
  39. package/esm2015/lib/components/docsign/component/signatures/signatures.component.js +44 -0
  40. package/esm2015/lib/components/docsign/docsign.component.js +242 -0
  41. package/esm2015/lib/components/docsign/docsign.module.js +23 -0
  42. package/esm2015/lib/components/file-upload/file-upload.component.js +189 -0
  43. package/esm2015/lib/components/file-upload/file-upload.module.js +25 -0
  44. package/esm2015/lib/components/file-upload-popup/file-upload-popup.component.js +397 -0
  45. package/esm2015/lib/components/file-upload-popup/file-upload-popup.module.js +30 -0
  46. package/esm2015/lib/components/files-upload/components/base-file-upload.component.js +469 -0
  47. package/esm2015/lib/components/files-upload/components/drag-drop-container.component.js +115 -0
  48. package/esm2015/lib/components/files-upload/files-upload.component.js +131 -0
  49. package/esm2015/lib/components/files-upload/files-upload.module.js +47 -0
  50. package/esm2015/lib/components/image-display/image-display.component.js +36 -0
  51. package/esm2015/lib/components/image-display/image-display.module.js +23 -0
  52. package/esm2015/lib/components/key-pad/key-pad.component.js +200 -0
  53. package/esm2015/lib/components/key-pad/key-pad.module.js +22 -0
  54. package/esm2015/lib/components/layout-switcher/layout-switcher.component.js +74 -0
  55. package/esm2015/lib/components/layout-switcher/layout-switcher.module.js +21 -0
  56. package/esm2015/lib/components/linear-gauge/co-linear-gauge.component.js +59 -0
  57. package/esm2015/lib/components/linear-gauge/co-linear-gauge.module.js +19 -0
  58. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.component.js +89 -0
  59. package/esm2015/lib/components/multi-property-toggler/multiple-property-toggler.module.js +21 -0
  60. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.js +79 -0
  61. package/esm2015/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.js +21 -0
  62. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.js +85 -0
  63. package/esm2015/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.js +21 -0
  64. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.js +64 -0
  65. package/esm2015/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.js +26 -0
  66. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.js +40 -0
  67. package/esm2015/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.js +23 -0
  68. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.js +61 -0
  69. package/esm2015/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.js +28 -0
  70. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.component.js +38 -0
  71. package/esm2015/lib/components/send-method-dialog/components/signature-button/signature-button.module.js +21 -0
  72. package/esm2015/lib/components/send-method-dialog/model/email-address-viewmodel.js +7 -0
  73. package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +258 -0
  74. package/esm2015/lib/components/send-method-dialog/send-method-dialog.module.js +35 -0
  75. package/esm2015/lib/components/send-method-dialog/send-method-params.interface.js +2 -0
  76. package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +59 -0
  77. package/esm2015/lib/components/simple-tags/simple-tags.component.js +229 -0
  78. package/esm2015/lib/components/simple-tags/simple-tags.module.js +26 -0
  79. package/esm2015/lib/components/statusbar/statusbar-popup.component.js +97 -0
  80. package/esm2015/lib/components/statusbar/statusbar.component.js +81 -0
  81. package/esm2015/lib/components/statusbar/statusbar.module.js +27 -0
  82. package/esm2015/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.js +47 -0
  83. package/esm2015/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.js +47 -0
  84. package/esm2015/lib/components/stock/components/order-stock-history/order-stock-history.component.js +47 -0
  85. package/esm2015/lib/components/stock/components/order-stock-tab/order-stock-tab.component.js +47 -0
  86. package/esm2015/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.js +47 -0
  87. package/esm2015/lib/components/stock/components/order-tab/order-tab.component.js +67 -0
  88. package/esm2015/lib/components/stock/components/stock-history/stock-history.component.js +53 -0
  89. package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +240 -0
  90. package/esm2015/lib/components/stock/components/stock-prognose/stock-prognose.component.js +52 -0
  91. package/esm2015/lib/components/stock/components/stock-tab/stock-tab.component.js +41 -0
  92. package/esm2015/lib/components/stock/localization/translation.js +63 -0
  93. package/esm2015/lib/components/stock/stock-history-tabs/stock-history-tabs.component.js +33 -0
  94. package/esm2015/lib/components/stock/stock-information/stock-information.component.js +48 -0
  95. package/esm2015/lib/components/stock/stock-information-grid/stock-information-grid.component.js +457 -0
  96. package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +241 -0
  97. package/esm2015/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.js +2 -0
  98. package/esm2015/lib/components/stock/stock-transfer/stock-change-amount.component.js +72 -0
  99. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +149 -0
  100. package/esm2015/lib/components/stock/stock.component.js +193 -0
  101. package/esm2015/lib/components/stock/stock.module.js +80 -0
  102. package/esm2015/lib/components/stock-statusbar/stock-statusbar.component.js +23 -0
  103. package/esm2015/lib/components/stock-statusbar/stock-statusbar.module.js +19 -0
  104. package/esm2015/lib/components/tab-bar/tab-bar.component.js +88 -0
  105. package/esm2015/lib/components/tab-bar/tab-bar.module.js +21 -0
  106. package/esm2015/lib/components/tab-bar/tab.interface.js +2 -0
  107. package/esm2015/lib/components/tile-renderer/tile-render.component.js +80 -0
  108. package/esm2015/lib/components/tile-renderer/tile-render.module.js +26 -0
  109. package/esm2015/lib/decorator/input-boolean.decorator.js +34 -0
  110. package/esm2015/lib/enum/calendar-view.enum.js +9 -0
  111. package/esm2015/lib/enum/document-email-report.enum.js +18 -0
  112. package/esm2015/lib/enum/domain-multiple-name.enum.js +13 -0
  113. package/esm2015/lib/enum/file-type.js +14 -0
  114. package/esm2015/lib/enum/files-upload-config-objects.js +3 -0
  115. package/esm2015/lib/enum/gauge-color.enum.js +10 -0
  116. package/esm2015/lib/enum/icon.enum.js +44 -0
  117. package/esm2015/lib/enum/internal-param.enum.js +38 -0
  118. package/esm2015/lib/enum/keyboard-code.enum.js +32 -0
  119. package/esm2015/lib/enum/language-code.enum.js +8 -0
  120. package/esm2015/lib/enum/month.enum.js +17 -0
  121. package/esm2015/lib/enum/read-write-access-config-names.enum.js +2 -0
  122. package/esm2015/lib/enum/table-name.enum.js +86 -0
  123. package/esm2015/lib/enum/tag-category.enum.js +22 -0
  124. package/esm2015/lib/enum/tags-component-config-names.js +2 -0
  125. package/esm2015/lib/enum/thumb-three-way-state.js +19 -0
  126. package/esm2015/lib/enum/tile-size-type.js +7 -0
  127. package/esm2015/lib/enum/time-period.enum.js +11 -0
  128. package/esm2015/lib/event/co-drag-event.js +2 -0
  129. package/esm2015/lib/event/co-drop-event.js +2 -0
  130. package/esm2015/lib/interface/key-value-pair.js +2 -0
  131. package/esm2015/lib/interface/operation-callback-simple-function.js +4 -0
  132. package/esm2015/lib/localization/localization.module.js +19 -0
  133. package/esm2015/lib/localization/localize.pipe.js +26 -0
  134. package/esm2015/lib/localization/localize.service.js +30 -0
  135. package/esm2015/lib/localization/translation.js +3 -0
  136. package/esm2015/lib/model/agenda-event-per-day.model.js +6 -0
  137. package/esm2015/lib/model/agenda-event.model.js +8 -0
  138. package/esm2015/lib/model/agenda-null-objects.js +11 -0
  139. package/esm2015/lib/model/constant/all-months.js +17 -0
  140. package/esm2015/lib/model/date-range.js +5 -0
  141. package/esm2015/lib/model/day.model.js +7 -0
  142. package/esm2015/lib/model/icon-svg.js +43 -0
  143. package/esm2015/lib/model/month.model.js +11 -0
  144. package/esm2015/lib/model/send-method.js +8 -0
  145. package/esm2015/lib/model/settings.js +4 -0
  146. package/esm2015/lib/model/tag-tree-item.bo.js +16 -0
  147. package/esm2015/lib/model/time-window.bo.js +26 -0
  148. package/esm2015/lib/model/tree-object.js +15 -0
  149. package/esm2015/lib/model/week.model.js +6 -0
  150. package/esm2015/lib/model/weekday.model.js +10 -0
  151. package/esm2015/lib/pipe/array-number.pipe.js +15 -0
  152. package/esm2015/lib/pipe/file-type-image.pipe.js +51 -0
  153. package/esm2015/lib/pipe/master-pipes.js +9 -0
  154. package/esm2015/lib/pipe/ucfirst.pipe.js +16 -0
  155. package/esm2015/lib/service/dictionary.service.js +76 -0
  156. package/esm2015/lib/service/drag-drop.service.js +365 -0
  157. package/esm2015/lib/service/icon-cache.service.js +51 -0
  158. package/esm2015/lib/service/options.service.js +48 -0
  159. package/esm2015/lib/service/shared-connector.service.js +433 -0
  160. package/esm2015/lib/service/shared.service.js +60 -0
  161. package/esm2015/lib/service/stock.service.js +110 -0
  162. package/esm2015/lib/utils/array-utils.js +202 -0
  163. package/esm2015/lib/utils/calendar.utils.js +68 -0
  164. package/esm2015/lib/utils/check-precision-and-scale-result.js +2 -0
  165. package/esm2015/lib/utils/check-within-stepped-bounds-result.js +2 -0
  166. package/esm2015/lib/utils/co-document-shared-field-logic.js +50 -0
  167. package/esm2015/lib/utils/date-utils.js +264 -0
  168. package/esm2015/lib/utils/enum-utils.js +128 -0
  169. package/esm2015/lib/utils/function/not-nill.function.js +5 -0
  170. package/esm2015/lib/utils/is-nill.function.js +5 -0
  171. package/esm2015/lib/utils/map-utils.js +41 -0
  172. package/esm2015/lib/utils/number-utils.js +390 -0
  173. package/esm2015/lib/utils/object-utils.js +278 -0
  174. package/esm2015/lib/utils/ref-code-utils.js +49 -0
  175. package/esm2015/lib/utils/string-utils.js +93 -0
  176. package/esm2015/public-api.js +31 -0
  177. package/fesm2015/colijnit-sharedcomponents.js +10555 -0
  178. package/fesm2015/colijnit-sharedcomponents.js.map +1 -0
  179. package/lib/assets/dictionary/text.properties.d.ts +3 -0
  180. package/lib/businessobject/build-images-and-documentation-result.d.ts +5 -0
  181. package/lib/businessobject/co-document-right.bo.d.ts +6 -0
  182. package/lib/businessobject/drag-drop-container-element.d.ts +6 -0
  183. package/lib/businessobject/drag-drop-container.d.ts +6 -0
  184. package/lib/components/access/read-write-access.scss +25 -0
  185. package/lib/components/access/style/_layout.scss +23 -0
  186. package/lib/components/access/style/_theme.scss +4 -0
  187. package/lib/components/activity-list/activity-list.component.d.ts +33 -0
  188. package/lib/components/activity-list/activity-list.module.d.ts +2 -0
  189. package/lib/components/activity-list/style/_layout.scss +68 -0
  190. package/lib/components/activity-list/style/_theme.scss +4 -0
  191. package/lib/components/app-file-dropzone/app-file-dropzone.component.d.ts +14 -0
  192. package/lib/components/app-file-dropzone/app-file-dropzone.module.d.ts +2 -0
  193. package/lib/components/app-file-dropzone/style/_layout.scss +61 -0
  194. package/lib/components/app-file-dropzone/style/_theme.scss +4 -0
  195. package/lib/components/date-planning/component/agenda/agenda-base-view.component.d.ts +21 -0
  196. package/lib/components/date-planning/component/agenda/agenda-day-view.component.d.ts +7 -0
  197. package/lib/components/date-planning/component/agenda/agenda-event.component.d.ts +18 -0
  198. package/lib/components/date-planning/component/agenda/agenda-events.component.d.ts +13 -0
  199. package/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.d.ts +18 -0
  200. package/lib/components/date-planning/component/agenda/agenda-header.component.d.ts +48 -0
  201. package/lib/components/date-planning/component/agenda/agenda-hour-cell.component.d.ts +9 -0
  202. package/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.d.ts +8 -0
  203. package/lib/components/date-planning/component/agenda/agenda-hour-view.component.d.ts +7 -0
  204. package/lib/components/date-planning/component/agenda/agenda-month-view.component.d.ts +10 -0
  205. package/lib/components/date-planning/component/agenda/agenda-select-event.component.d.ts +12 -0
  206. package/lib/components/date-planning/component/agenda/agenda-view.component.d.ts +12 -0
  207. package/lib/components/date-planning/component/agenda/agenda-week-select-view.component.d.ts +10 -0
  208. package/lib/components/date-planning/component/agenda/agenda-week-view.component.d.ts +9 -0
  209. package/lib/components/date-planning/component/agenda/view-select.component.d.ts +11 -0
  210. package/lib/components/date-planning/component/calendar/calendar-all-months.component.d.ts +9 -0
  211. package/lib/components/date-planning/component/calendar/calendar-all-years.component.d.ts +9 -0
  212. package/lib/components/date-planning/component/calendar/calendar-header.component.d.ts +23 -0
  213. package/lib/components/date-planning/component/calendar/calendar-view.component.d.ts +31 -0
  214. package/lib/components/date-planning/component/calendar/calendar.component.d.ts +10 -0
  215. package/lib/components/date-planning/date-planning.component.d.ts +28 -0
  216. package/lib/components/date-planning/date-planning.module.d.ts +2 -0
  217. package/lib/components/docsign/component/signature/signature.component.d.ts +16 -0
  218. package/lib/components/docsign/component/signatures/signatures.component.d.ts +12 -0
  219. package/lib/components/docsign/docsign.component.d.ts +94 -0
  220. package/lib/components/docsign/docsign.module.d.ts +2 -0
  221. package/lib/components/docsign/style/_material-definition.scss +12 -0
  222. package/lib/components/file-upload/file-upload.component.d.ts +42 -0
  223. package/lib/components/file-upload/file-upload.module.d.ts +2 -0
  224. package/lib/components/file-upload/style/_layout.scss +59 -0
  225. package/lib/components/file-upload/style/_material-definition.scss +2 -0
  226. package/lib/components/file-upload/style/_theme.scss +4 -0
  227. package/lib/components/file-upload/style/material.scss +4 -0
  228. package/lib/components/file-upload-popup/file-upload-popup.component.d.ts +75 -0
  229. package/lib/components/file-upload-popup/file-upload-popup.module.d.ts +2 -0
  230. package/lib/components/file-upload-popup/style/_layout.scss +48 -0
  231. package/lib/components/file-upload-popup/style/_material-definition.scss +2 -0
  232. package/lib/components/file-upload-popup/style/_theme.scss +5 -0
  233. package/lib/components/files-upload/components/base-file-upload.component.d.ts +98 -0
  234. package/lib/components/files-upload/components/drag-drop-container.component.d.ts +34 -0
  235. package/lib/components/files-upload/files-upload.component.d.ts +32 -0
  236. package/lib/components/files-upload/files-upload.module.d.ts +2 -0
  237. package/lib/components/files-upload/style/_layout.scss +49 -0
  238. package/lib/components/files-upload/style/_theme.scss +5 -0
  239. package/lib/components/files-upload/style/material.scss +4 -0
  240. package/lib/components/image-display/image-display.component.d.ts +14 -0
  241. package/lib/components/image-display/image-display.module.d.ts +2 -0
  242. package/lib/components/image-display/style/_layout.scss +56 -0
  243. package/lib/components/image-display/style/_material-definition.scss +4 -0
  244. package/lib/components/image-display/style/_theme.scss +6 -0
  245. package/lib/components/key-pad/key-pad.component.d.ts +38 -0
  246. package/lib/components/key-pad/key-pad.module.d.ts +2 -0
  247. package/lib/components/layout-switcher/layout-switcher.component.d.ts +16 -0
  248. package/lib/components/layout-switcher/layout-switcher.module.d.ts +2 -0
  249. package/lib/components/linear-gauge/co-linear-gauge.component.d.ts +11 -0
  250. package/lib/components/linear-gauge/co-linear-gauge.module.d.ts +2 -0
  251. package/lib/components/multi-property-toggler/multiple-property-toggler.component.d.ts +27 -0
  252. package/lib/components/multi-property-toggler/multiple-property-toggler.module.d.ts +2 -0
  253. package/lib/components/multi-property-toggler/style/_layout.scss +24 -0
  254. package/lib/components/multi-property-toggler/style/_theme.scss +4 -0
  255. package/lib/components/multi-property-toggler/style/material.scss +4 -0
  256. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.d.ts +19 -0
  257. package/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.d.ts +2 -0
  258. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.d.ts +19 -0
  259. package/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.d.ts +2 -0
  260. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.d.ts +14 -0
  261. package/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.d.ts +2 -0
  262. package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.d.ts +8 -0
  263. package/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.d.ts +2 -0
  264. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.d.ts +13 -0
  265. package/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.d.ts +2 -0
  266. package/lib/components/send-method-dialog/components/signature-button/signature-button.component.d.ts +12 -0
  267. package/lib/components/send-method-dialog/components/signature-button/signature-button.module.d.ts +2 -0
  268. package/lib/components/send-method-dialog/model/email-address-viewmodel.d.ts +5 -0
  269. package/lib/components/send-method-dialog/send-method-dialog.component.d.ts +71 -0
  270. package/lib/components/send-method-dialog/send-method-dialog.module.d.ts +2 -0
  271. package/lib/components/send-method-dialog/send-method-params.interface.d.ts +13 -0
  272. package/lib/components/send-method-dialog/service/send-method.service.d.ts +23 -0
  273. package/lib/components/simple-tags/simple-tags.component.d.ts +31 -0
  274. package/lib/components/simple-tags/simple-tags.module.d.ts +2 -0
  275. package/lib/components/simple-tags/style/material.scss +4 -0
  276. package/lib/components/statusbar/statusbar-popup.component.d.ts +21 -0
  277. package/lib/components/statusbar/statusbar.component.d.ts +26 -0
  278. package/lib/components/statusbar/statusbar.module.d.ts +2 -0
  279. package/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.d.ts +9 -0
  280. package/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.d.ts +9 -0
  281. package/lib/components/stock/components/order-stock-history/order-stock-history.component.d.ts +9 -0
  282. package/lib/components/stock/components/order-stock-tab/order-stock-tab.component.d.ts +11 -0
  283. package/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.d.ts +9 -0
  284. package/lib/components/stock/components/order-tab/order-tab.component.d.ts +20 -0
  285. package/lib/components/stock/components/stock-history/stock-history.component.d.ts +13 -0
  286. package/lib/components/stock/components/stock-location/stock-location.component.d.ts +50 -0
  287. package/lib/components/stock/components/stock-prognose/stock-prognose.component.d.ts +11 -0
  288. package/lib/components/stock/components/stock-tab/stock-tab.component.d.ts +9 -0
  289. package/lib/components/stock/localization/translation.d.ts +60 -0
  290. package/lib/components/stock/stock-history-tabs/stock-history-tabs.component.d.ts +7 -0
  291. package/lib/components/stock/stock-information/stock-information.component.d.ts +8 -0
  292. package/lib/components/stock/stock-information-grid/stock-information-grid.component.d.ts +75 -0
  293. package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +56 -0
  294. package/{projects/sharedcomponents/src/lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.ts → lib/components/stock/stock-transfer/co-drop-down-list-fields.interface.d.ts} +2 -2
  295. package/lib/components/stock/stock-transfer/stock-change-amount.component.d.ts +18 -0
  296. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +42 -0
  297. package/lib/components/stock/stock.component.d.ts +57 -0
  298. package/lib/components/stock/stock.module.d.ts +2 -0
  299. package/lib/components/stock/style/material.scss +4 -0
  300. package/lib/components/stock-statusbar/stock-statusbar.component.d.ts +4 -0
  301. package/lib/components/stock-statusbar/stock-statusbar.module.d.ts +2 -0
  302. package/lib/components/stock-statusbar/style/_material-definition.scss +0 -0
  303. package/lib/components/stock-statusbar/style/_theme.scss +0 -0
  304. package/lib/components/stock-statusbar/style/material.scss +4 -0
  305. package/lib/components/tab-bar/style/_theme.scss +0 -0
  306. package/lib/components/tab-bar/style/material.scss +4 -0
  307. package/lib/components/tab-bar/tab-bar.component.d.ts +21 -0
  308. package/lib/components/tab-bar/tab-bar.module.d.ts +2 -0
  309. package/lib/components/tab-bar/tab.interface.d.ts +5 -0
  310. package/lib/components/tags/component/tag-join-label/style/material.scss +3 -0
  311. package/lib/components/tile-renderer/style/_layout.scss +90 -0
  312. package/lib/components/tile-renderer/style/_material-definition.scss +0 -0
  313. package/lib/components/tile-renderer/style/_theme.scss +4 -0
  314. package/lib/components/tile-renderer/style/material.scss +4 -0
  315. package/lib/components/tile-renderer/tile-render.component.d.ts +31 -0
  316. package/lib/components/tile-renderer/tile-render.module.d.ts +2 -0
  317. package/lib/decorator/input-boolean.decorator.d.ts +8 -0
  318. package/{projects/sharedcomponents/src/lib/enum/calendar-view.enum.ts → lib/enum/calendar-view.enum.d.ts} +2 -3
  319. package/lib/enum/document-email-report.enum.d.ts +15 -0
  320. package/lib/enum/domain-multiple-name.enum.d.ts +10 -0
  321. package/lib/enum/file-type.d.ts +7 -0
  322. package/lib/enum/files-upload-config-objects.d.ts +22 -0
  323. package/lib/enum/gauge-color.enum.d.ts +8 -0
  324. package/{projects/sharedcomponents/src/lib/enum/icon.enum.ts → lib/enum/icon.enum.d.ts} +8 -3
  325. package/lib/enum/internal-param.enum.d.ts +34 -0
  326. package/lib/enum/keyboard-code.enum.d.ts +30 -0
  327. package/lib/enum/language-code.enum.d.ts +6 -0
  328. package/{projects/sharedcomponents/src/lib/enum/month.enum.ts → lib/enum/month.enum.d.ts} +1 -2
  329. package/lib/enum/read-write-access-config-names.enum.d.ts +4 -0
  330. package/lib/enum/table-name.enum.d.ts +84 -0
  331. package/{projects/sharedcomponents/src/lib/enum/tag-category.enum.ts → lib/enum/tag-category.enum.d.ts} +1 -2
  332. package/lib/enum/tags-component-config-names.d.ts +4 -0
  333. package/lib/enum/thumb-three-way-state.d.ts +6 -0
  334. package/lib/enum/tile-size-type.d.ts +4 -0
  335. package/{projects/sharedcomponents/src/lib/enum/time-period.enum.ts → lib/enum/time-period.enum.d.ts} +1 -2
  336. package/lib/event/co-drag-event.d.ts +5 -0
  337. package/lib/event/co-drop-event.d.ts +8 -0
  338. package/lib/interface/key-value-pair.d.ts +4 -0
  339. package/lib/interface/operation-callback-simple-function.d.ts +4 -0
  340. package/lib/localization/localization.module.d.ts +2 -0
  341. package/lib/localization/localize.pipe.d.ts +7 -0
  342. package/lib/localization/localize.service.d.ts +7 -0
  343. package/lib/localization/translation.d.ts +2 -0
  344. package/lib/model/agenda-event-per-day.model.d.ts +5 -0
  345. package/lib/model/agenda-event.model.d.ts +17 -0
  346. package/lib/model/agenda-null-objects.d.ts +10 -0
  347. package/lib/model/constant/all-months.d.ts +2 -0
  348. package/lib/model/date-range.d.ts +7 -0
  349. package/lib/model/day.model.d.ts +8 -0
  350. package/lib/model/icon-svg.d.ts +4 -0
  351. package/lib/model/month.model.d.ts +5 -0
  352. package/lib/model/send-method.d.ts +7 -0
  353. package/lib/model/settings.d.ts +3 -0
  354. package/lib/model/tag-tree-item.bo.d.ts +18 -0
  355. package/lib/model/time-window.bo.d.ts +13 -0
  356. package/lib/model/tree-object.d.ts +8 -0
  357. package/lib/model/week.model.d.ts +4 -0
  358. package/lib/model/weekday.model.d.ts +16 -0
  359. package/lib/pipe/array-number.pipe.d.ts +4 -0
  360. package/lib/pipe/file-type-image.pipe.d.ts +12 -0
  361. package/lib/pipe/master-pipes.d.ts +1 -0
  362. package/lib/pipe/ucfirst.pipe.d.ts +4 -0
  363. package/lib/service/dictionary.service.d.ts +21 -0
  364. package/lib/service/drag-drop.service.d.ts +86 -0
  365. package/lib/service/icon-cache.service.d.ts +18 -0
  366. package/lib/service/options.service.d.ts +13 -0
  367. package/lib/service/shared-connector.service.d.ts +55 -0
  368. package/lib/service/shared.service.d.ts +18 -0
  369. package/lib/service/stock.service.d.ts +41 -0
  370. package/{projects/sharedcomponents/src/lib → lib}/style/_variables.scss +1 -1
  371. package/lib/utils/array-utils.d.ts +63 -0
  372. package/lib/utils/calendar.utils.d.ts +10 -0
  373. package/{projects/sharedcomponents/src/lib/utils/check-precision-and-scale-result.ts → lib/utils/check-precision-and-scale-result.d.ts} +0 -1
  374. package/lib/utils/co-document-shared-field-logic.d.ts +7 -0
  375. package/lib/utils/date-utils.d.ts +44 -0
  376. package/lib/utils/enum-utils.d.ts +31 -0
  377. package/lib/utils/function/not-nill.function.d.ts +1 -0
  378. package/lib/utils/is-nill.function.d.ts +1 -0
  379. package/lib/utils/map-utils.d.ts +16 -0
  380. package/lib/utils/number-utils.d.ts +125 -0
  381. package/lib/utils/object-utils.d.ts +40 -0
  382. package/lib/utils/ref-code-utils.d.ts +10 -0
  383. package/lib/utils/string-utils.d.ts +38 -0
  384. package/package.json +31 -68
  385. package/{projects/sharedcomponents/src/public-api.ts → public-api.d.ts} +4 -4
  386. package/.browserslistrc +0 -16
  387. package/.editorconfig +0 -16
  388. package/.vscode/extensions.json +0 -4
  389. package/.vscode/launch.json +0 -20
  390. package/.vscode/tasks.json +0 -42
  391. package/Sharedcomponents.iml +0 -11
  392. package/angular.json +0 -177
  393. package/custom-login-bundle.webpack.config.js +0 -3
  394. package/karma.conf.js +0 -44
  395. package/move-assets.js +0 -14
  396. package/projects/sharedcomponents/.browserslistrc +0 -16
  397. package/projects/sharedcomponents/README.md +0 -24
  398. package/projects/sharedcomponents/karma.conf.js +0 -44
  399. package/projects/sharedcomponents/ng-package.json +0 -17
  400. package/projects/sharedcomponents/package.json +0 -23
  401. package/projects/sharedcomponents/src/lib/assets/dictionary/text.properties.ts +0 -8
  402. package/projects/sharedcomponents/src/lib/assets/icons/account.svg +0 -1
  403. package/projects/sharedcomponents/src/lib/assets/icons/angle_left_solid.svg +0 -1
  404. package/projects/sharedcomponents/src/lib/assets/icons/angle_right_solid.svg +0 -1
  405. package/projects/sharedcomponents/src/lib/assets/icons/arrow_fat_right.svg +0 -1
  406. package/projects/sharedcomponents/src/lib/assets/icons/arrow_point_left.svg +0 -8
  407. package/projects/sharedcomponents/src/lib/assets/icons/arrow_point_right.svg +0 -4
  408. package/projects/sharedcomponents/src/lib/assets/icons/at_solid.svg +0 -1
  409. package/projects/sharedcomponents/src/lib/assets/icons/bring_forward_regular.svg +0 -1
  410. package/projects/sharedcomponents/src/lib/assets/icons/check_duotone.svg +0 -1
  411. package/projects/sharedcomponents/src/lib/assets/icons/check_round.svg +0 -1
  412. package/projects/sharedcomponents/src/lib/assets/icons/cross_skinny.svg +0 -1
  413. package/projects/sharedcomponents/src/lib/assets/icons/delete_left_regular.svg +0 -1
  414. package/projects/sharedcomponents/src/lib/assets/icons/delivery_truck.svg +0 -12
  415. package/projects/sharedcomponents/src/lib/assets/icons/email.svg +0 -5
  416. package/projects/sharedcomponents/src/lib/assets/icons/envelope_regular.svg +0 -1
  417. package/projects/sharedcomponents/src/lib/assets/icons/eye_regular.svg +0 -1
  418. package/projects/sharedcomponents/src/lib/assets/icons/file_export_regular.svg +0 -1
  419. package/projects/sharedcomponents/src/lib/assets/icons/file_export_solid.svg +0 -1
  420. package/projects/sharedcomponents/src/lib/assets/icons/file_pdf_regular.svg +0 -1
  421. package/projects/sharedcomponents/src/lib/assets/icons/file_pdf_solid.svg +0 -1
  422. package/projects/sharedcomponents/src/lib/assets/icons/file_signature_regular.svg +0 -1
  423. package/projects/sharedcomponents/src/lib/assets/icons/house_blank_regular.svg +0 -1
  424. package/projects/sharedcomponents/src/lib/assets/icons/lock.svg +0 -1
  425. package/projects/sharedcomponents/src/lib/assets/icons/message_sms_regular.svg +0 -1
  426. package/projects/sharedcomponents/src/lib/assets/icons/message_sms_solid.svg +0 -1
  427. package/projects/sharedcomponents/src/lib/assets/icons/pdf.svg +0 -15
  428. package/projects/sharedcomponents/src/lib/assets/icons/print.svg +0 -10
  429. package/projects/sharedcomponents/src/lib/assets/icons/print_regular.svg +0 -1
  430. package/projects/sharedcomponents/src/lib/assets/icons/print_solid.svg +0 -1
  431. package/projects/sharedcomponents/src/lib/assets/icons/signature_field.svg +0 -9
  432. package/projects/sharedcomponents/src/lib/assets/icons/tag_regular.svg +0 -1
  433. package/projects/sharedcomponents/src/lib/assets/icons/x_solid.svg +0 -1
  434. package/projects/sharedcomponents/src/lib/assets/icons/xml.svg +0 -1
  435. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-base-view.component.ts +0 -68
  436. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-day-view.component.ts +0 -35
  437. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-event.component.ts +0 -73
  438. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-events.component.ts +0 -53
  439. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-half-hour-cell.component.ts +0 -81
  440. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-header.component.ts +0 -275
  441. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-hour-cell.component.ts +0 -38
  442. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-hour-view-labels.component.ts +0 -50
  443. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-hour-view.component.ts +0 -46
  444. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-month-view.component.ts +0 -65
  445. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-select-event.component.ts +0 -39
  446. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-view.component.ts +0 -41
  447. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-week-select-view.component.ts +0 -63
  448. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/agenda-week-view.component.ts +0 -50
  449. package/projects/sharedcomponents/src/lib/components/date-planning/component/agenda/view-select.component.ts +0 -43
  450. package/projects/sharedcomponents/src/lib/components/date-planning/component/calendar/calendar-all-months.component.ts +0 -37
  451. package/projects/sharedcomponents/src/lib/components/date-planning/component/calendar/calendar-all-years.component.ts +0 -52
  452. package/projects/sharedcomponents/src/lib/components/date-planning/component/calendar/calendar-header.component.ts +0 -123
  453. package/projects/sharedcomponents/src/lib/components/date-planning/component/calendar/calendar-view.component.ts +0 -200
  454. package/projects/sharedcomponents/src/lib/components/date-planning/component/calendar/calendar.component.ts +0 -35
  455. package/projects/sharedcomponents/src/lib/components/date-planning/date-planning.component.ts +0 -141
  456. package/projects/sharedcomponents/src/lib/components/date-planning/date-planning.module.ts +0 -61
  457. package/projects/sharedcomponents/src/lib/components/docsign/component/signature/signature.component.ts +0 -82
  458. package/projects/sharedcomponents/src/lib/components/docsign/component/signatures/signatures.component.ts +0 -50
  459. package/projects/sharedcomponents/src/lib/components/docsign/docsign.component.ts +0 -270
  460. package/projects/sharedcomponents/src/lib/components/docsign/docsign.module.ts +0 -22
  461. package/projects/sharedcomponents/src/lib/components/key-pad/key-pad.component.ts +0 -216
  462. package/projects/sharedcomponents/src/lib/components/key-pad/key-pad.module.ts +0 -20
  463. package/projects/sharedcomponents/src/lib/components/layout-switcher/layout-switcher.component.ts +0 -98
  464. package/projects/sharedcomponents/src/lib/components/layout-switcher/layout-switcher.module.ts +0 -21
  465. package/projects/sharedcomponents/src/lib/components/linear-gauge/co-linear-gauge.component.ts +0 -57
  466. package/projects/sharedcomponents/src/lib/components/linear-gauge/co-linear-gauge.module.ts +0 -17
  467. package/projects/sharedcomponents/src/lib/components/login/components/login-base.component.ts +0 -98
  468. package/projects/sharedcomponents/src/lib/components/login/components/login-change-password.component.ts +0 -194
  469. package/projects/sharedcomponents/src/lib/components/login/components/login-mfa-code-entry.component.ts +0 -41
  470. package/projects/sharedcomponents/src/lib/components/login/components/login-mfa-code-setup.component.ts +0 -44
  471. package/projects/sharedcomponents/src/lib/components/login/components/login-username-password.component.ts +0 -167
  472. package/projects/sharedcomponents/src/lib/components/login/localization/login-translation.ts +0 -15
  473. package/projects/sharedcomponents/src/lib/components/login/login.component.ts +0 -137
  474. package/projects/sharedcomponents/src/lib/components/login/login.module.ts +0 -53
  475. package/projects/sharedcomponents/src/lib/components/login/service/login-adapter.service.ts +0 -58
  476. package/projects/sharedcomponents/src/lib/components/login/service/login.service.ts +0 -50
  477. package/projects/sharedcomponents/src/lib/components/screen-config-generator/enums/field-type.enum.ts +0 -9
  478. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/Config.ts +0 -6
  479. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/Field.ts +0 -8
  480. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/Header.ts +0 -8
  481. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/Module.ts +0 -6
  482. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/Rubric.ts +0 -10
  483. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/ScreenConfig.ts +0 -9
  484. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/SubCat.ts +0 -9
  485. package/projects/sharedcomponents/src/lib/components/screen-config-generator/models/SubRubric.ts +0 -8
  486. package/projects/sharedcomponents/src/lib/components/screen-config-generator/screen-config-generator.component.ts +0 -539
  487. package/projects/sharedcomponents/src/lib/components/screen-config-generator/screen-config-generator.module.ts +0 -21
  488. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/layout-selection/layout-selection.component.ts +0 -91
  489. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/layout-selection/layout-selection.module.ts +0 -19
  490. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/printer-selection/printer-selection.component.ts +0 -84
  491. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/printer-selection/printer-selection.module.ts +0 -19
  492. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-email/send-method-email.component.ts +0 -63
  493. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-email/send-method-email.module.ts +0 -24
  494. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.component.ts +0 -38
  495. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-pdf/send-method-pdf.module.ts +0 -21
  496. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.component.ts +0 -60
  497. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/send-method-printer/send-method-printer.module.ts +0 -26
  498. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/signature-button/signature-button.component.ts +0 -42
  499. package/projects/sharedcomponents/src/lib/components/send-method-dialog/components/signature-button/signature-button.module.ts +0 -19
  500. package/projects/sharedcomponents/src/lib/components/send-method-dialog/model/email-address-viewmodel.ts +0 -9
  501. package/projects/sharedcomponents/src/lib/components/send-method-dialog/send-method-dialog.component.ts +0 -325
  502. package/projects/sharedcomponents/src/lib/components/send-method-dialog/send-method-dialog.module.ts +0 -32
  503. package/projects/sharedcomponents/src/lib/components/send-method-dialog/send-method-params.interface.ts +0 -13
  504. package/projects/sharedcomponents/src/lib/components/send-method-dialog/service/send-method.service.ts +0 -63
  505. package/projects/sharedcomponents/src/lib/components/simple-tags/simple-tags.component.ts +0 -243
  506. package/projects/sharedcomponents/src/lib/components/simple-tags/simple-tags.module.ts +0 -24
  507. package/projects/sharedcomponents/src/lib/components/statusbar/statusbar-popup.component.ts +0 -100
  508. package/projects/sharedcomponents/src/lib/components/statusbar/statusbar.component.ts +0 -107
  509. package/projects/sharedcomponents/src/lib/components/statusbar/statusbar.module.ts +0 -25
  510. package/projects/sharedcomponents/src/lib/components/stock/components/allocation-stock-history/allocation-stock-history.component.ts +0 -45
  511. package/projects/sharedcomponents/src/lib/components/stock/components/order-commission-stock-history/order-commission-stock-history.component.ts +0 -45
  512. package/projects/sharedcomponents/src/lib/components/stock/components/order-stock-history/order-stock-history.component.ts +0 -45
  513. package/projects/sharedcomponents/src/lib/components/stock/components/order-stock-tab/order-stock-tab.component.ts +0 -43
  514. package/projects/sharedcomponents/src/lib/components/stock/components/order-supply-stock-history/order-supply-stock-history.component.ts +0 -45
  515. package/projects/sharedcomponents/src/lib/components/stock/components/order-tab/order-tab.component.ts +0 -71
  516. package/projects/sharedcomponents/src/lib/components/stock/components/stock-history/stock-history.component.ts +0 -52
  517. package/projects/sharedcomponents/src/lib/components/stock/components/stock-location/stock-location.component.ts +0 -276
  518. package/projects/sharedcomponents/src/lib/components/stock/components/stock-prognose/stock-prognose.component.ts +0 -49
  519. package/projects/sharedcomponents/src/lib/components/stock/components/stock-tab/stock-tab.component.ts +0 -40
  520. package/projects/sharedcomponents/src/lib/components/stock/localization/translation.ts +0 -60
  521. package/projects/sharedcomponents/src/lib/components/stock/stock-history-tabs/stock-history-tabs.component.ts +0 -32
  522. package/projects/sharedcomponents/src/lib/components/stock/stock-information/stock-information.component.ts +0 -56
  523. package/projects/sharedcomponents/src/lib/components/stock/stock-information-grid/stock-information-grid.component.ts +0 -500
  524. package/projects/sharedcomponents/src/lib/components/stock/stock-tabs/stock-tabs.component.ts +0 -276
  525. package/projects/sharedcomponents/src/lib/components/stock/stock-transfer/stock-change-amount.component.ts +0 -77
  526. package/projects/sharedcomponents/src/lib/components/stock/stock-transfer/stock-transfer.component.ts +0 -178
  527. package/projects/sharedcomponents/src/lib/components/stock/stock.component.ts +0 -228
  528. package/projects/sharedcomponents/src/lib/components/stock/stock.module.ts +0 -97
  529. package/projects/sharedcomponents/src/lib/components/stock-statusbar/stock-statusbar.component.ts +0 -23
  530. package/projects/sharedcomponents/src/lib/components/stock-statusbar/stock-statusbar.module.ts +0 -17
  531. package/projects/sharedcomponents/src/lib/components/tab-bar/tab-bar.component.ts +0 -106
  532. package/projects/sharedcomponents/src/lib/components/tab-bar/tab-bar.module.ts +0 -20
  533. package/projects/sharedcomponents/src/lib/components/tab-bar/tab.interface.ts +0 -5
  534. package/projects/sharedcomponents/src/lib/components/tags/component/tag-join-label/tag-join-label.component.ts +0 -61
  535. package/projects/sharedcomponents/src/lib/components/tags/component/tag-label/tag-label.component.ts +0 -47
  536. package/projects/sharedcomponents/src/lib/components/tags/component/treeview/model/tree-view-node-item.ts +0 -132
  537. package/projects/sharedcomponents/src/lib/components/tags/component/treeview/treeview.component.ts +0 -258
  538. package/projects/sharedcomponents/src/lib/components/tags/tags.component.ts +0 -192
  539. package/projects/sharedcomponents/src/lib/components/tags/tags.module.ts +0 -27
  540. package/projects/sharedcomponents/src/lib/directives/click-outside.directive.ts +0 -25
  541. package/projects/sharedcomponents/src/lib/enum/gauge-color.enum.ts +0 -8
  542. package/projects/sharedcomponents/src/lib/enum/keyboard-code.enum.ts +0 -30
  543. package/projects/sharedcomponents/src/lib/enum/language-code.enum.ts +0 -6
  544. package/projects/sharedcomponents/src/lib/enum/login-component-extra-action-type.enum.ts +0 -4
  545. package/projects/sharedcomponents/src/lib/enum/login-component-page.type.enum.ts +0 -6
  546. package/projects/sharedcomponents/src/lib/enum/login-component-query-variables-name.enum.ts +0 -5
  547. package/projects/sharedcomponents/src/lib/enum/thumb-three-way-state.ts +0 -18
  548. package/projects/sharedcomponents/src/lib/localization/localization.module.ts +0 -17
  549. package/projects/sharedcomponents/src/lib/localization/localize.pipe.ts +0 -21
  550. package/projects/sharedcomponents/src/lib/localization/localize.service.ts +0 -28
  551. package/projects/sharedcomponents/src/lib/localization/translation.ts +0 -2
  552. package/projects/sharedcomponents/src/lib/model/agenda-event-per-day.model.ts +0 -6
  553. package/projects/sharedcomponents/src/lib/model/agenda-event.model.ts +0 -19
  554. package/projects/sharedcomponents/src/lib/model/agenda-null-objects.ts +0 -11
  555. package/projects/sharedcomponents/src/lib/model/constant/all-months.ts +0 -17
  556. package/projects/sharedcomponents/src/lib/model/date-range.ts +0 -10
  557. package/projects/sharedcomponents/src/lib/model/day.model.ts +0 -9
  558. package/projects/sharedcomponents/src/lib/model/icon-svg.ts +0 -37
  559. package/projects/sharedcomponents/src/lib/model/month.model.ts +0 -11
  560. package/projects/sharedcomponents/src/lib/model/send-method.ts +0 -13
  561. package/projects/sharedcomponents/src/lib/model/settings.ts +0 -5
  562. package/projects/sharedcomponents/src/lib/model/tag-tree-item.bo.ts +0 -28
  563. package/projects/sharedcomponents/src/lib/model/time-window.bo.ts +0 -21
  564. package/projects/sharedcomponents/src/lib/model/tree-object.ts +0 -13
  565. package/projects/sharedcomponents/src/lib/model/tree-view-default.model.ts +0 -107
  566. package/projects/sharedcomponents/src/lib/model/tree-view-node-default.model.ts +0 -196
  567. package/projects/sharedcomponents/src/lib/model/tree-view-node-item-options.model.ts +0 -12
  568. package/projects/sharedcomponents/src/lib/model/tree-view-node.model.ts +0 -150
  569. package/projects/sharedcomponents/src/lib/model/tree-view.model.ts +0 -57
  570. package/projects/sharedcomponents/src/lib/model/week.model.ts +0 -5
  571. package/projects/sharedcomponents/src/lib/model/weekday.model.ts +0 -17
  572. package/projects/sharedcomponents/src/lib/pipe/array-number.pipe.ts +0 -14
  573. package/projects/sharedcomponents/src/lib/pipe/master-pipes.ts +0 -7
  574. package/projects/sharedcomponents/src/lib/pipe/ucfirst.pipe.ts +0 -14
  575. package/projects/sharedcomponents/src/lib/service/dictionary.service.ts +0 -86
  576. package/projects/sharedcomponents/src/lib/service/icon-cache.service.ts +0 -51
  577. package/projects/sharedcomponents/src/lib/service/options.service.ts +0 -43
  578. package/projects/sharedcomponents/src/lib/service/shared-connector.service.ts +0 -401
  579. package/projects/sharedcomponents/src/lib/service/shared-initializer.service.ts +0 -29
  580. package/projects/sharedcomponents/src/lib/service/shared.service.ts +0 -49
  581. package/projects/sharedcomponents/src/lib/service/stock.service.ts +0 -124
  582. package/projects/sharedcomponents/src/lib/utils/array-utils.ts +0 -225
  583. package/projects/sharedcomponents/src/lib/utils/calendar.utils.ts +0 -75
  584. package/projects/sharedcomponents/src/lib/utils/css-utils.ts +0 -275
  585. package/projects/sharedcomponents/src/lib/utils/date-utils.ts +0 -302
  586. package/projects/sharedcomponents/src/lib/utils/function/not-nill.function.ts +0 -4
  587. package/projects/sharedcomponents/src/lib/utils/is-nill.function.ts +0 -4
  588. package/projects/sharedcomponents/src/lib/utils/map-utils.ts +0 -44
  589. package/projects/sharedcomponents/src/lib/utils/number-utils.ts +0 -439
  590. package/projects/sharedcomponents/src/lib/utils/object-utils.ts +0 -310
  591. package/projects/sharedcomponents/src/lib/utils/string-utils.ts +0 -67
  592. package/projects/sharedcomponents/src/lib/utils/tree-utils.ts +0 -63
  593. package/projects/sharedcomponents/src/test.ts +0 -27
  594. package/projects/sharedcomponents/tsconfig.lib.json +0 -18
  595. package/projects/sharedcomponents/tsconfig.lib.prod.json +0 -10
  596. package/projects/sharedcomponents/tsconfig.spec.json +0 -17
  597. package/script/create-bundle-version.js +0 -19
  598. package/script/merge-icons.js +0 -39
  599. package/src/app/app.component.scss +0 -31
  600. package/src/app/app.component.spec.ts +0 -31
  601. package/src/app/app.component.ts +0 -454
  602. package/src/app/app.module.ts +0 -69
  603. package/src/app/bundle/index.html +0 -14
  604. package/src/app/bundle/login/login-bundle.component.scss +0 -6
  605. package/src/app/bundle/login/login-bundle.component.ts +0 -111
  606. package/src/app/bundle/login/login-bundle.module.ts +0 -30
  607. package/src/app/bundle/main-login-bundle.ts +0 -11
  608. package/src/app/bundle/polyfills.ts +0 -63
  609. package/src/app/test-data.service.ts +0 -60
  610. package/src/environments/environment.bundle.prod.ts +0 -3
  611. package/src/environments/environment.prod.ts +0 -3
  612. package/src/environments/environment.ts +0 -16
  613. package/src/favicon.ico +0 -0
  614. package/src/index.html +0 -13
  615. package/src/main.ts +0 -12
  616. package/src/polyfills.ts +0 -53
  617. package/src/styles.scss +0 -54
  618. package/src/test.ts +0 -26
  619. package/tsconfig.app.json +0 -15
  620. package/tsconfig.bundle.json +0 -38
  621. package/tsconfig.json +0 -64
  622. package/tsconfig.spec.json +0 -18
  623. package/webpack.login.bundle.config.js +0 -32
  624. /package/{projects/sharedcomponents/src/lib/components/docsign → lib/components/access}/style/_material-definition.scss +0 -0
  625. /package/{projects/sharedcomponents/src/lib/components/stock-statusbar → lib/components/access}/style/material.scss +0 -0
  626. /package/{projects/sharedcomponents/src/lib/components/date-planning → lib/components/activity-list}/style/_material-definition.scss +0 -0
  627. /package/{projects/sharedcomponents/src/lib/components/key-pad → lib/components/activity-list}/style/material.scss +0 -0
  628. /package/{projects/sharedcomponents/src/lib/components/screen-config-generator → lib/components/app-file-dropzone}/style/_material-definition.scss +0 -0
  629. /package/{projects/sharedcomponents/src/lib/components/stock → lib/components/app-file-dropzone}/style/material.scss +0 -0
  630. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/agenda/style/_layout.scss +0 -0
  631. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/agenda/style/_material-definition.scss +0 -0
  632. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/agenda/style/_theme.scss +0 -0
  633. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/agenda/style/material.scss +0 -0
  634. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/calendar/style/_layout.scss +0 -0
  635. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/calendar/style/_material-definition.scss +0 -0
  636. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/calendar/style/_theme.scss +0 -0
  637. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/component/calendar/style/material.scss +0 -0
  638. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/style/_layout.scss +0 -0
  639. /package/{projects/sharedcomponents/src/lib/components/stock-statusbar → lib/components/date-planning}/style/_material-definition.scss +0 -0
  640. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/style/_theme.scss +0 -0
  641. /package/{projects/sharedcomponents/src/lib → lib}/components/date-planning/style/material.scss +0 -0
  642. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signature/style/_layout.scss +0 -0
  643. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signature/style/_material-definition.scss +0 -0
  644. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signature/style/_theme.scss +0 -0
  645. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signature/style/material.scss +0 -0
  646. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signatures/style/_layout.scss +0 -0
  647. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signatures/style/_material-definition.scss +0 -0
  648. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signatures/style/_theme.scss +0 -0
  649. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/component/signatures/style/material.scss +0 -0
  650. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/style/_layout.scss +0 -0
  651. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/style/_theme.scss +0 -0
  652. /package/{projects/sharedcomponents/src/lib → lib}/components/docsign/style/material.scss +0 -0
  653. /package/{projects/sharedcomponents/src/lib/components/tab-bar → lib/components/file-upload-popup}/style/material.scss +0 -0
  654. /package/{projects/sharedcomponents/src/lib/components/stock-statusbar/style/_theme.scss → lib/components/files-upload/style/_material-definition.scss} +0 -0
  655. /package/{projects/sharedcomponents/src/lib/components/tags/component → lib/components/image-display}/style/material.scss +0 -0
  656. /package/{projects/sharedcomponents/src/lib → lib}/components/key-pad/style/_layout.scss +0 -0
  657. /package/{projects/sharedcomponents/src/lib → lib}/components/key-pad/style/_material-definition.scss +0 -0
  658. /package/{projects/sharedcomponents/src/lib → lib}/components/key-pad/style/_theme.scss +0 -0
  659. /package/{projects/sharedcomponents/src/lib/components/login → lib/components/key-pad}/style/material.scss +0 -0
  660. /package/{projects/sharedcomponents/src/lib → lib}/components/layout-switcher/style/_layout.scss +0 -0
  661. /package/{projects/sharedcomponents/src/lib → lib}/components/layout-switcher/style/_material-definition.scss +0 -0
  662. /package/{projects/sharedcomponents/src/lib → lib}/components/layout-switcher/style/_theme.scss +0 -0
  663. /package/{projects/sharedcomponents/src/lib → lib}/components/layout-switcher/style/material.scss +0 -0
  664. /package/{projects/sharedcomponents/src/lib → lib}/components/linear-gauge/style/_layout.scss +0 -0
  665. /package/{projects/sharedcomponents/src/lib → lib}/components/linear-gauge/style/_material-definition.scss +0 -0
  666. /package/{projects/sharedcomponents/src/lib → lib}/components/linear-gauge/style/_theme.scss +0 -0
  667. /package/{projects/sharedcomponents/src/lib → lib}/components/linear-gauge/style/material.scss +0 -0
  668. /package/{projects/sharedcomponents/src/lib → lib}/components/login/style/_layout.scss +0 -0
  669. /package/{projects/sharedcomponents/src/lib → lib}/components/login/style/_material-definition.scss +0 -0
  670. /package/{projects/sharedcomponents/src/lib → lib}/components/login/style/_theme.scss +0 -0
  671. /package/{projects/sharedcomponents/src/lib/components/screen-config-generator → lib/components/login}/style/material.scss +0 -0
  672. /package/{projects/sharedcomponents/src/lib/components/tab-bar/style/_theme.scss → lib/components/multi-property-toggler/style/_material-definition.scss} +0 -0
  673. /package/{projects/sharedcomponents/src/lib → lib}/components/screen-config-generator/style/_layout.scss +0 -0
  674. /package/{src/assets/.gitkeep → lib/components/screen-config-generator/style/_material-definition.scss} +0 -0
  675. /package/{projects/sharedcomponents/src/lib → lib}/components/screen-config-generator/style/_theme.scss +0 -0
  676. /package/{projects/sharedcomponents/src/lib/components/simple-tags → lib/components/screen-config-generator}/style/material.scss +0 -0
  677. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/layout-selection/style/_layout.scss +0 -0
  678. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/layout-selection/style/_material-definition.scss +0 -0
  679. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/layout-selection/style/_theme.scss +0 -0
  680. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/layout-selection/style/material.scss +0 -0
  681. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/printer-selection/style/_layout.scss +0 -0
  682. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/printer-selection/style/_material-definition.scss +0 -0
  683. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/printer-selection/style/_theme.scss +0 -0
  684. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/printer-selection/style/material.scss +0 -0
  685. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-email/style/_layout.scss +0 -0
  686. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-email/style/_material-definition.scss +0 -0
  687. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-email/style/_theme.scss +0 -0
  688. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-email/style/material.scss +0 -0
  689. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-pdf/style/_layout.scss +0 -0
  690. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-pdf/style/_material-definition.scss +0 -0
  691. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-pdf/style/_theme.scss +0 -0
  692. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-pdf/style/material.scss +0 -0
  693. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-printer/style/_layout.scss +0 -0
  694. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-printer/style/_material-definition.scss +0 -0
  695. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-printer/style/_theme.scss +0 -0
  696. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/send-method-printer/style/material.scss +0 -0
  697. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/signature-button/style/_layout.scss +0 -0
  698. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/signature-button/style/_material-definition.scss +0 -0
  699. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/signature-button/style/_theme.scss +0 -0
  700. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/components/signature-button/style/material.scss +0 -0
  701. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/style/_layout.scss +0 -0
  702. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/style/_material-definition.scss +0 -0
  703. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/style/_theme.scss +0 -0
  704. /package/{projects/sharedcomponents/src/lib → lib}/components/send-method-dialog/style/material.scss +0 -0
  705. /package/{projects/sharedcomponents/src/lib → lib}/components/simple-tags/style/_layout.scss +0 -0
  706. /package/{projects/sharedcomponents/src/lib → lib}/components/simple-tags/style/_material-definition.scss +0 -0
  707. /package/{projects/sharedcomponents/src/lib → lib}/components/simple-tags/style/_theme.scss +0 -0
  708. /package/{projects/sharedcomponents/src/lib → lib}/components/statusbar/style/_layout.scss +0 -0
  709. /package/{projects/sharedcomponents/src/lib → lib}/components/statusbar/style/_material-definition.scss +0 -0
  710. /package/{projects/sharedcomponents/src/lib → lib}/components/statusbar/style/_theme.scss +0 -0
  711. /package/{projects/sharedcomponents/src/lib → lib}/components/statusbar/style/material.scss +0 -0
  712. /package/{projects/sharedcomponents/src/lib → lib}/components/stock/style/_layout.scss +0 -0
  713. /package/{projects/sharedcomponents/src/lib → lib}/components/stock/style/_material-definition.scss +0 -0
  714. /package/{projects/sharedcomponents/src/lib → lib}/components/stock/style/_theme.scss +0 -0
  715. /package/{projects/sharedcomponents/src/lib → lib}/components/stock-statusbar/style/_layout.scss +0 -0
  716. /package/{projects/sharedcomponents/src/lib → lib}/components/tab-bar/style/_layout.scss +0 -0
  717. /package/{projects/sharedcomponents/src/lib → lib}/components/tab-bar/style/_material-definition.scss +0 -0
  718. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/style/_layout.scss +0 -0
  719. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/style/_material-definition.scss +0 -0
  720. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/style/_theme.scss +0 -0
  721. /package/{projects/sharedcomponents/src/lib/components/tags/component/tag-join-label → lib/components/tags/component}/style/material.scss +0 -0
  722. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/tag-join-label/style/_layout.scss +0 -0
  723. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/tag-join-label/style/_material-definition.scss +0 -0
  724. /package/{projects/sharedcomponents/src/lib → lib}/components/tags/component/tag-join-label/style/_theme.scss +0 -0
  725. /package/{projects/sharedcomponents/src/lib → lib}/style/_mixin.scss +0 -0
  726. /package/{projects/sharedcomponents/src/lib → lib}/style/sharedcomponents-globals.scss +0 -0
  727. /package/{projects/sharedcomponents/src/lib/utils/check-within-stepped-bounds-result.ts → lib/utils/check-within-stepped-bounds-result.d.ts} +0 -0
@@ -0,0 +1,469 @@
1
+ import { __awaiter, __decorate } from "tslib";
2
+ import { ComponentFactoryResolver, Directive, EventEmitter, HostBinding, HostListener, Input, Output, ViewContainerRef } from "@angular/core";
3
+ import { TableName } from "../../../enum/table-name.enum";
4
+ import { DictionaryService } from "../../../service/dictionary.service";
5
+ import { FileType } from "@colijnit/mainapi/build/enum/file-type.enum";
6
+ import { OperationWithAlwaysSuccessCallback } from "../../../interface/operation-callback-simple-function";
7
+ import { ArrayUtils } from "../../../utils/array-utils";
8
+ import { RefCodeUtils } from "../../../utils/ref-code-utils";
9
+ import { CoDocumentSharedFieldLogic } from "../../../utils/co-document-shared-field-logic";
10
+ import { ObjectRightType } from "@colijnit/sharedapi/build/enum/object-right-type.enum";
11
+ import { InputBoolean } from "../../../decorator/input-boolean.decorator";
12
+ import { AppFileDropzoneComponent } from "../../app-file-dropzone/app-file-dropzone.component";
13
+ import { FileUtils } from "@colijnit/mainapi/build/utils/file-utils";
14
+ import { CoDocument } from "@colijnit/mainapi/build/model/co-document";
15
+ import { CoDocumentType } from "@colijnit/mainapi/build/enum/co-document-type.enum";
16
+ import { FileUploadPopupComponent } from "../../file-upload-popup/file-upload-popup.component";
17
+ // A base component that lets the user make a list of files from its device. Doesn't actually upload, but outputs chosen files as filesChanged.
18
+ export class BaseFileUploadComponent {
19
+ // private static readonly _dummyTrueFunction: OperationCallbackSimpleFunction = (object: any) => Promise.resolve(true);
20
+ constructor(
21
+ //protected _promptService: PromptService,
22
+ _dictionaryService,
23
+ //protected _userService: UserService,
24
+ _container, _factory) {
25
+ this._dictionaryService = _dictionaryService;
26
+ this._container = _container;
27
+ this._factory = _factory;
28
+ this.documents = [];
29
+ // The ability to drop files on the page
30
+ this.fullPageDrop = false;
31
+ // If user gets the ability of adding files.
32
+ this.canAdd = true;
33
+ // Show add button
34
+ this.addWithButton = true;
35
+ // If user gets the ability of deleting files.
36
+ this.canDelete = true;
37
+ this.noDragDropOrdering = false;
38
+ this.askBeforeDelete = true;
39
+ this.resizeImages = false;
40
+ this.lockOperation = OperationWithAlwaysSuccessCallback;
41
+ this.unlockOperation = OperationWithAlwaysSuccessCallback;
42
+ this.beforeDeleteOperation = OperationWithAlwaysSuccessCallback;
43
+ this.afterDeleteOperation = OperationWithAlwaysSuccessCallback;
44
+ this.beforeCreateOperation = OperationWithAlwaysSuccessCallback;
45
+ this.afterCreateOperation = OperationWithAlwaysSuccessCallback;
46
+ this.beforeEditOperation = OperationWithAlwaysSuccessCallback;
47
+ this.dontAskBeforeDelete = false;
48
+ this.noOwnDeleteOperation = false;
49
+ this.useWithoutSettingProps = false;
50
+ this.medicalUserGroups = false;
51
+ // Use with customFileDropEvent
52
+ this.useCustomFileDropEvent = false;
53
+ // Use in conjunction with useCustomFileDropEvent
54
+ this.customFileDropEvent = new EventEmitter();
55
+ // Emits if user wants to add multiple documents at once
56
+ this.documentsAdded = new EventEmitter();
57
+ this.documentDeleted = new EventEmitter();
58
+ // Emits every time the order of documents was changed
59
+ this.sortableListChanged = new EventEmitter();
60
+ this.documentChangeEvent = new EventEmitter();
61
+ // Use this if consumer requires to perform extra actions, like locking a parent businessObject if it contains the collection of documents. Emit with true when popup opened, false for close
62
+ this.popupOpenedStateChange = new EventEmitter();
63
+ this._documentKey = "";
64
+ this._readonly = false;
65
+ }
66
+ // The fileType that the documents should be saved as, leave empty to automatically detect filetype. Also determines file picker filter
67
+ set fileType(value) {
68
+ if (value) {
69
+ this._fileType = value;
70
+ //TODO Documentdataloader fix
71
+ //this._coDocumentDataLoader.loadAllowedTypes().then(() => {this.handleAcceptedFileTypesLoaded(value)});
72
+ }
73
+ }
74
+ get fileType() {
75
+ return this._fileType;
76
+ }
77
+ set documentKey(value) {
78
+ this._documentKey = value + ""; // force string
79
+ }
80
+ get documentKey() {
81
+ return this._documentKey;
82
+ }
83
+ set readonly(value) {
84
+ this._readonly = value;
85
+ if (this._popup && this._popup.instance) {
86
+ this._popup.instance.readonly = value;
87
+ }
88
+ }
89
+ get readonly() {
90
+ return this._readonly;
91
+ }
92
+ set maxUploadSizeParam(value) {
93
+ if (value) {
94
+ this._setInternalParamObj(value);
95
+ }
96
+ }
97
+ onDrop(event) {
98
+ event.preventDefault();
99
+ event.stopPropagation();
100
+ if (!this.useCustomFileDropEvent) {
101
+ this.filesPicked(event.dataTransfer.files);
102
+ }
103
+ else {
104
+ this.customFileDropEvent.emit(event.dataTransfer.files);
105
+ }
106
+ this._clearDropzone();
107
+ }
108
+ onDragEnd(event) {
109
+ event.dataTransfer.clearData();
110
+ this._clearDropzone();
111
+ }
112
+ onDragOver(event) {
113
+ event.preventDefault();
114
+ }
115
+ onDragEnter(event) {
116
+ this._dragEnterTarget = event.target;
117
+ this._showDropzone();
118
+ }
119
+ onDragLeave(event) {
120
+ if (event.target === this._dragEnterTarget) {
121
+ this._clearDropzone();
122
+ }
123
+ }
124
+ ngOnDestroy() {
125
+ this._clearDropzone();
126
+ }
127
+ _showDropzone() {
128
+ if (!this._dropZone) {
129
+ const fact = this._factory.resolveComponentFactory(AppFileDropzoneComponent);
130
+ this._dropZone = this._container.createComponent(fact);
131
+ this._dropZone.instance.customDropActionMessage = this.dropMessage;
132
+ }
133
+ }
134
+ _clearDropzone() {
135
+ this._container.clear();
136
+ if (this._dropZone) {
137
+ this._dropZone.destroy();
138
+ this._dropZone = undefined;
139
+ }
140
+ }
141
+ // Remove file from upload array.
142
+ handleDelete(file) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ let success = yield this.beforeDeleteOperation(file);
145
+ try {
146
+ if (success) {
147
+ yield this._delete(file);
148
+ success = true;
149
+ }
150
+ }
151
+ finally {
152
+ yield this.afterDeleteOperation(file);
153
+ }
154
+ return Promise.resolve(success);
155
+ });
156
+ }
157
+ _delete(file) {
158
+ return __awaiter(this, void 0, void 0, function* () {
159
+ let doDelete = true;
160
+ if (!this.dontAskBeforeDelete) {
161
+ //TODO make dialogService
162
+ //doDelete = await this._promptService.showYesNo("MESSAGE_DELETE_RECORD_QUESTION");
163
+ }
164
+ if (doDelete) {
165
+ if (!this.noOwnDeleteOperation) {
166
+ ArrayUtils.RemoveElement(file, this.documents);
167
+ }
168
+ this.documentDeleted.emit(file);
169
+ }
170
+ });
171
+ }
172
+ handleSortingChange(docs) {
173
+ this.sortableListChanged.emit(docs);
174
+ }
175
+ handleFileChange(event) {
176
+ return __awaiter(this, void 0, void 0, function* () {
177
+ if (event && event.target && event.target.files && event.target.files.length > 0) {
178
+ // check file sizes and extension
179
+ //Todo: fix this
180
+ //const allowedExtensions = await this._baseDataDalRepository.getAllowedExtensions();
181
+ let allFilesAreSmallEnough = true;
182
+ let allFilesHaveAllowedExtensions = true;
183
+ const sizeToCompare = this._maxUploadFileSize ? this._maxUploadFileSize : undefined;
184
+ const len = event.target.files.length;
185
+ for (let i = 0; i < len; i++) {
186
+ const uploadSizeAllowed = FileUtils.CheckMaxUploadSize(event.target.files[i], sizeToCompare);
187
+ if (!uploadSizeAllowed) {
188
+ allFilesAreSmallEnough = false;
189
+ break;
190
+ }
191
+ const extensionAllowed = true; //FileUtils.CheckExtension(event.target.files[i], allowedExtensions);
192
+ if (!extensionAllowed) {
193
+ allFilesHaveAllowedExtensions = false;
194
+ break;
195
+ }
196
+ }
197
+ if (!allFilesAreSmallEnough) {
198
+ //TODO make dialogService
199
+ //this._promptService.showWarning(this._dictionaryService.get("FILE_TOO_LARGE_TO_UPLOAD", true, "" + [FileUtils.getMaxUploadSizeInMb(sizeToCompare)]));
200
+ }
201
+ else if (!allFilesHaveAllowedExtensions) {
202
+ //const extensionsList = allowedExtensions.map(allowedExtension => allowedExtension.extension).sort().join(", ");
203
+ //this._promptService.showWarning(this._dictionaryService.get("FILE_HAS_DISALLOWED_EXTENSION", false, extensionsList));
204
+ }
205
+ else {
206
+ const filesToAdd = yield this.convertFilesIntoCoDocuments(event.target.files);
207
+ if (filesToAdd.length > 1) {
208
+ this.documentsAdded.emit(filesToAdd);
209
+ }
210
+ else {
211
+ if (this.useWithoutSettingProps) {
212
+ this.documentsAdded.next(filesToAdd);
213
+ }
214
+ else {
215
+ this.documentUnderEdit = filesToAdd[0];
216
+ this.openPopup();
217
+ }
218
+ }
219
+ }
220
+ }
221
+ });
222
+ }
223
+ handleEditDocumentClick(docToEdit) {
224
+ return __awaiter(this, void 0, void 0, function* () {
225
+ this.documentUnderEdit = docToEdit;
226
+ const showPopup = yield this.beforeEditOperation(docToEdit);
227
+ if (showPopup) {
228
+ this.openPopup();
229
+ }
230
+ });
231
+ }
232
+ openPopup() {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ this._createAndFillPopupInstance();
235
+ this._docChangeSub = this._popup.instance.documentChangeEvent.subscribe((doc) => {
236
+ this.documentChangeEvent.emit(doc);
237
+ });
238
+ });
239
+ }
240
+ openPopupToAddDocumentByUrl() {
241
+ this._createDocumentToAddByUrl();
242
+ this._createAndFillPopupInstance(true);
243
+ this._docChangeSub = this._popup.instance.documentChangeEvent.subscribe((doc) => {
244
+ doc.fileName = doc.filePath;
245
+ this.documentChangeEvent.emit(doc);
246
+ });
247
+ }
248
+ _createDocumentToAddByUrl() {
249
+ this.documentUnderEdit = new CoDocument();
250
+ this.documentUnderEdit.table = this.documentTable;
251
+ this.documentUnderEdit.key = this.documentKey;
252
+ this.documentUnderEdit.fileType = this.fileType;
253
+ this.documentUnderEdit.documentType = CoDocumentType.SaveAsLinkOnRandomLocation;
254
+ this.documentUnderEdit.pathIsUrl = true;
255
+ //TODO Fix user Input
256
+ //this.documentUnderEdit.creationUser = this._userService.userName.toUpperCase();
257
+ //this.documentUnderEdit.modifiedUser = this._userService.userName.toUpperCase();
258
+ this.documentUnderEdit.creationDate = new Date();
259
+ this.documentUnderEdit.modifiedDate = new Date();
260
+ }
261
+ _createAndFillPopupInstance(addDocumentByUrl = false) {
262
+ this.popupOpenedStateChange.emit(true);
263
+ const factory = this._factory.resolveComponentFactory(FileUploadPopupComponent);
264
+ this._popup = this._container.createComponent(factory);
265
+ this._popup.instance.readonly = this._readonly;
266
+ this._popup.instance.addDocumentByUrl = addDocumentByUrl;
267
+ this._popup.instance.hasPublicAccessVisible = this.documentTable === TableName.Goods;
268
+ this._popup.instance.showDocumentReportPicker = (this.documentTable === TableName.Transactions || this.documentTable === TableName.TransactionLines);
269
+ this._popup.instance.documentUnderEdit = this.documentUnderEdit;
270
+ this._popup.instance.filesUploadConfigObjects = this.filesUploadConfigObjects;
271
+ this._popup.instance.medicalUserGroups = this.medicalUserGroups;
272
+ this._popup.instance.tagCategory = this.tagCategory;
273
+ this._popup.instance.displayReadWriteAccess = this.displayReadWriteAccess;
274
+ this._popup.instance.tagReferenceTable = this.tagReferenceTable;
275
+ this._popup.instance.publicationIds = RefCodeUtils.GetMultiRefCodeChoices(this.documentUnderEdit.publication);
276
+ this._popup.instance.storeGroupIds = this.documentUnderEdit.retailFormulas;
277
+ this._popup.instance.fileType = this.fileType;
278
+ this._prepareFileRights();
279
+ this._popupCloseSub = this._popup.instance.popupCloseEvent.subscribe(() => {
280
+ this._unlockDocument();
281
+ this.popupOpenedStateChange.emit(false);
282
+ this._popupCloseSub.unsubscribe();
283
+ this._docChangeSub.unsubscribe();
284
+ this._popup.destroy();
285
+ this._popup = undefined;
286
+ });
287
+ }
288
+ convertFilesIntoCoDocuments(files) {
289
+ return __awaiter(this, void 0, void 0, function* () {
290
+ const amountOfFiles = files.length;
291
+ const filesToAdd = [];
292
+ for (let i = 0; i < amountOfFiles; i++) {
293
+ const fileAsDocument = yield this._getFileAsDocument(files[i]);
294
+ fileAsDocument.index = CoDocumentSharedFieldLogic.GenerateAvailableIndexNr(this.documents || []) + i;
295
+ filesToAdd.push(fileAsDocument);
296
+ }
297
+ return filesToAdd;
298
+ });
299
+ }
300
+ filesPicked(files) {
301
+ return __awaiter(this, void 0, void 0, function* () {
302
+ if (files && files.length) {
303
+ let allFilesAreValid = true;
304
+ const amountOfFiles = files.length;
305
+ for (let i = 0; i < amountOfFiles; i++) {
306
+ if (!FileUtils.CheckMaxUploadSize(files[i], this._maxUploadFileSize)) {
307
+ allFilesAreValid = false;
308
+ break;
309
+ }
310
+ }
311
+ if (!allFilesAreValid) {
312
+ //TODO make dialogService
313
+ //this._promptService.showWarning(this._dictionaryService.get("FILE_TOO_LARGE_TO_UPLOAD", true, "" + FileUtils.getMaxUploadSizeInMb(this._maxUploadFileSize).toString()));
314
+ }
315
+ else {
316
+ const filesToAdd = yield this.convertFilesIntoCoDocuments(files);
317
+ if (filesToAdd.length > 1 || this.useWithoutSettingProps) {
318
+ this.documentsAdded.emit(filesToAdd);
319
+ }
320
+ else {
321
+ this.documentUnderEdit = filesToAdd[0]; // Setting docUnderEdit opens the popup window
322
+ this.openPopup();
323
+ }
324
+ }
325
+ }
326
+ });
327
+ }
328
+ handleAcceptedFileTypesLoaded(value) {
329
+ //TODO fix loading
330
+ //this.acceptedUploadFormats = this._coDocumentDataLoader.getAllowedExtensionsForType(value);
331
+ }
332
+ _getFileAsDocument(file) {
333
+ return __awaiter(this, void 0, void 0, function* () {
334
+ const fileAsCoDocument = yield FileUtils.ReadFileAsNewCoDocument(file, this.resizeImages);
335
+ // set some extra known fields for the codocument:
336
+ fileAsCoDocument.table = this.documentTable;
337
+ fileAsCoDocument.key = this.documentKey;
338
+ //TODO fix add users
339
+ //fileAsCoDocument.creationUser = this._userService.userName.toUpperCase();
340
+ //fileAsCoDocument.modifiedUser = this._userService.userName.toUpperCase();
341
+ fileAsCoDocument.creationDate = new Date();
342
+ fileAsCoDocument.modifiedDate = new Date();
343
+ fileAsCoDocument.fileType = this.fileType ? this.fileType : FileUtils.IsImageFile(file) ? FileType.Image : FileType.Document;
344
+ if (fileAsCoDocument) {
345
+ return fileAsCoDocument;
346
+ }
347
+ });
348
+ }
349
+ _setInternalParamObj(value) {
350
+ return __awaiter(this, void 0, void 0, function* () {
351
+ //TODO fix params
352
+ //const param: InternalParameterObject = await this._generalDalRepository.getInternalParamObject(value);
353
+ //this._maxUploadFileSize = isNaN(parseInt(param.value, 0)) ? undefined : parseInt(param.value, 0);
354
+ });
355
+ }
356
+ _lockDocument() {
357
+ return __awaiter(this, void 0, void 0, function* () {
358
+ if (!this.documentUnderEdit.documentId) {
359
+ return true; // New document does not have an ID and therefore does not have to be locked
360
+ }
361
+ const lockOk = yield this.lockOperation(CoDocument);
362
+ return lockOk;
363
+ });
364
+ }
365
+ _unlockDocument() {
366
+ return __awaiter(this, void 0, void 0, function* () {
367
+ if (!this.documentUnderEdit.documentId) {
368
+ return true; // New document does not have an ID and therefore does not have to be locked
369
+ }
370
+ const unlockOk = yield this.unlockOperation(CoDocument);
371
+ return unlockOk;
372
+ });
373
+ }
374
+ _prepareFileRights() {
375
+ const len = this.documentUnderEdit.rights.length;
376
+ for (let i = 0; i < len; i++) {
377
+ const right = this.documentUnderEdit.rights[i];
378
+ if (right.rightLevel === ObjectRightType.ReadWrite) {
379
+ this._popup.instance.userGroupsForWrite.push(right.userGroupId);
380
+ }
381
+ if (right.rightLevel === ObjectRightType.ReadOnly) {
382
+ this._popup.instance.userGroupsForRead.push(right.userGroupId);
383
+ }
384
+ }
385
+ }
386
+ }
387
+ BaseFileUploadComponent.decorators = [
388
+ { type: Directive }
389
+ ];
390
+ BaseFileUploadComponent.ctorParameters = () => [
391
+ { type: DictionaryService },
392
+ { type: ViewContainerRef },
393
+ { type: ComponentFactoryResolver }
394
+ ];
395
+ BaseFileUploadComponent.propDecorators = {
396
+ fileType: [{ type: Input }],
397
+ documents: [{ type: Input }],
398
+ documentTable: [{ type: Input }],
399
+ documentKey: [{ type: Input }],
400
+ fullPageDrop: [{ type: Input }],
401
+ canAdd: [{ type: Input }],
402
+ dropMessage: [{ type: Input }],
403
+ addWithButton: [{ type: Input }],
404
+ canDelete: [{ type: Input }],
405
+ noDragDropOrdering: [{ type: Input }],
406
+ readonly: [{ type: Input }],
407
+ askBeforeDelete: [{ type: Input }],
408
+ resizeImages: [{ type: Input }],
409
+ lockOperation: [{ type: Input }],
410
+ unlockOperation: [{ type: Input }],
411
+ beforeDeleteOperation: [{ type: Input }],
412
+ afterDeleteOperation: [{ type: Input }],
413
+ beforeCreateOperation: [{ type: Input }],
414
+ afterCreateOperation: [{ type: Input }],
415
+ beforeEditOperation: [{ type: Input }],
416
+ dontAskBeforeDelete: [{ type: Input }],
417
+ noOwnDeleteOperation: [{ type: Input }],
418
+ maxUploadSizeParam: [{ type: Input }],
419
+ useWithoutSettingProps: [{ type: Input }],
420
+ filesUploadConfigObjects: [{ type: Input }],
421
+ medicalUserGroups: [{ type: Input }],
422
+ tagCategory: [{ type: Input }],
423
+ tagReferenceTable: [{ type: Input }],
424
+ displayReadWriteAccess: [{ type: Input }],
425
+ useCustomFileDropEvent: [{ type: Input }],
426
+ customFileDropEvent: [{ type: Output }],
427
+ documentsAdded: [{ type: Output }],
428
+ documentDeleted: [{ type: Output }],
429
+ sortableListChanged: [{ type: Output }],
430
+ documentChangeEvent: [{ type: Output }],
431
+ popupOpenedStateChange: [{ type: Output }],
432
+ hidden: [{ type: HostBinding, args: ["class.hidden",] }],
433
+ onDrop: [{ type: HostListener, args: ["drop", ["$event"],] }],
434
+ onDragEnd: [{ type: HostListener, args: ["dragend", ["$event"],] }],
435
+ onDragOver: [{ type: HostListener, args: ["dragover", ["$event"],] }],
436
+ onDragEnter: [{ type: HostListener, args: ["dragenter", ["$event"],] }],
437
+ onDragLeave: [{ type: HostListener, args: ["dragleave", ["$event"],] }]
438
+ };
439
+ __decorate([
440
+ InputBoolean()
441
+ ], BaseFileUploadComponent.prototype, "noDragDropOrdering", void 0);
442
+ __decorate([
443
+ InputBoolean()
444
+ ], BaseFileUploadComponent.prototype, "readonly", null);
445
+ __decorate([
446
+ InputBoolean()
447
+ ], BaseFileUploadComponent.prototype, "askBeforeDelete", void 0);
448
+ __decorate([
449
+ InputBoolean()
450
+ ], BaseFileUploadComponent.prototype, "resizeImages", void 0);
451
+ __decorate([
452
+ InputBoolean()
453
+ ], BaseFileUploadComponent.prototype, "dontAskBeforeDelete", void 0);
454
+ __decorate([
455
+ InputBoolean()
456
+ ], BaseFileUploadComponent.prototype, "noOwnDeleteOperation", void 0);
457
+ __decorate([
458
+ InputBoolean()
459
+ ], BaseFileUploadComponent.prototype, "useWithoutSettingProps", void 0);
460
+ __decorate([
461
+ InputBoolean()
462
+ ], BaseFileUploadComponent.prototype, "medicalUserGroups", void 0);
463
+ __decorate([
464
+ InputBoolean()
465
+ ], BaseFileUploadComponent.prototype, "displayReadWriteAccess", void 0);
466
+ __decorate([
467
+ InputBoolean()
468
+ ], BaseFileUploadComponent.prototype, "useCustomFileDropEvent", void 0);
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWxlLXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9maWxlcy11cGxvYWQvY29tcG9uZW50cy9iYXNlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHdCQUF3QixFQUV4QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUNyRSxPQUFPLEVBRUgsa0NBQWtDLEVBQ3JDLE1BQU0sdURBQXVELENBQUM7QUFJL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUV6RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDdEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDckUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9E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REMsWUFBWSxFQUFFO2dFQUN3QjtBQUl2QztJQURDLFlBQVksRUFBRTs2REFDc0I7QUE0QnJDO0lBREMsWUFBWSxFQUFFO29FQUM2QjtBQUk1QztJQURDLFlBQVksRUFBRTtxRUFDOEI7QUFhN0M7SUFEQyxZQUFZLEVBQUU7dUVBQ2dDO0FBTy9DO0lBREMsWUFBWSxFQUFFO2tFQUMyQjtBQVUxQztJQURDLFlBQVksRUFBRTt1RUFDd0I7QUFJdkM7SUFEVSxZQUFZLEVBQUU7dUVBQ3VCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudEZhY3RvcnksXHJcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBDb21wb25lbnRSZWYsXHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudH0gZnJvbSBcIkBjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTJcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7VGFibGVOYW1lfSBmcm9tIFwiLi4vLi4vLi4vZW51bS90YWJsZS1uYW1lLmVudW1cIjtcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvZGljdGlvbmFyeS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7RmlsZVR5cGV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ZpbGUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7XHJcbiAgICBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uLFxyXG4gICAgT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFja1xyXG59IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2Uvb3BlcmF0aW9uLWNhbGxiYWNrLXNpbXBsZS1mdW5jdGlvblwiO1xyXG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ludGVybmFsLXBhcmFtLmVudW1cIjtcclxuaW1wb3J0IHtGaWxlc1VwbG9hZENvbmZpZ09iamVjdHN9IGZyb20gXCIuLi8uLi8uLi9lbnVtL2ZpbGVzLXVwbG9hZC1jb25maWctb2JqZWN0c1wiO1xyXG5pbXBvcnQge1RhZ0NhdGVnb3J5fSBmcm9tIFwiLi4vLi4vLi4vZW51bS90YWctY2F0ZWdvcnkuZW51bVwiO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gXCIuLi8uLi8uLi91dGlscy9hcnJheS11dGlsc1wiO1xyXG5pbXBvcnQge1JlZkNvZGVVdGlsc30gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3JlZi1jb2RlLXV0aWxzXCI7XHJcbmltcG9ydCB7Q29Eb2N1bWVudFNoYXJlZEZpZWxkTG9naWN9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jby1kb2N1bWVudC1zaGFyZWQtZmllbGQtbG9naWNcIjtcclxuaW1wb3J0IHtDb0RvY3VtZW50UmlnaHR9IGZyb20gXCIuLi8uLi8uLi9idXNpbmVzc29iamVjdC9jby1kb2N1bWVudC1yaWdodC5ib1wiO1xyXG5pbXBvcnQge09iamVjdFJpZ2h0VHlwZX0gZnJvbSBcIkBjb2xpam5pdC9zaGFyZWRhcGkvYnVpbGQvZW51bS9vYmplY3QtcmlnaHQtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tIFwiLi4vLi4vLi4vZGVjb3JhdG9yL2lucHV0LWJvb2xlYW4uZGVjb3JhdG9yXCI7XHJcbmltcG9ydCB7QXBwRmlsZURyb3B6b25lQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vYXBwLWZpbGUtZHJvcHpvbmUvYXBwLWZpbGUtZHJvcHpvbmUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7RmlsZVV0aWxzfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvdXRpbHMvZmlsZS11dGlsc1wiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudFwiO1xyXG5pbXBvcnQge0NvRG9jdW1lbnRUeXBlfSBmcm9tIFwiQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9jby1kb2N1bWVudC10eXBlLmVudW1cIjtcclxuaW1wb3J0IHtGaWxlVXBsb2FkUG9wdXBDb21wb25lbnR9IGZyb20gXCIuLi8uLi9maWxlLXVwbG9hZC1wb3B1cC9maWxlLXVwbG9hZC1wb3B1cC5jb21wb25lbnRcIjtcclxuXHJcblxyXG5cclxuLy8gQSBiYXNlIGNvbXBvbmVudCB0aGF0IGxldHMgdGhlIHVzZXIgbWFrZSBhIGxpc3Qgb2YgZmlsZXMgZnJvbSBpdHMgZGV2aWNlLiBEb2Vzbid0IGFjdHVhbGx5IHVwbG9hZCwgYnV0IG91dHB1dHMgY2hvc2VuIGZpbGVzIGFzIGZpbGVzQ2hhbmdlZC5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQsIE9uRGVzdHJveSB7XHJcbiAgICBkZWNpbWFsczogbnVtYmVyO1xyXG4gICAgZm9yY2VSZWFkb25seTogYm9vbGVhbjtcclxuICAgIG1heExlbmd0aDogbnVtYmVyO1xyXG4gICAgb2JqZWN0Q29uZmlnTmFtZTogc3RyaW5nO1xyXG4gICAgcmVkRXJyb3JCYWNrZ3JvdW5kOiBib29sZWFuO1xyXG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgLy8gVGhlIGZpbGVUeXBlIHRoYXQgdGhlIGRvY3VtZW50cyBzaG91bGQgYmUgc2F2ZWQgYXMsIGxlYXZlIGVtcHR5IHRvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IGZpbGV0eXBlLiBBbHNvIGRldGVybWluZXMgZmlsZSBwaWNrZXIgZmlsdGVyXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBmaWxlVHlwZSh2YWx1ZTogRmlsZVR5cGUpIHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmlsZVR5cGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgLy9UT0RPIERvY3VtZW50ZGF0YWxvYWRlciBmaXhcclxuICAgICAgICAgICAgLy90aGlzLl9jb0RvY3VtZW50RGF0YUxvYWRlci5sb2FkQWxsb3dlZFR5cGVzKCkudGhlbigoKSA9PiB7dGhpcy5oYW5kbGVBY2NlcHRlZEZpbGVUeXBlc0xvYWRlZCh2YWx1ZSl9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBmaWxlVHlwZSgpOiBGaWxlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVUeXBlO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZG9jdW1lbnRzOiBDb0RvY3VtZW50W10gPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRvY3VtZW50VGFibGU6IFRhYmxlTmFtZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBkb2N1bWVudEtleSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fZG9jdW1lbnRLZXkgPSB2YWx1ZSArIFwiXCI7IC8vIGZvcmNlIHN0cmluZ1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgZG9jdW1lbnRLZXkoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnRLZXk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGhlIGFiaWxpdHkgdG8gZHJvcCBmaWxlcyBvbiB0aGUgcGFnZVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmdWxsUGFnZURyb3A6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBJZiB1c2VyIGdldHMgdGhlIGFiaWxpdHkgb2YgYWRkaW5nIGZpbGVzLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYW5BZGQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZHJvcE1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICAvLyBTaG93IGFkZCBidXR0b25cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWRkV2l0aEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gSWYgdXNlciBnZXRzIHRoZSBhYmlsaXR5IG9mIGRlbGV0aW5nIGZpbGVzLlxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjYW5EZWxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBub0RyYWdEcm9wT3JkZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgc2V0IHJlYWRvbmx5KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVhZG9ubHkgPSB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3BvcHVwICYmIHRoaXMuX3BvcHVwLmluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnJlYWRvbmx5ID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBhc2tCZWZvcmVEZWxldGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyByZXNpemVJbWFnZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxvY2tPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdW5sb2NrT3BlcmF0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gT3BlcmF0aW9uV2l0aEFsd2F5c1N1Y2Nlc3NDYWxsYmFjaztcclxuXHJcblxyXG5cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGJlZm9yZURlbGV0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhZnRlckRlbGV0ZU9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBiZWZvcmVDcmVhdGVPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWZ0ZXJDcmVhdGVPcGVyYXRpb246IE9wZXJhdGlvbkNhbGxiYWNrU2ltcGxlRnVuY3Rpb24gPSBPcGVyYXRpb25XaXRoQWx3YXlzU3VjY2Vzc0NhbGxiYWNrO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYmVmb3JlRWRpdE9wZXJhdGlvbjogT3BlcmF0aW9uQ2FsbGJhY2tTaW1wbGVGdW5jdGlvbiA9IE9wZXJhdGlvbldpdGhBbHdheXNTdWNjZXNzQ2FsbGJhY2s7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIGRvbnRBc2tCZWZvcmVEZWxldGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgbm9Pd25EZWxldGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwcml2YXRlIF9maWxlVHlwZTogRmlsZVR5cGU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgbWF4VXBsb2FkU2l6ZVBhcmFtKHZhbHVlOiBJbnRlcm5hbFBhcmFtKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldEludGVybmFsUGFyYW1PYmoodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgQElucHV0Qm9vbGVhbigpXHJcbiAgICBwdWJsaWMgdXNlV2l0aG91dFNldHRpbmdQcm9wczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmlsZXNVcGxvYWRDb25maWdPYmplY3RzOiBGaWxlc1VwbG9hZENvbmZpZ09iamVjdHM7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIG1lZGljYWxVc2VyR3JvdXBzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0YWdDYXRlZ29yeTogVGFnQ2F0ZWdvcnk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0YWdSZWZlcmVuY2VUYWJsZTogVGFibGVOYW1lO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASW5wdXRCb29sZWFuKClcclxuICAgIHB1YmxpYyBkaXNwbGF5UmVhZFdyaXRlQWNjZXNzOiBib29sZWFuO1xyXG5cclxuICAgIC8vIFVzZSB3aXRoIGN1c3RvbUZpbGVEcm9wRXZlbnRcclxuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gICAgcHVibGljIHVzZUN1c3RvbUZpbGVEcm9wRXZlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCB1c2VDdXN0b21GaWxlRHJvcEV2ZW50XHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjdXN0b21GaWxlRHJvcEV2ZW50OiBFdmVudEVtaXR0ZXI8RmlsZUxpc3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlTGlzdD4oKTtcclxuXHJcbiAgICAvLyBFbWl0cyBpZiB1c2VyIHdhbnRzIHRvIGFkZCBtdWx0aXBsZSBkb2N1bWVudHMgYXQgb25jZVxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnRzQWRkZWQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50W10+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnREZWxldGVkOiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPENvRG9jdW1lbnQ+KCk7XHJcblxyXG4gICAgLy8gRW1pdHMgZXZlcnkgdGltZSB0aGUgb3JkZXIgb2YgZG9jdW1lbnRzIHdhcyBjaGFuZ2VkXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seSBzb3J0YWJsZUxpc3RDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudFtdPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGRvY3VtZW50Q2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxDb0RvY3VtZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29Eb2N1bWVudD4oKTtcclxuXHJcbiAgICAvLyBVc2UgdGhpcyBpZiBjb25zdW1lciByZXF1aXJlcyB0byBwZXJmb3JtIGV4dHJhIGFjdGlvbnMsIGxpa2UgbG9ja2luZyBhIHBhcmVudCBidXNpbmVzc09iamVjdCBpZiBpdCBjb250YWlucyB0aGUgY29sbGVjdGlvbiBvZiBkb2N1bWVudHMuIEVtaXQgd2l0aCB0cnVlIHdoZW4gcG9wdXAgb3BlbmVkLCBmYWxzZSBmb3IgY2xvc2VcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHBvcHVwT3BlbmVkU3RhdGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oaWRkZW5cIilcclxuICAgIHB1YmxpYyBoaWRkZW46IGJvb2xlYW47XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyb3BcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnVzZUN1c3RvbUZpbGVEcm9wRXZlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlc1BpY2tlZChldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRmlsZURyb3BFdmVudC5lbWl0KGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9jbGVhckRyb3B6b25lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbmRcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmNsZWFyRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ292ZXJcIiwgW1wiJGV2ZW50XCJdKVxyXG4gICAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcihcImRyYWdlbnRlclwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RyYWdFbnRlclRhcmdldCA9IGV2ZW50LnRhcmdldDtcclxuICAgICAgICB0aGlzLl9zaG93RHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKFwiZHJhZ2xlYXZlXCIsIFtcIiRldmVudFwiXSlcclxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fZHJhZ0VudGVyVGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvY3VtZW50VW5kZXJFZGl0OiBDb0RvY3VtZW50O1xyXG4gICAgcHVibGljIGFjY2VwdGVkVXBsb2FkRm9ybWF0czogc3RyaW5nO1xyXG5cclxuICAgIHByb3RlY3RlZCBfbWF4VXBsb2FkRmlsZVNpemU6IG51bWJlcjtcclxuXHJcbiAgICBwcml2YXRlIF9kcmFnRW50ZXJUYXJnZXQ6IEV2ZW50VGFyZ2V0O1xyXG4gICAgcHJpdmF0ZSBfZG9jdW1lbnRLZXk6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBwcml2YXRlIF9kcm9wWm9uZTogQ29tcG9uZW50UmVmPEFwcEZpbGVEcm9wem9uZUNvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9wb3B1cDogQ29tcG9uZW50UmVmPEZpbGVVcGxvYWRQb3B1cENvbXBvbmVudD47XHJcbiAgICBwcml2YXRlIF9kb2NDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3BvcHVwQ2xvc2VTdWI6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15VHJ1ZUZ1bmN0aW9uOiBPcGVyYXRpb25DYWxsYmFja1NpbXBsZUZ1bmN0aW9uID0gKG9iamVjdDogYW55KSA9PiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcblxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9wcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBfZGljdGlvbmFyeVNlcnZpY2U6IERpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF91c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9jb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgcHJvdGVjdGVkIF9mYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgLy9wcm90ZWN0ZWQgX2dlbmVyYWxEYWxSZXBvc2l0b3J5OiBHZW5lcmFsRGFsUmVwb3NpdG9yeSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgICAgIC8vcHJvdGVjdGVkIF9iYXNlRGF0YURhbFJlcG9zaXRvcnk6IEJhc2VEYXRhRGFsUmVwb3NpdG9yeSxcclxuICAgICAgICAvL3Byb3RlY3RlZCBfY29Eb2N1bWVudERhdGFMb2FkZXI6IENvRG9jdW1lbnREYXRhTG9hZGVyU2VydmljZVxyXG4gICAgKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NsZWFyRHJvcHpvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG93RHJvcHpvbmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kcm9wWm9uZSkge1xyXG4gICAgICAgICAgICBjb25zdCBmYWN0OiBDb21wb25lbnRGYWN0b3J5PEFwcEZpbGVEcm9wem9uZUNvbXBvbmVudD4gPSB0aGlzLl9mYWN0b3J5LnJlc29sdmVDb21wb25lbnRGYWN0b3J5KEFwcEZpbGVEcm9wem9uZUNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lID0gdGhpcy5fY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmYWN0KTtcclxuICAgICAgICAgICAgdGhpcy5fZHJvcFpvbmUuaW5zdGFuY2UuY3VzdG9tRHJvcEFjdGlvbk1lc3NhZ2UgPSB0aGlzLmRyb3BNZXNzYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jbGVhckRyb3B6b25lKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgICAgIGlmICh0aGlzLl9kcm9wWm9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9kcm9wWm9uZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Ryb3Bab25lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZW1vdmUgZmlsZSBmcm9tIHVwbG9hZCBhcnJheS5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVEZWxldGUoZmlsZTogQ29Eb2N1bWVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxldCBzdWNjZXNzOiBib29sZWFuID0gYXdhaXQgdGhpcy5iZWZvcmVEZWxldGVPcGVyYXRpb24oZmlsZSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5hZnRlckRlbGV0ZU9wZXJhdGlvbihmaWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShzdWNjZXNzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9kZWxldGUoZmlsZTogQ29Eb2N1bWVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGxldCBkb0RlbGV0ZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmRvbnRBc2tCZWZvcmVEZWxldGUpIHtcclxuICAgICAgICAgIC8vVE9ETyBtYWtlIGRpYWxvZ1NlcnZpY2VcclxuICAgICAgICAgICAgLy9kb0RlbGV0ZSA9IGF3YWl0IHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd1llc05vKFwiTUVTU0FHRV9ERUxFVEVfUkVDT1JEX1FVRVNUSU9OXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG9EZWxldGUpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm5vT3duRGVsZXRlT3BlcmF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBBcnJheVV0aWxzLlJlbW92ZUVsZW1lbnQoZmlsZSwgdGhpcy5kb2N1bWVudHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWxldGVkLmVtaXQoZmlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBoYW5kbGVTb3J0aW5nQ2hhbmdlKGRvY3M6IENvRG9jdW1lbnRbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc29ydGFibGVMaXN0Q2hhbmdlZC5lbWl0KGRvY3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBoYW5kbGVGaWxlQ2hhbmdlKGV2ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0ICYmIGV2ZW50LnRhcmdldC5maWxlcyAmJiBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyBjaGVjayBmaWxlIHNpemVzIGFuZCBleHRlbnNpb25cclxuICAgICAgICAgICAgLy9Ub2RvOiBmaXggdGhpc1xyXG4gICAgICAgICAgICAvL2NvbnN0IGFsbG93ZWRFeHRlbnNpb25zID0gYXdhaXQgdGhpcy5fYmFzZURhdGFEYWxSZXBvc2l0b3J5LmdldEFsbG93ZWRFeHRlbnNpb25zKCk7XHJcbiAgICAgICAgICAgIGxldCBhbGxGaWxlc0FyZVNtYWxsRW5vdWdoOiBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgICAgICAgbGV0IGFsbEZpbGVzSGF2ZUFsbG93ZWRFeHRlbnNpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2l6ZVRvQ29tcGFyZTogbnVtYmVyID0gdGhpcy5fbWF4VXBsb2FkRmlsZVNpemUgPyB0aGlzLl9tYXhVcGxvYWRGaWxlU2l6ZSA6IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgY29uc3QgbGVuOiBudW1iZXIgPSBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZFNpemVBbGxvd2VkID0gRmlsZVV0aWxzLkNoZWNrTWF4VXBsb2FkU2l6ZShldmVudC50YXJnZXQuZmlsZXNbaV0sIHNpemVUb0NvbXBhcmUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF1cGxvYWRTaXplQWxsb3dlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsbEZpbGVzQXJlU21hbGxFbm91Z2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbkFsbG93ZWQgPSB0cnVlLy9GaWxlVXRpbHMuQ2hlY2tFeHRlbnNpb24oZXZlbnQudGFyZ2V0LmZpbGVzW2ldLCBhbGxvd2VkRXh0ZW5zaW9ucyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbkFsbG93ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxGaWxlc0hhdmVBbGxvd2VkRXh0ZW5zaW9ucyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWFsbEZpbGVzQXJlU21hbGxFbm91Z2gpIHtcclxuICAgICAgICAgICAgICAvL1RPRE8gbWFrZSBkaWFsb2dTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAvL3RoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd1dhcm5pbmcodGhpcy5fZGljdGlvbmFyeVNlcnZpY2UuZ2V0KFwiRklMRV9UT09fTEFSR0VfVE9fVVBMT0FEXCIsIHRydWUsIFwiXCIgKyBbRmlsZVV0aWxzLmdldE1heFVwbG9hZFNpemVJbk1iKHNpemVUb0NvbXBhcmUpXSkpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFhbGxGaWxlc0hhdmVBbGxvd2VkRXh0ZW5zaW9ucykge1xyXG4gICAgICAgICAgICAgICAgLy9jb25zdCBleHRlbnNpb25zTGlzdCA9IGFsbG93ZWRFeHRlbnNpb25zLm1hcChhbGxvd2VkRXh0ZW5zaW9uID0+IGFsbG93ZWRFeHRlbnNpb24uZXh0ZW5zaW9uKS5zb3J0KCkuam9pbihcIiwgXCIpO1xyXG4gICAgICAgICAgICAgICAgLy90aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dXYXJuaW5nKHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkZJTEVfSEFTX0RJU0FMTE9XRURfRVhURU5TSU9OXCIsIGZhbHNlLCBleHRlbnNpb25zTGlzdCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXNUb0FkZDogQ29Eb2N1bWVudFtdID0gYXdhaXQgdGhpcy5jb252ZXJ0RmlsZXNJbnRvQ29Eb2N1bWVudHMoZXZlbnQudGFyZ2V0LmZpbGVzKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZmlsZXNUb0FkZC5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudHNBZGRlZC5lbWl0KGZpbGVzVG9BZGQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51c2VXaXRob3V0U2V0dGluZ1Byb3BzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRzQWRkZWQubmV4dChmaWxlc1RvQWRkKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0ID0gZmlsZXNUb0FkZFswXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGhhbmRsZUVkaXREb2N1bWVudENsaWNrKGRvY1RvRWRpdDogQ29Eb2N1bWVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSBkb2NUb0VkaXQ7XHJcbiAgICAgICAgY29uc3Qgc2hvd1BvcHVwOiBib29sZWFuID0gYXdhaXQgdGhpcy5iZWZvcmVFZGl0T3BlcmF0aW9uKGRvY1RvRWRpdCk7XHJcbiAgICAgICAgaWYgKHNob3dQb3B1cCkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Qb3B1cCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgb3BlblBvcHVwKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUFuZEZpbGxQb3B1cEluc3RhbmNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX2RvY0NoYW5nZVN1YiA9IHRoaXMuX3BvcHVwLmluc3RhbmNlLmRvY3VtZW50Q2hhbmdlRXZlbnQuc3Vic2NyaWJlKChkb2M6IENvRG9jdW1lbnQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENoYW5nZUV2ZW50LmVtaXQoZG9jKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlblBvcHVwVG9BZGREb2N1bWVudEJ5VXJsKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZURvY3VtZW50VG9BZGRCeVVybCgpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUFuZEZpbGxQb3B1cEluc3RhbmNlKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLl9kb2NDaGFuZ2VTdWIgPSB0aGlzLl9wb3B1cC5pbnN0YW5jZS5kb2N1bWVudENoYW5nZUV2ZW50LnN1YnNjcmliZSgoZG9jOiBDb0RvY3VtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGRvYy5maWxlTmFtZSA9IGRvYy5maWxlUGF0aDtcclxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudENoYW5nZUV2ZW50LmVtaXQoZG9jKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVEb2N1bWVudFRvQWRkQnlVcmwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdCA9IG5ldyBDb0RvY3VtZW50KCk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC50YWJsZSA9IHRoaXMuZG9jdW1lbnRUYWJsZTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LmtleSA9IHRoaXMuZG9jdW1lbnRLZXk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5maWxlVHlwZSA9IHRoaXMuZmlsZVR5cGU7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5kb2N1bWVudFR5cGUgPSBDb0RvY3VtZW50VHlwZS5TYXZlQXNMaW5rT25SYW5kb21Mb2NhdGlvbjtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnBhdGhJc1VybCA9IHRydWU7XHJcbiAgICAgICAgLy9UT0RPIEZpeCB1c2VyIElucHV0XHJcbiAgICAgICAgLy90aGlzLmRvY3VtZW50VW5kZXJFZGl0LmNyZWF0aW9uVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgLy90aGlzLmRvY3VtZW50VW5kZXJFZGl0Lm1vZGlmaWVkVXNlciA9IHRoaXMuX3VzZXJTZXJ2aWNlLnVzZXJOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5jcmVhdGlvbkRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQubW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jcmVhdGVBbmRGaWxsUG9wdXBJbnN0YW5jZShhZGREb2N1bWVudEJ5VXJsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnBvcHVwT3BlbmVkU3RhdGVDaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICAgICAgY29uc3QgZmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeTxGaWxlVXBsb2FkUG9wdXBDb21wb25lbnQ+ID0gdGhpcy5fZmFjdG9yeS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShGaWxlVXBsb2FkUG9wdXBDb21wb25lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLl9wb3B1cCA9IHRoaXMuX2NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnJlYWRvbmx5ID0gdGhpcy5fcmVhZG9ubHk7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuYWRkRG9jdW1lbnRCeVVybCA9IGFkZERvY3VtZW50QnlVcmw7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuaGFzUHVibGljQWNjZXNzVmlzaWJsZSA9IHRoaXMuZG9jdW1lbnRUYWJsZSA9PT0gVGFibGVOYW1lLkdvb2RzO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLnNob3dEb2N1bWVudFJlcG9ydFBpY2tlciA9ICh0aGlzLmRvY3VtZW50VGFibGUgPT09IFRhYmxlTmFtZS5UcmFuc2FjdGlvbnMgfHwgdGhpcy5kb2N1bWVudFRhYmxlID09PSBUYWJsZU5hbWUuVHJhbnNhY3Rpb25MaW5lcyk7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuZG9jdW1lbnRVbmRlckVkaXQgPSB0aGlzLmRvY3VtZW50VW5kZXJFZGl0O1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLmZpbGVzVXBsb2FkQ29uZmlnT2JqZWN0cyA9IHRoaXMuZmlsZXNVcGxvYWRDb25maWdPYmplY3RzO1xyXG4gICAgICAgIHRoaXMuX3BvcHVwLmluc3RhbmNlLm1lZGljYWxVc2VyR3JvdXBzID0gdGhpcy5tZWRpY2FsVXNlckdyb3VwcztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS50YWdDYXRlZ29yeSA9IHRoaXMudGFnQ2F0ZWdvcnk7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UuZGlzcGxheVJlYWRXcml0ZUFjY2VzcyA9IHRoaXMuZGlzcGxheVJlYWRXcml0ZUFjY2VzcztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS50YWdSZWZlcmVuY2VUYWJsZSA9IHRoaXMudGFnUmVmZXJlbmNlVGFibGU7XHJcbiAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UucHVibGljYXRpb25JZHMgPSBSZWZDb2RlVXRpbHMuR2V0TXVsdGlSZWZDb2RlQ2hvaWNlcyh0aGlzLmRvY3VtZW50VW5kZXJFZGl0LnB1YmxpY2F0aW9uKTtcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5zdG9yZUdyb3VwSWRzID0gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5yZXRhaWxGb3JtdWxhcztcclxuICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS5maWxlVHlwZSA9IHRoaXMuZmlsZVR5cGU7XHJcblxyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVGaWxlUmlnaHRzKCk7XHJcblxyXG4gICAgICAgIHRoaXMuX3BvcHVwQ2xvc2VTdWIgPSB0aGlzLl9wb3B1cC5pbnN0YW5jZS5wb3B1cENsb3NlRXZlbnQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fdW5sb2NrRG9jdW1lbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5wb3B1cE9wZW5lZFN0YXRlQ2hhbmdlLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3B1cENsb3NlU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2RvY0NoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9wb3B1cC5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcHVwID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBjb252ZXJ0RmlsZXNJbnRvQ29Eb2N1bWVudHMoZmlsZXM6IEZpbGVMaXN0KTogUHJvbWlzZTxDb0RvY3VtZW50W10+IHtcclxuICAgICAgICBjb25zdCBhbW91bnRPZkZpbGVzOiBudW1iZXIgPSBmaWxlcy5sZW5ndGg7XHJcbiAgICAgICAgY29uc3QgZmlsZXNUb0FkZDogQ29Eb2N1bWVudFtdID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhbW91bnRPZkZpbGVzOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZUFzRG9jdW1lbnQ6IENvRG9jdW1lbnQgPSBhd2FpdCB0aGlzLl9nZXRGaWxlQXNEb2N1bWVudChmaWxlc1tpXSk7XHJcbiAgICAgICAgICAgIGZpbGVBc0RvY3VtZW50LmluZGV4ID0gQ29Eb2N1bWVudFNoYXJlZEZpZWxkTG9naWMuR2VuZXJhdGVBdmFpbGFibGVJbmRleE5yKHRoaXMuZG9jdW1lbnRzIHx8IFtdKSArIGk7XHJcbiAgICAgICAgICAgIGZpbGVzVG9BZGQucHVzaChmaWxlQXNEb2N1bWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmaWxlc1RvQWRkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBmaWxlc1BpY2tlZChmaWxlczogRmlsZUxpc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxldCBhbGxGaWxlc0FyZVZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3QgYW1vdW50T2ZGaWxlczogbnVtYmVyID0gZmlsZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYW1vdW50T2ZGaWxlczsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUZpbGVVdGlscy5DaGVja01heFVwbG9hZFNpemUoZmlsZXNbaV0sIHRoaXMuX21heFVwbG9hZEZpbGVTaXplKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsbEZpbGVzQXJlVmFsaWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFhbGxGaWxlc0FyZVZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgLy9UT0RPIG1ha2UgZGlhbG9nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLy90aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dXYXJuaW5nKHRoaXMuX2RpY3Rpb25hcnlTZXJ2aWNlLmdldChcIkZJTEVfVE9PX0xBUkdFX1RPX1VQTE9BRFwiLCB0cnVlLCBcIlwiICsgRmlsZVV0aWxzLmdldE1heFVwbG9hZFNpemVJbk1iKHRoaXMuX21heFVwbG9hZEZpbGVTaXplKS50b1N0cmluZygpKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlc1RvQWRkOiBDb0RvY3VtZW50W10gPSBhd2FpdCB0aGlzLmNvbnZlcnRGaWxlc0ludG9Db0RvY3VtZW50cyhmaWxlcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzVG9BZGQubGVuZ3RoID4gMSB8fCB0aGlzLnVzZVdpdGhvdXRTZXR0aW5nUHJvcHMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50c0FkZGVkLmVtaXQoZmlsZXNUb0FkZCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRVbmRlckVkaXQgPSBmaWxlc1RvQWRkWzBdOyAvLyBTZXR0aW5nIGRvY1VuZGVyRWRpdCBvcGVucyB0aGUgcG9wdXAgd2luZG93XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuUG9wdXAoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFuZGxlQWNjZXB0ZWRGaWxlVHlwZXNMb2FkZWQodmFsdWU6IEZpbGVUeXBlKTogdm9pZCB7XHJcbiAgICAgICAgLy9UT0RPIGZpeCBsb2FkaW5nXHJcbiAgICAgICAgLy90aGlzLmFjY2VwdGVkVXBsb2FkRm9ybWF0cyA9IHRoaXMuX2NvRG9jdW1lbnREYXRhTG9hZGVyLmdldEFsbG93ZWRFeHRlbnNpb25zRm9yVHlwZSh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfZ2V0RmlsZUFzRG9jdW1lbnQoZmlsZTogRmlsZSk6IFByb21pc2U8Q29Eb2N1bWVudD4ge1xyXG4gICAgICAgIGNvbnN0IGZpbGVBc0NvRG9jdW1lbnQ6IENvRG9jdW1lbnQgPSBhd2FpdCBGaWxlVXRpbHMuUmVhZEZpbGVBc05ld0NvRG9jdW1lbnQoZmlsZSwgdGhpcy5yZXNpemVJbWFnZXMpO1xyXG4gICAgICAgIC8vIHNldCBzb21lIGV4dHJhIGtub3duIGZpZWxkcyBmb3IgdGhlIGNvZG9jdW1lbnQ6XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC50YWJsZSA9IHRoaXMuZG9jdW1lbnRUYWJsZTtcclxuICAgICAgICBmaWxlQXNDb0RvY3VtZW50LmtleSA9IHRoaXMuZG9jdW1lbnRLZXk7XHJcbiAgICAgICAgLy9UT0RPIGZpeCBhZGQgdXNlcnNcclxuICAgICAgICAvL2ZpbGVBc0NvRG9jdW1lbnQuY3JlYXRpb25Vc2VyID0gdGhpcy5fdXNlclNlcnZpY2UudXNlck5hbWUudG9VcHBlckNhc2UoKTtcclxuICAgICAgICAvL2ZpbGVBc0NvRG9jdW1lbnQubW9kaWZpZWRVc2VyID0gdGhpcy5fdXNlclNlcnZpY2UudXNlck5hbWUudG9VcHBlckNhc2UoKTtcclxuICAgICAgICBmaWxlQXNDb0RvY3VtZW50LmNyZWF0aW9uRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgZmlsZUFzQ29Eb2N1bWVudC5tb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGZpbGVBc0NvRG9jdW1lbnQuZmlsZVR5cGUgPSB0aGlzLmZpbGVUeXBlID8gdGhpcy5maWxlVHlwZSA6IEZpbGVVdGlscy5Jc0ltYWdlRmlsZShmaWxlKSA/IEZpbGVUeXBlLkltYWdlIDogRmlsZVR5cGUuRG9jdW1lbnQ7XHJcblxyXG4gICAgICAgIGlmIChmaWxlQXNDb0RvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWxlQXNDb0RvY3VtZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIF9zZXRJbnRlcm5hbFBhcmFtT2JqKHZhbHVlOiBJbnRlcm5hbFBhcmFtKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgLy9UT0RPIGZpeCBwYXJhbXNcclxuICAgICAgICAvL2NvbnN0IHBhcmFtOiBJbnRlcm5hbFBhcmFtZXRlck9iamVjdCA9IGF3YWl0IHRoaXMuX2dlbmVyYWxEYWxSZXBvc2l0b3J5LmdldEludGVybmFsUGFyYW1PYmplY3QodmFsdWUpO1xyXG4gICAgICAgIC8vdGhpcy5fbWF4VXBsb2FkRmlsZVNpemUgPSBpc05hTihwYXJzZUludChwYXJhbS52YWx1ZSwgMCkpID8gdW5kZWZpbmVkIDogcGFyc2VJbnQocGFyYW0udmFsdWUsIDApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgX2xvY2tEb2N1bWVudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZG9jdW1lbnRVbmRlckVkaXQuZG9jdW1lbnRJZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gTmV3IGRvY3VtZW50IGRvZXMgbm90IGhhdmUgYW4gSUQgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBoYXZlIHRvIGJlIGxvY2tlZFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgbG9ja09rOiBib29sZWFuID0gYXdhaXQgdGhpcy5sb2NrT3BlcmF0aW9uKENvRG9jdW1lbnQpO1xyXG4gICAgICAgIHJldHVybiBsb2NrT2s7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBfdW5sb2NrRG9jdW1lbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgIGlmICghdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5kb2N1bWVudElkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIE5ldyBkb2N1bWVudCBkb2VzIG5vdCBoYXZlIGFuIElEIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaGF2ZSB0byBiZSBsb2NrZWRcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgdW5sb2NrT2s6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnVubG9ja09wZXJhdGlvbihDb0RvY3VtZW50KTtcclxuICAgICAgcmV0dXJuIHVubG9ja09rO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3ByZXBhcmVGaWxlUmlnaHRzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxlbjogbnVtYmVyID0gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5yaWdodHMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCByaWdodDogQ29Eb2N1bWVudFJpZ2h0ID0gdGhpcy5kb2N1bWVudFVuZGVyRWRpdC5yaWdodHNbaV07XHJcbiAgICAgICAgICAgIGlmIChyaWdodC5yaWdodExldmVsID09PSBPYmplY3RSaWdodFR5cGUuUmVhZFdyaXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wb3B1cC5pbnN0YW5jZS51c2VyR3JvdXBzRm9yV3JpdGUucHVzaChyaWdodC51c2VyR3JvdXBJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHJpZ2h0LnJpZ2h0TGV2ZWwgPT09IE9iamVjdFJpZ2h0VHlwZS5SZWFkT25seSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuaW5zdGFuY2UudXNlckdyb3Vwc0ZvclJlYWQucHVzaChyaWdodC51c2VyR3JvdXBJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19